MobSF
支持Android
应用动态分析(iOS
应用不支持),可以动态调试正在运行的应用。
如果需要动态分析,请不要在Docker
或虚拟机中部署MobSF
,另外需要下载安装Genymotion模拟器。
在启动MobSF
之前,请运行Genymotion
模拟器 。一切都会在运行时自动配置。建议使用Android 7.0
及更高版本。
Android 5.0-9.0
-这些版本使用Frida
(一款基于python + java
的hook
框架),开箱即用。
Android 4.1-4.4
- 这些版本使用Xposed Framework
。
对于Android
的版本4.4 - 9.0
,全局代理设置在运行时自动应用。
对于Android
版本4.1-4.3
,需要设置Dynamic Analyzer
页面中显示的Android VM
代理。
Genymotion
是基于X86
的,不支持ARM
架构。所以有些应用是基于ARM
架构编译的就无法安装,出现如下提示
[INFO] 22/Sep/2020 08:51:01 - Getting screen resolution
[INFO] 22/Sep/2020 08:51:02 - Installing APK
adb: failed to install C:/Users/Shuqing/Desktop/MobSF/uploads/b011baaa8aac34fbdf68691e63a96a08/b011baaa8aac34fbdf68691e63a96a08.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
[INFO] 22/Sep/2020 08:51:07 - Removing Global Proxy for Android VM
[ERROR] 22/Sep/2020 08:51:09 - This APK cannot be installed. Is this APK compatible the Android VM/Emulator?
[ERROR] 22/Sep/2020 08:51:09 - Internal Server Error: /android_dynamic/
解决方案
下载安装转换工具Genymotion_ARM_Translation 根据自己的模拟器系统版本下载对应的zip
包,然后将包直接拖入到模拟器安装,安装完成后重启模拟器即可。
启动Genymotion
模拟器并在开发者模式内设置USB debugging 。查看模拟器的设备地址。
在主界面点击左上角菜单DYNAMIC ANALYZER
进入动态分析引导页面,可以右侧看到设备的地址和模拟器界面顶部标题显示的地址是一致的。
引导页面在历史静态扫描记录上点击【Start Dynamic Analysis】 按钮进入动态分析界面,运行成功之后可以进入动态分析页面如下图所示:
观察run
运行命令界面可以看到日志信息
动态分析功能主要如下:
功能菜单 | 说明 |
---|---|
Show/Stop Screen | 开启/关闭屏幕 |
Install/Remove MobSF RootCA | 安装卸载MobSF 证书 |
Start Exported Activity Tester | 测试导出类型的Activity |
Start Activity Tester | 测试Activity |
Take a Screenshot | 截屏 |
Logcat Stream | 日志流信息 |
Generate Report | 生成报告 |
1.点击Show Screen
可以实时同步设备屏幕,方便测试执行查看。在Dynamic Analyzer
菜单可以查看实时动态分析日志,Errors
菜单可以查看错误日志。
Frida Scripts 栏设置是设置Frida
相关选项,Frida
是个轻量级别的hook
框架,核心是用C
编写的,并将Google
的V8
引擎注入到目标进程中,在这些进程中,JS
可以完全访问内存,Hook
函数甚至调用进程内的本机函数来执行。
一般使用默认的配置选项即可,如果想进阶测试,可以勾选Auxiliary
中的选项,甚至右侧Frida Code Editor
编辑窗口,可以直接编写脚本进行调试。Fira
使用教程请参考官方文档:https://frida.re/docs/home/
Install/Remove MobSF RootCA
用来安装卸载MobSF CA
证书,方便对样本中HTTPS
流量进行截获。
遍历获取AndroidManifest.xml
文件中的所有Exported Activity
测试流程如下:
依次启动activity
,adb -s IP:PORT shell am start -n PACKAGE/ACTIVITY
获取当前activity
运行时的屏幕截图,并保存截屏
强制关闭应用:adb -s IP:PORT shell am force-stop PACKAGE
遍历AndroidManifest.xml
文件中的所有Activity
,而不单单是Exported
。
处理流程与Exported Activity
一致。
截屏并保存到本地。
输出logcat
日志信息,如下所示:
09-21 22:15:31.252 573 573 D ConditionProviders.SCP: onReceive android.intent.action.TIME_SET
09-21 22:15:31.252 573 573 D ConditionProviders.SCP: notifyCondition condition://android/schedule?days=6.7&start=23.30&end=10.0&exitAtAlarm=false STATE_FALSE reason=!meetsSchedule
09-21 22:15:31.252 573 573 D ConditionProviders.SCP: notifyCondition condition://android/schedule?days=1.2.3.4.5&start=22.0&end=7.0&exitAtAlarm=false STATE_TRUE reason=meetsSchedule
09-21 22:15:31.252 573 573 D ConditionProviders.SCP: Scheduling evaluate for Mon Sep 21 23:30:00 EDT 2020 (1600745400000), in +1h14m28s748ms, now=Mon Sep 21 22:15:31 EDT 2020 (1600740931252)
生成动态分析报告
原文:https://www.cnblogs.com/qtp-1/p/14340041.html