您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
   
 
     
   
 订阅
  捐助
MobSF 框架及源代码分析
 
 
274 次浏览     评价:  
 2020-10-19  
 
编辑推荐:
本文主要介绍了

MobSF是什么、它的代码结构,包括:静态分析实现原理、动态分析实现原理 、API Fuzzer等相关内容。
本文来自于掘金,由火龙果软件Anna编辑、推荐。

MobSF

MobSF,全称(Mobile-Security-Framework),是一款优秀的开源移动应用自动测试框架。该平台可对安卓、苹果应用程序进行静态、动态分析,并在web端输出报告。静态分析适用于安卓、苹果应用程序,而动态分析暂时只支持安卓应用程序。

MobSF使用Django框架开发,使用sqlite进行的存储,支持对apk、ipa及zip压缩的源代码进行扫描分析。

同时,MobSF 也能够通过其API Fuzzer功能模块,对 Web API 的安全性进行检测,如收集信息,分析安全头部信息,识别移动API 的具体漏洞,如XXE、SSRF、路径遍历,以及其他的与会话和API调用有关的逻辑问题。

代码结构

MobSF源代码结构主要包含静态分析、动态分析、API Fuzzer三个部分,本文不关注Django框架本身及Web处理相关的内容。如图:

静态分析实现原理

静态分析的处理流程集功代码在目录StaticAnalyzer\views\android下static_analyzer.py程序文件中。分析代码流程可知,在MobSF框架中静态分析主要包含三个部分,分别是Manifest Analysis、Cert Analysis、Code Analysis。流程如下:

Manifest Analysis

在解压apk后,MobSF使用AXMLPrinter2.jar工具提取app中的AndroidManifest.xml文件内容,并进行分析。

ManifestAnalysis主要功能是对AndroidManifest.xml进行解析,提取其中permission、granturipermissions、application、activties、services、intents、actions等,分析所有权限并对权限进行分级,包含正常、危险、签名、系统四个类别。对各属性配置进行检查,看是否存在不安全的配置,如allowBackup、debuggable、exported等属性设置。详细代码功能可见manifest_analysis.py程序文件。

Cert Analysis

MobSF证书分析功能函数在cert_analysis.py文件中,MobSF首先尝试获取Hardcoded Certificates/Keystores,然后通过CertPrint.jar工具解析apk中证书的信息,并完成证书相关问题的分析。

Code Analysis

MobSF静态代码分析功能函数在code_analysis.py文件中,反编译的代码在converter.py中。其中使用Dex2Jar将dex转变为jar文件,使用Dex2Smali将dex转变为smali代码,使用jd-core.jar、cfr_0_115.jar、procyon-decompiler-0.5.30.jar将jar包转为为可读的java代码。

源代码分析部分主要利用正则表达式对java源码进行匹配来实现的。主要通过匹配常见方法中的关键词来提取源码中用到的方法。 通过匹配敏感关键词来提取账号密码等信息:

常见API字符串来判定是否有调用这些API:

要检测的api列表(部分)及对应的安全问题:

通过正则匹配URL的格式来提取源码中的URL:

通过正则匹配Email的格式来提取源码中的Email:

动态分析实现原理

MobSF同时还支持对安卓程序的动态分析,使用virtualbox运行app,并使用virtualbox提供的接口完成代理设置、虚拟机的操作,利用adb命令安装运行app,并获取app的运行相关信息,进行分析。 其动态分析主要目录结构如下图:

主要功能代码在DynamicAnalyzer/views目录下的android.py,根据其前端展示页面可知其主要功能有:

Environment Created

Start / Stop Screen

Install / Remove MobSF RootCA

Start Exported Activity Tester

Start Activity Tester

Take a Screenshot

Finish

虚拟机运行环境参数、Web代理设置、模拟设备设置在settings文件中

Environment Created

该功能主要由GetEnv函数实现Web代理设置,adb命令接口实现app的安装、运行。MobSF与虚拟运行环境连接后,即开始动态分析流程。

Start / Stop Screen

MobSF中提供实时操作功能,其实现主要利用屏幕录制软件screencast提供的服务,其实现代码如下:

Install / Remove MobSF RootCA

Start /Stop Exported Activity Tester

这部分主要是想尽量多的触发样本中所有行为,MobSF的做法是:遍历AndroidManifest.xml中的所有Exported Activity,并利用am start来依次启动,以方便xposed能获取到更多的日志。

其主要流程是:

1)获取静态分析得到的exported activity列表

2)遍历activity,并用adb -s IP:PORT shell am start -n PACKAGE/ACTIVITY 启动相应的activity

3)获取当前activity运行时的屏幕截图 adb -s IP:PORT shell screencap -p /data/local/screen.png

4)保存该截屏

5)强制关闭该应用 adb -s IP:PORT shell am force-stop PACKAGE

Start / Stop Activity Tester

与Exported Activity不同的是,这个测试将会遍历AndroidManifest.xml中所有Activity,而不单单是Exported。其流程与处理Exported Activity基本相同。

Take a Screenshot

截取屏幕并将图片保存在本地,代码如下:

Finish

在FinalTest函数中MobSF会将程序运行过程中的所有dalvikvm的Warning和ActivityManager的Information收集起来。

MobSF对日志的分析功能主要在APIAnalysis和RunAnalysis两个函数中,和静态日志分析一样,动态日志分析也是以正则匹配为主,APIAnalysis主要对x_logcat.txt中Droidmon.apk产生的日志进行处理,主要进行API调用分析,包括API的class、参数、返回值等,对需要监控的api函数在DynamicAnalyzer\tools\onDevice目录下的hooks.json文件中。包含监控函数详细的类名、方法名称等。

RunAnalysis函数主要处理样本运行后留下的WebTraffic.txt、logcat.txt、x_logcat.txt日志文件。

在RunAnalysis函数中,MobSF首先用正则匹配出所有可能的url,然后再一一对url进行相应分析。

API Fuzzer

MobSF框架中API Fuzzer模块主要对 Web API 的安全性进行检测,如收集信息,分析安全头部信息,识别API 的具体漏洞,目前支持SSRF、XXE、Path Traversal等漏洞的扫描,XXE及Path Traversal测试Payloads在APITester\payloads\路径下:

通过在setting文件中预定义设置的特征来匹配检测结果,同时MobSF也支持与云端的连接,从而进一步准确和全面的检测安全漏洞。

总结

通过对MobSF源代码的分析可以了解MobSF的基本工作原理以及流程。

静态分析

静态分析时,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等漏洞的检测。

 
   
274 次浏览     评价: 订阅 捐助
相关文章

性能测试十问:测试经理篇
web前端性能优化进阶路
性能测试综述
VS2010中自动化测试—Web性能测试
相关文档

性能测试
性能测试执行之测试脚本录制
性能测试进阶1-流程篇
性能测试进阶2-方案篇
相关课程

性能测试方法与技术
使用LoadRunner进行性能测试
Android应用的性能测试
基于Android的单元、性能测试
最新课程计划
 
最新文章
大数据平台测试
微服务架构下的测试之道
从零开始掌握微服务软件测试
如何进行测试需求分析:从接收需求到用例设计
python_selenium自动化测试框架
最新课程
测试需求分析与测试用例设计
性能测试方法与技术
自动化测试框架设计高级实践
接口自动化测试方法与工具
软件测试方法与实践(贯穿案例)
更多...   
成功案例
某支付企业 单元测试与重构培训
北京 用户体验、可用性测试与评估
某军工研究单位 自动化测试方法、案例与工具
知名消费金融公司 探索性测试与测试分析
北京 航天科工某子公司 软件测试架构师
更多...