转载

Kemoge:一款影响超过20国的安卓恶意程序

FireEye实验室一位移动安全研究专家 近期 发现一款迅速蔓延全球的,可完全控制Android设备的恶意软件家族病毒。据称该攻击来源于中国。因其命令以及控制域:aps.kemoge.net,便将其命名为Kemoge。

Kemoge:一款影响超过20国的安卓恶意程序

如上图所示,已确认的感染范围超过20国,其中包括政府以及大型企业。该恶意广告软件通过重新打包将自身伪装成流行App,因而得到广泛传播。其中一些样本如下图所示:

Kemoge:一款影响超过20国的安卓恶意程序

Kemoge的样本很多,这里就不一一列举了。

Kemoge的生命周期

Kemoge:一款影响超过20国的安卓恶意程序

如上图所示,攻击者将App上传到第三方应用商店,通过网站或者App内置广告来进行推广,一些激进的广告联盟还可能会通过获取root权限直接进行安装样本。

在初始启动时,Kemoge收集设备信息并将其上传到广告服务器,无论受害者当前是在干什么在一定时间都会看到广告横幅(即使停留在Android主屏幕,也可能会突然弹出)。

Kemoge:一款影响超过20国的安卓恶意程序

起初Kemoge只是令人有些许不满,但是很快就会令人感到愤怒。从上图中可以看到当用户开启设备屏幕或者网络连接变化,其将AndroidManifest中的MyReceiver设置为自启动,接着MyReceiver唤醒MyService;两者都是伪装成Google的代码(前缀com.google.rp.confirm)。一些样本也使用下列作为组件前缀:

com.google.system.provider.confirm,  com.google.ad.sprovider, com.android.ad.sprovider

启动之后,MyService就开始寻找一个名为<name>.mp4的资源,这个影藏的.mp4资源实际上是一个进行多级加密的.ZIP文件。总的说来,其使用.ZIP自有的文件加密对资源内容进行保护,受保护的.ZIP文件再使用DES加密,最后在将DES密钥进行加密(此处称之为Key1)与此同时也对另一个DES密钥(此处称做Key2)进行加密,并且在代码中反汇编Key2将其作为字节。如下图,逆向破解Kemoge解密ZIP文件。

Kemoge:一款影响超过20国的安卓恶意程序

下图为反汇编生成DES密钥的Java代码片段:

Kemoge:一款影响超过20国的安卓恶意程序

从上图反汇编DES密钥代码片段中我们获得了Key2,接着就可以生成Key1了。这代码片段把字节[0x73, 0x41, 0x26, 0x73, 0x32, 0x76, 0x24, 0x31]为Key2,接着解密[0x87, 0xAF, 0xF9, 0xE5, 0x93, 0xE1, 0x50, 0x5A, 0x12, 0x8B, 0x9F, 0x8C, 0x72, 0x86, 0x79, 0xE3]。注意通过替换真实ASCII字符可实现代码混淆加密字节。例如使用0×38和0×37(8和7)来替换0×87,解密没有指定初识向量直接使用Android Bouncy Castle默认的DES模式(DES/ECB/PKCS5Padding)。解密后的字节为[0x35, 0x64, 0x26, 0x4c, 0x32, 0x2c, 0x54, 0x39, 0x77, 0x4f]由此推导出的Key1(以及DESKeySpec)来解密ZIP文件。

使用上面相同的方法获得Key1,但随着作为输出的不同加密字节,Kemoge生成ZIP保护密码。解压这个文件后,从其中提取出以下文件:

AndroidRTService.apk root.sh busybox su .root root_001, root_002, ..., root_008 (8个root exploit可执行文件)

Kemoge:步步惊心

该恶意软件携带8个可对设备进行root的exploit可执行文件,来应对大范围的设备模型。这些root方法包括mempodroid, motochopper, perf_swevent exploit,sock_diag exploit, 以及 put_user exploit.其中一些exploit看起来似乎借鉴了部分开源项目中的代码[2][3],但是其中一些看起来又像是来自商业工具Root Dashi(Roor大师)。

获取root权限之后,执行root.sh获得持久性,然后将AndroidRTService.apk作为Launcher0928.apk(命名方法模仿合法的桌面启动器系统服务)植入/system分区。此外,这个apk包看起来也确实像正常的应用,类似的还有com.facebook.qdservice.rp.provider以及com.android.provider.setting。

这个恶意系统通过aps.kemoge.net来传递命令。为了逃避检测,它不经常与该服务器进行连接。反而,其只在第一次启动和命令执行24小时后才会请求命令。在每一次通信中,首先将IMEI,IMSI,储存信息,安装的App信息发送到远程服务器。我们在Nexus 7(Android 4.3)截获了网络通信流量包:

Kemoge:一款影响超过20国的安卓恶意程序

接着上传设备信息,并求情命令:

Kemoge:一款影响超过20国的安卓恶意程序

服务端响应了3组命令:

Uninstall designated apps Launch designated apps Download and install apps from URLs given by server

Kemoge:一款影响超过20国的安卓恶意程序

在本案例中,它试图卸载杀毒应用程序以及一些流行应用,可能准备进一步的攻击。

附录1中我例举了一部分Kemoge样本,附录2中列举了其使用的一些签名证书。在所有的样本中我们发现大量的简体中文字符。有趣的是,有一款样本在Google Play中进行了发布,root exploit以及一些其他功能被阉割了。

谷歌商店上架应用ShareIt或与Kemoge同根

Kemoge:一款影响超过20国的安卓恶意程序

Kemoge样本包名:cc.taosha.toolbox.shareit

MD5:40b1dcbe5eca2d4cf3621059656aabb5

在Google Play中也有一款与茄子快传(ShareIt)名称相同的应用,使用了与Kemoge相同的签名,所以其应该是同一位开发者,其在Google Play中此应用已经有10万—50万的下载量,基于开发者的名称Zhang Long以及集成与App中的第三方库(cn.wap3, com.renren, com.tencent等)研究者便推断该开发者来自于中国。

基于用户评论ShareIt有着与Kemoge相似的特征(烦人的广告),估计是为了满足审计过程Google Play版本移除了root exploits,但其依旧保持着adm.kemoge.net和ads.kemoge.net,同时它请求taosha.cc进行上传和升级提醒。在我们的实验中,服务运行但只返回了404,应该是开发者在维护新的版本。

Google似乎已经注意到这个App,“ShareIt”已经从Google应用商店平台移除了。目前大家还是谨慎下载。

总结

这是一个家族式恶意广告软件,可能是由中国开发者写的,也有可能是被搞黑产的人控制了。

在此,我们郑重的提醒您:

谨慎点击来自电子邮件/短信/网站/广告的超级链接; 不要安装来自非官方渠道的应用; 及时更新Android设备。

参考链接

[1] https://www.fireeye.com/blog/threat-research/2015/09/guaranteed_clicksm.html

[2]  https://github.com/trevd/android_root

[3]  https://github.com/saurik/mempodroid

[4]  https://play.google.com/store/apps/details?id=cc.taosha.toolbox.shareit

附录1

Kemoge:一款影响超过20国的安卓恶意程序

Kemoge:一款影响超过20国的安卓恶意程序

附录2

Owner: CN=tao sha, OU=IT, O=taosha.cc, L=Shenzhen, ST=Guangdong, C=86 SHA1: EF:A5:C2:18:9C:21:4B:A8:21:90:4C:10:6A:B5:77:53:0F:22:00:62 Owner: CN=hexy_root_009, OU=hexy_root_009, O=hexy_root_009, L=hexy_root_009, ST=hexy_root_009, C=hexy_root_009SHA1: E3:BD:4B:4F:38:7C:1A:A8:C0:4C:98:B2:B2:B1:B0:CF:33:5E:71:BC Owner: CN=keke_root_025, OU=keke_root_025, O=keke_root_025, L=keke_root_025, ST=keke_root_025, C=keke_root_025SHA1: 41:F4:9B:14:E9:8A:7C:EF:5E:BF:D9:9C:8F:58:43:48:45:BE:12:B2 Owner: CN=kiss, OU=kiss, O=kiss, L=hangzhou, ST=zhejiang, C=86SHA1: 72:62:C5:38:78:81:B1:10:51:B3:D3:B3:63:B5:AC:F9:B9:8F:6E:B9 Owner: CN=google, OU=google, O=android, C=CNSHA1: E9:20:9A:53:9B:C7:41:22:1D:53:37:FE:FA:9E:26:59:6C:3D:08:96 Owner: CN=wilson, OU=land, O=land, L=hangzhou, ST=zhejiang, C=86SHA1: E5:58:C9:BA:6A:A3:D1:AC:2A:12:5B:94:C6:F6:02:2F:EE:0D:19:39 Owner: CN=hzckgames, OU=hzckgames, O=hzckgames, L=hangzhou, ST=zhejiang, C=86SHA1: 49:D2:51:A6:67:CC:9D:C2:9D:AB:FA:E8:D3:85:44:FF:B0:59:BC:90 Owner: CN=hong, OU=fjwy, O=fjwy, L=zhejiang, ST=zhejiang, C=CNSHA1: 89:81:E2:B0:30:A9:A4:60:5D:B2:4B:E4:31:59:A3:01:73:1C:C6:53

* 参考来源: FireEye ,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

正文到此结束
Loading...