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

1元 10元 50元





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



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
安卓恶意代码分析工具详解—MobSF
 
作者:Tracy_梓朋
   次浏览      
2020-11-23
 
编辑推荐:
本文将主要介绍各分析工具在对APK进行静态、动态分析时,使用到的技术进行分析。
本文来自于个人微博,由火龙果软件Alice编辑、推荐。

MobSF

MobSF,全称(Mobile-Security-Framework),是一款优秀的开源移动应用自动分析平台。该平台可对安卓、苹果应用程序进行恶意代码自动分析,并在web端输出报告。该平台同时包含静态分析和动态分析功能,静态分析适用于安卓、苹果应用程序,而动态分析暂时只支持安卓应用程序。(PS:其web界面相当美观,而且支持分析结果存入数据库,方便检索)

静态分析实现原理

MobSF实现静态分析的代码位于StaticAnalyzer目录下,其目录中文件如下:

静态分析同时支持对APK、IPA两种文件格式的支持,本文主要分析其处理APK文件的流程及技术。其主要处理流程在android.py中。先定位到StaticAnalyzer函数中,忽视所有web处理方面的内容,得到其关键代码以及流程如下:

分析上述主代码流程可知,MobSF中主要进行恶意代码分析的函数有:ManifestAnalysis、CodeAnalysisStrings。对apk进行处理的流程如下:

a. 解压apk

b. 获取文本模式AndroidManifest.xml

c. 自动分析AndroidManifest.xml中信息

d. dex转jar

e. dex转smali

f. jar转java

g. 自动分析反编译得到的java代码

其中ManifestAnalysis函数主要功能大致如下:

从ManifestAnalysis函数主要的作用是对AndroidManifest.xml进行解析,提取其中permission、granturipermissions、application、activties、services、intents、actions等,将分析结果直接统计并返回到前端页面进行展示。

CodeAnalysis功能大致如下:

其源码分析部分主要利用正则表达式对java源码进行匹配来实现的。主要通过匹配常见方法中的关键词来提取源码中用到的方法,通过匹配敏感关键词来提取账号密码等信息,通过匹配常见API字符串来判定是否有调用这些API,通过匹配URL、Email的格式来提取源码中的URL和邮箱信息。

匹配得到结果后,整合结果,输出到前端展示出来。至此,动态分析结果全部输出。前端展示如图所示:

动态分析实现原理

  MobSF同时还支持对安卓程序进行动态分析,主要是利用安卓虚拟机,安装例如xposed等框架,而后安装并运行需分析的样本。得到样本输出的日志,分析日志并在前端展示出来。

  其动态分析主要目录结构如下图:

  DynamicAnalyzer/views目录下的android.py则正是需要重点分析的,根据其前端展示页面可知其主要功能有:

1.Environment Created

2.Start / Stop Screen

3.Install / Remove MobSF RootCA

4.Start Exported Activity Tester

5.Start Activity Tester

6.Take a Screenshot

7.Finish

接下来对源码中针对各功能的实现过程进行分析。

Environment Created

这部分,主要是做一些环境的检测,以及设置web代理、设置adb连接、样本安装运行工作,主要代码如下:

所以,整个流程大致为:

1.利用pyWebProxy中提供的功能设置web代理。用来抓取APP访问流量。

2.建立adb连接 adb connect ip:port

3.安装运行程序 adb install -r xxx.apk adb shell am start -m xxx

4.获取屏幕大小 adb shell dumpsys windows | grep mUnrestrictedScreen

Start / Stop Screen  

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

在其中开启服务后,另起了一个线程ScreenCastService来对screencast服务进行处理:

ScreenCastService不停地访问SCREEN_DIR,读取该文件夹下的图片文件,并且将图片数据输出到web端进行显示。从而完成远程实时显示的功能。同时MobSF还提供远程操作的功能,具体实现代码在Touch函数中,具体实现如下:

由源码可知其主要实现过程是,获取屏幕点击时的坐标,通过adb shell input tap来完成点击操作。

Install / Remove MobSF RootCA

安装、卸载RootCA,主要是为了方便对样本中HTTPS流量进行截获。主要实现过程如下:

1.adb push ca.crt /data/local/tmp/xxx

2.adb shell su -c cp /data/local/tmp/xxx /system/etc/security/cacerts/

3.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

即,截屏,然后保存到本地。具体实现是:

1.adb -s IP:PORT shell screencap -p /data/local/screen.png

2.adb -s IP:PORT pull /data/local/screen.png xxxx/xxx.png

Finish

除了前面介绍的几个功能外,还需要介绍其主要动态信息获取以及输出日志分析时用到的一些函数。

在FinialTest中,主要做一些扫尾的工作,将程序运行过程中所有dalvikvm的 Warning 和ActivityManager 的 Information 收集起来:adb -s IP:PORT logcat -d dalvikvm :W ActivityManager:I > logcat.txt。同时,将Xposed目录下的API监控日志提取出来:adb -s IP:PORT pull / data /data / de.robv.android.xposed.installer / log / error.log x_logcat.txt。再 dumpsys :adb -s IP:PORT shell dumpsys > dump.txt 。

除此之外,平台还会利用datapusher来打包样本安装运行后留下的文件:adb -s IP : PORT shell am startservice -a PACKAGE opensecurity . ajin.datapusher / .GetPackageLocation 。

MobSF对日志的分析功能主要在APIAnalysis和RunAnalysis两个函数中,和静态日志分析一样,动态日志分析也是以正则匹配为主,APIAnalysis主要对x_logcat.txt中Droidmon.apk产生的日志进行处理,主要进行API调用分析,主要代码如下:

其RunAnalysis函数主要处理样本运行后留下的WebTraffic.txt、logcat.txt、x_logcat.txt中

在RunAnalysis中,MobSF首先用正则匹配出所有可能的url,而后再从网上同步下来最新的恶意url集合,然后再一一对比完成对url的鉴定。

此外,RunAnalysis还会对样本运行产生数据进行分类,同时匹配出可能的邮箱。

至此,MobSF完成了所有的检测和分析工作,并且将所有可用信息输出到web界面,方便分析人员进行分析。其动态分析结果界面如图:

总结

从上文对源码的分析大致可知MobSF的工作原理以及流程。

在对样本进行静态分析时,MobSF主要使用了现有的dex2jar、dex2smali、jar2java、AXMLPrinter、CertPrint等工具。其主要完成了两项工作:解析AndroidManifest.xml得到了应用程序的各类相关信息、对apk进行反编译得到java代码,而后利用正则匹配找出该样本主要进行了哪些工作。

而在对样本进行动态分析时,MobSF主要利用到了Xposed框架、Droidmon实现对应用程序调用API的情况进行监控,并且可灵活维护一份需要hook的API列表。同时,MobSF还使用了DataPusher来对样本数据进行打包、使用了ScreenCast结合adb shell input完成对手机的远程控制功能。当然,其中还使用隐藏root权限、伪造成正式机器等技术来应对一些反虚拟机的程序。其主要做了一下几件事:1、利用webproxy实现代理进而拦截样本流量。2、安装证书以便拦截https流量。3、遍历所有activity,尽量多的获取各activity运行得到的日志。4、利用正则匹配出API及参数和返回值。5、实时更新恶意url库,以url信息特征进行查杀。

其实,最最最重要的一点是,MobSF所有分析结果都在web端展示,关键是,界面很美、很美……

 

   
次浏览       
 
相关文章

iOS应用安全开发,你不知道的那些事术
Web安全之SQL注入攻击
移动APP安全在渗透测试中的应用
从Google备份互联网看“数据安全”
 
相关文档

web安全设计与防护
互联网海量内容安全处理技术
黑客攻击与防范技术
WEB黑盒安全检测
 
相关课程

WEB网站与应用安全原理与实践
web应用安全架构设计
创建安全的J2EE Web应用代码
信息安全问题与防范
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
物联网安全概述
史上最详细的区块链技术架构分析
一文读懂区块链整体架构及应用案例
区块链技术架构
安全架构评审实战
最新课程
Web应用安全架构、入侵检测与防护
物联网关键技术、安全与边缘计算
区块链安全技术实践指南
云服务与安全架构
互联网安全开发方法与实践
更多...   
成功案例
中国银行 信息安全技术及深度防御
北京 Web应用安全架构、入侵检测与防护
某财税领域知名IT服务商 Web安全测试
普瑞克斯 web安全设计、测试与优化
北京和利时 性能和安全性测试
更多...