论坛: 病毒专区 标题: 紧急通告----全球互联网遭受蠕虫病毒攻击!!! 复制本贴地址    
作者: fqjpower [fqjpower]    论坛用户   登录
    2003年1月25日国内出现一种蠕虫病毒,感染该蠕虫后网络带宽被大量占用,链路流量出现陡增。该蠕虫是利用SQL SERVER 2000 的解析端口1434的缓冲区溢出漏洞对其服务进行攻击。由于该蠕虫传播力较强,目前在国内正在迅速传播,中国计算机网络应急处理协调中心提醒广大计算机用户做好预防工作。
网络上盛传网络不通的原因:微软的漏洞
  不少网上消息来源援引CNN报道称,从美国东部时间中午12:30开始,全世界几乎所有的web服务器同时遭到攻击,这是一种和“红色代码”类似的电子攻击,针对微软SQL服务器2000的漏洞进行攻击,导致全球网络速度大幅减慢。据称,这可能与历史上发现的几个Microsoft SQL Server 2000漏洞有关,也可能是某个未公开的漏洞。
  据一个防毒组织估估计,全世界至少有22000个以上的系统被攻击。
  “绿盟科技”还在其网站上给出了针对攻击的参考解决方法:
  1.安装Microsoft SQL Server 2000SP3。
  2.在边界防火墙或者路由器上阻塞外部对内UDP/1434端口的访问。
  如果由于DoS导致系统反映缓慢,可先断开网络连接。

补丁下载:
 http://www.cert.org.cn/upload/Q323875_SQL2000_SP2_en.EXE


[此贴被 如风(fqjpower) 在 01月26日04时12分 编辑过]

地主 发表时间: 2003-01-26 04:06:12

回复: fqjpower [fqjpower]   论坛用户   登录
受影响的软件及系统:

Microsoft SQL Server 2000 SP2
Microsoft SQL Server 2000 SP1
Microsoft SQL Server 2000 Desktop Engine
Microsoft SQL Server 2000
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
    - Microsoft Windows 2000

分析:

这是一种新出现的针对Microsoft SQL Server 2000的蠕虫。

该蠕虫本身非常小,仅仅是一段376个字节的数据。利用的安全漏洞是“Microsoft SQL Server 2000 Resolution服务远程栈缓冲区溢出漏洞”(http://www.nsfocus.net/index.php?act=sec_bug&do=view&bug_id=3148)。

    蠕虫利用的端口是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,感染了该蠕虫的网络性能会极度下降。一个百兆网络内只要有一两台机器感染该蠕虫就会导致整个网络访问阻塞。

蠕虫代码分析:

以下地址以以未打sql server service pack的为准。

    溢出是用sprintf( )的格式串bug覆盖了ssnetlib.dll中如下函数的返回地址。将返回地址指向sqlsort.dll中文件偏移地址为0x2C9DC处的一条JMP ESP指令,实际上该处是sqlsort.dll的数据区,只不过数据FF E4正好也是JMP ESP这条指令的机器码。

    第N个包的目的IP地址 = (107005的N次方) 乘以 (seed) + N 乘以 C,C = GetProcAddress这个函数的起始虚拟地址与一个常数FFD9613C异或的结果,所以C只取决于OS类型和Service pack号。在win2k sp3中,C = 8831FA24。


* Referenced by a CALL at Address:
|:42CFACC3   
|
:42CFB392 55                      push ebp
:42CFB393 8BEC                    mov ebp, esp
...........................................................................//此处省略
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:42CFB562(C)
|
:42CFB58E 8B8538DBFFFF            mov eax, dword ptr [ebp+FFFFDB38]
:42CFB594 50                      push eax

* Possible StringData Ref from Data Obj ->"SOFTWARE\Microsoft\Microsoft SQL "
                                        ->"Server\"
                                  |
:42CFB595 68000BD042              push 42D00B00

* Possible StringData Ref from Data Obj ->"%s%s\MSSQLServer\SuperSocketNetLib\"
                                  |
:42CFB59A 682C0BD042              push 42D00B2C
:42CFB59F 8D8DFCD6FFFF            lea ecx, dword ptr [ebp+FFFFD6FC]
:42CFB5A5 51                      push ecx

* Reference To: MSVCRT.sprintf, Ord:02B2h
                                  |
:42CFB5A6 FF1510E1CF42            Call dword ptr [42CFE110]
:42CFB5AC 83C410                  add esp, 00000010
:42CFB5AF 8B9538DBFFFF            mov edx, dword ptr [ebp+FFFFDB38]
:42CFB5B5 52                      push edx

* Possible StringData Ref from Data Obj ->"SOFTWARE\Microsoft\Microsoft SQL "
                                        ->"Server\"
                                  |
:42CFB5B6 68500BD042              push 42D00B50

* Possible StringData Ref from Data Obj ->"%s%s\MSSQLServer\CurrentVersion"
                                  |
:42CFB5BB 687C0BD042              push 42D00B7C
:42CFB5C0 8D857CFFFFFF            lea eax, dword ptr [ebp-84]          <--------利用这个局部缓冲区的溢出来覆盖返回地址
:42CFB5C6 50                      push eax

* Reference To: MSVCRT.sprintf, Ord:02B2h
                                  |
:42CFB5C7 FF1510E1CF42            Call dword ptr [42CFE110]
:42CFB5CD 83C410                  add esp, 00000010

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:42CFB58C(U)
|
:42CFB5D0 8D8D00DBFFFF            lea ecx, dword ptr [ebp+FFFFDB00]
:42CFB5D6 51                      push ecx
:42CFB5D7 6819000200              push 00020019
:42CFB5DC 6A00                    push 00000000
:42CFB5DE 8D957CFFFFFF            lea edx, dword ptr [ebp+FFFFFF7C]
:42CFB5E4 52                      push edx
:42CFB5E5 6802000080              push 80000002

* Reference To: ADVAPI32.RegOpenKeyExA, Ord:0172h
                                  |
:42CFB5EA FF1518E0CF42            Call dword ptr [42CFE018]

解决方法:

    建议所有运行Microsoft SQL Server 2000和近期发现网络访问异常的用户按照以下解决方案操作:

1、在边界防火墙或者路由器上阻塞外部对内和内部对外的UDP/1434端口的访问.

    根据Cisco的安全公告,可以使用下列命令来完成对UDP/1434端口的阻塞的操作:

对交换机(以6500系列为例):

  配置:

  set security acl ip WORM deny udp any eq 1434 any
  set security acl ip WORM deny udp any any eq 1434
  set security acl ip WORM permit any
  commit security acl WORM
  set security acl map WORM <vlan>
  
  设置端口为vlan based:
  
  set port qos <mod/port> vlan-based
  
  验证:
  
  show security acl info all
  
  删除:
  
  clear security acl WORM
  commit security acl WORM

对路由器:

  access-list 115 deny udp any any eq 1434
  access-list 115 permit ip any any
  
  int <interface>
  ip access-group 115 in
  ip access-group 115 out


2、找到被感染的主机

    在边界路由器(或者防火墙)上进行检查,也可启动网络监视程序(譬如Sniffer Pro)进行检查,找到网络中往目的端口为UDP/1434发送大量数据的主机,这些主机极为可能感染了该蠕虫。

    如果不能确定,则认为所有运行Microsoft SQL Server 2000 而没有安装补丁程序的机器都是被感染的机器。
    可以使用端口扫描程序(譬如Nmap)对UDP/1434端口进行扫描来找到运行Microsoft SQL Server 2000的主机,但是由于UDP端口扫描并不准确,可以扫描TCP/1433端口找到运行SQL Server的主机。但需要注意的是,只有SQL Server 2000才会受到此蠕虫的感染。

3、拔掉被感染主机的网线。

4、重新启动所有被感染机器,以清除内存中的蠕虫。关闭SQL Server服务以防止再次被蠕虫感染。

5、插上被感染机器的网线

6、为被感染机器安装最新的Microsoft SQL Server 2000 Service Pack:

建议安装Microsoft SQL Server 2000  SP3(http://www.microsoft.com/sql/downloads/2000/sp3.asp)。

或者至少应该下载针对该漏洞的热修复补丁:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=40602
安装此补丁必须先安装Microsoft SQL Server 2000  SP2(http://www.microsoft.com/sql/downloads/2000/sp2.asp)

注意:如果由于某种原因无法从网络下载补丁进行安装,因此可以在其他未被感染的主机上下载补丁,刻录在光盘或者保存在其他移动介质上,然后再到被感染的主机上进行安装。

    如果由于某种原因不能及时安装补丁,可暂时使用系统上的TCP-IP筛选来阻塞对本机UDP/1434端口的访问,但我们并不推荐这样做。注意!使用TCP-IP筛选阻塞UDP可能导致某些网络应用异常。

TCP-IP筛选操作步骤:

    打开“控制面板”-->“网络和拨号连接”,找到需要设置TCP-IP筛选的网卡,单击右键,选“属性”,拖动滚动条,找到“Internet 协议(TCP/IP)”,在上面双击鼠标,在新出现的窗口中点击“高级”,在“选项”页中找到“TCP/IP筛选”,打开之后点选“启用 TCP/IP筛选”并找到UDP这一栏,选择“只允许”,然后就可以添加需要使用的UDP端口,凡是不在这个端口范围内的UDP数据都会被阻塞,如果不添加则阻塞所有UDP端口。

   某些内部大量感染该蠕虫的网络在路由器或者边界防火墙上设置阻塞UDP/1434端口的规则后会导致网络设备CPU资源占用剧增的现象,在这种情况下,可先拔掉被感染机器的网线,再设定网络设备的过滤规则,待内部所有系统都重新启动并安装补丁之后再插上网线。

注:上述步骤仅供参考。

附加信息:
==========
Microsoft SQL Server 2000 Resolution服务远程栈缓冲区溢出漏洞

发布日期:2002-07-25
更新日期:2002-07-30

受影响系统:
Microsoft SQL Server 2000 SP2
Microsoft SQL Server 2000 SP1
Microsoft SQL Server 2000 Desktop Engine
Microsoft SQL Server 2000
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
    - Microsoft Windows 2000
描述:
-----------------------------------------------------------------BUGTRAQ  ID: 5311
CVE(CAN) ID: CAN-2002-0649

    Microsoft SQL Server 2000是一款由Microsoft公司开发的商业性质大型数据库系统。

    Microsoft SQL Server 2000的Resolution服务对用户提交的UDP包缺少正确的处理,远程攻击者可以利用这个漏洞进行基于栈的缓冲区溢出攻击。

    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进程的权限在系统中执行任意指令。

<*来源:NGSSoftware Insight Security Research (nisr@nextgenss.com)
 链接: http://archives.neohapsis.com/archives/bugtraq/2002-07/0291.html http://www.microsoft.com/technet/security/bulletin/MS02-039.asp http://www.ngssoftware.com/advisories/mssql-udp.txt

临时解决方法:

   如果您不能立刻安装补丁或者升级,建议您采取以下措施以降低威胁:

    在边界防火墙、网关设备或者SQL Server主机上限制对UDP/1434端口的访问。由于UDP报文的源地址很容易伪造,所以不能简单地限制只允许可信IP访问。

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS02-039)以及相应补丁:
MS02-039:Buffer Overruns in SQL Server 2000 Resolution Service Could Enable Code Execution (Q323875)
链接:http://www.microsoft.com/technet/security/bulletin/MS02-039.asp

补丁下载:

    * Microsoft SQL Server 2000:
       http://www.microsoft.com/Downloads/Release.asp?ReleaseID=40602



参考:
=======
http://www.nsfocus.net/index.php?act=sec_bug&do=view&bug_id=3148 http://www.microsoft.com/technet/security/bulletin/MS02-039.asp http://archives.neohapsis.com/archives/bugtraq/2002-07/0291.html http://www.microsoft.com/technet/security/bulletin/MS02-039.asp http://www.ngssoftware.com/advisories/mssql-udp.txt

B1层 发表时间: 01/27 14:01

回复: laievf [laievf]   论坛用户   登录
http://www.safechina.net/news/html/1043719097.htm

B2层 发表时间: 01/28 14:38

回复: laievf [laievf]   论坛用户   登录
来自香港 http://www.safechina.net/news/html/1043719067.htm

B3层 发表时间: 01/28 14:40

论坛: 病毒专区

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号