从4.2开始,Android提供了一个命令行工具settings。这个工具用于帮助构造SettingProvider的客户端代理,从而可以方便的进行系统设置项的读取和设置。
但是这个工具和adb配合起来,将对Android的安全构成极大的威胁。因为通过adb来执行settings时的时候,uid是shell,而shell拥有非常多的特权。
当然,问题的根源在于adb的shell权限太高,毕竟即使没有settings这个工具(或者说没有/system/framework/settings.jar文件),adb用户可以自己构造类似这样的程序/脚本。但是现在Android提供了该工具,这样的安全入侵将变得异常简单。
下面用几个例子来说明当用户开启adb后连接电脑,可能对用户手机造成的安全侵害。
注意1:这里针对Nexus手机的原生Android-5.0而言,不同的手机ROM有不同的设置项。
注意2:请先打开手机adb调试模式,并确保adb命令可以正常执行。
1) 修改是否“允许安装来自Play商店之外的其他来源的应用”。
在手机设置项中禁用该选项,操作路径是“设置”->“安全”->“未知来源”
然后执行如下命令:
2) 截取用户短信。
从Android 4.4开始,可以由用户设置默认的短信程序用于接管系统短信的收发。对于安装的第三方短信程序,必须用户手工指定才能工作。而利用这个漏洞,adb可以直接指定第三方短信应用程序而无须用户的确认。
然后执行如下命令:
但是这个工具和adb配合起来,将对Android的安全构成极大的威胁。因为通过adb来执行settings时的时候,uid是shell,而shell拥有非常多的特权。
当然,问题的根源在于adb的shell权限太高,毕竟即使没有settings这个工具(或者说没有/system/framework/settings.jar文件),adb用户可以自己构造类似这样的程序/脚本。但是现在Android提供了该工具,这样的安全入侵将变得异常简单。
下面用几个例子来说明当用户开启adb后连接电脑,可能对用户手机造成的安全侵害。
注意1:这里针对Nexus手机的原生Android-5.0而言,不同的手机ROM有不同的设置项。
注意2:请先打开手机adb调试模式,并确保adb命令可以正常执行。
1) 修改是否“允许安装来自Play商店之外的其他来源的应用”。
在手机设置项中禁用该选项,操作路径是“设置”->“安全”->“未知来源”
然后执行如下命令:
$ adb shell settings put secure install_non_market_apps1
退出设置,再次进入,发现“未知来源”已经启用。这样,第三方恶意应用程序就可能被安装成功。
2) 截取用户短信。
从Android 4.4开始,可以由用户设置默认的短信程序用于接管系统短信的收发。对于安装的第三方短信程序,必须用户手工指定才能工作。而利用这个漏洞,adb可以直接指定第三方短信应用程序而无须用户的确认。
在手机设置项中查看短信程序,操作路径是“设置”->“更多”->“默认短信应用”,如果没有修改过,应该是“环聊”。
比如先安装一个短信应用:GoSMSpro。然后执行如下命令: