◆刘旭多 林昱江 刘峻诚
Android勒索软件取证分析
◆刘旭多 林昱江 刘峻诚
(四川警察学院 四川 646000)
随着移动互联网的高速发展,智能手机在人们日常生活中起到了极为重要的作用。但与此同时,不法分子利用智能手机进行的犯罪也越来越普遍,其中涉及安卓勒索软件的移动网络犯罪占比不断上升,使得我国移动网络环境下的网络犯罪打击工作面临挑战。本文分析了安卓勒索软件的分析方法,通过介绍动、静态两种分析方法,并针对目前常见的安卓勒索软件进行分析,为司法实践提供帮助。
Android;勒索软件;取证分析
Android勒索软件是由Windows系统勒索软件演变而来,可以通过锁定屏幕、加密文件等方式对系统造成破坏,并以此威胁用户支付赎金解锁设备或解密文件。
攻击者将Android勒索软件开发制作完成后,将其上传到各种网站上进行传播,除此之外,还会通过电子邮件,复制APK文件的方式扩大传播范围。Android勒索软件通常被伪装成热门游戏、游戏外挂、色情应用等形式吸引用户,受害者通过链接对其进行下载安装。
一般来说,Android勒索软件在设备上运行后,会导致设备屏幕锁定,无法正常返回桌面,部分勒索软件还会对文件进行加密,之后在屏幕上显示威胁信息,勒索用户钱财。因此,Android勒索软件与其他恶意应用相比具有明显的特征,比如威胁文本、锁定屏幕、加密文件,这三种类型有如下特征。
锁定屏幕:威胁文本的目的是恐吓用户,说明具体的威胁和支付信息。
威胁文本:锁定屏幕是Android勒索软件用来勒索受害者的最常用技术之一,这种类型的勒索软件称为Android锁屏型勒索软件,也是Android勒索软件中占比最大的一部分。
加密文件:加密文件是Android勒索软件的另外一种表现形式,攻击者利用复杂的加密算法对设备中的数据进行加密,攻击者一般遍历整个存储目录或者只针对某些关键目录,例如相册目录、下载目录、应用数据目录等,对每个目录下目标格式的文件进行加密。
在不运行代码的情况下,通过程序文件对apk文件进行反汇编之后阅读反汇编代码,通过理解反汇编代码的逻辑从而掌控程序的功能。分析的方法有两种,一是阅读反汇编生成的Dalvik字节码,可以用IDA Pro分析dex文件,或者使用文本编辑器阅读baksmali反编译生成的smali文件。其次是阅读反汇编生成的Java源码,可以使用dex2jar生成jar文件,然后再使用jd-gui阅读jar文件。
逆向分析一个软件的流程中最核心的就是反编译apk文件,这是每个逆向工程的第一步,也是掌握对象软件核心逻辑的最关键的步骤。在其中反编译出来的代码就是结构怪异。难以读懂的samil汇编语言,所以大多数逆向分析人员都需要通过反编译软件将全是原生samil语言的dex文件格式转化为java代码,逆向分析中针对反编译工具的方法就是让apk和dex文件无法顺利通过一些软件,如dex2.jar,Apktool等的反编译。
动态分析是将恶意软件安装在手机模拟器等虚拟环境里运行,收集运行过程生成的文件,留待后续分析。恶意软件中通过与用户的交互获取用户权限,窃取用户的信息并将窃取的信息发送到接收的服务器,利用动态分析,通过Fiddler、wireshark等软件代理抓包,抓取发送出去的数据包,就可以通过查看数据包的目的IP快速获得攻击者所在的IP地址,通过网络请求中的内容查看恶意软件发送的请求内容与服务器的响应内容,善用抓包工具的过滤规则可以极大地提高分析的效率。
需要注意的是,部分恶意软件有虚拟机环境检测功能,即发现自身所处环境为虚拟环境时会隐藏自身的恶意活动,使得动态分析难以发现异常。
2017年左右,荒野行动盒子软件在“刺激战场”等游戏大火的时候,相关外挂层出不穷,恶意软件的作者也就盯上了这些时下流行的软件,将其加入恶意代码之后进行打包重新编译生成新的apk文件再流入市场,具体作用体现为:手机锁屏,无法进行其他操作,只有联系锁屏信息中的QQ群交费解密才能继续使用。
图1 手机被锁机时截图
被此类勒索软件攻击的用户特征是对手机进行root并给与此恶意软件root权限的人群。
通过apk编译软件打开该apk后,优先查看androidmanifest,找到程序的主activity入口。找到该包并进行反编译查看代码,发现某活动窗体初始化的时候调用的内容调用了一个名为e的类,方法为busybox,其中代码非常可疑,该类的核心内容如图2所示:
图2 核心代码内容
查看代码中的这三行内容:
a(a+"k.bat",paramContex,"H4L-net.kairosoft.android.frontier_en.txt");
a(a+"libStarEngine.so",paramContext,"H3L-net.kairosoft.android.frontier_en.txt");
FileEncryptUtils.decryptFile(c.c(),a + "k.bat",a + "key.bat");
其大致含义为:调用a方法将libStarEngine.so中的内容解密,解密的密码存放在H3L-net.kairosoft.android.frontier_en.txt文本中,解密后释放的文件命名为:k.bat。随后经过一个解密的方法将k.bat解密为key.bat。之后利用execCommand函数,该函数的作用是在手机上执行代码中的命令,其含义分别如表1:
表1 该勒索软件执行代码
mount -o rw,remount /system挂载system目录为可读可写 cp " + a + "key.bat /system/app/将key.bat复制到system/app目录下 chmod 0777 /system/app/key.bat将key.bat文件赋予最大权限777 mv/system/app/key.bat /system/app/time.apk将time.apk赋予只有拥有者有读写权限644 chmod 0644 /system/app/time.apk将time.apk赋予只有拥有者有读写权限644 "cp"+a+"libStarEngine.so /system/lib/"将libStarEngine.so拷贝到/system/lib/ chmod 0644 /system/lib/libStarEngine.so赋予只有拥有者有读写权限644 pm uninstall com.example.xphuluxia删除测试代码 reboot重启
查看onDestroy()方法中的内容,发现该程序在运行结束时会有一个自我删除的动作并确定是否删除成功。该程序还会检测手机是否root并提示用户对手机进行root等功能,在此不一一分析。
至此我们可以知道勒索软件运行过程中生成的真正的apk病毒文件也就是time.apk,并且知道安装的位置,我们在模拟器上运行该勒索软件后,利用adb工具提取出system/app目录下的time.apk文件,对该文件进行分析。
勒索软件利用最开始申请到的root权限在生成的time.apk的Andriodmanifest文件中写入权限,分别获取了SD卡写入权限、全局弹出对话框、开机启动、网络访问权限、允许程序访问有关GSM网络信息、SD卡内创建和删除文件权限、程序安装权限,来从各方面去控制用户手机,再形成独特的三层加密锁屏从而达到勒索金钱目的。
根据分析,该勒索软件采用这种加密方法是单向的,无法破解,这也是许多勒索软件的一个特征,往往只提供了赎金支付渠道,并通过该渠道进行进一步的敲诈勒索等行为,但并未提供解锁接口。但是通过adb工具连接手机,将锁机apk包删除后,可以解除锁机状态。
我们用到了近几年最为常见的一类裸聊软件类型。该类裸聊软件打开后界面如下图3所示。软件打开后要求输入邀请码才可以进入,但是不论输入什么,软件都不会有反应,但是手机中的通讯录信息此时已经被窃取并发送到设定好的服务器中,之后嫌疑人会联系受害者,并以通讯录为由以此勒索受害者。这类勒索软件,可以利用动态抓包的方式,获取嫌疑人设定的服务器,并以此为线索进行进一步的调查分析。
图3 裸聊勒索软件界面截图
将软件安装在模拟器上后,开启fiddler代理抓包工具,之后将模拟器的代理设置为本机IP,端口设置为fiddler的端口,如图4所示,这样就可以使用fiddler进行代理抓包。
图4 模拟器设置代理抓包
在裸聊软件中随意输入手机后与邀请码后,观察fiddler中抓取的数据包,由于模拟器中的干扰包较少,因此我们可以快速定位到可疑的数据包,如图5所示。点击查看数据包的流信息。在Host参数中就存放的是回传地址,也就是嫌疑人设定的服务器的地址。
图5 fiddler抓包截图
在data参数中存放的是请求体,请求体是url编码的形式,我们使用fiddler自带的转码工具进行转码,结果如图6所示。可以发现在请求体中存放了在裸聊软件中输入的手机号与邀请码,手机的型号,以及手机中通讯录的信息。回传的这些数据可以作为窃取公民个人信息的证据,而host中的域名信息,可以为进一步的侦查提供支持。
图6 请求体中信息转码
此类勒索软件不是通过加密文件方式向用户索取赎金,而是通过窃取用户个人信息,利用获取的信息进行敲诈勒索诈骗等犯罪行为获取利益。
本文对安卓勒索软件取证分析进行了简单的探究,在勒索软件的取证中需要熟练地掌握反编译工具、抓包工具的使用,将动态分析与静态分析相结合对勒索软件进行分析,以便提高分析效率。
在静态分析时,通过配置文件android manifest找到程序的主activity入口,在找到程序的主入口后,activity中的方法都需要逐一查看,可以优先查看onCreate()方法中的内容。在查看方法中的类的内容时,识别出类中的敏感操作,这需要工作中的不断总结。
由于现在的安卓apk大多会启用代码混淆,所以同样需要在日常的工作中进行总结,掌握代码的书写规律,来防止代码混淆对逆向过程进行干扰。在动态分析抓包时,分析人员需要了解联网通讯协议,灵活运用抓包工具的过滤语句,可以极大地提高分析的效率。在分析抓取到的数据包时,重点关注包的请求内容与响应内容,找到其中的可疑信息。
[1]徐国天.基于Referer字段递归分析的网页挂马检验方法研究[J].刑事技术,2012.
[2]丹尼斯.逆向工程权威指南[M]. 人民邮电出版社,2016.
[3]陈鹏,赵荣彩,单征,等. 基于动静结合的Android恶意代码行为相似性检测[J].计算机应用研究,2018(05).
[4]王军,庄毅,潘家晔. 一种Android恶意软件多标签检测方法[J].小型微型计算机系统,2017(10).
[5]冯博,戴航,慕德俊. Android恶意软件检测方法研究[J].计算机技术与发展,2014(02).
[6]李秀.Android平台安全性分析与改进[D].广东工业大学,2015.
[7]杨峻.Android系统安全与反编译[M]. 人民邮电出版社,2015.
[8]周威,赵洋译.移动恶意代码的攻击与防范[M]. 科学出版社,2012.
[9]Shabtai A,Fledel Y,Kanonov U,et al,Google Android:A state-of-the-art review of securitymechanisms. 2009.
[10]Faruki P,Bharmal A,Laxmi V etc.Android Security:A Survey of Issues,Malware Penetration and Defenses. Communications Surveys .&. Tutorials,IEEE . 2017.
大学生创新创业训练项目(S202012212052);四川警事科学研究院项目(CJKY202008)