本文仅做数据包学习使用!
一、Slammer蠕虫概述
SQL Slammer
(2003年) Slammer 是一款DDOS恶意程序, 透过一种全新的传染途径, 采取分布式阻断服务攻击感染服务器, 它利用SQL Server 弱点采取阻断服务攻击1434端口并在内存中感染SQL Server, 通过被感染的SQL Server 再大量的散播阻断服务攻击与感染, 造成SQL Server 无法正常作业或宕机, 使内部网络拥塞。
SQL Slammer
也被称为“蓝宝石(Sapphire)蠕虫
”或Helkern
,大小为376字节
,刚好可以装入1个网络包中,让它可以在发动时达到快速传播的效果。该蠕虫向 UDP 1434 端口发送
格式化的请求,造成受感染路由器开始向随机IP地址发送该恶意代码,令目标陷入拒绝服务状态。曾通过用大量网络包使服务器和路由器之类网络设备过载,造成全球上万台服务器发生拒绝服务现象。
蠕虫具有以下特征:
- 使用udp协议传播,传播速度快,传播面积广
- 蠕虫感染系统后,只驻留内存不在硬盘上写任何文件
- 由于发送大量的udp包会产生巨大的网络流量,造成Dos攻击
影响版本:
- SQL Server 2000 RTM
- SQL Server 2000 SP1
- SQL Server 2000 SP2
- Microsoft SQL Desktop Engine Version (MSDE) 2000
symantec提供了如下的网络检测规则:
alert udp $EXTERNAL_NET any -> $HOME_NET 1434 (msg:"W32.SQLEXP.Worm propagation";
content:"|68 2E 64 6C 6C 68 65 6C 33 32 68 6B 65 72 6E|"; content:"|04|"; offset:0;
depth:1;)
二、数据包分析
数据包来源于:https://wiki.wireshark.org/SampleCaptures,名称为tslammer.pcap
① 查看数据包,看到明显的2个特征:发送到网络主机UDP的目标1434端口,且将自身封装在一个376字节大小的UDP数据包中;
② 查看十六进制数据,前14个字节是数据帧头,接着个字节是UDP报头,然后20个字节是IP头部,从04之后是Slammer蠕虫的数据;
若SQL服务器SQL Server Resolution Service解析服务开放且未安装补丁,SQL Server Resolution Service在UDP1434端口接收到第一个字节为0x04的UDP包时,SQL监视线程会获取数据并使用信息来尝试打开注册表中的键值。所以攻击者可以在这个UDP包后追加大量的字符数据,当SQL监视线程尝试打开注册表键值时,会发生基于栈的缓冲区溢出,覆盖一部分系统内容,可导致SQL Server进程的权限在系统中执行任意指令。
后续便可调用Windows的API功能GetTickCount随机生成IP地址,在受害主机上建立socket,将装有蠕虫的UDP包发送到生成的IP地址中,使其均被感染。
③ 在数据包负载中,可见一些字符串特征:
- h.dllhel32hkernQhounthickChGetTf
- hws2
- Qhsockf
- toQhsend