很棒小秘书清除记录
本人使用的一台笔记本曾经由于安装软件不当而中木马,一般的清除方法均对其无效,后判明原来是木马驻留在Windows的Socket协议栈中。下面是清除方法。
本文中所提到的命令及其选项的使用方法请查阅相关资料。
环境
一台笔记本,操作系统为 Windows XP Pro,其IE使用局域网内的代理自动配置脚本(.pac)文件获取代理服务器地址。该脚本判断要访问的地址是否属于局域网,是则指示IE直接连接,否则指示IE通过特定的代理服务器连接 Internet。
症状
局域网内部网站正常连接,但试图访问Internet上的地址时却出现“该页面无法显示”的提示。
分析
打开Internet选项->连接,发现自动代理配置脚本的URL无误,而且通过此URL也可以下载到正确的代理配置脚本文件。而且同一局域网内使用该脚本的其他电脑可以正常连接 Internet。因此判断代理脚本没有问题。
为获得更详细的信息,我在此机器上执行了下面的脚本:
ipconfig /all > C:\result.txt
ping -n 1 www.google.com >> C:\result.txt
ping -n 1 proxy1.aaa.com >> C:\result.txt
ping -n 1 proxy2.aaa.com >> C:\result.txt
ping -n 1 proxy3.aaa.com >> C:\result.txt
其中,prox1-proxy3是从自动代理配置脚本中获得的代理服务器地址。此脚本用于检查该电脑上的 IP地址、DNS是否正确,以及到代理服务器的连接是否畅通。检测结果如下(省略无关内容):
Ethernet adapter 本地连接:
Dhcp Enabled. . . . . . . . . . . : Yes
IP Address. . . . . . . . . . . . : 10.1.15.75
DNS Servers . . . . . . . . . . . : 10.1.13.7
10.1.13.3
10.1.12.30
Pinging www.l.google.com [???] with 32 bytes of data:
Request timed out.
Ping statistics for :
Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),
Pinging proxy1.aaa.com [???] with 32 bytes of data:
Reply from 10.1.13.7: bytes=32 time<1ms TTL=63
Ping statistics for ?:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Pinging proxy2.aaa.com [???] with 32 bytes of data:
Reply from 10.1.12.30: bytes=32 time=5ms TTL=56
Ping statistics for ?:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 5ms, Maximum = 5ms, Average = 5ms
Pinging proxy3.aaa.com [???] with 32 bytes of data:
Reply from 10.1.11.250: bytes=32 time=4ms TTL=57
Ping statistics for ?:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 4ms, Average = 4ms
以上结果中,问号的地方实际显示为乱码。从上述结果可见,该电脑的IP地址、DNS正确无误,而且到代理服务器连接正常。随即设置IE不使用自动代理脚本,而是直接使用 proxy1.aaa.com,连接Internet成功。
但是上述结果中,本应当显示为域名的地方全都显示成了乱码。经询问,该用户在症状发生之前曾经运行过网上下载的程序,因此判断为病毒感染。
于是运行以下脚本以获得进一步的信息:
netstat -ano > c:\result2.txt
tasklist >> c:\result2.txt
net start >> c:\result2.txt
reg QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run >> c:\result2.txt
reg QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce >> c:\result2.txt
reg QUERY HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run >> c:\result2.txt
reg QUERY HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce >> c:\result2.txt
结果如下(省略无关信息):
Active Connections
Proto Local Address Foreign Address State PID
TCP LISTENING 1584
TCP LISTENING 4
TCP ESTABLISHED 352
TCP ESTABLISHED 4
TCP TIME_WAIT 0
TCP ESTABLISHED 2628
TCP SYN_SENT 2628
TCP LISTENING 2196
TCP TIME_WAIT 0
TCP TIME_WAIT 0
TCP LISTENING 2188
TCP TIME_WAIT 0
TCP TIME_WAIT 0
TCP LISTENING 3576
TCP ESTABLISHED 2056
图像名 PID 会话名 会话# 内存使用
========================= ====== ================ ======== ============
System Idle Process 0 Console 0 16 K
System 4 Console 0 236 K
smss.exe 424 Console 0 352 K
csrss.exe 480 Console 0 4,264 K
winlogon.exe 504 Console 0 3,948 K
services.exe 548 Console 0 2,844 K
lsass.exe 560 Console 0 1,624 K
ati2evxx.exe 716 Console 0 1,616 K
svchost.exe 728 Console 0 2,992 K
svchost.exe 796 Console 0 3,096 K
svchost.exe 916 Console 0 2,680 K
svchost.exe 1028 Console 0 21,132 K
spoolsv.exe 1140 Console 0 2,692 K
explorer.exe 1860 Console 0 46,684 K
atiptaxx.exe 2044 Console 0 2,496 K
tbmon.exe 248 Console 0 1,476 K
rundll32.exe 356 Console 0 15,996 K
rundll32.exe 384 Console 0 2,584 K
ctfmon.exe 392 Console 0 2,404 K
agntsrvc.exe 1316 Console 0 4,148 K
cmd.exe 312 Console 0 720 K
alg.exe 3576 Console 0 2,148 K
conime.exe 3824 Console 0 3,912 K
iexplore.exe 2628 Console 0 36,188 K
cmd.exe 3496 Console 0 1,664 K
tasklist.exe 1460 Console 0 4,560 K
wmiprvse.exe 1252 Console 0 5,740 K
已经启动以下 Windows 服务:
Application Layer Gateway Service
Ati HotKey Poller
Automatic Updates
COM+ Event System
Cryptographic Services
DCOM Server Process Launcher
DHCP Client
Distributed Link Tracking Client
DNS Client
Error Reporting Service
Event Log
Help and Support
IPSEC Services
Logical Disk Manager
Net Logon
Plug and Play
Pointsec
Pointsec update agent
Print Spooler
Protected Storage
Remote Access Connection Manager
Remote Procedure Call (RPC)
Remote Registry
Secondary Logon
Security Accounts Manager
Server
Shell Hardware Detection
SoundMAX Agent Service
SSDP Discovery Service
System Event Notification
System Restore Service
Task Scheduler
TCP/IP NetBIOS Helper
Telephony
Terminal Services
Themes
WebClient
Windows Audio
Windows Firewall/Internet Connection Sharing (ICS)
Windows Management Instrumentation
Windows Time
Wireless Zero Configuration
Workstation
命令成功完成。
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
ATIModeChange REG_SZ Ati2mdxx.exe
ATIPTA REG_SZ C:\Program Files\ATI Technologies\ATI Control Panel\atiptaxx.exe
MSPY2002 REG_SZ C:\WINDOWS\System32\IME\PINTLGNT\ImScInst.exe /SYNC
mscfs REG_SZ RUNDLL32 C:\WINDOWS\system32\msibm\cfsys.dll,cfs
spoolsv REG_SZ C:\WINDOWS\system32\spoolsv\spoolsv.exe -printer
RichMedia REG_SZ C:\WINDOWS\system32\Rundll32.exe "C:\PROGRA~1\HBClient\hbhelper.dll",WaitWindows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\OptionalComponents
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
ctfmon.exe REG_SZ C:\WINDOWS\system32\ctfmon.exe
MsnMsgr REG_SZ "C:\Program Files\MSN Messenger\MsnMsgr.Exe" /background
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
上面列出结果中我省略了大量的信息,但是从那台电脑上生成的结果中我得到了以下的结论:
- 未发现异常端口监听;
- 未发现异常进程;
- 未发现异常服务。
但是也同时发现了几点异常状况:
- netstat 的结果中,IP地址未显示。
- ping 的结果中,域名显示成乱码。
- 注册表中 Run 下面有三个异常项:mscfs,spoolsv,RichMedia。
因此定下结论,确实是病毒,准确地说是木马。上网查了一下资料,原来最后一个RichMedia启动项中的 hbhelper.dll 是一款叫做很棒小秘书的软件,名列十大流氓软件之八。
第一次清除
知道了病毒的弱点之后就好办多了,首先启动到安全模式下,删除掉注册表 Run 下面的 mscfs、spoolsv、RichMedia 三项,然后删除对应的可执行文件,再以正常模式启动,查看注册表的Run下面,被删除的三个主键没有自动生成,即认为清除成功。
死灰复燃
第二天发现,不能连接Internet的故障依旧。再次收集系统信息,发现状况如下:
- netstat 的结果中,IP地址未显示。
- ping 的结果中,域名显示成乱码。
- 注册表中 Run 下,RichMedia 项自动生成了。
看样子,mscfs和spoolsv这两个病毒被清除掉了,而hbhelper.dll这个病毒生命力很顽强,死灰复燃了。
昨天业已清除了注册表的 Run,也确认没有异常服务,于是我想到了IE的插件,IE插件虽然不是系统启动时自动运行,但是基本上任何人启动电脑都要打开IE的,因此也成了一个病毒藏身的好地方。于是检查IE的插件,发现了一个名为 HBObject Class的插件。索性从注册表中将该插件清除,然后删掉相关文件,再于整个注册表中检索HBObject和hbhelper.dll并全部删除之。重新启动计算机,奇怪的是病毒再次复活了。
无意之中在 C:\Windows\system32 下面发现了一个名为 hap.log 的文件:
2006-01-24 10:04:53 广告类型为网址广告
2006-01-24 10:04:53 开始发送广告请求 :http://www.topwork.aaa.com
2006-01-24 10:04:53 广告请求URL : /hap/adserver.aspx?version=1.1.3.1.0.0&mac=00-01-23-33-34-34&userid=&
advertid=&unadvertid=&distributorid=100192&requesttype=1&requestflag=3&charset=GB2312&domain=www.topwork.
aaa.com&word=www.topwork.aaa.com
2006-01-24 10:05:14 Server返回错误
2006-01-24 10:11:51 BHO截获的URL:about:blank
2006-01-24 10:11:51 Top-level Window object, so document has been loaded!
2006-01-24 10:12:48 BHO截获的URL:http://login.passport.net/uilogin.srf?lc=1234&id=2
2006-01-24 10:12:48 广告类型为网址广告
2006-01-24 10:12:48 开始发送广告请求 :http://login.passport.net/uilogin.srf?lc=1234&id=2
2006-01-24 10:12:48 广告请求URL : /hap/adserver.aspx?version=1.1.3.1.0.0&mac=00-01-23-33-34-34&userid=&
advertid=&unadvertid=&distributorid=100192&requesttype=1&requestflag=3&charset=GB2312&domain=login.passport.
net&word=login.passport.net
2006-01-24 10:12:48 Top-level Window object, so document has been loaded!
2006-01-24 10:12:49 Server返回没有广告 : null
2006-01-24 10:14:27 BHO截获的URL:about:blank
2006-01-24 10:14:27 Top-level Window object, so document has been loaded!
2006-01-24 10:15:13 BHO截获的URL:http://www.google.co.jp/
2006-01-24 10:15:13 广告类型为网址广告
2006-01-24 10:15:13 开始发送广告请求 :http://www.google.co.jp/
2006-01-24 10:15:13 广告请求URL : /hap/adserver.aspx?version=1.1.3.1.0.0&mac=00-01-23-33-34-34&userid=&
advertid=&unadvertid=&distributorid=100192&requesttype=1&requestflag=3&charset=GB2312&domain=www.google.co.jp
&word=www.google.co.jp
2006-01-24 10:15:13 Top-level Window object, so document has been loaded!
2006-01-24 10:15:15 Server返回没有广告 : null
原来如此!我突然明白为什么不能上网了。很明显上面这个文件是很棒小秘书在生成广告时进行的动作的日志。从上述日志可以判断,该软件截获用户输入的地址,然后将该地址发送到广告服务器上,判断该地址今天是否已经插入过广告,如果未插入,则获取广告,并插入到用户访问的网站的回复中。而这台电脑使用的是自动代理配置脚本,因此IE访问的第一个地址一定是该脚本。于是很棒小秘书就将广告代码插入到了代理脚本中。因为代理脚本是用javascript写成,被无缘无故插入一段广告代码之后显然会造成语法错误,因此IE就无法通过该脚本获取正确的代理地址,因此造成Internet无法访问而局域网访问正常的故障。
但是尽管如此,该“小蜜”究竟藏身何处,却是百思不得其解。
攻城利器
一个星期之后继续调查该“小蜜”的事迹,偶然发现很多人都在使用一个名为hijackthis的软件来检查机器。搜索hijackthis,原来这是一个检查病毒藏身地的软件,它会搜索进程、服务、注册表等,找出异常选项。于是马上下载了该软件对电脑进行扫描。扫描的结果中除了注册表和IE插件的异常之外,还发现了这样一个异常:
O10 - Unknown file in Winsock LSP: c:\windows\system32\hbmter.dll
O10 - Unknown file in Winsock LSP: c:\windows\system32\hbmter.dll
Winsock LSP是什么?查了一下得知,Winsock LSP就是Winsock的协议栈,由一系列的网络函数组成。原来如此!协议栈也是系统开机必须要运行的程序,将病毒藏身于此,可以保证每次开机都会被执行。而安全模式是不启动网络的,因此在安全模式下病毒不会启动以免现身。
第二次清除
这次清除就有目标了。首先启动到安全模式下,打开注册表编辑器,首先清除掉Run和IE插件中的各个与该小蜜有关的项目。然后开始对LSP开刀,打开 HKLM\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries,发现该主键下共有19个子键,名为0000000001-0000000019。打开0000000001,然后双击其中的 PackedCatalogItem 键值,发现其内容果然为 c:\windows\system32\hbmter.dll。于是删除 000000000001 主键。然后打开 000000000002,确认 PackedCatalogItem 键值,为c:\windows\system32\hbmter.dll,于是删除 000000000002。然后将 000000000003 重命名为 000000000001,000000000004 重命名为 000000000002,以此类推。最后将 HKLM\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9 主键下的 Num_Catalog_Entries 由 13 (十六进制的19)修改为 11。最后重新启动。
重新启动之后,netstat可以看到IP了,ping可以看到域名了,IE也能正常上网了。
总结
这次病毒清除的经历我又知道了一个新的病毒藏身地点:Winsock LSP。而且通过hijackthis这个软件可以轻松地检查电脑的异常,值得推荐。