09月12, 2014

罪恶家族——hook007木马

最近从很多渠道都收到用户反馈,用户接收到其他“玩家”发过来的“装备截图”,“密保卡”等文件后,发现自己帐号被盗了。

在拿到木马样本后,发现这类木马其实是跟安全软件对抗已久的一类家族木马——我们称之为hook007。

之所以起这个名字,主要是因为在这一族系的样本的早期通信协议中频繁出现hook007的字样作为通信标识,但经过长期与安全软件的对抗,历经了代码特征与行为特征的无数次修改,这一标识早已不复存在。

关于hook007

早期的hook007木马是通过暴风白利用,然后在 扩展到其他厂商(如迅雷等)白文件利用——所谓“白利用”通常指的是病毒利用正规厂商的正常程序作为掩护,通过这些程序在判断逻辑上的一些缺陷利用其加载木马作者的提供的恶意代码。用以逃避安全软件的查杀——而到最近一段时间,该族系木马则改为利用微软的rundll32.exe文件运行含有恶意代码的dll文件(或许也是找不到太多可利用的文件的一种无奈之举吧)……木马制作者在跟安全软件对抗上可谓煞费苦心,不遗余力。

从木马本身的免杀(针对静态杀毒,内存扫描),再到通信协议上的免杀,协议伪造(对抗主动防御策略),再到白文件利用(对抗主动防御策略),从这一系列变化来看,木马贩卖兜售传播团伙在利益面前极为积极。

一有适当的利润,资本就会非常胆壮起来。只要有10%的利润,它就会到处被人使用;有20%,就会活泼起来;有50%,就会引起积极的冒险;有100%,就会使人不顾一切法律;有300%,就会使人不怕犯罪,甚至不怕绞首的危险。

——邓宁格

早期捕获到的完整样本大致如下:

早期1

早期2

最近持续一段时间捕获到的样本结构如下,其中根据即时通讯传播工具的不同,木马结构主要可分为两种,

通过QQ传播的通常是如下的样子:

最近1

而通过YY传播则是如下的样子:

最近2

由于Windows系统默认是不开启显示后缀和隐藏文件的。所以受害者们接收到这些文件压缩包解压后,发现木马文件里面只含有“BMP格式”的图片(实则是指向病毒程序的快捷方式),而真正含有恶意代码的文件则被隐藏起来。

木马行为

当BMP1被双击打开的时候,根据其快捷方式属性里面的目标参数,可以看到一个命令行参数“C:WINDOWSsystem32rundll32.exe logmain.dll,odhwqqrm”,也就是说,当BMP1被双击打开的时候,实际上是通过runddl32.exe作为父进程去调用logmain.dll里面的一个导出函数,其导出函数的名字是随机的,根据木马免杀器随机命名。同时该导出函数中混入了非法指令,

木马1

通过LoadLibrary动态获取调用函数地址:

木马2

通过API取得环境变量,然后以拼接字符串的方式取得木马释放目录路径,同时创建木马目录。

1 2 3

目录创建完毕后,将木马的关键文件重命名拷贝过去,达到隐藏驻留系统目的。

同时释放关键配置文件:

aa

4

其中inf文件则是用来配合rundll32.exe来写启动项。

此时,木马第一次做完这些准备工作后,精选巧妙的通过调用API来打开一个同目录下隐藏的图片,让受害者“以为”打开的确是图片,殊不知打开的是一个“潘多拉魔盒”,

a

同时木马以相同的方式调用目标目录下的木马文件。 b当前程序退出,新的rundll32父进程启动了。

木马判断自身当前文件路径,如果是在新的文件下,则开始真正干坏事,通过创建多个线程分别作不同的事情。

木马首先读取同目录下的dat文件,加载到内存,解密出可执行代码。

def dat_decode(key,input_file,output_file):
    f=open(input_file,'rb')
    text=f.read()
    f.close()
    s=''
    key_value=key
    print key_value
    lenght=len(key_value)
    i=0
    for x in text:
        i=i%lenght
        s=s+(hex((ord(x)^ord(key[i]))+ord(key[i]))[-2:]).decode('hex')
        i=i+1
    f=open(output_file,'wb')
    f.write(s)
    f.close()
dat_decode('x','./gldat','./temp')
dat_decode('3142','./temp','./trojan')

通过对dat文件两次解密后,在内存中得到一个PE结构文件。

5 6

在早期捕获到的dat文件中,木马loader是读取dat文件末尾一段内容到内存解密,而最新的则是直接读取整个文件解密,可见木马作者对该类木马免杀的积极性。

不

b2

从内存中得到一个腾讯微博个人地址和一个IP,分别对应着两种不同的木马上线方式。在对抗的历史过程中,这两种上线方式都使用的非常频繁。

通过通过rundll32.exe读取inf文件写启动项,目的是通过白利用写启动达到对抗主动防御策略的目的。

q1

在线程中还有通过相关函数CreateToolhelp32Snapshot在进程快照中查找安全软件信息。q2

q3

结合字符串看,木马应该是试图结束杀软进程,保护木马自身,但是在实际感染过程中,木马并没有执行这个动作,目的是为了避免触发主防策略。这个可能是木马生成器中的可选功能,或者是作者历史上遗留的代码,但是后来没有用到相关逻辑,但是代码仍然在样本中。

相关信息

在捕捉到的生成器中,生成器登陆需要验证,其中登陆验证服务IP:115.XXX.5XXX.207,端口1234.

将ip劫持到本地,同时监听本地1234端口,得到如下信息:a1

通过一些查询信息:

a2

a3

简易流程:

QQ截图20140912175406

本文链接:http://blogs.360.cn/post/hook007_trojan.html

-- EOF --

Comments