2003年1.25网络蠕虫病毒
 

 

 


(云南省地震局信息中心网络部 段洪杰)

一、背景

  2003年1月25日,互联网遭遇到全球性的病毒攻击。这个病毒名叫Win32.SQLExp.Worm,病毒体极其短小,却具有极强的传播性,它利用Microsoft SQL Server的漏洞进行传播,由于Microsoft SQL Server在世界范围内都很普及,因此此次病毒攻击导致全球范围内的互联网瘫痪,在中国80%以上网民受此次全球性病毒袭击影响而不能上网,很多企业的服务器被此病毒感染引起网络瘫痪。而美国、泰国、日本、韩国、马来西亚、菲律宾和印度等国家的互联网也受到严重影响。

二、解决方案

  请所有安装了SQL Server 2000数据库的电脑用户安装SQL Server 2000 ServicePack 3
  下载地址: http://www.microsoft.com/sql/downloads/2000/sp3.asp
  只有在确保地震局内安装了SQL Server 2000数据库的所有电脑安装了ServicePack 3,网络部才能接通局域网的网络出口。

三、技术分析

  蠕虫利用的端口是UDP/1434,该端口是SQL Server Resolution服务。Microsoft SQL Server 2000支持在单个物理主机上伺服多个SQL服务器的实例,每个实例操作需要通过单独的服务,不过多个实例不能全部使用标准SQL服务会话会话端口(TCP 1433),所以SQL Server Resolution服务操作监听在UDP 1434端口,提供一种使客户端查询适当的网络末端用于特殊的SQL服务实例的途径。

  当SQL Server Resolution服务在UDP 1434端口接收到第一个字节设置为0x04的UDP包时,SQL监视线程会获取UDP包中的数据并使用此用户提供的信息来尝试打开注册表中的某一键值,如发送\x04\x41\x41\x41\x41类似的UDP包,SQL服务程序就会打开如下注册表键:

  HKLM\Software\Microsoft\Microsoft SQL Server\AAAA\MSSQLServer\CurrentVersion
  攻击者可以通过在这个UDP包后追加大量字符串数据,当尝试打开这个字符串相对应的键值时,会发生基于栈的缓冲区溢出,通过包含"jmp esp"或者"call esp"指令的地址覆盖栈中保存的返回地址,可导致以SQL Server进程的权限在系统中执行任意指令。  

  蠕虫溢出成功取得系统控制权后,就开始向随机IP地址发送自身,由于这是一个死循环的过程,发包密度仅和机器性能和网络带宽有关,所以发送的数据量非常大。在绿盟科技安全小组的测试中,和被感染机器在同一网段的每一台分析机每秒钟都收到了近千个数据包。  

  该蠕虫对被感染机器本身并没有进行任何恶意破坏行为,也没有向硬盘上写文件。对于感染的系统,重新启动后就可以清除蠕虫,但是仍然会重复感染。由于发送数据包占用了大量系统资源和网络带宽,形成Udp Flood,感染了该蠕虫的网络性能会极度下降。一个百兆网络内只要有一两台机器感染该蠕虫就会导致整个网络访问阻塞。

 
云南省地震局防震减灾信息网

Copyright(c) 2001-2002; All Rights Reserved