移动安全框架 (MobSF) 是一个智能化、一体化的开源移动应用(Android / iOS)自动测试框架,能够对以上两种移动应用进行静态和动态分析(动态分析目前暂时只支持Android)。
它可以有效、快速地对应用APK 和IPA文件 及压缩的源代码进行审计分析。同时,MobSF 也能够通过其API Fuzzer功能模块,对 Web API 的安全性进行检测,如收集信息,分析安全头部信息,识别移动API 的具体漏洞,如XXE、SSRF、路径遍历,IDOR以及其他的与会话和API调用速率限制有关的逻辑问题。
运行环境
• Python 2.7,下载请点击:Python 2.7
• Oracle JDK 1.7或以上版本,下载请点击:Oracle JDK;
• Oracle VirtualBox 下载请点击: VirtualBox;
• iOS IPA分析(需在 Mac系统上执行)所需命令行工具( Mac系统)下载请点击:Conmand-line tool;
• 硬件配置:4GB 或以上内存,5G硬盘空间。
下载
MobSF最新发布版下载地址:MobSF;
MobSF VM 0.2 ova 文件下载地址:MobSF.VM 。
安装
该框架目前暂时只于Windows 7, 8, 8.1, 10, Ubuntu, OSX Mavericks等系统平台上进行测试。
• Windows:解压MobSF压缩文件到C:\MobSF;
• Mac:解压MobSF压缩文件到/Users/[username]/MobSF;
• Linux:解压MobSF压缩文件到/home/[username]/MobSF。
配置静态分析器
通过pip安装MobSF Python 依赖包,以下为不同系统的命令执行操作,
Windows
C:\Python27\Scripts\pip.exe install -r requirements.txt
如果pip.exe在脚本目录中不可用,下载及重新安装最新版本的Python2.7。
Unix
pip install -r requirements.txt
运行MobSF
python manage.py runserver
如果需要在具体端口上运行,可以通过以下指令进行,
python manage.py runserver port_number
如果上述步骤都顺利正常执行的话,那么我们将会看到以下的输出内容,
配置动态分析器
配置MobSF VM
动态分析器目前只支持针对 Android APK文件进行分析,硬件环境要求为需要计算机拥有4GB 内存和支持完全虚拟化。
首先,配置动态分析器我们需要获取以下4个方面的信息,
(1)VM UUID
(2)快照 UUID
(3)主机/代理 IP
(4)VM/设备 IP
操作步骤
1、打开VirtualBox(本文主要以VirtualBox为样例),选择文件->导入应用,并选中MobSF_VM_X.X.ova 文件(下载地址可于前文查看);
2、在进行导入过程中,请勿更改任意配置,一切按照默认设置进入下一步;
3、一旦OVA文件导入成功,我们将在VirtualBox上看到一个以MobSF_VM_X.X命名的新的条目;
4、接下来右击MobSF VM,并选择设置一项,选中到网络选项卡,这里我们需要配置两个网络适配器;
(1)适配器1 启用并于attached to 中,选择Host-only Adapter模式,重命名适配器名称,因为我们需要通过该名称来识别主机/代理 IP,配置如下图;
(2)适配器2 启用并于attached to中,选择NAT模式,配置如下图。
5、保存上述设置,便可启动MobSF VM。当该VM启动的时候,记下VM的 IP地址;
6、一旦该虚机启动后,它会停留在一个锁屏状态上,而解锁密码默认为1234;
7、获取 主机/代理 IP
(1)Windows :在命令提示符中输入ipconfig,记下与适配器1 相同名称的适配器IP地址;
(2)Unix :在命令提示符中输入ifconfig,记下与适配器1 相同名称的适配器IP地址;
8、接着在MobSF 虚机中选中Wi-Fi设置,设置代理IP(上一步获取到的IP)和端口(1337);
9、保存设置,并回到MobSF虚机的Home界面上,等待大约30秒的时间,之后保存好 MobSF虚机的快照;
10、一旦快照保存好,右击MobSF虚机,选择“在Explorer中显示”或者“在 Finder中显示”;
11、在任意编辑器中打开MobSF_VM_X.X.vbox文件(这里使用的是sublime),记下 VM UUID以及快照UUID;
接下来,到了此时,我们已经有了如前文提到的,配置动态分析器所需要的信息,
(1)VM UUID
(2)快照 UUID
(3)主机/代理 IP
(4)VM/设备 IP
12、接下来我们打开MobSF/settings.py文件,并将其中参数的值设置如下,
(1)UUID = VM UUID
(2) SUUID = Snapshot UUID
(3)VM_IP = VM IP
(4)PROXY_IP = Host/Proxy IP
以下为配置样本,
最后,我们重新再打开服务器即可运行。部分功能如下图
静态分析
Android APK
iOS IPA
动态分析
Android APK
Web API Fuzzer
*参考来源:GitHub、Docunmentation,FB小编troy编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
不容错过
- 看黑客如何分分钟“插队”预约一加手机Sphinx2015-08-14
- FreeBuf成为中国互联网安全大会(ISC 2014)战略合作媒体FB独家2014-09-09
- Bash漏洞引发僵尸网络狂欢cindy2014-09-28
- 一周海外安全事件回顾:混乱的中东网络战blackscreen2014-12-03
0daybank
已有 27 条评论
这个不错啊
在很久很久以前,他们还没被发到FB的时候,国内很多商业产品就是这套东西改的~
别的都小事,赶紧把安卓的关联唤醒解决了吧,太烦人
镜像下载不了啊,无法找到drive.google.com 的服务器 DNS address,已经科学上网了额
@ 我是SB 请稍等片刻,正在将镜像上传到百度云盘,稍后会共享出来呢,希望能多多交流哈,谢谢!
@ 我是SB 哈喽,虚机镜像下载链接为: http://pan.baidu.com/s/1hqNhtZY 密码: 2mcf,请收好哈!
mark 一下
话说如何把这个ova的文件导入Vmware呢?
@ andro 用VirtualBox就可以噻
谢谢分享呀
@ andro 我试了 要解决vmare提示硬盘容量不符的问题
运行后报错 是几个意思啊 求助
[2016-04-01 13:37:29]
[ERROR] Finding Java path – Cannot Run Process (/home/tang/Mobile-Security-Framework-MobSF-0.9.1/MobSF/java.py, LINE 65 "proc = subprocess.Popen(args,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,)"): [Errno 2] No such file or directory
[2016-04-01 13:37:29]
[ERROR] Oracle Java (JDK >=1.7) is not found! (/home/tang/Mobile-Security-Framework-MobSF-0.9.1/MobSF/java.py, LINE 45 "dat=RunProcess(args)"): [Errno 13] Permission denied: ‘/home/tang/Mobile-Security-Framework-MobSF-0.9.1/logs/MobSF.log’
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 303, in execute
settings.INSTALLED_APPS
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 92, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/tang/Mobile-Security-Framework-MobSF-0.9.1/MobSF/settings.py", line 143, in <module>
JAVA_PATH=java.FindJava()
File "/home/tang/Mobile-Security-Framework-MobSF-0.9.1/MobSF/java.py", line 61, in FindJava
PrintException("[ERROR] Oracle Java (JDK >=1.7) is not found!")
File "/home/tang/Mobile-Security-Framework-MobSF-0.9.1/MobSF/exception_printer.py", line 29, in PrintException
with open(LOGPATH + ‘MobSF.log’,'a’) as f:
@ tq107191614 上面不是说你没安装JAVA?
@ tq107191614 请问一下,你解决了吗?我也发现这个问题
Web API Fuzzer怎么打开啊 没有找到
我连静态都没弄好,能不能指导一下
为什么我敲这个命令符没有用?
@ zt 你要在MobSF解压的文件夹里运行
怎么办?
在windows上装这个好虐心 各种报错,各种缺少依赖。。。
谁知道怎么显示中文?
@ 寰者 pin是多少啊
我想问一下,如何进入apk的动态分析界面,现在静态分析可以使用,哪位大神帮帮忙
现在只部署好静态的,动态的在调整中。。。
C:\MobSF>python manage.py runserver
[INFO] Running first time setup for windows.
[*] Reading config file..
[*] Downloading nuget..
[*] Saving to File nuget.exe
[*] Downloading and installing Binskim…
Unhandled Exception: System.NotSupportedException: The requested security protoc
ol is not supported.
at System.Net.ServicePointManager.ValidateSecurityProtocol(SecurityProtocolTy
pe value)
at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args)
at NuGet.CommandLine.Program.Main(String[] args)
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
367, in execute_from_command_line
utility.execute()
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
316, in execute
settings.INSTALLED_APPS
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 53, in __ge
tattr__
self._setup(name)
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 41, in _set
up
self._wrapped = Settings(settings_module)
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 97, in __in
it__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "C:\MobSF\MobSF\settings.py", line 381, in <module>
windows_setup.install_locally(MobSF_HOME)
File "C:\MobSF\install\windows\setup.py", line 370, in install_locally
tools_binskim()
File "C:\MobSF\install\windows\setup.py", line 148, in tools_binskim
‘-o’, mobsf_subdir_tools
File "C:\Python27\lib\subprocess.py", line 219, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command ‘[u'C:\\MobSF\\StaticAnalyzer\\tools\\win
dows\\nuget.exe', 'install', u'Microsoft.CodeAnalysis.BinSkim', '-Pre', '-o', u'
C:\\MobSF\\StaticAnalyzer\\tools\\windows\\']‘ returned non-zero exit status -53
2462766
C:\MobSF>
到这一步就卡出了,老是提示NuGet Command Line 已停止工作,如图。
,弄了好久都没解决,特来教各位大佬呀
@ kingjohn 是请教,,打错字了