Conficker.B蠕虫分析

天融信阿尔法实验室 CFF

0×00 概述

Conficker蠕虫从08年爆发,后续衍生了ABCD等多个变种;本以为早已经灭绝的东西,竟然在朋友的重要服务器中被发现,果真是百足之虫死而不僵,继续拿来练练手。

服务器上感染的是Conficker.B变种,其利用MS08-067漏洞进行传播,同时通过移动驱动器和网络共享进行传播。蠕虫使安全服务失效,阻止访问与安全相关的网站。病毒利用访问控制列表锁住被感染机器上的病毒文件,防止病毒文件被删除。并且在特定时间之后会访问随机生成的网址,由于域名生成是精心构造的伪随机算法,可以部署相应的域名,来达到下载并执行程序。

0×01 运行流程图

图片1

 

0×02 外壳运行流程

第一层UPX

图片2

第二层申请堆空间,解码并且修改堆内存属性,最后跳入执行

图片3

VirtualProtect断点

图片4

对009B1000内存位置下内存访问断点,就可以到达第三层

第三层UPX壳,进入最终恶意代码位置

图片5

 

 

0×03 恶意代码主要流程

创建互斥量,避免重复感染

图片6

判断是以哪种方式执行的恶意dll(svchost.exerundll32.exe)

1.rundll32.exe xxx/xxx.dll,yyy 运行

注入svchost.exe -k netsvcs进程

图片7

比较最后的参数,决定是否修改(不显示隐藏文件)注册表项

图片8

2.svchost.exe -k netsvcs下运行的主线程

图片9

Hook DNS相关函数,防止受感染机器访问安全相关网站,使得杀毒软件无法升级(DnsQuery_A,DnsQuery_UTF8,DnsQuery_W,Query_Main)

图片10

黑名单中网址关键字

图片11

主线程中:

1.复制自身的时候会修改文件属性,让其不能轻易被删除,隐藏等

图片12

图片13

复制的同时写入注册表,开机自动启动

图片14

上面写入失败会写入下面

图片15

2.设置以下注册表键值:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpNumConnections = 0x00FFFFFE

图片16

3.注入svchost.exe -k NetWorkService

图片17

4.关闭系统更新等windows安全相关服务

图片18

关键传播和主要功能位置

图片19

①随机监听一个端口,在MS08-067漏洞利用成功后向目标主机发送蠕虫自身来传播

图片20

MS08-067漏洞利用

图片21

call 009BA799

图片22

图片23

call 009BA8E9

图片24

图片25

②遍历弱密码表用IPC$网络共享方式传播

图片26

弱密码表

图片27

③感染移动设备

复制自身到下面路径,并写入autorun.inf,让其一插入就以rundll32.exe xx.dll,参数 形式执行蠕虫

“<drive>\RECYCLER\S-%d-%d-%d-%d%d%d-%d%d%d-%d%d%d-%d\<random filename and extension >”

autorun.inf文件有混淆,主要内容是以rundll32.exe \RECYCLER\S-%d-%d-%d-%d%d%d-%d%d%d-%d%d%d-%d\xxx.dll,pmiyvbu来执行文件

图片28

④网关相关

找支持UPnP的网关来动态映射端口

图片29

然后通过xml控制打开端口

图片30

 

⑤判断时间,访问随机生成的域名,下载并执行文件

查询本地和网络时间

图片31

域名产生算法

图片32

下载并执行文件

图片33

会检查文件的HASH,通过检查后创建线程来执行下载来的文件

图片34

 

0×04 总结

恶意代码在层层包裹之中,对分析增加了一点难度。检查文件时候使用了RC4加密以及HASH算法,触发漏洞后的那段Shellcode(本人对漏洞研究较少)都还需要继续深入学习研究。

 

0×05 参考

http://mtc.sri.com/Conficker/

https://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Worm%3aWin32%2fConficker.B#tab=2

http://www.programlife.net/conficker-kido-shellcode.html

 

Written by 漏洞应急响应中心