SSP_2012_Dissecting Android Malware: Characterization and Evolution

#paper #android

在该文中作者他们主要做了三个工作:1)通过在2010年8月到2011年10月间,建立了一个包含了1260个Android恶意软件的库,这些恶意软件分部来自于49个不同的家族分类;2)通过对这些恶意软件的发现和归纳他们的行为特征建立了时间线性的分析,行为特征则包括安装,运行和负载(installation, activation and payloads);3)他们发现恶意软件正在高速进化,而现存的反恶意软件解决方法却严重滞后。

第二章 MALWARE TIMELINE 里,作者列表介绍了恶意软件的发现时间以及发现的地方和个数。着重提到在2011年夏天过后,Android恶意软件大幅度的增长,尤其以DroidKungFu和AnserverBot及他们的变体为重。

第三章 MALWARE CHARACTERIZATION 里,对恶意软件的特征进行了归纳和阐述。

A. Malware Installation

1)Repackaging 他们发现在1260个样本中,有1083(86.0%)个是重打包过的。在49个家族中有25个是通过重打包来感染用户,25个是被设计为间谍软件作为独立app,其中,GoldDream家族使用了以上两种感染方式。

2)Update Attack 除了重打包软件之外,可能还会通过包含下载控件在运行时下载恶意代码。提到了BaseBridge,DroidKungFuUpdate,AnserverBot和Plankton采用了该种方式。其中前两者是通过提示版本更新来下载恶意代码,需要用户的同意才能安装新的版本。后两者只是在原有app中更新特定的组件,而这种方式可以不经过用户的允许偷偷安装。

3)Drive-by Download 引导用户下载“有趣”或者“功能丰富”的apps。作者发现GGTracker,Jifake,Spitmo和ZitMo这四个恶意软件家族采用了该种方式。GGTracker采用点击广告来重定向恶意网站的方式,当用户点击了特定广告就会被重定向到一个恶意网站,引诱用户下载恶意软件。Jifake也采用了相似的恶意网站重定向方式,但是它没有通过广告来达到目的,而是通过一个恶意的QR代码来实现。Spitmo和ZitMo都是通过PC恶意软件来获取的。例如当你在电脑上进行网银操作,PC恶意软件会下载apps,并声明这些app可以更好帮助你在手机上进行网银操作,而实际上这些app是恶意软件。

4)Others 除了1083个重打包的样例,还有有177个单独存在的恶意app。作者将他们分类成4种。第一种被认为是spyware正如他们自己声称的那样,他们以某种目的安装在被害者手机上。GPSSMSSpy基于SMS命令来记录并上传被害者当前地理位置的例子。第二种是伪装成正常app但是偷偷进行恶意活动的apps。FakeNetflix就是一个偷窃用户账户和密码的恶意软件例子。它并不是重打包了正规的Netflix app,而是使用了相同的用户界面来伪装成正规app。FakePlayer则是伪装成一个播放器但是完全没有提供播放功能,它所作的只是发送SMS消息到保险公司号码而且不通知用户。第三种是提供了正常的功能但是也有恶意行为,类似第二种形式的app,例如RogueSPPush。最后一种需要root权限才能正常运行。他们不经过用户同意就获取root权限似乎是越界行为,例如Asroot和DroidDeluxe。

B. Activation

BOOT_COMPLETED是Android恶意软件最感兴趣的系统事件。系统完成booting process时是最好的时机让恶意软件在后台运行服务。在他们的数据集中,29(83.3%)个恶意软件家族监听该事件。

SMS_RECEIVED被21个恶意家族软件监听,从而处于恶意软件最感兴趣系统事件的第二位。

此外,作者发现有些恶意软件会劫持正常软件的载入活动,从而在正常软件运行之前引导该恶意软件自己的程序,例DroidDream。有些恶意软件会劫持UI交互事件(UI interaction events),例zSone。

C. Malicious Payloads

1)Privilege Escalation 权限扩张。

2)Remote Control 远程控制。C&C servers(Command and Control)。

3)Financial Charge 财务支出。恶意软件的动机。包括通过手机短信偷偷定制保险服务。有些恶意软件并没有选择把保险服务号码写在代码里,而是通过运行时自动拨打,该方式更为灵活。拦截特定的短信而不让用户发觉并自动回复。还可以给手机通讯录中其他人发送短信。

4)Information Collection 信息收集。包括短信,电话号码,用户账户等。

D. Permission Uses

通过比较,INTERNET, READ_PHONE_STATE, ACCESS_NETWORK_STATE, WRITE_EXTERNAL_STORAGE等权限是恶意软件和良性软件都要求最多的。恶意软件可能会更多的要求跟短信有关的权限,例如REDA_SMS, WRITE_SMS, RECEIVE_SMS, SEND_SMS。在数据集中有790(62.7%)个样例需要READ_SMS权限,而只有33(2.6%)个良性软件需要该权限。有28(45.3%)个恶意软件家族有跟短信相关的恶意功能。

作者发现有688个恶意软件需要RECEIVE_BOOT_COMPLETED权限,这个数字5倍于正常软件(137个)。表现出恶意软件更喜欢在用户不知道的情况下在后台运行。还有398个样例需要CHANGE_WIFI_STAT权限,也明显高于正常软件(34)的个数。

恶意软件需要更多的权限。恶意软件平均需要11个权限,而正常软件平均只需要4个。在顶级的20个权限中,恶意软件平均需要9个,而相对的正常软件只需要3个。

第四章 MALWARE EVOLUTION 里以DroidKungFu和AnserverBot为例介绍了Android恶意软件的进化发展过程。

A. DroidKungFu

作者团队第一次发现DroidKungFu(DroidKungFu1)是在2011年6月。之后不断发现新的变种达6个之多。在数据集中,有473个DroidKungFu样例。

1)Root Exploits root权限扩展。在6个变种里,有4个包含加密的根权限扩展功能。具他们所知,DroidKungFu是他们在Android恶意软件里第一次发现包含了加密的根权限扩展功能。不同的变种采用不同的加密密钥来更好的保护自己。

2)C&C Servers 所有的变种都有payload来与远程C&C服务器器进行通信并接收命令。恶意软件在不断改变保存服务器地址的方式。

3)Shadow Payloads DroidKungFu会在用户无感知的情况下安装一个嵌入的app,从而保证基本是重打包的app被删除,恶意程序依然是可执行的。

4)Obfuscation,JNI,and Others DroidKungFu不断变换不同的密钥来进行加密,在恶意软件负载中模糊化类名,并扩展JNI接口来增加分析和检测的难度。最后的版本,DroidKungFuUpdate还添加了更新模式。

B. AnserverBot

在2011年9月发行了AnserverBot,该恶意软件搭载在正规软件之上。该恶意软件采用了一些复杂的技术来躲避检测和分析,这在之前都没有遇到过。经过一周多的分析,作者认为该软件进化于早期的BaseBridge恶意软件。数据集中包含了187个AnserverBot样例。

1)Anti-Analysis 在运行之前,它会检查当前重打包的app的特征值和完整性,该功能能有效抵制逆向分析工程。不止如此,还会主动模糊其内部的类名、方法名和域,从而使得不可人为解读。他主要包含三个相关程序,一个是主要的载体程序(host app),另两个嵌入式app共享一个名字 com.sec.android.touchScreen.server 但功能不同。一个通过更新方式来安装,另一个通过动态载入而不是真正的安装(类似于Plankton)。这些都使得AnserverBot很难被解析。

2)Security Software Detection AnserverBot还会检测当前手机里反病毒软件的运行情况,它包含三个加密的反病毒软件名字,例如 com.qihoo360.mobilesafe、com.tencent.qqpimsecure和com.lbe.security。如果发现有某个反病毒软件,AnserverBot就会通过调用restartPackage方法来停止该程序并弹出对话框通知用户改程序被关闭。

3)C&C Servers AnserverBot支持两种C&C server。第一种即传统形式来接收命令,第二种用了更新其负载或者第一种服务器的网址。第二种方式是基于加密的博客内容,而该博客主要依赖于流行的博客服务提供商(例如新浪和百度)。该功能保证即使第一种C&C server 掉线,依然可以通过博客来获取新的服务器地址。

第五章 MALWARE DETECTION 中作者选用了几个流行杀毒软件来检测软件是否安全。结果表示检测并不理想。

最后进行了相关讨论和相关工作介绍,不再赘述。