远控木马伪造通信协议一例

远程控制木马始终是恶意软件家族中的一个重要成员。之所以说重要,是因为他不像盗号木马、下载者、蠕虫之类的恶意软件那样功能相对单一。远程控制木马的功能就是“控制”,一旦成功控制了受害者的机器,这类木马几乎是为所欲为的。

这正因为如此,远程控制类的木马一直是黑客手中的利器和宠儿。经过多年的演变,不断的变种、无数的分支,虽久杀却不绝。今天我就介绍一例360安全中心刚捕获不久的最新远控木马变种。

长什么样?

当然,木马什么样子都有,没有哪个木马会在自己脑门上贴个标签写上“木马”俩字……而我们今天分析的这个远控木马是如下的样子:

样本截图

 

看下这几个文件:

  • bbs.bmp是个隐藏的图片文件,对于病毒本身而言没有任何作用,只是一个障眼法——病毒会打开这张图片给用户,让用户以为自己打开的就是个图片而已。
  • gldat是真正意义上的病毒主体,我们稍后会说
  • logmain.dll的主要工作是用来调用病毒主体的,稍后也会提到
  • BMP1和BMP2是两个lnk文件(快捷方式),我们知道bmp的图片是隐藏的,gldata连扩展名都没有,dll文件虽然是可执行程序,但双击也是没用的。所以用户自然会在如此精心的安排下点击这两个lnk文件。其中BMP2主要功能是将病毒主题添加到系统自启动,命令行如下:

    C:WINDOWSsystem32rundll32.exe advpack.dll,LaunchINFSectionEx %appdata%gbrztmipgbrztmip.inf,DefaultInstall,,32

    调用LaunchINFSectionEx函数读取病毒的inf文件(BMP1中生成,稍后会说)以达到开机自启动的目的。而之所以要把这个功能单独拿出来——恐怕是因为知道加载开启自启动项的这种行为,是妥妥的会被拦截的,为了不影响病毒主体功能,只能分离出来。
    拦截开机启动项添加

而我们要重点说的则是这个名为BMP1的lnk文件,一切罪恶的行为都是从这个lnk文件开始的……

都干啥了?

BMP1其实很简单,一个快捷方式而已,他要解决的问题其实只有一个——整个病毒里没有exe文件,而dll文件又不能直接自己运行。所以这个快捷方式的唯一作用就是调用系统的rundll32去执行dll文件:

C:WINDOWSsystem32rundll32.exe logmain.dll,gbrztmip

下面要看的就是logmain.dll中的这个gbrztmip函数是干什么的了。

启动时候,函数会判断自己的当前目录,如果不在%APPDATA%下就会进入一个首次启动的模式:

  1. 在%APPDATA%目录下创建一个名为“gbrztmip”的目录
  2. 将自身(logmain.dll)复制到该目录下重命名为“bxipndlhm.dll”,同时将核心的gldat文件也复制过来。
  3. 生成一个gbrztmip.inf文件,配合之前提到的BMP2,做开机自启动之用:

    [Version]
    Signature=”$CHICAGO$”
    Provider=t@t.com, 2002
    [DefaultInstall]
    ; DelReg=run_DelReg
    AddReg=run_AddReg
    [run_DelReg]
    [run_AddReg]
    hkcu,”SoftwareMicrosoftWindowsCurrentVersionRun”,”Update”,,”rundll32.exe “”C:Documents and SettingsAdministratorApplication DatagbrztmipBitgbrztmip.dll””,gbrztmip”
    [Strings]

而这之后病毒会重新调用系统的rundll32来执行复制过去的病毒文件——bxipndlhm.dll,此时才是真正的作恶开始。

到底干啥了?

我上面也提到了,dll文件只是一个中间调度,所以他要做的第一个动作就是打开在他身边的gldat文件

打开gldat

后面的事情顺理成章——打开文件,获取大小,申请一段内存,将文件内容读了进去……没错,gldat文件中存放的是一段shellcode,也正是远控木马的核心代码。

加载到内存中的shellcode会用两个key做两次解码:

两次解码

解码函数大志如下:

解码函数

 

两次解码过后,最终结果已经很明朗了,PE格式已经非常清晰了:

解码结果

shellcode已经解出,那远控的上线信息也已经摆在这里了:

上线地址

 

上线地址是183.***.***.232的IP,而上面那个t.qq.com/do******27则是一个备用地址——当IP无法连接时,木马会到该微博的页面上获取最新的上线IP

上线微博页面

 

这微薄……呵呵~挺萌的。哪买的?能卖不?

怎么传出的?

本想说说远程控制部分,但这部分也确实是乏善可陈,收集数据和控制部分代码完全是拿的开源的远控代码稍作修改的,相比分析也是一抓一把,没必要再重复了。

倒是值得说说他发送的上线数据包:

远控上线数据

 

近看前两行,非常想是HTTP的POST请求(路径部分诡异了些……),而后面拼凑的CONTENT-LENGTH和CONTNT-TYPE中甲网络加换行了,后面又续了一段400 Bad Request的相应页面HTML代码……大杂烩啊……而真正的远控上线数据,则只有我上图中圈出的部分。编码和加密的部分不说,但看明文,用红圈圈出的三处也明显能看到我的系统版本、机器名、当前日期已经被发送出去了。

最后呢?

照例上拦截图

查杀

上线拦截

 

其实协议上做伪装这条路一开始就选错了,你可以把一种协议伪装成另一种协议,但不管哪种协议,只要是在作恶,就难逃一杀。

同时也提醒广大用户注意,网上下载或通过聊天工具传输过来的所谓“装备图”或“贸易单”一类的文件,打开之前一定要加倍小心。