|
|
在Internet上大规模爆发的蠕虫病毒最早于03年1月25日现身,之后以极快的速度在Internet 的服务器上大面积传播。
SQL Slammer蠕虫病毒本身仅仅只有376字节,比红色代码4KB(4096字节)和尼姆达60KB(61440字节)小的多。它利用一个微软六个月前就已经宣布并且可以打补丁的漏洞(Microsoft SQL Server 2000 Resolution服务远程栈缓冲区溢出漏洞),通过自我繁殖使得计算机间无法通讯。它体积小到仅需使用一个数据包就可以发送自身所有代码,数据包中Slammer载入内存后计算机就受到了病毒感染。。
SQL Slammer蠕虫发送一个数据包(数据就是蠕虫代码本身),但通过发送超长字符串(使用第二个字符串)来摧毁堆栈。实例名称被认为是16个字节,但这个长度并没有进行检查。新返回指针地址为0x42B0C9DC。这个返回的地址指向sqlsort.dll中的一条JMP ESP指令。它使用sqlsort.dll来调用LoadLibrary()和GetProcAddress()函数。这些函数帮助Slammer获取对WS2_32.dll 和kernel32.dll的访问权。这些动态库帮助Slammer得到了Socket()、SendTo()和GetTickCount() API的地址,这三个函数用于复制病毒。
接着,SQL Slammer蠕虫向随机IP地址的UDP 1434端口发送自己。这个发送过程无限循环,它不仅在网络上填满了该病毒,而且引起CPU的利用率达到峰值,从而导致成千上万台受感染主机发起DoS攻击。
蠕虫利用UDP/1434端口,该端口用于SQL Server Resolution服务。当SQL Server Resolution服务在UDP 1434端口接收到第一个字节设置为0x04的UDP包时,SQL监视线程会获取UDP包中的数据,此时攻击者可以通过在这个UDP包后追加大量字符串,当尝试打开这个字符串相对应的数值时,会发生基于栈的缓冲区溢出。当溢出成功后,蠕虫取得系统控制权,开始向随机IP地址发送自身代码,这一过程将无限循环,因此发送的数据量非常大,极大的占用了被感染机器的系统资源及所在的网络资源。 |
|