原文:The most sophisticated Android Trojan
出处:http://www.securelist.com/en/blog/8106/The_most_sophisticated_Android_Trojan
作者:Roman Unuchek,Kaspersky Lab Expert
时间:2013.6.6
最近我们分析了一个Android应用,乍一看便知道这个非常特别,在DEX文件中的所有字符串都是被加密的,并且代码被混淆了。
该文件是一个多功能的木马,能够进行下列操作:发送短信给扣费号码;下载其他恶意程序安装在被感染的设备上/或通过蓝牙发送传播;远程执行控制台命令。目前卡巴斯基实验室产品中心检测这种恶意程序为Backdoor.AndroidOS.Obad.a。
通常恶意软件作者在他们的作品中试图让代码尽可能复杂,以使反恶意软件专家们的工作更加困难。然而,很难得看到隐蔽性如Odad.a-s一样先进的移动恶意软件。此外,这种代码完全混淆并不是新木马唯一新奇的地方。
一,木马奇异之处
Backdoor.AndroidOS.Obad.a的作者在流行的DEX2JAR软件(这个程序用来将APK文件转换成易读的Java Archive(JAR)格式)中发现了一个错误,利用这个缺陷能破坏Dalvik字节码转换成Java字节码的过程,增加了对木马的分析难度。
此外,破坏者在Android系统中发现了涉及到AndroidManifest.xml文件处理的缺陷。该文件存在于每一个Android应用中,用来描述应用的结构、定义其启动参数等。恶意应用以不符合谷歌的标准修改了AndroidManifest.xml文件,但由于对漏洞的挖掘利用使得它仍可以正确的被智能手机处理。所有这一切都使得很难对这个木马进行动态分析。
Backdoor.AndroidOS.Obad.a的作者还使用了另一个Android系统未知的缺陷。利用这个缺陷,恶意应用可以注册为设备管理器享用特权,而且并不会出现在应用程序列表中。由于这一点,是不可能在恶意应用获取权限后从智能手机中删除的。
最后,Backdoor.AndroidOS.Obad.a是工作在后台模式下没有界面的。
二,代码分析
在这个恶意应用程序中,所有的外部方法是通过反射调用。所有字符串都是被加密的,包括类和方法的名称。
每个类都有一个局部描述符方用来从本地更新字节数组中获得所需的加密字符串。所有字符串都隐藏在这个数组中。
最重要的字符串是需要解密的C&C地址,它包含了另一阶段代码。为此木马首先检查网络是否可用,然后下载页面facebook.com。它提取某个页面元素并使用它作为解密密钥。因此,Backdoor.AndroidOS.Obad.a只有联网时解密C&C地址是可用的。这个特性使得分析进一步复杂化了。
一些字符串是另外方式加密的。本地解码器接收到一个Base64编码字符串并对其解码,解码字符串首先与key的MD5异或操作,然后则是字符串“UnsupportedEncodingException”的MD5。要获取key的MD5,需要用同样的本地解码器解密另一个字符串然后将其作为MD5参数。这样便能保护比如函数SendTextMessage名称的key字符串值。
开始分析并破译所有的字符串:
重现应用算法工作的解密结果
三,获取权限
启动后,应用试图获取设备管理员权限
正如我们上面写道,这种木马的一个特点是一旦它已经获得了管理员权限是无法删除的:通过利用一个先前未知的Android漏洞,恶意应用具有了扩展的特权,但并没有出现在设备管理器应用权限列表中。
我们已经告知谷歌关于Android的设备管理器漏洞。
扩展设备管理权限后木马可以阻止设备屏幕长达10秒,这通常发生在设备接到Wi-Fi网络或蓝牙被激活之后,建立连接后木马能将本身和其他恶意应用复制到附近其他设备。这些行为可能是Backdoor.AndroidOS.Obad.a用来试图防止用户发现其恶意活动的。
此外,该木马会尝试通过执行su命令来获得root权限。
四,通信
是否已经成功获得超级用户权限的信息会被发送到C&C服务器,这样获得了root权限后破坏者可以在一个有利的位置远程控制执行命令。
第一次启动后,恶意应用收集以下信息并将其发送到C&C服务器androfox.com:
* 蓝牙设备的MAC地址
* 运营商名字
* 电话号码
* IMEI
* 手机用户账户余额
* 是否获得设备管理员权限
* 当地时间
收集到的信息以JSON对象加密的形式发送给服务器。
每次建立连接时这些信息都会发送到当前C&C服务器。此外恶意应用还会报告它当前自身状态:它发送当前premium号码表和文本信息,aos参数,任务列表,C&C服务器列表。在第一次C&C通信会话时,它会发送一个空白表和进行解密了的C&C地址列表,会话中木马可能会接收到一个更新了的premium号码表和一个新的C&C地址列表。
作为回应,C&C服务器会发送看起来像这样解密后的另一个JSON对象:
{"nextTime":1,"conf":{"key_con":"oKzDAglGINy","key_url":"3ylOp9UQwk",
"key_die":"ar8aW9YTX45TBeY","key_cip":"lRo6JfLq9CRNd6F7IsZTyDKKg8UGE5EICh4xjzk"}}
NextTime是一个C&C服务器的下一个连接
conf是配置字符串。
配置字符串可能包含连接到新的C&C服务器的指令、目的keys号码表文本信息、新任务参数。此外,通信加密(key_cip)的keys可能发送到conf。
破坏者也可以用短信来控制木马。配置字符串也可能包含key字符串(key_con,key_url,key_die),该木马会寻找传入的文本信息,并相应执行某些操作。
分析每个传入的文本信息都可能找到存在的key,如果找到一个key则执行相应的操作:
key_con:立即建立一个C&C的连接;
key_die:从数据库中删除任务;
key_url:新的C&C服务器地址。破坏者可以创建一个新的C&C服务器并发送包含地址key的文本信息给被感染的设备。这将使所有被感染的设备重新连接到新的服务器。
如果在发送的文本信息key中找到conf,则木马将发送一个短信给C&C提供的号码. 因此,受感染的设备甚至都不需要有Internet连接来接收指令发送收费短信。
五,C&C说明
木马从C&C接收指令并记录在数据库中。每条记录在数据库的指令包含了指令序列号;C &C指定的执行时间,还有参数。
命令列表:
1. 发送文本消息。参数包含数字和文字。删除回复。
2. PING。
3. 通过USSD接收帐户余额。
4. 作为代理(发送指定的数据到指定地址,并传达响应)。
5. 连接到指定的地址(clicker)。
6. 从服务器上下载文件并安装它。
7. 发送智能手机中应用列表到服务器。
8. 发送由C&C服务器指定安装的应用信息。
9. 发送用户连接数据到服务器。
10. 远程Shell。后台执行破坏者指定的命令。
11. 发送一个文件给所有检测到的蓝牙设备。
从Obad.a命令列表可知恶意程序能通过蓝牙传播。C&C服务器发送木马文本地址给受感染的设备,然后C&C命令恶意程序扫描附近的设备已启用蓝牙连接,并尝试将下载的文件发送给他们。
尽管有这些令人印象深刻的功能,Backdoor.AndroidOS.Obad.a依然没有普及。通过卡巴斯基安全网络数据的3天观察,所有试图感染Obad.a恶意软件的移动设备安装量不超过0.15%。
在结束这篇综述中,我们想补充一点,在其复杂性和它利用未公布的漏洞数量方面,Backdoor.AndroidOS.Obad.a比其他Android木马看起来更接近Windows恶意软件。这意味着Android的恶意软件程序的复杂性正沿着他们的人数迅速增长。
PS:
这是2013年中被赞为最强大的安卓木马,发现看雪没有相关的分析就翻了过来,可能这个说的比较浅显就感觉比上次翻的好一点,不过依然还有好几个不太理解的地方,当然也有因为原文并不太完整。
这是360的一份报告,只有最基本的行为分析。http://www.2cto.com/Article/201306/221476.html
简单说来便是通过将文件中的字符串加密,混淆代码,使代码转换成Java编码更困难,这样分析Obad.a恶意软件二进制文件也就变得更困难。然后还利用两个零日漏洞来进一步阻碍分析,保持文件和未列出的恶意软件相关联,并将自己本身藏在拥有设备管理员访问权限的应用程序列表之外。Obad.a会检查受感染的设备是否拥有网络访问权限,如果有,它会下载Facebook主页面然后将其作为C&C(命令与控制)地址的解密密钥。Obad.a有一个远程shell可以连接到C&C,然后可以自我更新来添加新的功能。Obad.a还可以监控短信,并执行各种命令。
其实可以看到这个木马相当的精致复杂,无论使用的混淆、字符串加密、解密方式、传播方式,还是几个安卓漏洞的利用,都显示了其强大之处,而且作者似乎有意的将Windows下木马的一些先进功能移植到此之上。
联动一下,这是limitemp刚刚贴出的android设备管理器漏洞的一些分析
http://www.kanxue.com/bbs/showthread.php?t=183692
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课