关于“WireX Botnet”事件Android样本分析报告

WireX家族病毒基本上都会在内部硬编码存放两个URL地址(部分变种的URL经过加密),变种A在内部硬编码了如下两个URL

http://u.*******.store/?utm_source=tfikztteuic

http://g.*******.store/?utm_source=tfikztteuic

这些URL地址是病毒的C&C Server的地址,用于返回要攻击的网站的信息,不同之处在于,对这两个URL返回的信息,处理方式不同,执行的恶意行为也不同。

UDP Flood攻击

对于以u开头的URL地址,比如http://u.*******.store/?utm_source=tfikztteuic(实际测试不能正常返回数据,以下是根据代码逻辑进行描述的),返回数据分为两部分,一个要攻击的主机地址,一个是端口,中间使用字符串“snewxwri””分割,代码中对返回数据处理如下:

获得主机地址和端口号之后,会创建50个线程,每个线程中都会连接该主机和端口,开启socket之后,使用udp协议发送随机数据,每次回发送512个字节的数据,一个线程中一共会发送 10000000 (一千万)次,也就是 10000000512=5120000000 字节的数据,因为一共实现了创建了50个线程,所以,理论上会发送10000000512*50=256000000000(2560亿)字节,实现代码如下所示:

Deceptive Access Attack

对于以g开头的URL地址, 比如 http://g.*******.store/?utm_source=tfikztteuic,返回数据分为3部分,分别是访问要攻击的网站的URL、UserAgent和Referer,使用硬编码的字符串(比如snewxwri )进行分割,代码中对返回数据处理如下:

获得要攻击网站用到的URL、UserAgent和Referer后,会创建20个Webview,然后使用每个WebView访问要攻击的网站,代码实现如下:

Deceptive Click Attack

变种B内置了2个URL地址,如下:

http://ww68.c.********.us/?utm_source=tfikztteuic

http://ww68.d.********.us/?utm_source=tfikztteuic

请求这两个URL返回的数据是类似的,都是在HTML的title中设置了一段内容,这段内容使用一个硬编码的字符串(比如”eindoejy)分隔成3或者4部分,前3部分都是一样的,一个URL,一段JS代码,一个UserAgent,后面可能还有一个字段,猜测为国家名字缩写,该样本中为CN(代表中国?)。请求你的地址和返回的数据,类似下图:

该病毒对这些数据的处理方式是,使用WebView加载返回URL,然后在页面加载完成后,执行那段JS代码,JS代码的功能是从页面中所有的URL link(通过查找html的a标签获得)中,随机挑选一个,模拟鼠标事件进行点击,实现代码如下:

实现模拟鼠标点击JS代码如下:

Attack Controller

上述几种攻击的实现都是位于某个Android Service中,那么这几种攻击是怎么启动的呢?通过逆向分析APK得知, 该APK注册了监听某些事件的Broadcast Receiver,比如network connectivity change、device admin enabled等,在这些Receiver中,会启动Attack Controller这个Service, Attack Controller负责启动各种Attack,代码实现如下:

不同的变种,实现方式有些差别,攻击的强度也又有所差别,这个变种中,每隔55秒都会重启一次攻击。


原文地址: http://blogs.360.cn/blog/analysis_of_wirex_botnet/