本文介绍基于Android的手机恶意软件,是一个基础性的介绍,给新入门的人提供一个分析和工具指引。要分析的木马是一个2013年的syssecApp.apk,这个木马的分析能对Android恶意软件有个大概了解。
基础:
1 –Android应用基础
Android是google开发基于Linux内核的开源的手机操作系统,应用程序使用JAVA语言编写并转换成了Dalvik虚拟机,而虚拟机则提供了一个抽象的真实硬件,只要和操作系统的API符合程序都可以在其上运行。应用则需要Linux的用户和组来执行,所以目前所有的恶意软件都需要获得权限。
Android应用的格式是APK,是一种包含AndroidManifest.xml的 ZIP文件,媒体类文件实际代码是classes.dex和一些其他的可选文件。XML提供Android系统的重要信息,比如用启动应用程序时需要什么权限,只有这个文件中列出的权限才提供给该应用,否则返回失败或空结果。classes.dex是Android应用程序实现的逻辑部分,是一个编译代码可由Dalvik虚拟机执行,打包成jar,从而节约移动设备上的一些空间。
2 –分析工具
2.1Dexter
Dexter可以将Android应用上传做分析,提供了包和应用元数据的介绍。包的依赖关系图显示了所有包的关系,可以快速打开列表显示所有的class和功能。
2.2Anubis
Anubis也是一个WEB服务,应用在沙箱里运行,每个样品相互独立,来分析文件和网络的活动。同时也提供一些静态分析,包括权限XML在调用过程中的变化。
2.3 APKInspector
Apkinspector提供了很多工具,APK加载后可以选择标签来执行其中的功能,带有一个Java反编译器JAD,能够反编译大多数类,但经常报错。
2.4 Dex2Jar
可将dex 文件转成 Java 类文件的工具,即使你是经验丰富的逆向工程师,也可以考虑使用。
3 – 实例分析
3.1 Anubis
Anubis的显著特点是,给出了应用所需权限的大名单:
截图上包括了应用的部分权限。INTERNET权限是常见的游戏所需,用来在线统计跟踪,开启共享功能或者广告。还有一些WAKE_LOCK、READ_PHONE_STATE用来读取手机状态,防止在游戏中锁屏。但READ_CONTACTS、 READ_HISTORY_BOOKMARKS则看起来就很奇怪,不像是一个游戏该干的事情。对127.0.0.1:53471的连接看起来也很奇怪。分析链接:http://anubis.iseclab.org/?action=result&task_id=1a6d8d21d7b0c1a04edb2c7c3422be72f&format=html
3.2 Dexter
包的依赖关系图显示共有四个。可以忽视de.rub.syssec,它只包含空类的默认构造函数。
de.rub.syssec包括了一个叫做Amazed的游戏,比较特别的是amazedactiviy的onCreate方法,设置为每隔15秒重复闹钟。
第3个class包含的事件比较多。onBoot在启动的时候就会进行闹铃,SmsReceiver和alarmReceiver则是真正的木马,在任何一个短信到达的时候SmsReceiver会检查里面是否包含有”bank”,如果是则使用abortBroadcast丢弃短信。
这意味着短信在手机上是看不到的。de.rub.syssec.neu有6个CLASS,最重要的一条是“Runner”,是实际的恶意代码。“work”调用alarmReceiver来检查设备是否连接互联网。
如果在线,则调用“steal()”收集信息,添加到XML帮助的一个伪变量里。
根据API的调用列表,会收集信息:IMSI、SIM卡序列号、姓名、设备ID、用户字典(自动补全)、联系人、通话记录、日历、浏览器搜索记录、浏览器收藏夹、发送和接收的短信、位置信息。
3.3 Emulator
Emulator证实这个APK确实有一个关于迷宫的游戏。但在输出的日志里可以发现它其实做了很多事情,并试图发送这些内容:
还有一些额外的信息包括安卓版本、IMEI、本地时间、steal()运行总量
3.3 分析用到的网站
http://anubis.iseclab.org/
http://dexter.dexlabs.org/
https://www.virustotal.com/
http://www.apk-analyzer.net/
http://www.visualthreat.com/
http://androidsandbox.net/reports.html
https://hackapp.com/
游戏不仅仅是个游戏,检查你的游戏。