【安全测试】移动端安全测试MobFS工具
2022-09-27 16:20 码上起舞 阅读(2105) 评论(0) 编辑 收藏 举报APP安全测试工具介绍:
MobSF(Mobile Security Framework) 是一款自动化移动 App 安全测试框架,适用于 iOS 和 Android,可熟练执行动态、静态分析和 Web API 测试。
移动安全框架可用于对 Android 和 iOS 应用进行快速安全分析。MobSF 支持 binaries(IPA 和 APK)以及 源码压缩包。
静态分析:
静态分析器可以执行自动化的代码审计、检测不安全的权限请求和设置,还可以检测不安全的代码,诸如ssl绕过、弱加密、混淆代码、硬编码的密码、危险API的不当使用、敏感信息/个人验证信息泄露、不安全的文件存储等。
动态分析:
动态分析器可以在虚拟机或者经过配置的设备上运行程序,在运行过程中检测问题。动态分析器可以从抓取到的网络数据包、解密的HTTPS流量、程序dump、程序日志、程序错误和崩溃报告、调试信息、堆栈轨迹和程序的设置文件、数据库等方面进行进一步的分析。
备注:动态分析需要Genymotion模拟平台的支持,通过它来启动安卓虚拟机VM
特点:
1、它是一款开源的移动 App 安全测试工具;
2、它可以托管在本地环境,因此重要数据不会与云交互;
3、它能对三个平台(Android、iOS、Windows)的移动 App 进行更快的安全性分析。同时,开发人员可以在开发阶段识别出安全漏洞。
4、它可以对Android、iOS和Windows端移动应用进行快速高效的安全分析,不仅支持APK、IPA和APPX等格式的应用程序,而且还可以对压缩包内的源代码进行安全审计。
5、它还包含有针对Web API的模糊测试工具,因此它还可以执行Web API安全测试,例如收集目标数据、安全Header、识别类似XXE、SSRF、路径遍历漏洞、IDOR或其他一些与会话和API访问频率相关的移动API漏洞。
c、安装方式:1、服务器安装 2、本地安装
1、服务器安装
a1、安装docker,见文档
a2、上传MobileSF镜像到docker
MobileSF镜像
存放服务器:10.xx.xx.xx
存放路径:/data/docker
a3、加载镜像:
docker load -i mobsf.tar
a4、查看镜像:
docker images
a5、启动mobsf镜像实例:
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
进入容器命令:
docker exec -it (容器id)775c7c9ee1e1 /bin/bash
2、本地安装及运行,见官方操作文档
https://mobsf.github.io/docs/#/running?id=windows
3、github路径:
https://github.com/MobSF/Mobile-Security-Framework-MobSF
https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
zip包:
Mobile-Security-Framework-MobSF-master.zip
4、代码分析:
https://blog.csdn.net/wutianxu123/article/details/104022024
d、使用:
安装成功后,见如下页面,直接上传相应文件即可,第一次扫描可能需要一定时间
扫描完成后 如下:
e、报告分析
3.1静态分析
(1)基本信息
①文件信息:文件信息包括了文件名、文件大小、md5、sha1、sha256。
②App信息:App信息包括了包名、Main Activity等信息。
③基本信息中还会给出Activities、Services、Receivers、Providers这四大组件的数目,以及可导出组件的数目。可导出组件是较为严重的安全漏洞,因此这里单独列出了可导出组件的数目。
(2)代码性质
在代码性质中,可以查看并下载App的Java代码,或者查看并下载Smali代码,再或者查看Manifest文件。另外,在代码性质中部分中也可以开始动态分析。
(3)权限信息
在权限信息中,罗列了被检测App在Manifest文件中申请的所有权限,并标出了每个权限的危险指数,对于有安全隐患的权限标记为危险。在每个权限后面都加上了该权限的作用简介,并对其功能及安全风险进行了描述。
以android.permission.ACCESS_COARSE_LOCATION为例,被检测App请求了这一权限,这项权限用于获取设备的粗略位置信息,MobSF将其标记为dangerous,即认为这项权限是有安全风险的。在描述中介绍了这一权限的功能,可以通过基站定位等方式获取用户位置,恶意程序可以通过该权限来获取你的大致位置。
(4)安卓API
列举了被检测App调用的所有安卓API,并给出了调用API的代码的位置,这一功能在代码研究分析时比较实用,但在安全检测分析中实际作用并不大。
(5)安全分析
安全分析是MobSF的最重要部分,安全分析分为三部分,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)二进制短信端口处于监听状态。程序应当对接收的短信进行安全性验证,并且应该假定所有接收到的短信都来自不可信任源。如果对二进制短信没有进行适当处理,则程序具有“高”安全风险。
3.2源码分析
安全分析的第二部分是源码分析,源码分析的所有项目都在如下这个元组中,这里是源码分析中所有检测项目的标签,每一项的具体含义以及判别方式将会逐一说明。
key: [] for key in('inf_act','inf_ser','inf_bro','log','fileio','rand','d_hcode','d_app_tamper','dex_cert','dex_tamper','d_rootcheck',\ 'd_root','d_ssl_pin','dex_root','dex_debug_key','dex_debug','dex_debug_con','dex_emulator','d_prevent_screenshot','d_webviewdisablessl',\ 'd_webviewdebug','d_sensitive','d_ssl','d_sqlite','d_con_world_readable','d_con_world_writable','d_con_private','d_extstorage','d_tmpfile',\ 'd_jsenabled','gps','crypto','exec','server_socket','socket','datagramp','datagrams','ipc','msg','webview_addjs','webview','webviewget',\ 'webviewpost','httpcon','urlcon','jurl','httpsurl','nurl','httpclient','notify','cellinfo','cellloc','subid','devid','softver','simserial',\ 'simop','opname','contentq','refmethod','obf','gs','bencode','bdecode','dex','mdigest','sqlc_password','d_sql_cipher','d_con_world_rw','ecb',\ 'rsa_no_pad','weak_iv' )
这里总共罗列了32个安全风险,但在上面的元组中有72项,这是因为元组中72项并非全部是安全风险,源码分析中的检测项被分为四个级别,分别是“高危”、“信息”、“安全”和“警告”。其中“高危”是最高级别的安全风险,“警告”是次一级的,“信息”则主要是敏感信息、隐私信息保护不当,不属于安全风险,“安全”属于表扬性质,在代码中发现有防止截屏、root检查等功能,则列出标记为安全。