Android应用安全系列 part 21 – 攻击可调试应用

设想一下,当你一部没有被root的手机被偷时,如果有一个应用可以进行调试,攻击者可以利用应用权限访问应用数据或执行任意代码。

而在非调试应用中,攻击者需要先root设备才能提取数据。

如何检验是否可调式属性

使用sieve程序作为演示

反编译sieve.apk文件,在AndroidManifest.xml中搜索关键字找到 debuggable

可以看到 debuggable = true 意味着程序是可调式的

接下来需要查找那个应用连接着调试socket(@jdwp-control)

在appie终端输入adb jdwp 查看所有可被调试的PIDs(进程ID)信息

注意:需要在sieve运行前执行此命令,然后开启sieve时再次执行此命令,查看pids的变化,出现变化的就是sieve调试pid

两次执行的结果如下:

可以看到增加了两个pids。可以输入命令查看这个新增加的pids属于哪个应用。

输入命令: adb shell ps | grep 1922

以及同样方法可以查到属于1938端口的应用

可以提取应用程序私有文件中的data数据,使用如下命令

adb shell run-as com.mwr.example.sieve

在sieve应用权限下可以执行任意命令,仅限于此应用权限

使用sieve应用查看其它应用数据时,会因为权限问题不允许

如何修复?

修复非常简单,只需要在AndroidManifest.xml中设置如下属性就ok了

android:debuggable = false

您可能还喜欢...