有一台WIN2003的服务器,在单位的局域网内,与互联网是物理隔离的,最近上面运行的一个WEB服务器经常出错,查看日志发现是因为数据库不能连接,因为系统的所有端口都已经被占用完。使用netstat -abn查看发现svchost.exe开启了大量状态为SYN_SENT的连接,目标端口都是445,但是连接的IP各种各样的都有,由于机器不能建立Internet连接,所以状态都是SYN_SENT,重启一下这些连接都没有了,但是过一会又会迅速建立起来,很快就把系统的所有端口都占用了。
根据端口找出哪个服务真不容易,通过netstat -abn只能查到是svchost.exe,最多还能得到一个PID,确定是哪个svchost.exe,然后通过tasklist /svc可以查到那个svchost对应了哪些服务,但是一看,很多服务都是使用那个svchost,包括Server,Workstation等等,根本不知道是哪个产生的连接。
找了半天发现有人和我一样:
http://www.petri.co.il/forums/showthread.php?t=36427,讨论了半天最后也找到了解决方法:
http://www.symantec.com/security_response/writeup.jsp?docid=2009-011316-0247-99,原来是W32.Downadup这个病毒惹的祸,下载了专杀工具回来查了一下,果然找到了两个被感染的文件,一个是jpg文件,在IE的缓存里,一个是dll文件,在system32里。
根据dll文件名在注册表里查到了它注册的服务,原来又是之前处理过的那种,服务名随机、服务描述为空、启动类型为自动、状态为未启动、dll名随机,但是我记得这台服务器已经打过补丁,也没有出现svchost错误,所以就忽略了服务的检查,没想到这种东西还有不同的症状。
这个病毒利用的是KB958644的漏洞,到微软下载了补丁回来,一看才发现原来那台服务器以前已经装过这个补丁。补丁的作用也许就是只能防止再出问题,但不能解决已有的问题,所以那台服务器虽然装了补丁,但是可能已经被感染了,于是就没治好。