Exploiting a debuggeable application
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
本节内容是来自帖子 https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 的总结。
内容基于 https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
反编译 APK:
使用 APK-GUI 工具反编译 APK。
在 android-manifest 文件中插入 android:debuggable=true
以启用调试模式。
重新编译、签名并 zipalign 修改后的应用程序。
安装修改后的应用程序:
使用命令:adb install <application_name>
。
检索包名:
执行 adb shell pm list packages –3
列出第三方应用程序并找到包名。
设置应用以等待调试器连接:
命令:adb shell am setup-debug-app –w <package_name>
。
注意: 每次启动应用程序之前必须运行此命令,以确保它等待调试器。
为了持久性,使用 adb shell am setup-debug-app –w -–persistent <package_name>
。
要移除所有标志,使用 adb shell am clear-debug-app <package_name>
。
在 Android Studio 中准备调试:
在 Android Studio 中导航到 File -> Open Profile or APK。
打开重新编译的 APK。
在关键 Java 文件中设置断点:
在 MainActivity.java
(特别是在 onCreate
方法中)、b.java
和 ContextWrapper.java
中设置断点。
应用程序在某些时刻会验证其是否可调试,并检查指示设备已 root 的二进制文件。可以使用调试器修改应用信息,取消设置可调试位,并更改搜索的二进制文件名称以绕过这些检查。
对于可调试检查:
修改标志设置:
在调试器控制台的变量部分,导航到:this mLoadedAPK -> mApplicationInfo -> flags = 814267974
。
注意: flags = 814267974
的二进制表示为 11000011100111011110
,表示 "Flag_debuggable" 处于活动状态。
这些步骤共同确保应用程序可以被调试,并且可以使用调试器绕过某些安全检查,从而便于对应用程序行为进行更深入的分析或修改。
第 2 步涉及将标志值更改为 814267972,其二进制表示为 110000101101000000100010100。
演示使用了一个包含按钮和文本视图的易受攻击应用程序。最初,应用程序显示 "Crack Me"。目标是在运行时将消息从 "Try Again" 更改为 "Hacked",而不修改源代码。
使用 apktool
反编译应用程序以访问 AndroidManifest.xml
文件。
AndroidManifest.xml
中存在 android_debuggable="true"
表示该应用程序是可调试的,容易受到利用。
值得注意的是,apktool
仅用于检查可调试状态,而不更改任何代码。
该过程涉及启动模拟器,安装易受攻击的应用程序,并使用 adb jdwp
识别正在监听的 Dalvik VM 端口。
JDWP(Java Debug Wire Protocol)允许通过暴露唯一端口来调试在 VM 中运行的应用程序。
远程调试需要端口转发,然后将 JDB 附加到目标应用程序。
通过设置断点和控制应用程序流程进行利用。
使用 classes
和 methods <class_name>
等命令来揭示应用程序的结构。
在 onClick
方法中设置断点,并控制其执行。
使用 locals
、next
和 set
命令检查和修改局部变量,特别是将 "Try Again" 消息更改为 "Hacked"。
使用 run
命令执行修改后的代码,成功实时更改应用程序的输出。
这个例子演示了如何操纵可调试应用程序的行为,突显了更复杂的利用潜力,例如在应用程序上下文中获得设备的 shell 访问权限。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)