网站开发模板系统,六安网事,有什么在线做文档的网站,中国购物网站大全排名1 概述
hping3是一个强大的命令行工具#xff0c;用于生成、发送和解析TCP/IP协议的数据包。它是开源的网络安全工具#xff0c;由Salvatore Sanfilippo开发#xff0c;主要应用于网络审计、安全测试和故障排查等领域。hping3不仅可以作为普通的网络连通性检测工具#xf…1 概述
hping3是一个强大的命令行工具用于生成、发送和解析TCP/IP协议的数据包。它是开源的网络安全工具由Salvatore Sanfilippo开发主要应用于网络审计、安全测试和故障排查等领域。hping3不仅可以作为普通的网络连通性检测工具还因其高度的灵活性和可定制性而被广泛用于渗透测试、防火墙测试、DoS/DDoS攻击模拟以及协议漏洞研究。本文章主要介绍如何使用hping3进行常见的DDos攻击。构造IPTCPUDPICMPHTTP等数据包的方法。还有如何使用hping3进行端口扫描。hping3的功能也不止文章中介绍的这些其他功能读者可自行去探索。
2 hping3安装
以Centos平台为例先要安装以下两个依赖包 yum install libpcap-develyum install tcl-develln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.hhping3下载地址在github下载源码后解压后通过以下命令安装 ./configuremake make stripmake install3 命令简介
这里只介绍本文章中使用到的一些命令全部命令可以执行 hping3 --help查看。 # 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 # 指定发送的数据4 hping3实现DDos攻击
关于DDos攻击原理可参考这篇文章 DDos攻击原理这里先准备两台主机使用hping3进行攻击的主机为192.168.206.137被攻击主机为192.168.1.2。被攻击主机我们先开启一个8088的TCP端口。
4.1 SYN Flood 先进行较常见的SYN Flood攻击 hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000参数介绍 192.168.1.2 : 被攻击的主机ip–syn : 进行SYN攻击-p : 被攻击主机端口。在实际场景中可以通过NMap等端口扫描工具来判断哪些端口是开放的。-c : 发送数据包的数目-i : 发送数据包间隔时间 通过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请求很快就会达到服务器并发处理能力的上限导致服务瘫痪。
4.2 ACK Flood
再看下ACK攻击 hping3 192.168.1.2 --ack -p 8088 -c 5 -i u500000直接抓包看下数据
4.3 UDP DDos攻击
在被攻击主机192.168.1.2上开启一个8089的UDP端口 hping3 -c 5 -e hello -d 5 --udp -p 8089 192.168.1.2-e表示发送的数据-d表示发送的数据大小。
4.4 UDP反射放大攻击 攻击原理首先有一台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参数介绍 -a : 伪造ip地址为攻击目标的地址-s : 指定源端口号这里就可以伪造成攻击目标的端口号-k : 保持源端口号不变否则发送一个请求后源端口号会递增 借助一个UDP调试工具看下效果 可以看到请求本来是肉鸡192.168.206.137发送给UDP服务的但实际上UDP服务响应到了攻击目标192.168.206.133上。
4.5 备注
这里演示了典型的几种DDos攻击方式其它攻击方式读者可自行去测试。测试时最好使用自己搭建的内网服务不要对公网服务去进行攻击。依据《中华人民共和国刑法》第二百八十五条【非法侵入计算机信息系统罪】非法侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统以及其他重要计算机信息系统的处三年以下有期徒刑或者拘役。依据《中华人民共和国刑法》第二百八十六条【破坏计算机信息系统罪】对计算机信息系统功能进行删除、修改、增加、干扰造成计算机信息系统不能正常运行后果严重的处五年以下有期徒刑或者拘役后果特别严重的处五年以上有期徒刑。
5 hping3构造自定义数据包
5.1 构造TCP数据包
TCP包头 可以构造一个TCP数据包包头的源端口号目标端口号标志位窗口大小都可以去设置。也可以通过-a参数伪造源IP地址上面DDos攻击介绍过这里就不再描述过。 hping3 -c 1 -S -A -s 10010 -w 1024 -p 8088 -d 10 -e helloworld 192.168.1.2看下抓包
5.2 构造UDP数据包 UDP包头 UDP包头比较简单一般可以设置源端口和目标端口号 hping3 -c 1 -e hello -d 5 --udp -p 8089 192.168.1.25.3 构造ICMP数据包
ICMP协议主要用于确认IP数据包是否成功送达目标地址我们经常使用的ping命令就是使用的ICMP协议。可以通过hping3构造一个ICMP数据包构造ICMP包的命令比较简单 hping3 --icmp -c 1 192.168.1.2抓包看下
5.4 构造IP数据包
IP数据包包头 构造IP数据包可以设置源地址目标地址生存时间协议等字段 hping3 --rawip -c 1 -t 126 --ipproto 6 -a 192.168.2.2 192.168.1.2Protocol较常用的主要有以下几种 1 : ICMP4 : IP6 : TCP17 : UDP41 : IPv6
5.5 通过IP数据包构造TCP数据包 我们知道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数据包等。
5.6 通过IP数据包构造HTTP数据包
hping3没有提供构造应用层协议的命令那么能不能构造应用层协议呢当然可以参考勇IP数据包构造TCP数据包的方法可以在此基础上继续构造应用层数据包比如HTTP数据包。 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 TCP数据包的内容不变在后面继续构造HTTP数据包 使用同样的命令继续发送-d指定的大小要改成文件实际大小 hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 57 192.168.1.2抓包可以看到数据包已经变成了HTTP数据包 通过这种方法我们几乎可以构造传输层和应用层的所有网络协议。
6 端口扫描
hping3也支持端口扫描扫描主机192.168.1.2的1-1024端口状态 hping3 --scan 1-1024 -S 192.168.1.2看下扫描结果 端口扫描建议使用Nmap工具使用相对方便。hping3的其他扫描命令就不过多介绍了。