移动攻防

初识App安全测试框架——MobSF

2020-09-19  本文已影响0人  book4yi

简介:


MobSF是Mobile Security Framework的缩写,是一个移动端应用安全问题检出的框架和工具,它适用于Android/iOS/Windows,能够执行动态和静态的恶意软件的分析和检测。支持Android和iOS以及Windows移动应用,无论是二进制方式还是压缩的源代码都可以进行检测(动态分析目前暂时只支持Android)

项目地址:https://github.com/MobSF/Mobile-Security-Framework-MobSF/releases/

安装过程:


Windows安装部署:

安装要求:

Git
python3.7
JDK 8以上版本
Microsoft Visual C ++ Build Tools
OpenSSL
wkhtmltopdf(需要添加到环境变量PATH,用于报告导出)

之后切换到对应目录下,点击执行setup.bat,完成之后执行run.bat即可

git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
cd Mobile-Security-Framework-MobSF
setup.bat
run.bat 127.0.0.1:8000  # 如果你在执行脚本时没有附带任何参数,那么 MobSF 将监听 0.0.0.0:8000。

注意:Windows用户在运行setup.bat之前,请关闭所有MobSF打开过的文件夹和用MobSF打开过的文本编辑器。 这些都会因为引起权限错误造成安装中断。

安装过程详情参考官方文档(要开代理):
https://mobsf.github.io/docs/#/zh-cn/

docker安装部署:
service docker start
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

安装完上传app进行静态检测时第一次会报错:

[Errno 2] No such file or directory: '/root/.MobSF/signatures/exodus_trackers'

解决办法:

find / -name exodus_trackers
cp xxxx/exodus_trackers /root/.MobSF/signatures/

安装过程中遇到任何问题可参考:https://github.com/MobSF/Mobile-Security-Framework-MobSF/issues

检测是否成功部署:

1、访问http://127.0.0.1:8000

2、上传Andriod或IOS应用进行静态分析,是否会报错:

静态检测:


测试App:sieve.apk

1、基础信息检测:

File Information:文件信息,文件信息包括了文件名、文件大小、md5、sha1、sha256
App Information:App信息包括了包名、Main Activity、Target SDK等信息

基本信息中还会给出Activities、Services、Receivers、Providers这四大组件的数目,以及可导出组件的数目。(可导出组件是较为严重的安全漏洞,因此这里单独列出了可导出组件的数目)

2、代码层面:

可以查看并下载App的Java代码,或者查看并下载Smali代码,再或者查看Manifest文件。另外,在代码性质中部分中也可以开始动态分析。

3、应用签名分析:

由上图可知该App使用Debug 证书,存在相应风险

4、权限信息:

在权限信息中,列举了被检测App在AndroidManifest.xml文件中申请的所有权限,并标出了每个权限的危险指数,对于有安全隐患的权限标记为危险。在每个权限后面都加上了该权限的作用简介,并对其功能及安全风险进行了描述

drozer也可以通过查询App的基础信息列举相应的权限:

跟MobSF相比之下,drozer没有图形界面,同时也没有对相应权限所对应的功能进行描述。

5、Android API:

列举了被检测App调用的所有安卓API,并给出了调用API的代码的位置,这一功能在代码研究分析时比较实用,但在安全检测分析中实际作用并不大。

6、Security Analysis:

安全分析是MobSF的最重要部分,分为三部分,manifest分析、源码分析和文件分析

文件清单分析:
它会检测AndroidManifest.xml文件,检查内容涵盖如下:

1)检查android:debuggable是否为true,如果是true,那么认为此处具有级别为“高”的安全风险,因为此时App可以被调试,攻击者可以获取调试信息,这会泄漏许多关键信息,造成严重的安全风险。
2)检查android:allowBackup是否为true,如果为true或者未定义android:allowBackup,都认为此处具有级别为“中等”的安全风险,通常认为可以备份应用数据是有安全风险的,如果未定义android:allowBackup,则在某些情况下系统会默认该项为true,同样会造成安全隐患,如果检测出未定义android:allowBackup,那么将会提示需要将其设置为false。
3)检查android:testOnly是否为true,如果是则具有“高”安全风险,在此情况下程序出于测试状态,会暴露程序本身的功能或数据,这将导致安全漏洞。
4)检查Activity有没有设置TaskAffinity。MobSF认为,设置了TaskAffinity会让其他应用读取到发送给另一个任务的intents,而这具有“高”安全风险。框架建议这一项使用默认设置。
5)Activity启动方式不标准,这也具有“高”安全风险,当intent中包含敏感信息时,Activity启动方式应该设置为“standard”,如果设置为"singleTask/singleInstance"则可能导致信息泄漏。
6)组件导出检测。在之前的报告中已经强调过,组件可导出是很常见的安全风险,任何组件都不应设置为可导出的,否则均认为存在安全隐患。
7)不适当的Content Provider权限,Content Provider如果设置权限为设备上所有App均可访问则有可能导致其中包含的敏感信息泄露,这具有“高”安全风险。具体包括"android:pathPrefix=/","android:path=/"和"android:pathPattern=*"。
8)检查android:scheme中是否存在有android_secret_code,如果是,则存在“高”安全风险,将会导致加密内容泄漏。
9)二进制短信端口处于监听状态。程序应当对接收的短信进行安全性验证,并且应该假定所有接收到的短信都来自不可信任源。如果对二进制短信没有进行适当处理,则程序具有“高”安全风险。

源码分析中的检测项被分为四个级别,分别是“高危”、“信息”、“安全”和“警告”。其中“高危”是最高级别的安全风险,“警告”是次一级的,“信息”则主要是敏感信息、隐私信息保护不当,不属于安全风险,“安全”属于表扬性质,在代码中发现有防止截屏、root检查等功能,则列出标记为安全。日志信息或者敏感信息加密不当属于“信息”。不安全的Web视图实现属于“警告”。其余检测出的项目全部标记为“高危”。

由上图可知,它会从代码层面对安卓的四大组件进行检测,并且给出评估风险

drozer也有相应功能,它会对某项组件进行专项检测,就是稍微麻烦了一点,需要一个个进行测验:

利用模拟器进行MobSF动态调试:


由于本地已安装Vmware,懒得再装VirtualBox,感兴趣的请参考如下两篇文章:
Android虚拟机GenyMotion
https://mobsf.github.io/docs/#/zh-cn/dynamic_analyzer?id=android-studio-%e6%a8%a1%e6%8b%9f%e5%99%a8

以下步骤,利用模拟器进行MobSF动态调试失败~

1、打开模拟器,并启用网络桥接模式:

2、编辑MobSF/settings.py文件,手动配置ANALYZER_IDENTIFIER:

3、adb命令连接模拟器:

查看是否连接成功:

4、启动动态检测:

建议使用Android 7.0及更高版本。首次运行时会自动MobSFyed Android 5及更高版本。对于小于5的Android版本,必须在第一次进行Dynamic Analysis之前先运行安卓运行时。单击"动态分析"页面中的MobSFy Android运行时按钮以MobSFy Android运行时环境。

小结:


个人感觉MobSF的静态分析做得确实挺好的,但只靠这个很难在实战有效果。
目前的想法:以Drozer为主,MobSF为辅配合使用进行安全测试

参考如下:


MobSF:app安全测试框架
利用模拟器进行MobSF动态调试
利用MobSF自建移动应用APP扫描云平台

上一篇 下一篇

猜你喜欢

热点阅读