APP漏洞(缺少Native反调试检测)
漏洞介绍
- 通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。一般程序语言和工具提供的调试功能有检查主存和寄存器。设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。App没有使用反调试技术对运行时的程序进行保护。攻击者可以通过动态调试的方法,对App进行逆向、跟踪等。同时,攻击者还可以利用调试技术,在运行时的App内存中注入恶意代码,达到截获运行时数据的目的,此举可能导致用户的隐私信息被窃取
漏洞复现
环境配置
- adb、模拟器、jadx-gui、ida
准备过程
- 将有漏洞的apk包传到mumu模拟器中
- pc连上模拟器服务器
- 将ida的android_server,传到模拟器中
- 修改android_server的权限,并且运行android_server
反调试检测过程
- 使用jadx-gui逆向apk包,获得包名和入口函数名
- 利用adb shell am start -D -n 包名/入口函数,来通过调试模式打开APP
adb shell am start -D -n com.example.letmechat/com.example.letmechat.MainActivity
- 设置PC端需要转发23946端口
- 在ida中设置远程调试
在ida,选中Debuggerz中的Attach里的Remote ARMLinux/Android debugger
设置Debug options,并且设置hostname
点击OK后,找到对应的文件包名
如上如图,成功进入ida调试进程,证明APP缺少反调试检测,这样通过动态调试的方法,对App进行逆向、跟踪等。同时,攻击者还可以利用调试技术,在运行时的App内存中注入恶意代码,达到截获运行时数据的目的,此举可能导致用户的隐私信息被窃取。