addrefclock ctlstats help listpeers readkeys timerstats
addserver debug host loopinfo requestkey traps
addtrap delay hostnames memstats reset trustedkey
authinfo delrestrict ifreload monlist reslist unconfig
broadcast disable ifstats passwd restrict unrestrict
clkbug dmpeers iostats peers showpeer
untrustedkey
clockstat enable kerninfo preset sysinfo version
clrtrap exit keyid pstats sysstats
不等价交换的 DDos 利用
Listpeers指令与 monlist指令
Listpeers指令,列出目标NTP服务器的peers(NTP Servers )
Monlist 指令,可以获取与目标 NTP Server进行过同步的最后600 个客户机IP。这意味着,
一个很小的请求包,就能获取到大量的活动 IP 地址组成的连续 UDP 包,wireshark 抓包如
下图:
值得注意的是,截图显示的,仍然只是NTP服务器回包中很小的一部分,此次通信实际的回
包比为 1:73,而数据量大小比为 234 bytes:73×482 bytes,约等于 1:562,计算可得
到,10M 的通信流量可以得到 5620M的攻击流量,也就是5G。
正是由于此指令的不等价交换(1:562 的报酬),UDP 协议的通信模糊性(无三次握手
验证),以及NTP 服务器的无认证机制,使得反射型DDos攻击成为可能。
DDos 攻击程序编写
来自国外 Blog的 monlist测试例子:
这个 Python脚本的作用是,从指定的服务器使用monlist指令返回的IP地址列表,由
于 Linux的 ntpdc指令超时时间很短,因此不容易返回完整的列表。
使用 Python 进行攻击程序的开发
Python 的攻击代码由SAI编写,截图如下:
使用 Winpcap 进行攻击程序的开发
此代码由 linxinsnow编写。
说明:
由于网络上的大量NTP 服务器,客户端不一定有600 个,因此我们在攻击之前需要进行
“子弹填充”,也就是模拟NTP client向服务器发起NTP 请求,人为制造客户端,这样在使
用minlist指令的时候,就能返回一系列很大的UDP报文。
攻击流程图如下:
1.填充子弹: 2. 开始攻击:
此时 1.1.1.1会收到来自大量 NTP 服务器的monlist回包,阻塞带宽。
如何进行防范
只要网络上还有允许 NTP monlist 的服务器存在,这种基于流量放大的 DDos 攻击就无
法进行单机防护,除非在所有骨干网节点都部署上抗DDos 防护设备。
攻击程序暂时不放出来,不过大牛们根据此文完全可以自己编写,noblesse oblige,
希望大家不要用于非法用途。
|