一、简介
摘自:百度百科
Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP、UDP、ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之间传送文件。Hping常被用于检测网络和主机,其功能非常强大,可在多种操作系统下运行,如Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOs X,Windows。
二、源码安装
首先,解决依赖关系:
[root@host31 hping]#yum -y install libpcap-devel tcl-devel [root@host31 hping]# ln -sv /usr/include/pcap-bpf.h /usr/include/net/bpf.h `/usr/include/net/bpf.h' -> `/usr/include/pcap-bpf.h'
hping在github上有项目源码,我们将其clone下来进行源码编译安装:
[root@host31 ~]# git clone https://github.com/antirez/hping.git [root@host31 ~]# cd hping/ [root@host31 hping]# ./configure [root@host31 hping]# make && make install
三、简要使用介绍
两台主机:192.168.10.31,192.168.10.35
hping默认使用的TCP的模式:
[root@host31 ~]# hping 192.168.10.35 HPING 192.168.10.35 (eth0 192.168.10.35): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=192.168.10.35 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=1.9 ms len=46 ip=192.168.10.35 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.7 ms #192.168.10.35上使用tcpdump抓包,默认连接的是0号端口 [root@host35 ~]# tcpdump -np -ieth1 src host 192.168.10.31 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 00:21:24.870243 IP 192.168.10.31.willy > 192.168.10.35.0: Flags [], win 512, length 0
在192.168.10.35上,修改内核参数关闭ICMP的回显:
[root@host35 ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=1 net.ipv4.icmp_echo_ignore_all = 1
使用ping和fping都无法检测到host35这台主机:
[root@host31 ~]# ping 192.168.10.35 PING 192.168.10.35 (192.168.10.35) 56(84) bytes of data. ^C --- 192.168.10.35 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2867ms [root@host31 ~]# fping 192.168.10.35 192.168.10.35 is unreachable
使用hping依然可以正常检测:
[root@host31 ~]# hping 192.168.10.35 HPING 192.168.10.35 (eth0 192.168.10.35): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=192.168.10.35 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=1.1 ms len=46 ip=192.168.10.35 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.4 ms ^C --- 192.168.10.35 hping statistic --- 2 packets tramitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.7/1.1 ms
前面讲过,hping默认使用的TCP的模式,那么都有哪些模式可以使用呢?
Mode
default mode TCP
-0 --rawip RAW IP mode
-1 --icmp ICMP mode
-2 --udp UDP mode
-8 --scan SCAN mode.
Example: hping --scan 1-30,70-90 -S www.target.host
-9 --listen listen mode
此时使用ICMP模式应该是不通的:
[root@host31 ~]# hping -1 192.168.10.35 HPING 192.168.10.35 (eth0 192.168.10.35): icmp mode set, 28 headers + 0 data bytes ^C --- 192.168.10.35 hping statistic --- 10 packets tramitted, 0 packets received, 100% packet loss
有关TCP/UDP的参数:
UDP/TCP
-s --baseport 指定源端口,默认是随机的
-p --destport 指定目标端口
还可以指定标志位:
-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
使用hping探测22端口,并且指定标志位为SYN:
[root@host31 ~]# hping -p 22 --syn 192.168.10.35 HPING 192.168.10.35 (eth0 192.168.10.35): S set, 40 headers + 0 data bytes len=46 ip=192.168.10.35 ttl=64 DF id=0 sport=22 flags=SA seq=0 win=14600 rtt=0.8 ms len=46 ip=192.168.10.35 ttl=64 DF id=0 sport=22 flags=SA seq=1 win=14600 rtt=0.7 ms ^C --- 192.168.10.35 hping statistic --- 2 packets tramitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.7/0.7/0.8 ms
在192.168.10.35上抓包:
[root@host35 ~]# tcpdump -np -ieth1 src host 192.168.10.31 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 00:58:05.236458 IP 192.168.10.31.cplscrambler-in > 192.168.10.35.ssh: Flags [S], seq 2142328241, win 512, length 0 00:58:05.237155 IP 192.168.10.31.cplscrambler-in > 192.168.10.35.ssh: Flags [R], seq 2142328242, win 0, length 0 00:58:06.236744 IP 192.168.10.31.cplscrambler-al > 192.168.10.35.ssh: Flags [S], seq 23884613, win 512, length 0 00:58:06.237140 IP 192.168.10.31.cplscrambler-al > 192.168.10.35.ssh: Flags [R], seq 23884614, win 0, length 0
更多命令选项,请使用hping -h查看。