安全路透社
当前位置:安全路透社 > 网络转载 > 正文

“成人影集”样本分析(下篇)

声明:本文由expsky@MS509Team原创,仅用于技术交流分享,禁止将相关技术应用到不当途径。 

上文《这个19KB的“成人影集”到底做了什么?》

对这个样本进行追踪分析的过程中,发现了至少上千的域名和IP与之有关联,这个木马影响面不小,但样本涉及到的大马下载链接,以及情报关联到的大马下载链接最近都失效,继续分析受阻…

1.jpg

功夫不负有心人,大马样本还是被找到,经过对大马的深入分析后,发现背后是一个庞大的僵尸网络,活跃了相当长时间,而最近一两个月更是异常活跃加速传播。大马的功能非常丰富,并继续通过发送包含木马的色情邮件进行蠕虫式扩散传播,并且运用到了很多加密反调试的手段,给逆向分析带来了很大的难度。该样本的深入分析国内还鲜有报道,看完下面的样本分析后,相信对样本以及此僵尸网络都会有个全面的了解。本文侧重于技术,对一些技术要点都进行了标注,留心看能学到一些干货(但不要用来干坏事哦)

0×01 VB外壳解密shell code

该样本多处用到了动态解密代码后执行,所以用静态分析工具看,是什么都看不出来的

2.jpg

ida里只能看到两个用户的函数,另外能看出一个重要信息就是这个样本是用VB写的。VB写木马还是比较少见的,因为VB写的木马在灵活度、功能、木马大小、运行速度等等方面肯定不是最好的选择。一般人对VB的逆向也没有C++的逆向熟悉,推测作者目的可能是增大被逆向的门槛。继续分析发现,其实VB只是一个外壳,把后续执行的代码解密出来。

调试VB的程序会涉及到一个重要的API就是DllFunctionCall,VB程序调用所有系统API都会通过这个函数来实现,但不要被这个API的名字误导,这个函数并没有真正的去调用API,而只是把API的地址给取到,可以理解为LoadLibrary + GetProcAddress,DllFunctionCall有一个参数,参数指向一个包含两个字符指针的结构体,两个字符指针分别指向DLL名和API名,在内部其实就是给LoadLibrary和GetProcAddress使用

3.jpg

跟踪DllFunctionCall,会执行EnumChildWindows,参数0x421E65是回调函数,这个回调函数就是解密后续代码的函数

4.jpg

解密函数的代码经过了混淆处理,OD不能很好的反汇编,这样的汇编代码明显也不是正常编译出来的

0×02 shell code执行

7.jpg

解密完后,继续执行刚解密出来的代码。首先通过BeginDebugged(PEB+0×2)和NtGlobalFlag(PEB+0×68)来进行反调试检测,发现在被调试状态就直接终止了。cpuid指令检查CPU是否满足条件

在这个解密出来的shell code中可以看到大量jmp+pop的指令组合,跟踪执行过程实际上是jmp+call+pop, pop弹出的是call后面的地址,而这个地址其实是一个API名称,接着会执行call 01C8180A,这个函数里面会执行DllFunctionCall取得相应的API地址并保存下来。其实就是shellcode获取API的过程。这样的汇编代码不是正常编译出来的,经过了反调试处理

8.jpg

调用SetUnhandledExceptionFilter设置异常处理函数并自陷来进行调试器检测

0×03 原始木马执行

当执行完解密出来的shellcode后,内存中的VB壳代码已经完全没有,真正的木马代码才开始执行。木马用到的所有字符常量都是动态解密出来用完后就清除掉,木马会释放自己到%USERPROFILE%目录下并添加到自启动项中,木马的行为很多,下面捡重点的部分介绍

9.jpg

木马以suspended方式创建系统进程svchost.exe

10.jpg

将木马的内存镜像写入到刚启的远程进程svchost中(写入前后会对线程环境进行保护),然后通过修改svchost的PEB进程环境块+0×8偏移(ImageBaseAddress)来改变svchost进程的加载,最后将suspended启动的svchost进程恢复。此刻svchost.exe就成为了一个木马傀儡进程。

完成这样的动作,还有不少技术问题需要处理

11.jpg

12.jpg

木马的内存镜像直接写入到svchost运行,还必须处理重定位的问题,正常一个PE文件加载重定位是由系统来完成的,而这里木马必须自己来完成远程写入的木马镜像的重定位工作,通过PE头偏移0xA0 0xA4找到重定位表,然后完成重定位工作。

这样svchost.exe木马傀儡进程就可以正常工作了。原始木马的后续功能不会再继续执行,只有在svchost.exe的傀儡进程中核心功能才会继续得到执行

0×04 木马核心配置文件

木马的核心功能是从C2服务器获取一个很大的配置文件,木马的所有功能都在这个配置文件里。这个配置文件分成若干段,每段就是一个远程命令,相关的远程命令有几十种之多,执行每个命令的过程都涉及到加解密。

分析出配置文件的数据结构如下:

13.jpg

从远程获取的配置文件中有几十个命令,上面截图的是start_srv,对应的cmd type是1,用来随时更新CC服务器IP地址。配置文件中比较多的是cmd type为7的各种命令,这些命令是和发送垃圾邮件有关,而邮件的内容多与色情有关(其实没怎么认那些英文,只是发现sex单词出现的比较多)

14.jpg

15.jpg

另外还看到两个cmd命令眼熟,

一个是 cmd type:5 对应后面会是一个PE文件,可以猜测木马可以下载执行其他的木马

16.jpg

17.jpg

还有一个是cmd type:15,对应的是ddos,打开被攻击的网站是和游戏相关

配置文件中包含的一些C2 IP地址,情报信息显示都为恶意:

103.48.6.14(中国香港)

45.116.175.152(马来西亚)

123.249.0.22(中国贵州)

101.51.248.231(泰国)

116.103.49.35(越南)

201.17.229.241(巴西)

171.224.230.65(越南)

117.6.208.135(越南)

116.105.204.47(越南)

58.187.199.230(越南)

0×05 木马插件机制动态扩展功能

木马还有一个重要的机制就是插件,每个插件对应一个dll文件,通过插件可以进一步扩展木马的功能

在配置文件中搜索plg_关键字

18.jpg

plg_sys 

plg_sniff 

plg_antibot 

plg_webb 

plg_webm 

plg_ddos 

plg_locs 

plg_smpt 

plg_spread

plg_proxy 

plg_miner 

plg_protect 

plg_text 

plg_spread2 

plg_blist 

plg_host2

从这些插件的名称可以看到:比特币挖矿、网络嗅探、代理服务、ddos攻击、自保护、文本记录、web邮件、传播等等字眼,木马功能非常丰富

0×06 蠕虫式传播

19.jpg

通过我们的监测设备发现,中马后的机器会不定时向外发送包含了下载者小马的色情邮件,实现蠕虫式的扩散传播

20.jpg

邮件包含的小马是经过了严重混淆的JS代码,代码和上篇中分析的PDF样本中JS代码还不太一样,但功能很明确:还是从远端服务器下载大马到本地并执行。这里就不再累述

0×07 如何清除木马

清除自启动注册表项:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MSConfig 并删除其指向的8位随机字母命名的文件

清除二进制加密配置信息注册表项:

HKCU\Software\Microsoft\DeviceControl下的所有DevData开头的注册表项

0×08 结尾

以上并没有记录所有的分析过程,一是因为调试过程没有全部做记录(木马还有不少对抗行为);二是由于木马功能太丰富,分析很耗时间,没有一一去做分析。但通过上面的文字,对该木马已经能有一个整体的了解。对这个木马的印象就是:功能丰富、弹性扩展、蠕虫传播、以及做了很多反调试和加解密

样本涉及到的域名和IP至少上千,是一个很大的僵尸网络,加之木马的高弹性设计:可以更新C2服务器地址、下载其他木马执行、插件扩展功能机制…,后续危害不可小视。该僵尸网络最近两个月异常活跃,加速扩散,需要警惕。

*本文由原创作者:expsky@MS509Team 。

未经允许不得转载:安全路透社 » “成人影集”样本分析(下篇)

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册