MobSF移动安全测试框架|自动化静动态app分析框架

MobSF移动安全测试框架|自动化静动态app分析框架

本文转自雨苁 并作补充

移动安全框架(MobSF)是一种自动化的多合一移动应用程序(Android/iOS/Windows)可以进行静态和动态分析的渗透测试,恶意软件分析和安全评估框架。MobSF支持移动应用程序二进制文件(APK,XAPK,IPA和APPX)以及压缩的源代码,并提供REST API以与CI / CD或DevSecOps管道无缝集成。动态分析器可帮助您执行运行时安全性评估和交互式检测。

运行截图示例

静态分析-Android

image

静态分析-Android源树状视图

image

静态分析-iOS

image

动态分析-Android APK

image

Web API查看器

image

项目地址:

Github

安装方法

requirements.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Django>=3.1.5
lxml>=4.6.2
rsa>=4.7
biplist>=1.0.3
requests>=2.25.1
bs4>=0.0.1
colorlog>=4.7.2
macholib>=1.14
whitenoise>=5.2.0
waitress>=1.4.4;platform_system=='Windows'
gunicorn>=20.0.4;platform_system!='Windows'
psutil>=5.8.0
shelljob>=0.6.2
asn1crypto>=1.4.0
oscrypto>=1.2.1
distro>=1.5.0
IP2Location>=8.5.1
lief>=0.11.0
http-tools>=2.1.0
libsast>=1.3.7
pdfkit>=0.6.1
google-play-scraper>=0.1.2
androguard==3.3.5
apkid==2.1.2
frida==14.2.8
# For semgrep
ruamel.yaml==0.16.10 # pyup: ignore

现在,只要您已安装文档中的所有要求,就可以从pypi https://pypi.org/project/mobsf/安装mobsf

1
2
3
4
5
6
7
8
9
python3 -m venv venv
source venv/bin/activate

pip wheel --wheel-dir=yara-python --build-option="build" --build-option="--enable-dex" git+https://github.com/VirusTotal/yara-python.git@v3.11.0
pip install --no-index --find-links=yara-python yara-python

pip install mobsf
mobsfdb # 迁移数据库
mobsf 127.0.0.1:8000 # 运行mobsf

linux系统安装方法

1
2
3
4
5
git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
cd Mobile-Security-Framework-MobSF
apt-get install python3-venv
pip3 install -r requirements.txt
./setup.sh

在浏览器中打开链接(0.0.0.0:8000),查看MobSF是否已正确安装。

image

登陆页面

现在MobSF已启动并正在运行,我们可以将虚拟APK(在本例中,我将使用Kyle Benac的InjuredAndroid(在此处))放入MobSF界面,然后看看会发生什么。等待几分钟后,我们可以看到对APK进行了静态分析。现在,在登录页面上,我们可以看到给出了严重性评分。此分数越高,应用程序越安全。接下来,还给出了哈希,APK的文件名和大小。在第一行的第三列中,我们还可以看到软件包名称,主要活动,最小SDK版本和应用程序版本。还给出了应用程序的描述。

image

向下滚动一点后,我们将看到以下内容:

  • 在小卡片中,我们看到了不同的应用程序组件
  • 动态分析选项将帮助MobSF进行运行时分析
  • 查看反编译代码的选项。这是apktool生成的代码。通常,资源文件也将被解码。也可以查看smali代码。使用它,可以更轻松地在单独的Java类中分离和查看源代码。

image

签署者证书分析

在证书列中,我们可以看到签署者证书,在其中可以找到有关开发人员,国家/地区,州,算法类型,位大小等的重要信息。

image

申请权限

此外,我们可以看到应用程序具有的所有权限。
有各种权限被分类为危险或正常。
从安全分析人员的角度来看,重要的是要了解哪些权限可能导致进一步的损害。例如,如果应用程序可以访问外部媒体并将关键信息存储在外部媒体上,则可能会很危险,因为存储在外部媒体上的文件是全局可读和可写的。

image

可浏览的活动和网络安全分析

接下来,在“可浏览的活动”部分中,我们可以看到实现了深层链接架构的所有活动。请参考**此处** 的文章****以了解有关深层链接,其实现以及开发的所有信息。

在“网络安全”部分,您可以找到有关与应用程序相关的网络安全问题的一些详细信息。这些问题有时会导致类似MiTM的严重攻击。例如,在下面的屏幕截图中,您可以发现该应用程序未使用已实现的SSL固定机制。

image

清单分析

在下一节中,MobSF分析了清单文件。您可以从android清单文件中找到许多信息,例如导出了哪些活动,是否可调试应用程序,数据模式等。有关参考,请参见下面的屏幕截图。

image

代码分析

MobSF工具最有趣的功能之一是代码分析部分。在本节中,我们可以看到MobSF已经基于OWASP MSTG等行业安全标准做法对应用程序的某些行为进行了分析和比较,并将漏洞映射到OWASP Top10。有趣的是,在这里提到了CWE和CVSS评分,这很有趣。可能会帮助各种分析人员方案,并有助于更轻松地创建报告。

image

相关恶意软件分析

MobSF还托管提供APKiD分析的部分。APKiD是一个开源工具,对识别Android文件中的各种打包程序,编译器,混淆器等非常有用。它类似于APK中的PEiD。在这里,您可以看到它已在APK中检测到反VM代码。

image

与恶意软件分析有关的是域恶意软件检查功能。MobSF在这里提取所有经过硬编码或在应用程序中使用过的URL / IP地址,并显示其恶意软件状态,并使用ip2location给出其地理位置。

image

还可以进行全面的字符串分析。知道恶意软件分析的人员会深入了解字符串,但对于那些不了解字符串的人,字符串是文件中嵌入的ASCII和Unicode可打印字符序列。提取字符串可以提供有关程序功能和与可疑二进制文件关联的指示符的线索。例如,如果APK将某些内容显示为输出,则该流将被调用并因此显示在字符串中。这与strings.xml文件不同。很多时候,与APK通信的第三方IP地址在此处可见。从恶意软件分析的角度来看,这是必不可少的。

image

人们还可以在MobSF中找到硬编码的电子邮件。全部使用反编译的源代码完成。通常,一个pentester可以找到一些重要的电子邮件ID,这些电子邮件ID在第三方站点上被用作凭证,例如,用于访问数据库。

image

就像电子邮件一样,URL也经常被硬编码。人们可以找到有时正在使用的多汁URL。分析师经常发现恶意URL甚至是C&C服务器也被访问。

image

硬编码的秘密

通常,开发人员习惯于在string.xml中存储诸如AWS ID和凭证之类的关键密钥,并在Java活动中使用对象作为引用。但是这样做没有任何帮助,因为strings.xml可以轻松解码。

image

活动组件存在

使用MobSF还可滚动显示所有存在的活动的列表。这可以深入了解Android APK的骨架。另外,如果开发人员进行了混淆处理,有时jadx会用一些随机字母替换类的真实名称,MobSF也可以关联其真实名称(并非一直存在或在强烈混淆的情况下不会发生)。

image

同样,分析师也可以遍历服务,广播,提供者和内容接收者以及APK存档中存在的所有文件,以创建应用程序中存在的所有资源的地图。

image

动态分析仪

为了进行动态分析,我们需要先在genymotion中启动android VM。在这里,我已经在7.1版上创建了一个Android VM

image

当您按顶部导航窗格上的动态分析器选项时,如果MobSF和genymotion在同一台基本计算机上运行,则MobSF将自动将其自身附加到正在运行的VM。但是,如果MobSF在另一个虚拟机中,则可能必须将MobSF代理附加到genymotion的VM的远程IP和端口。连接后,我们将看到以下屏幕。

image

在分析器状态栏下,我们可以看到各种可用的默认frida脚本,这些脚本可以检查各种基本漏洞,例如SSL固定绕过和根检测。如果您还没有阅读有关frida的信息,请通过此处阅读。还有其他辅助脚本,使分析人员可以枚举各种类,还可以实时捕获字符串比较(再次有助于恶意软件分析人员的观点)。然后,只需单击“开始检测”,选定的脚本将自动附加到应用程序。因此,如果我选择了SSL Pinning绕过脚本,并且捕获了流量(以后在日志或API监视器中可见),那将意味着SSL Pinning被绕过了。

image

现在,要进一步分析活动的漏洞,可以在顶部看到两个按钮,分别用于已导出和未导出的活动

image

同样,如果不必使用预先配置的Frida脚本,也可以将Frida脚本粘贴到右侧的文本框中。还有一个下拉框可以加载这些脚本。您也可以编辑相同的内容。

image

Logcat流

Logcat也可以在MobSF的本地环境中查看。顶部菜单上有一个按钮,可让用户查看此内容。

image

API监控器

就像logcat监视设备日志一样,也可以监视API。APK实时使用各种API来执行各种功能,例如Base64库。

image

因此,如果函数正在使用此API并解密一个值,我们可以在此处看到该值并对其进行解码。例如,在下面您可以在Base64中看到一次此类函数的返回值。

image

下载报告

完成分析后,可以通过滑动左侧的菜单栏滑块并单击生成报告来下载报告。

image

生成报告时,您可能会注意到一些错误。要解决此问题,您可以按照以下命令安装wkhtmltopdf模块:

1
apt-get install wkhtmltopdf

image

现在,再次单击最近的扫描栏,您将看到静态和动态报告生成选项。

image

该报告如下所示:

image

结论

MobSF是在Android APK上进行自动化分析的绝佳工具。它并没有涵盖对所有漏洞的分析,许多测试只能手动进行,但它是一个非常漂亮的小工具,可以在很大程度上帮助分析师。

from