Android恶意代码——木马APK分析

2017-05-10 16:31卢委红陶一鸣
电子技术与软件工程 2017年8期
关键词:木马

卢委红+陶一鸣

摘 要

近年来,Android系统以极高占有率制霸智能手机市场,但由于其开放性,使得针对Android平台的恶意代码数量呈现出爆炸式增长,导致隐私数据泄露、程序越权操作、电池耗尽攻击、恶意进程交互等手机安全事件频繁涌现。近期,公安机关接连接到若干通过安卓平台远程控制木马从而实施诈骗的案件,诈骗者依靠伪基站设备发送钓鱼网址,给用户手机植入Android木马,从而实施诈骗。因此,对恶意代码进行分析成为一个亟待解决的问题。文章结合Android平台的特点和一线公安机关办理的恶意窃取隐私案件中的相关apk,重点进行apk反编译分析和动态调试,为公安机关打击移动网络下的违法犯罪活动提供了技术支持。

【关键词】Android 木马 APK 恶意代码

1 安卓体系结构

安卓体系从上到下可以分成4层,第1层是应用程序层(Application)。这一层包括电话、浏览器、联系人及各种第三方应用。应用程序使用Java语言编写,所有源代码及资源文件都包含在一个.apk文件当中,以供安装时使用。

第2层是应用程序框架层(Application Framework)。包含众多供应用程序调用的应用程序编程接口,这些接口多数是由安卓软件开发工具包提供的。

第3层是库(Libraries)和安卓运行环境层(Android Runtime)。这一层分为两部分:库包含一系列C/C++语言编写的原生库,这些原生库可供所有上层组件调用;安卓运行时环境包含dalvik虚拟机和核心库,其中提供了所有用来访问本地库、硬件和操作系统的接口。

最底层是Linux内核层(Linux Kernel)。提供诸如设备驱动、文件系统等最核心的系统服务。

2 基于安卓平台恶意代码的静态分析技术

静态分析法就是在不运行恶意代码的情况下,利用分析工具对恶意代码的静态特征和功能模块进行分析的方法,利用静态分析方法,可以找到恶意代码的特征字符串、特征代码段等,还可以得到恶意代码的功能模块和各个功能模块的流程图。

基于静态分析机制的逆向分析技术主要优点包括:

(1)不需要真正执行恶意代码,可以避免对恶意攻击者发现;

(2)误报率低;

(3)不受具体进程执行流程的制约,可以对代码进行详尽的细粒度分析。

我们通过对一线公安机关办理的相关恶意窃取隐私案件中的apk样本进行反编译,对木马部分源码进行静态分析后可以掌握犯罪嫌疑人的手机号码及电子邮箱等个人信息,并能掌握木马取证的恶意操作:如读取短信、监控短信收发、读取联系人、后台发送邮件等操作。

3 基于安卓平台恶意代码的分析

3.1 分析工具

AndroidKiller是一款可视化的安卓应用逆向工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一身。它包含了adb、apktool、dex2jar、jd-gui等反编译工具。其中apktool能将android中的.apk文件转换成.dex文件;dex2jar能将第一步的.dex文件反编译成.jar文件;jd-gui能将.jar文件反编译成.java文件进行分析。

3.2 安卓木马固定

文件名称:weizhang.apk

文件类型:apk

MD5 校验值:3b49ef4f2c385bff9a700e5a3dd6882c

文件大小:198317 bytes

3.3 木马分析

安卓应用程序的扩展名为apk,可以直接用AndroidKiller进行反编译操作。打开工程管理器可以看到apk文件的内容。比较重要的文件有:

(1)META-INF目录,用来存放签名信息,保证apk包的完整性和系统安全;

(2)res目录,用来存放资源文件,包括程序图片等内容;

(3)AndroidManifest.xml文件,用来描述应用的名字、版本、权限和引用的库文件等信息;

(4)smali文件,是java源代码反编译后的格式代码。

3.3.1 AndroidManifest.xml文件

AndroidManifest.xml 是每个Android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能声明程序中的Activities, ContentProviders,Services,和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)。用AndroidKiller打开AndroidMainfest.xml,可以看到该apk一共申请了17个权限,其中值得注意的有如下权限:

android.permission.RECEIVE_BOOT_COMPLETED 允许程序开机自动运行

android.permission.READ_CONTACTS 允许应用访问联系人通讯录信息 android.permission.READ_PHONE_STATE 访问电话状态

android.permission.READ_SMS 允许程序读取短信息

android.permission.RECEIVE_SMS 接收短信

android.permission.WRITE_SMS 允许程序写短信

android.permission.SEND_SMS 发送短信

android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态

3.3.2 smali文件

通过AndroidKiller中的smali文件转换器将MainActivitiy.smali转换为java源码后进行分析。

通常根据发送短信、启动activity、启动后台服务和拨打电话等特征来判断该程序是否为恶意代码。

通过分析可以得出结论,该段程序的作用就是劫持手机用户后在用户不知情的情况下群发短信,让受害者在不知情的情况下恶意扣费,并诱导手机联系人安装木马,之后及时删除信息,很大程度上加大了该类案件的证据收集及侦破难度。

4 结束语

随着智能手机的快速普及和手机系统的不断更新,手机上集成的功能会越来越多,针对Android平台下的木马植入、隐藏和通信等关键技术也会不断更新,这将会给移动通信的安全带来更大的威胁。研究Android平台下木马关键技术,可以帮助我们做好手机木马的反查杀工作,更好地保证移动终端的设备安全。

我国恶意代码防治工作面临着严峻挑战,需要国家信息安全主管部门不断创新管理机制和防范措施,以应对日趋严重的网络安全威胁。系统地、有效地开展Android恶意代码的检测方法研究,是移动应用软件开发安全保障的一项基础性课题,将有效推动互聯网应用的持续健康发展。

参考文献

[1]郑吉飞.Android恶意代码的静态检测研究[D].华中师范大学,2013.

[2]余倩.Android木马及其关键技术的研究与实现[D].电子科技大学,2016.

猜你喜欢
木马
小木马
骑木马
小木马
旋转木马
旋转木马飞起来
小木马