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