【Android源码 栏目提醒】:网学会员,鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“基于Android平台恶意代码逆向分析技术的研究 - 期刊论文”一文,供大家参考学习!
2012年第04期 技 术 研 究 doi : 10.3969/j.issn.1671-1122.2012.04.017 基于
Android 平台 恶意代码逆向分析技术的研究 贾菲 1,刘威 1,2 (1. 天津市公安局,天津 300457 ; 2. 国家计算机病毒应急处理中心,天津 300457) 摘 要 :文章针对当前基于安卓平台恶意代码分析技术的滞后性,介绍了安卓平台的基本结构,结合目 前基于安卓平台恶意代码的主要破坏方式,采用静态分析机制,研究了基于安卓平台恶意代码逆向分析技术, 为公安机关打击移动网络环境下的违法犯罪活动提供技术支持。
关键词 :安卓平台 ;恶意代码 ;静态分析 ;逆向分析技术 中图分类号 :TP393.08 文献标识码 :A 文章编号 :1671-1122(2012)04-0061-03 Reverse Engineering Technology to Study the Malware by
Android Platform JIA Fei1 LIU Wei12 1. Tianjing Municipal Public Security Bureau Tianjing 3000457 China 2. National Computer Virus Emergency Response Center Tianjing 3000457 China Abstract: This paper target to the lag of the current malware analysis methods for
Android Platform.It presents the basic structure of
Android Platform along with the damage of malware on
Android Platform.It use the static analysis method and reverse engineering technology to study the malware.It provide a lot of supports for counter-criminal in mobile cyberspace of public security department. Key words:
Android platform malware static analysis reverse engineering0 引言 随着移动互联网的普及,移动安全问题日益突出,针对手机的病毒、木马和吸费软件等恶意代码发展迅速 利用移动终端恶意代码进行网络犯罪的事件呈现增长趋势,移动终端用户面临前所未有的安全风险 1。
这些情况表明一方面我国恶意代码防治工作面临着严峻挑战,需要国家信息安全主管部门不断创新管理机制和防范措施,以应对日趋严重的信息网络安全威胁 ;另一方面公安民警急需提高移动终端恶意代码的分析取证能力,加强对恶意攻击者的打击力度。
1 国内外研究现状 目前,国内基于安卓平台的各类应用程序还处在快速发展中,其恶意代码还没有引起计算机用户足够的重视,针对基于安卓平台恶意代码的分析手段还处在探索阶段,没有形成系统、完善的逆向分析技术,无法对利用该类恶意代码进行网络犯罪的恶意攻击者实施有力打击。
国外针对基于安卓平台恶意代码大多采用动态分析技术,往往只关注结果,而缺乏对攻击过程、攻击方法、恶意代码类型等详细信息的分析、取证。
2 安卓平台的基本情况 安卓平台是 Google 公司研发的基于 Linux 开放性内核操作系统,它采用了软件堆层架构,体现了谷歌公司自由、开放的设计理念,底层 Linux 内核只提供基本功能,其他的应用软件则由各公司自行开发 2。
安卓平台主要包括五层构架,如图 1 所示 :1)应用程序,安卓平台包含一些关键应用程序,如邮件收发客户端程序、短信 收稿时间 :2012-02-22 作者简介 : (1977- ) 贾菲 ,男,天津,工程师,本科,主要研究方向 :信息网络安全 ;刘威(1981-),男,天津,高级工程师,硕士,主要研究 方向 :信息网络安全。
61技 术 研 究 2012年第04期 收发程序、日历和网页浏览器等,同时支持开发者开发各类应 况下对其行为进行分析的技术,是目前最主要的恶意代码处 用程序 ;2)框架和组件,安卓平台在其框架中提供了许多组 置机制,被广泛应用于恶意代码分析和公安网络侦察工作中。
件供应用程序调用,开发者也可以开发新的组件,并将该组件 基于静态分析机制的逆向分析技术主要优点包括,一是不需 放入应用程序框架中,以供自己和其它应用程序调用 ;3)类库, 要真正执行恶意代码, 二是误报率低 ; 避免被恶意攻击者发现 ; 主要服务于安卓应用程序组件,其功能通过组件间接提供给 三是不受具体进程执行流程的制约,可以对代码进行详尽的 开发者 ;4)程序运行环境,安卓平台的程序运行环境包含一 细粒度分析。
组 Java 核心函数库及 Dalvik 虚拟机,能有效优化程序的运行 我们在对基于安卓平台的恶意代码进行逆向分析时,首先 过程 ;5)内核,安卓平台包含经过优化的 Linux 内核,提供 要利用工具对恶意代码进行反汇编后,通过对其关键部分进 诸如内存管理、进程管理和设备驱动等服务,同时也是移动 行分析和研究,进而掌握其破坏性和感染方式等特征。
终端软硬件的连接层。
4.1 基本结构 安卓应用程序的扩展名为 apk,可以直接用 Winrar 等压 缩软件打开,如图 2 所示,主要包括五部分,一是 META-INF 目录,用来存放签名信息,保证 apk 包的完整性和系统安全 ; 二是 res 目录,用来存放资源文件,包括程序图片等内容 ;三 是 AndroidManifest.xml 文件,用来描述应用的名字、版本、 权限和引用的库文件等信息 ;四是 classes.dex 文件,是 Java
源码编译后生成的 Java 字节码文件 ;五是 resources.arsc 文件, 是编译后的二进制资源文件 5。
图1 平台结构图 3 基于安卓平台恶意代码的基本情况 3.1 定义 基于安卓平台的恶意代码主要指在用户不知情或未授权的 情况下,在安卓操作系统中安装、运行以达到不正当目的,或 具有违反国家相关法律法规行为的可执行文件、代码模块或 代码片断。
其能够破坏移动终端功能或者破坏数据、影响其 使用并且能够自我复制,具有隐蔽性、破坏性等特点。
图2 软件操作示意图 3.2 感染传播情况 4.2 AndroidManifest.xml文件 2010 年我国移动终端产品发展迅速,智能手机的使用 在安卓应用程序的框架中,AndroidManifest.xml 文件具有 量占到手机用户的 57.45,已经超过非智能手机成为我国手 非常重要的作用,其采用了 XML 标签格式,描述了应用程序 机用户使用最广泛的通讯工具 其中有 57.81 的用户通过移 的名字、版本、权限和引用的库文件等信息。
在对恶意代码 动终端进行互联网应用。
伴随手机病毒感染数量的快速增长 进行分析时,通过对该文件进行研究,可以得到其运行的权 以及恶意攻击者攻击手段的不断提高,有 39.85 的用户感 限设置等信息,分析出恶意代码的主要功能。
染过手机病毒,已经成为移动终端面临的最大安全威胁。
有 由于 apk 文件中 AndroidManifest.xml 是经过编译的,需 29.55 的手机用户使用塞班操作系统,使其成为恶意攻击者 要对其进行反编译才能进行分析。
目前常用的反编译工具是 的攻击重点,但安卓、IOS 等移动智能终端操作系统发展迅速, ApkTool,能将一个 apk 文件分解出 smali 代码和里面的 xml 文 面临的安全威胁不断增加,感染比例也在持续上升。
网站浏 件,并且签名之后打包还原。
我们分析基于安卓平台的恶意 览已经成为移动终端病毒传播的主要途径,移动终端病毒具 代码时,可以使用 ApkTool 对 apk 文件进行反编译,执行命令 有更强的趋利性,各类软件论坛、市场和下载网站成为移动 行 apktool.bat d lt 源文件 gt lt 目标目录 gt,即可将反编译后的 终端病毒传播的新途径 3,4。
AndroidManifest.xml 拷贝到目标目录,以便对其进行分析。
4 基于安卓平台恶意代码的逆向分析技术 通过对反编译后的 AndroidManifest.xml 文件进行分析,我 逆向分析技术是指将应用程序进行反汇编,通过分析反 们发现其主要包括以下几个部分,一是 ltuses-permissiongt 标 汇编代码来理解应用程序的功能,即在不执行应用程序的情 签,其主要功能是请求一个安全授权,应用程序必须被授予 62 2012年第04期 技 术 研 究该权限,程序包才能正确的操作 ;二是 ltapplicationgt 标签, public void sendSms 表示每一个应用程序的组件及其属性 ;三是 ltactivitygt 标签, String str getStateVal if quotYquot.equalsstr主要应用于用户交互的机制 ;四是 ltreceivergt 标签,主要用于 接收数据变化或发生行为 ;五是 ltservicegt 标签,主要包括在 SmsManager localSmsManager SmsManager.getDefault Intent localIntent new Intent后台任意时刻都可以运行的组件 4。
Pe n d i n g I n t e n t l o c a l Pe n d i n g I n t e n t1 Pe n d i n g I n t e n t . getBroadcastthis 0 localIntent 0 在进行恶意代码分析时,主要对 ltuses-permissiongt 标签 PendingIntent localPendingIntent2 null localSmsManager.sendTextMessagequot1066185829quot null quot921X1quot包含的参数进行分析,如果包含其基本功能不需要的权限, localPendingIntent1 localPendingIntent2极有可能是恶意代码。
如某基于安卓平台的日历软件 ltuses- save permissiongt 标签中包含如下信息 : ltu se s-p er m ission a nd r oid : n a me quota nd r oid .p er m ission . 4.3.2 启动Activity INTERNETquot /gt ltu se s-p er m ission a nd r oid : n a me quota nd r oid .p er m ission . Activity 是
Android 最基本的应用程序组件,任何一个 ACCESS_COARSE_LOCATIONquot /gt ltu se s-p er m ission a nd r oid : n a me quota nd r oid .p er m ission .
Android 应用程序都可以看作一组任务,这里每一个任务就可以 RESTART_PACKAGESquot /gt ltu se s-p er m ission a nd r oid : n a me quota nd r oid .p er m ission . 称作一个 Activity,用于呈现数据并与用户进行交互。
恶意攻击 RECEIVE_SMSquot /gt 者实现连接网络和盗取敏感信息等恶意行为,需要通过使用独 ltu se s-p er m ission a nd r oid : n a me quota nd r oid .p er m ission . SEND_SMSquot /gt 立类来实现 Activity,即通过
android.app.Activity.startActivity 函数 ltu se s-p er m ission a nd r oid : n a me quota nd r oid .p er m ission . SET_WALLPAPERquot /gt 来实现各种业务功能,这就为我们进行分析提供了依据 6。
4.3.3 启动后台服务 我们通过分析发现
android.permission.RECEIVE_SMS 表 后台服务功能相当于没有界面的 Activity,可以不需要用示允许应用程序去监听短消息并对其进行处理,与该应用程 户直接参与而长时间运行,当一个服务启动后,可以借助各序基本功能不符,极有可能是恶意代码。
恶意代码常用到的 类接口与其进行通信。
在实际应用中,常常需要等待系统或ltuses-permissiongt 参数,如表 1 所示。
其它应用发出指令,于是出现了 Broadcast Receiver 组件,每 表1 参数功能表 个 Broadcast Receiver 组件都可以接收一种或若干种 Intent 作参数 功能INTERNET 允许应用打开网络套接口 为触发事件,当一个 Broadcast Receiver 组件被触发后,系统ACCESS_FINE_LOCATION 允许应用访问精确性的定位 GPSRECEIVE_BOOT_COMPLETED 允 许 应 用 接 收 在 系 统 完 成 启动后发 出的 就会通知相应程序。
由于服务功能具有静默运行等特点,用 ACTION_BOOT _COMPLETED 广播信息 户不易发现,恶意攻击者通常会利用
android.content.Context.ACCESS_NETWORK_STATE 允许应用访问网络上的信息RECEIVE_SMS 允许应用去监听短消息并对其进行处理 startService 函数来启动后台服务 7。
BLUETOOTH 允许应用去连接蓝牙设备 4.3.4 拨打电话SEND_SMS 允许应用发送短信 拨打电话是恶意攻击者实施攻击的一种重要手段,可以4.3 classes.dex文件 通过定义 ITelephony 类实现。
通过调用 ITelephony 类的 dial 安卓应用程序的主要代码包括在 classes.dex 文件中,该 函数可以实现直拨指定电话号码,例如某具有自动拨打电话功文件是
源码编译后生成的 java 字节码,与 AndroidManifest.xml 能的恶意代码中,通过以下语句实现直拨 10086。
文件相似,需要对其进行反编译后才能进行分析。
目前主要 ITelephony phoneITelephonyITelephony.Stub.asInterfaceServi使用的分析工具为 Dex2jar,其主要功能是将 .dex 文件反编译 ceManager.getService phonphone.dial10086成 .jar 文件,再使用软件 jd-gui 将 .jar 文件反编译成 .java 文件 4.3.5 插入浏览器书签进行分析。
为了更大的获取商业利益,与基于 PC 平台的恶意代码类 通常主要是根据发送短信、启动 activity、启动后台服务、 似,基于安卓平台的恶意代码会将 URL 作为广告信息插入浏拨打电话和插入浏览器书签五种特征来判断该程序是否为恶 览器书签。
以某恶意代码为例,其将 www.com.
android.Contacts意代码。
实现推广该 URL的功能。
/raw_contacts插入到用户浏览器的书签中,4.3.1 发送短信 ContentResolver cr getContentResolver Uri uri cr.insertandroid.provider.Browser.BOOKMARKS_URI 基于安卓平台的恶意代码通常会静默发送付费短信,以实 bookmarkValue现恶意扣费的目的,通常会使用
android.telephony.SmsManager. Uri localUri Uri.parsequotcontent:www.com.
android.contacts/ raw_contactsquotsendTextMessage 函数实现发送短信的功能。
以某具有发送付 ContentResolver.deletelocalUri null null费短信.