一、什么是 hping3?

  • 体量轻巧:安装包仅约 255 KB。
  • 协议多样:支持 TCP、UDP、ICMP、RAW IP 四种模式。
  • 灵活定制:可设置任意报文头、分片、Payload 长度;还支持伪造源地址、随机目标等高级操作。
  • 脚本化:集成 Tcl 解释器,可编写脚本自动完成复杂任务。

应用场景包括:

  1. 防火墙规则测试
  2. (伪造)端口扫描
  3. 不同协议下的网络性能基准测试
  4. Path MTU 探测
  5. 多协议“Traceroute”
  6. 操作系统 TCP/IP 栈指纹识别
  7. 网络攻击面审计

二、安装与依赖

在 Debian/Ubuntu、Kali 等发行版下,直接使用 APT 即可安装:

sudo apt update
sudo apt install -y hping3

安装完成后,可通过 hping3 -V 查看版本,或 hping3 -h 查看帮助:

root@kali:~# hping3 -V
hping3 version 3.0.0

root@kali:~# hping3 -h
usage: hping3 host [options]
  -h  --help      show this help
  -v  --version   show version
  -c  --count     packet count
  -i  --interval  wait (uX for X microseconds, for example -i u1000)
      --fast      alias for -i u10000 (10 packets/sec)
      --faster    alias for -i u1000  (100 packets/sec)
  --flood         send packets as fast as possible, without showing replies
  -n  --numeric   numeric output
  -q  --quiet     quiet
  -I  --interface interface name
  -V  --verbose   verbose
  -D  --debug     debugging
  --beep          beep for each matching reply

Modes:
  (default) TCP   -0 RAW IP   -1 ICMP   -2 UDP
  -8 --scan [ports]    SCAN mode (e.g. `-8 1-1024`)
  -9 --listen          LISTEN mode

IP options:
  -a --spoof      spoof source address
  --rand-dest     random destination
  --rand-source   random source
  -t --ttl        set TTL (default 64)
  -f --frag       fragment packets
  -x --morefrag   set “more fragments” flag
  -y --dontfrag   set “don’t fragment” flag
  -g --fragoff    set fragment offset
  -m --mtu        set virtual MTU (implies --frag)
  -o --tos        type of service
  -G --rroute     include Record Route option
  --lsrr          loose source routing

三、基本用法示例

1. 类似 ping 的 ICMP 探测

hping3 -1 www.example.com
  • -1:ICMP 模式
  • 默认每秒发送一次“Echo Request”,并显示 RTT

2. Traceroute 模式

hping3 --traceroute -V -1 www.example.com
  • --traceroute:自动递增 TTL,模拟多跳探测
  • -V:显示详细调试信息
  • -1:ICMP 模式

示例输出:

using eth0, addr: 192.168.1.15, MTU: 1500
HPING www.example.com (eth0 93.184.216.119): icmp mode set, 28 headers + 0 data bytes
hop=1  TTL 0 during transit from ip=192.168.1.1 name=UNKNOWN  hoprtt=0.3 ms
hop=2  TTL 0 during transit from ip=192.168.0.1 name=UNKNOWN  hoprtt=3.3 ms
...

四、常见场景与参数详解

1. 防火墙策略测试

验证对特定端口或协议的阻断规则

# 测试 TCP 80 端口是否被过滤
hping3 -S -p 80 --flood www.example.com
  • -S:发送 TCP SYN
  • -p 80:目标端口 80
  • --flood:尽可能快地发送,不打印回复

如果无法收到回复,表示 SYN 被丢弃或被重置。

2. 端口扫描 (SCAN 模式)

hping3 --scan 1-1024 -S www.example.com
  • --scan 1-1024:扫描端口 1 到 1024
  • -S:TCP SYN

开放端口会收到 SYN+ACK,应答会被打印。

3. Path MTU 探测

# 强制分片,探测 MTU 边界
hping3 -1 -d 2000 --mtu 1500 --frag www.example.com
  • -d 2000:数据长度 2000 字节
  • --mtu 1500:虚拟 MTU 1500
  • --frag:分片

通过逐步减小数据长度,可定位路径中最小 MTU。

4. 操作系统指纹识别

hping3 -1 -c 1 -V --ttl 64 www.example.com
  • 观察 ICMP 时间戳、TTL 初始值、窗口大小等差异
  • 结合脚本化分析,可识别常见操作系统

五、高级技巧与脚本化

hping3 嵌入 Tcl 解释器,适合编写自动化测试脚本:

#!/usr/bin/hping3
# File: fw-test.tcl

# 定义目标列表
set targets {www.example.com 10.0.0.5 192.168.1.100}

foreach t $targets {
    puts "Testing $t..."
    hping3 -S -p 22 -c 5 $t
    puts "\n"
}

以上脚本依次对所有目标的 22 端口发送 5 个 SYN,再输出结果。

六、总结

  • 安装简单sudo apt install hping3
  • 模式丰富:TCP/UDP/ICMP/RAWIP,SCAN、TRACEROUTE、LISTEN 等多种模式
  • 参数灵活:支持报文分片、伪造源地址、路径记录、TOS、TTL 调优等
  • 脚本驱动:内置 Tcl,可实现复杂自动化流程

无论是网络性能测试、漏扫检测,还是防火墙策略验证,hping3 都能胜任。建议在实验环境中多加练习,并结合自身脚本或 CI/CD 流程,构建一套完善的网络安全与性能测试体系。

参考资料

  • hping3 官方文档与源码
  • Kali Linux 包管理 (APT)
  • “TCP/IP Illustrated” 网络协议详解书籍
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐