前期准备
环境准备
主要就是Android开发的环境,详细的可以参考非充老师白皮书第一章,其中包含了Win、Linux环境,如果需要mac环境配置可以自行检索,或者公众号留言,我们会在后期文章中专门增加一篇。
工具准备
反编译工具
样本获取网站
在线查杀检测工具
FileLine 静态代码检测:火线 | FireLine | 静态代码检测
腾讯移动安全实验室:在线查毒-安全实验室-腾讯手机管家官方网站
腾讯哈勃分析系统:腾讯哈勃分析系统
腾讯金刚:金刚 - 腾讯安全应急响应中心
virustotal:免费的可疑文件分析服务的网站
溯源分析工具
标准文档
主要标准文档:《移动互联网恶意程序描述格式》
恶意程序属性主分类
排序 | 编码 | 属性主分类 |
---|---|---|
1 | payment | 恶意扣费 |
2 | privacy | 信息窃取 |
3 | remote | 远程控制 |
4 | spread | 恶意传播 |
5 | expense | 资费消耗 |
6 | system | 系统破坏 |
7 | fraud | 诱骗欺诈 |
8 | rogue | 流氓行为 |
下面我们以其中一个分类看一下主要有那些恶意行为。
信息窃取
在用户不知情或未授权的情况下,获取涉及用户个人信息、工作信息或其它非公开信息的,具有信 息窃取属性。
包括但不限于具有以下任意一种行为的移动互联网恶意程序具有信息窃取属性:
- 在用户不知情或未授权的情况下,获取短信内容的;
- 在用户不知情或未授权的情况下,获取彩信内容的;
- 在用户不知情或未授权的情况下,获取邮件内容的;
- 在用户不知情或未授权的情况下,获取通讯录内容的;
- 在用户不知情或未授权的情况下,获取通话记录的;
- 在用户不知情或未授权的情况下,获取通话内容的;
- 在用户不知情或未授权的情况下,获取地理位置信息的;
- 在用户不知情或未授权的情况下,获取本机手机号码的;
- 在用户不知情或未授权的情况下,获取本机已安装软件信息的;
- 在用户不知情或未授权的情况下,获取本机运行进程信息的;
- 在用户不知情或未授权的情况下,获取用户各类帐号信息的;
- 在用户不知情或未授权的情况下,获取用户各类密码信息的;
- 在用户不知情或未授权的情况下,获取用户文件内容的;
- 在用户不知情或未授权的情况下,记录分析用户行为的;
- 在用户不知情或未授权的情况下,获取用户网络交易信息的;
- 在用户不知情或未授权的情况下,获取用户收藏夹信息的;
- 在用户不知情或未授权的情况下,获取用户联网信息的;
- 在用户不知情或未授权的情况下,获取用户下载信息的;
- 在用户不知情或未授权的情况下,利用移动终端麦克风、摄像头等设备获取音频、视频、 图片信息的;
- 在用户不知情或未授权的情况下,获取用户其它个人信息的;
- 在用户不知情或未授权的情况下,获取用户其它工作信息的;
- 在用户不知情或未授权的情况下,获取其它非公开信息的。
后续文章我们会找专门的样本来详细介绍标准中的一些属性。
分析方法
快速分析方法
- 直接找对应行为的API,比如获取手机号码,是getLine1Number方法获取。
- 直接使用上述章节中提到的在线查杀检测工具,根据查杀后的信息进行具体的行为分析。
- 通过抓包软件抓取数据包后在代码中定位找到关键点
常规分析方法
- 先用在线查杀工具或者本地部署的一些静态分析工具进行分析,然后根据查杀后的信息定位关键代码;
- 在测试真机或者模拟器上运行样本,看看大体的行为,并抓包看看有哪些网络行为,也可以查看一下日志打印;
- 有了上述分析做前提,我们就可以反编译样本进行代码分析,然后定位关键点
- 首先看一下manifest中的组件信息,找到入口;
- 随后顺着入口继续分析Service,Thread,AyncTask等,并配合关键API定位;
病毒样本特征提取
- 最早的样本入库为了不出问题都是直接入样本的MD5或者SHA1等,这一点比较简单,只要病毒分析师分析确认后提取对应样本的MD5即可,这种方法不存在误杀情况。
- 再后来增加了签名信息,但是由于Android开发的爆炸式增长,开发恶意程序的成本降低,很多平台直接可以同时生成双客户端,而且签名也是平台默认签名,即使有些个人开发者也会使用默认的debug签名信息,所以这个点很容易误杀。
- 因为以上信息都是较为固定的,只要病毒稍作改动,以上信息都会变,查杀范围较小,后来增加了一些多维度特征,比如恶意程序会申请的权限、会调用的API、存在的恶意代码的包名等,通过更多维度更多信息去定位某个类型的病毒,这样的话病毒改动不大的话都会被查杀,不过这样肯定也会误杀。
- 再后来就是将以上特征全部整合,分成很多更小的维度,利用机器学习来分析更多的样本,不断优化特征集,尽可能的减少误杀,这种方式前期需要病毒分析师进行大量工作,提取不同维度的特征值,给每一个样本加标签,然后不断的优化。
疑难问题解决
无法解压-Android 应用伪加密
首先了解下什么样的apk,是经过经过伪加密的:
我们使用解压软件解压需要密码的很大可能就是伪加密的apk。
其实这种加密的效果不大,我们可以使用工具处理后即可。
可在公众号回复“Android 应用伪加密”获取工具
AndroidManifest.xml反编译失败
由于修改AndroidManifest.xml,导致apktool无法反编译
正常的:
修改后的:
将其中的00 00 00 03改为00 00 00 00,保存后重新反编译即可
可在公众号回复“AndroidManifest.xml文件反编译失败”获取工具
某工具反编译后代码不全
如下图,正常反编译后部分代码无法正常查看,这可能是针对jeb反编译做了防护,可以使用其他工具查看。
这种情况还有可能是odex文件,我们直接用jeb反编译是无法正常分析的,需要将odex或者vdex等转成dex文件。
下图使用010 Editor等工具查看dex文件后发现不是传统的dex.035开头,这就需要工具转换成dex文件。
可在公众号回复“odex转dex”获取工具,处理后再看文件格式及为正常的dex文件了,再反编译应该就正常了。