MobSF:app安全测试框架

介绍

MobSF是Mobile Security Framework的缩写,是一个移动端应用安全问题检出的框架和工具,它适用于Android/iOS/Windows,能够执行动态和静态的恶意软件的分析和检测。支持Android和iOS以及Windows移动应用,无论是二进制方式还是压缩的源代码都可以进行检测。MobSF将数据保持在本地环境之中,所以可以不必担心应用和相关的数据被送至云端。

docker安装部署

  1. 下载镜像
➜  ~ docker pull opensecurity/mobile-security-framework-mobsf
  1. 启动容器
➜  ~ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
  1. 访问服务,上传Andriod或IOS应用
    访问http://127.0.0.1:8000


    MobSF:app安全测试框架_第1张图片
    在这里插入图片描述

    上传应用,稍等一下就可确认整体结果:


    MobSF:app安全测试框架_第2张图片
    在这里插入图片描述

静态检测

  1. 基本信息
  • File Information:文件信息,文件信息包括了文件名、文件大小、md5、sha1、sha256
  • App Information:App信息包括了包名、Main Activity等信息
  • 基本信息中还会给出Activities、Services、Receivers、Providers这四大组件的数目,以及可导出组件的数目。(可导出组件是较为严重的安全漏洞,因此这里单独列出了可导出组件的数目)
  1. 代码性质
    在代码性质中,可以查看并下载App的Java代码,或者查看并下载Smali代码,再或者查看Manifest文件。另外,在代码性质中部分中也可以开始动态分析。
  2. Permissions:权限信息
    在权限信息中,罗列了被检测App在Manifest文件中申请的所有权限,并标出了每个权限的危险指数,对于有安全隐患的权限标记为危险。在每个权限后面都加上了该权限的作用简介,并对其功能及安全风险进行了描述。
    以android.permission.ACCESS_COARSE_LOCATION为例:
    被检测App请求了这一权限,这项权限用于获取设备的粗略位置信息,MobSF将其标记为dangerous,即认为这项权限是有安全风险的。在描述中介绍了这一权限的功能,可以通过基站定位等方式获取用户位置,恶意程序可以通过该权限来获取你的大致位置。
  3. Android API:安卓API
    上传为安卓应用时展示,列举了被检测App调用的所有安卓API,并给出了调用API的代码的位置,这一功能在代码研究分析时比较实用,但在安全检测分析中实际作用并不大。
  4. Security Analysis:安全分析
    安全分析是MobSF的最重要部分,安全分析分为三部分,manifest分析、源码分析和文件分析。


    MobSF:app安全测试框架_第3张图片
    在这里插入图片描述
  • manifest分析
    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视图实现属于“警告”。其余检测出的项目全部标记为“高危”。

你可能感兴趣的:(MobSF:app安全测试框架)