hping3如何发送定制TCP数据包

联启 网络工具 13

精通hping3:定制TCP数据包的终极指南

目录导读

  1. hping3基础概述 – 工具定位与核心功能
  2. TCP数据包结构拆解 – 理解你将要定制的每一层
  3. 发送定制TCP数据包的五步法 – 从命令行到高级参数
  4. 实战案例:五种典型场景 – SYN Flood / 端口探测 / 窗口大小测试等
  5. 常见问题与排错 – 为何数据包被丢弃?Wireshark如何验证?
  6. 安全合规提醒 – 合法使用与风险规避

hping3基础概述

Q1: hping3是什么?它和普通ping有何不同?

A: hping3是一个基于命令行的网络测试工具,它能构造并发送几乎任意类型的IP数据包,与仅支持ICMP Echo的ping不同,hping3支持TCP、UDP、ICMP、RAW-IP等多种协议,在网络渗透测试、防火墙规则验证、性能压测中,hping3被誉为“瑞士军刀”。

hping3如何发送定制TCP数据包-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

核心能力:

  • 自定义TCP flag(SYN、ACK、FIN、RST、PSH、URG)
  • 调整TCP窗口大小(-w)、序列号(--seq)、确认号(--ack
  • 设置IP分片(-f)、TTL(-t)、TOS(-o
  • 支持从文件读取载荷(-E file)或随机载荷(--rand-source

TCP数据包结构拆解

在发送定制包之前,必须理解TCP首部的关键字段:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         源端口            |          目的端口           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       序列号                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       确认号(如ACK置位)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  数据偏移 | 保留  |U|A|P|R|S|F|       窗口大小               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        校验和            |         紧急指针               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

hping3可操控的字段:

  • -s 源端口 / -p 目的端口
  • --seq 序列号 / --ack 确认号
  • -w 窗口大小(影响流量控制)
  • -M TCP时间戳(用于高级探测)

发送定制TCP数据包的五步法

步骤1:选择基础模式

hping3 -S <目标IP>   # 发送SYN包(最常用)
hping3 -A <目标IP>   # 发送ACK包
hping3 -F <目标IP>   # 发送FIN包
hping3 -P <目标IP>   # 发送PSH包
hping3 -U <目标IP>   # 发送URG包

步骤2:控制包速率与数量

hping3 -S --flood <目标IP>   # 洪水模式(不等待回复)
hping3 -S -c 1000 <目标IP>   # 发送1000个包后停止
hping3 -S --interval 100 <目标IP>  # 每100微秒发一个包

步骤3:修改TCP首部关键参数

# 自定义序列号与确认号
hping3 -S --seq 12345 --ack 67890 -p 80 <目标IP>
# 设置窗口大小为65535(常用于绕过某些防火墙)
hping3 -S -w 65535 -p 443 <目标IP>
# 设置TTL为1(仅链路层可达)
hping3 -S -t 1 -p 8080 <目标IP>

步骤4:载荷与伪装

# 从文件读取载荷(模拟HTTP请求)
echo "GET /admin HTTP/1.1\r\nHost: target.com\r\n\r\n" > payload.txt
hping3 -S -p 80 -E payload.txt -d 100 <目标IP>
# 随机源IP(谨慎使用,可能违法)
hping3 -S --rand-source -p 80 --flood <目标IP>

步骤5:高级组合与检测

# SYN+ACK+RST组合(用于TCP复位测试)
hping3 -C 2 -c 1 -p 53 <目标IP>  # -C 2 表示RST标志
# 带TCP选项(MSS=1460,时间戳)
hping3 -S -m 1460 --timestamp -p 22 <目标IP>

实战案例:五种典型场景

场景1:SYN Flood压力测试(仅限授权环境)

hping3 -S -p 80 --flood --rand-source -w 0 <目标IP>

原理: 发送大量不完整的TCP三次握手请求,消耗服务器连接表资源。

场景2:防火墙规则探测(端口过滤测试)

hping3 -S -p 80 -c 5 <目标IP>   # 观察是否收到SYN/ACK
hping3 -A -p 80 -c 3 <目标IP>   # 检测ACK是否被丢弃

分析:

  • 收到SYN/ACK → 端口开放
  • 收到RST → 端口关闭但不被过滤
  • 无响应 → 被防火墙丢弃或黑洞

场景3:窗口大小欺骗测试

hping3 -S -w 0 -p 443 <目标IP>  # 窗口为0,告诉服务器“我无法接收数据”

用途: 测试服务器是否尊重TCP流量控制(零窗口探测)。

场景4:Traceroute替代(使用TCP而非ICMP)

hping3 -S -t 1 -p 80 <目标IP>   # TTL=1,第一个路由器返回ICMP超时
hping3 -S -t 2 -p 80 <目标IP>   # TTL=2... 逐跳增加直到到达目标

场景5:自定义HTTP请求伪造

hping3 -I eth0 -S -p 80 -E http_payload.txt -d 200 -c 1 <目标IP>

其中http_payload.txt包含:

POST /login.php HTTP/1.1
Host: example.net
Content-Length: 27
username=admin&password=test

常见问题与排错

Q2:为什么我发送的定制TCP包没有收到回复?

A: 检查以下三点:

  1. 防火墙拦截iptables -L -n 查看是否DROP了入站SYN包
  2. 目标未运行服务:向关闭端口发SYN会收到RST,若无响应则可能是状态检测防火墙
  3. 路由不可达:使用 hping3 -S -t 1 <目标> 测试第一跳是否可达

Q3:如何用Wireshark验证我发送的包?

A: 在发送端执行:

hping3 -S -p 80 --seq 1000 -w 8192 <目标IP>

同时在Wireshark设置过滤:tcp.port == 80 and ip.src == <你的IP>
检查:

  • Sequence number是否为1000(十进制)
  • Window size是否为8192
  • TCP flags是否正确置位

Q4:--flood模式为什么无法结束?

A: --flood 不等待回复,持续以最快速度发包,按 Ctrl+C 终止,或预先设置 -c 数量限制,若网络卡顿,可用 killall hping3 强行结束。


安全合规提醒

🚨 重要声明:
未经授权对第三方网络发送定制TCP数据包可能违反以下法规:

  • 《中华人民共和国网络安全法》 第二十七条:不得从事非法侵入他人网络、干扰他人网络正常功能等危害网络安全的活动
  • 《刑法》第285、286条:破坏计算机信息系统罪
  • 美国《Computer Fraud and Abuse Act (CFAA)》

合法使用场景:

  1. 对自己拥有的服务器做安全测试(先配置iptables白名单)
  2. 在搭建的私有实验网(如VirtualBox内部网络)中演练
  3. 获得书面授权的渗透测试项目(附范围说明)

Hping3通过精细的TCP数据包构造能力,成为网络工程师和渗透测试者的必备工具,从修改序列号、窗口大小,到组合TCP flag、附加载荷,每一步都需要对协议有深刻理解。知识是中立的,但使用知识的选择决定了你是否合规。 建议所有读者在完全可控的环境下练习,并始终获得授权后再进行外部探测。

(如需深入学习,建议结合《TCP/IP详解》卷一和Wireshark抓包分析)

标签: hping3 TCP定制

抱歉,评论功能暂时关闭!