移动安全测试 Mobile-Security-Framework-MobSF 尝鲜

陈恒捷 for PPmoney · December 19, 2017 · Last by lsy replied at December 21, 2017 · 3760 hits
本帖已被设为精华帖!

背景

没啥背景,老大介绍+自己感兴趣,就尝尝鲜呗

介绍

官方地址:https://github.com/MobSF/Mobile-Security-Framework-MobSF

Mobile Security Framework (MobSF) is an intelligent, all-in-one open source mobile application (Android/iOS/Windows) automated pen-testing framework capable of performing static and dynamic analysis. It can be used for effective and fast security analysis of Android, iOS and Windows mobile Applications and supports both binaries (APK, IPA & APPX ) and zipped source code. MobSF can also perform Web API Security testing with it's API Fuzzer that can do Information Gathering, analyze Security Headers, identify Mobile API specific vulnerabilities like XXE, SSRF, Path Traversal, IDOR, and other logical issues related to Session and API Rate Limiting.

MobSF 是一个智能的,整合的开源手机应用(Android,iOS,Windows)自动化测试框架,用于静态及动态测试。它可以用来有效和快速地对手机应用进行安全分析,且支持二进制文件(如 apk、ipa 和 appx)及打包好的源码。MobSF 同样可以通过它的 API Fuzzer 工具执行 Web API 安全测试,模拟像 XXE、SSRF、Path Traversal, IDOR等和会话及调用频率限制有关的、手机 API 相关威胁逻辑问题。

印度出品

截止写下此文时,最近一次提交是一天前,说明作者还是有持续在维护中的。

从它的介绍 ppt 可以大致看出它的功能列表:

image_1c1l3p5q7c4s148u1olh1tfpiu9p.png-201.9kB

核心功能为:

  1. 静态分析(接近静态扫描,上传安装文件自行扫描)
  2. 动态分析
  3. WEB API 模糊测试(Fuzzer)

特点也相当明确,那就是本地运行,不用上云。

安装及运行

官方很贴心,提供了 docker 镜像:

$ docker pull opensecurity/mobile-security-framework-mobsf
$ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

启动后,访问 http://localhost:8000 即可看到网站。

image_1c1l46gfvpdsc6q1dd8kgehvu16.png-70.5kB

首页倒也非常简洁,直接上传文件即可自动分析。可惜用 docker 方式启动的话,只能进行 android 的静态分析,其它功能需要遵循安装文档安装到电脑上。其中 iOS 必须装在 OS X 上。

静态分析

上传文件后,默认进行静态分析。Android 端大致做的事情和用 Drozer 做的分析差不多:扫描四大组件情况(个数、export 情况),反编译源码(java、smali)、mainfest 文件分析等。

主要报告项列举如下:

image_1c1l4f8pc1dbodp41er4ckh14ur1j.png-49.2kB

其中 Code Analysis 比较有意思,会把反编译后的源码中有问题的部分识别成一个个问题,并给出对应反编译源码链接。

image_1c1l4httf1bgqjfo103m13171go20.png-197.8kB

iOS 端检查项相对少一些,主要内容列举如下:

image_1c1nj3jlg1ie469bgp1ru9kbq2q.png-25.8kB

image_1c1nj6fchgk6rv11sb813v51d6f37.png-111.4kB

还有一些挺实用的功能,如查看所有字符串、生成 classdump:

image_1c1njb8rjk0sagl1q8f143i1gs73k.png-18.5kB

image_1c1njc9cdat230a1t2c2j5m4s4h.png-40.4kB

image_1c1njfi1birm1io61tal9meh034u.png-77.1kB

这方面了解不多,不好评判。不过就内容上说,还是挺丰富的。

动态分析

image_1c1l5p3rs4aq7jb17pdh1oj72d.png-157.6kB

通过在 vm 加入 agent 动态获取数据,进行动态分析。同样也可以用于测试是否可以绕过 https 验证。

动态分析支持4种部署方式

  1. Dynamic Analysis with MobSF Android 4.4.2 x86 VirtualBox VM -default (Fast, not all Apps work)
  2. Dynamic Analysis with MobSF Android 4.1.2 arm Emulator - (Slow, Most Apps work)
  3. Dynamic Analysis using a Rooted Android 4.03 - 4.4 Device (Very Fast, All Apps work)
  4. Dynamic Analysis using a Rooted Android 4.03 - 4.4 VM (not tested)

从官方介绍上看,root 后的 andorid 4.03-4.4 是最佳选择。

具体部署方式可直接参考 官方文档 。主要用到 Xposed 的 Droidmon, JustTrustMe 和 RootCloak 。

方法1中的虚拟机镜像下载了一个放到百度网盘,有需要的同学可以自取:https://pan.baidu.com/s/1kV9YSYF

考虑到部署成本比较高,目前暂时未尝试。待后续补充。

Web API 模糊测试

image_1c1nkd1rr11bq4tv1mma12l71g305b.png-228.1kB

从介绍上说,可以自主完成 SSRF & XXE、 Insecure Direct Object Reference (IDOR)、 Session Related Checks、 Rate Limiter、Security Headers and Info Gathering、Directory/ Path Traversal 这几类 api 扫描。

找不到使用方法,官方说在配置好动态分析后就能用了,暂时放弃。。。

小结

摘抄一下源码分析文章的小结

静态分析

静态分析时,MobSF主要使用了现有的dex2jar、dex2smali、jar2java、AXMLPrinter、CertPrint等工具。其主要完成了两项工作:解析AndroidManifest.xml得到了应用程序的各类相关信息、对apk进行反编译得到java代码,而后利用正则匹配找出该app包含的API函数、URL、邮箱集帐号密码等敏感信息。

动态分析

而动态分析部分,MobSF主要利用到了Xposed框架、Droidmon实现对应用程序调用API的情况进行监控,并且详细列出了需要分析的API列表。同时,MobSF还使用了ScreenCast结合adb shell input 完成对手机的远程控制功能。动态分析主要操作有:

  • 利用webproxy实现代理进而拦截样本流量。
  • 安装证书以便拦截https流量。
  • 遍历所有activity,尽量多的获取各activity运行得到的日志。
  • 利用正则匹配出API及参数和返回值。
  • 尽可能多的匹配出URL信息,对URL进行后续分析及恶意URL查杀。

API Fuzzer

API Fuzzer模块针对 Web API 的安全性进行检测,如收集信息,分析安全头部信息,识别API 的具体漏洞,目前支持SSRF、XXE、Path Traversal等漏洞的检测。

作为一个开源、可本地部署的安全扫描平台,mobsf 确实能减轻不少安全扫描和分析的工作量。但它和各类安全测试工具一样,只能提供参考数据,真正的分析还得靠人。
搜索过程中,找到2个挺不错的文章,也一并分享下:

参考文章

共收到 11 条回复 时间 点赞

这玩意得二次开发,现在扫出来的问题感觉不太实用。

玄柯 回复

是的,感觉不大够

你们移动端安全,目前主要关注哪一块?

陈恒捷 回复

我们公司规模小做的也比较浅,一般的方法是:drozer测组件导出安全、AndroBugs对代码静态扫描、阿里聚安全扫。之前也考虑过将AndroBugs和MobSF整合一下,两者都是python写的,但是就我一个人,没精力搞起来。
不过感觉安全测试最好还是交给专业的人测,感觉我的测试方案有点业余。。。

思寒_seveniruby 将本帖设为了精华贴 20 Dec 17:22

就我们公司的安全实践来看,业务逻辑上漏洞、接口参数的注入,这两块才是最主要的安全点。

动态测试其实挺有用的,尤其是xposed注入方式,做性能分析也有用。

思寒老师,我们第五期学员会讲xposed吗,我想把它用起来。但是网上资料太少了,都不会安装。

wangchen_neuq 回复

到时候会给大家讲反编译app,动态修改这个有点拔高,不给大家讲。

这个系统集成了接口自动化吧我记得

而且是印度人写的

我理解 API Fuzzer 不属于平时说的接口自动化,更接近于接口安全扫描或者安全漏洞检测把。

给力,mark一下,团队应用,还得二次开发结合业务需求

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 13 Dec 14:44
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up