天天看點

hping的使用方式

轉載出處:http://hnytgl.blog.sohu.com/216935414.html

hping3可以發送任意定制的包給主機

hping3可以控制ip分層,定制包體和大小,很強大的安全測試工具,也是學習tcp/ip的一種途徑。加油咧!^ _ ^

從這裡開始介紹hping3。

基本選項:

《1》 -c:設定發送包個數,如要向目标發送2個包:

[root@localhost ~]# hping3 -c 2 192.168.0.106

HPING 192.168.0.106 (eth0 192.168.0.106): NO FLAGS are set, 40 headers + 0 data bytes

ICMP Unreachable type=10 from ip=192.168.0.106 name=UNKNOWN   

--- 192.168.0.106 hping statistic ---

2 packets tramitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

## 發現virtualbox負載過高,心疼了,是以臨時改變實驗環境,将virtualbox 的cnetos5.5換成vmware player上的peppermint(192.168.0.107)

《2》-i :發送的包的時間間隔,預設機關是s,可以使用u10,表示每10微秒發送一個包(1微秒=1/100000秒,慎用!),可以個和 -c 配合使用:

--每100秒發送一個包:

[root@localhost ~]# hping3 -i 100 192.168.0.107  《--這裡第一個包會在第一時間發送出去,等100s後再發送第二個包

--每1微秒發送一個包---》這是一種攻擊行為,大家慎用,我隻是做實驗

[root@localhost ~]# hping3 -i u1 192.168.0.107

HPING 192.168.0.107 (eth0 192.168.0.107): NO FLAGS are set, 40 headers + 0 data bytes

^C

--- 192.168.0.107 hping statistic ---

332388 packets tramitted, 0 packets received, 100% packet loss 《--到達一定速度後隻發不接

--每微秒發送一個包,總共發送10個包:

[root@localhost ~]# hping3 -i u1 -c 10 192.168.0.107

10 packets tramitted, 0 packets received, 100% packet loss

《3》--fast , --faster,--flood: 前兩個選項分别是 -i u10000 、-i u1  的别名,--flood 顧名思義,尤其是後面兩個選項,如果不是做壓力和防火牆過濾等測試時,強烈不建議使用,引起的不良後果自負,一切法律責任與本篇文章無關。

《4》-n:不進行lookup; -q :quiet模式,隻顯示最後的統計資料;

《5》-I : 制定需要使用的interface,在特定的os下為了滿足特定的需要才會用到這個選項;

《6》-D:進入debug模式

《7》-z : 加入這個選項後,可以通過ctrl +Z 來增加發送出去的包的TTL,按一次增加1,按兩次增加2,依次類推,按住不放是減小TTL,按Z的感覺自己去找。要看效果可以在目标主機上開啟iptables的日志記錄功能,就可以很直覺的看到TTL的變化。

[root@localhost ~]# hping -z 192.168.0.107

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=1.0 ms

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.6 ms

65: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=2 win=0 rtt=0.6 ms

66: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=3 win=0 rtt=0.5 ms

68: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=4 win=0 rtt=0.8 ms

69: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=5 win=0 rtt=0.4 ms

71: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=6 win=0 rtt=0.8 ms

72: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=7 win=0 rtt=0.9 ms

74: len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=8 win=0 rtt=0.5 ms

9 packets tramitted, 9 packets received, 0% packet loss

round-trip min/avg/max = 0.4/0.7/1.0 ms

《8》 --beep : 接受到傳回的包就發聲(我的不會叫,也不知道是什麼聲音,還是我了解錯了)

協定部分

《1》hping3預設是TCP模式,不設定任何flag,到對方的0 prot,以做到“hide ping”,這是在對方經由firewall保護下最好的發現方式了

《2》-0 : RAW IP 模式,可以單獨使用,但是多和 --ipproto 或者 --file 配合使用

由于是原始的ip封包,iptables會記錄下來,顯示的是INCOMPLETE,我們也得不到回應:

[root@localhost hping3-0.0.20051105]# hping3  -0 192.168.0.107

HPING 192.168.0.107 (eth0 192.168.0.107): raw IP mode set, 20 headers + 0 data bytes

3 packets tramitted, 0 packets received, 100% packet loss

《3》-1: ICMP 模式,預設是采用icmp echo-request, 可以通過 --icmptype 和 --icmpcode 來設定需要的icmp 類型,通常情況下防火牆隻允許icmp的回應要求(echo-request);

《4》-2:UDP模式,預設也是發往目标0 号port,可以通過選項 --baseport  --destport  --keep 來調整udp標頭;

《5》-8 : 掃描模式,這裡介紹他的通配符和端口範圍的表示方法:

all:所有端口,1-65535

known:/etc/services 中記錄的所有端口

多個不相連的端口用逗号分開,如:1,4,443;

表示一個端口範圍使用:1-4000

!表示非: !known

掃描對方在/etc/services中列出的端口:

[root@localhost 桌面]# hping3 -8 known -S 192.168.0.1  <---這裡-S 表示采用SYN掃描

Scanning 192.168.0.1 (192.168.0.1), port known

5458 ports to scan, use -V to see all the replies

+----+-----------+---------+---+-----+-----+-----+

|port| serv name |  flags  |ttl| id  | win | len |

   23 telnet     : .S..A... 128  7458 16384    46

 1780 dpkeyserv  : .S..A... 128 64037 16384    46

   80 http       : .S..A... 128 60464 16384    46

掃描1-1024号端口:

[root@localhost 桌面]# hping3 -8 1-1024 -S 192.168.0.1

Scanning 192.168.0.1 (192.168.0.1), port 1-1024

1024 ports to scan, use -V to see all the replies

   23 telnet     : .S..A... 128 11064 16384    46

   80 http       : .S..A... 128 60475 16384    46

All replies received. Done.

Not responding ports: 

《6》-9 : --listen signature <--監聽模式,監聽含有特定signature的包,并且将含有該signature的包dump;

從這部分開始,我會将iptables針對每次試探和掃描的記錄附上

IP 協定部分

《1》-a :(--spoof hostname)僞裝自己的位址,會造成自己收不到傳回的包,在進行idle掃描時候有用,

[root@localhost 桌面]# hping3 -a www.baidu.com 192.168.0.107

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.5 ms

DUP! len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.5 ms

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.4 ms

DUP! len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.5 ms

2 packets tramitted, 4 packets received, -100% packet loss 《--自己是收不到的

round-trip min/avg/max = 0.4/0.5/0.5 ms

記錄如下

Jul 28 04:48:22 linuxer-desktop kernel: [ 1955.489880] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=220.181.6.175 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=40048 PROTO=TCP SPT=1849 DPT=0 WINDOW=512 RES=0x00 URGP=0 

Jul 28 04:48:22 linuxer-desktop kernel: [ 1955.489931] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=220.181.6.175 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=40048 PROTO=TCP SPT=1849 DPT=0 WINDOW=512 RES=0x00 URGP=0 

ip位址是成功的僞裝了,但是mac還是自己的

《2》--rand-source : 使用随機位址僞裝自己的位址

[root@localhost 桌面]# hping3 --rand-source 192.168.0.107

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.6 ms

DUP! len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.7 ms

DUP! len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.6 ms

2 packets tramitted, 4 packets received, -100% packet loss

round-trip min/avg/max = 0.6/0.6/0.7 ms

記錄

Jul 28 04:53:19 linuxer-desktop kernel: [ 2252.836277] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=98.65.146.212 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=20079 PROTO=TCP SPT=1841 DPT=0 WINDOW=512 RES=0x00 URGP=0 

Jul 28 04:53:20 linuxer-desktop kernel: [ 2253.836351] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=152.101.28.151 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=37500 PROTO=TCP SPT=1842 DPT=0 WINDOW=512 RES=0x00 URGP=0 

《3》--rand-dest : 随機選擇目标,

如:hping3  --rand-dest -I eth0 192.168.0.x   <--使用x代表0-255,要是在整個網絡中選擇目标可以換成4個x;在這種模式下一定要制定interface,

《4》-t :制定包的TTL ,具體要設定為多大要看是做什麼,最大是255;

[root@localhost 桌面]# hping3 192.168.0.107 -t 1 --tracerouteHPING 192.168.0.107 (eth0 192.168.0.107): NO FLAGS are set, 40 headers + 0 data bytes

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.4 ms

round-trip min/avg/max = 0.4/0.5/0.6 ms

Jul 28 05:04:07 linuxer-desktop kernel: [ 2900.504384] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=1 ID=8808 PROTO=TCP SPT=2828 DPT=0 WINDOW=512 RES=0x00 URGP=0 

Jul 28 05:04:07 linuxer-desktop kernel: [ 2900.504416] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=1 ID=8808 PROTO=TCP SPT=2828 DPT=0 WINDOW=512 RES=0x00 URGP=0 

《5》-N : 指定ip -> id ,防火牆記錄時可以看到我們定制的id,哈哈

[root@localhost 桌面]# hping3 192.168.0.107 -N 888

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.7 ms

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 0.7/0.7/0.7 ms

Jul 28 05:08:36 linuxer-desktop kernel: [ 3170.026046] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=888 PROTO=TCP SPT=2489 DPT=0 WINDOW=512 RES=0x00 URGP=0 

《6》 -r : 顯示id的增量,而不顯示id

[root@localhost 桌面]# hping3 192.168.0.107 -r

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=8.1 ms

len=40 ip=192.168.0.107 ttl=64 DF id=+0 sport=0 flags=RA seq=1 win=0 rtt=0.6 ms

len=40 ip=192.168.0.107 ttl=64 DF id=+0 sport=0 flags=RA seq=2 win=0 rtt=0.6 ms

len=40 ip=192.168.0.107 ttl=64 DF id=+0 sport=0 flags=RA seq=3 win=0 rtt=0.5 ms

4 packets tramitted, 4 packets received, 0% packet loss

《7》-m:設定 mtu 值; -f :進行fragment;mtu預設是16 bytes,當發送的包的大小超過16 bytes時,就啟動 fragment ,這樣可以用來進行防火牆的重組包能力的測試,當然這也是一種突破防火牆的方法,我這裡隻給一個很粗糙的原型,要想能在實際中運用需要進行一些計算,哈哈。還有兩個相關的選項 -x :more frag,-y :don‘t frag

[root@localhost 桌面]# hping3 192.168.0.107 -m 8 -f 

HPING 192.168.0.107 (eth0 192.168.0.107): NO FLAGS are set, 40 headers + 0 data bytes 《--可以在包體裡做文章

round-trip min/avg/max = 0.6/0.7/0.7 ms

《9》-o : tos (type of service),預設是0x00,通過 --tos help 檢視可以設定為哪幾種值:

 [root@localhost 桌面]# hping3 --tos help

tos help:

          TOS Name                Hex Value           Typical Uses

       Minimum Delay                 10               ftp, telnet

       Maximum Throughput            08               ftp-data

       Maximum Reliability           04               snmp

       Minimum Cost                  02               nntp

如我要将tos 改為最小延遲類服務類型:

[root@localhost 桌面]# hping3 --tos 10 192.168.0.107  《--16進制的

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=2 win=0 rtt=0.4 ms

3 packets tramitted, 3 packets received, 0% packet loss

round-trip min/avg/max = 0.4/0.5/0.7 ms

Jul 28 05:38:59 linuxer-desktop kernel: [ 4992.379746] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=14192 PROTO=TCP SPT=1360 DPT=0 WINDOW=512 RES=0x00 URGP=0 

Jul 28 05:38:59 linuxer-desktop kernel: [ 4992.379794] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=14192 PROTO=TCP SPT=1360 DPT=0 WINDOW=512 RES=0x00 URGP=0 

《10》 -G: --rroute 顯示路由

[root@localhost 桌面]# hping3 -G  192.168.0.107 

len=80 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.9 ms

RR: 1.2.3.4

192.168.0.107

Jul 28 05:44:41 linuxer-desktop kernel: [ 5334.394594] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=80 TOS=0x00 PREC=0x00 TTL=64 ID=197 OPT (07270C01020304C0A8006B0000000000000000000000000000000000000000000000000000000000)

##這裡由于使用了 -G ,每個包都設定了記錄路由的選項,是以OPT有值了,長度LEN也變了,^_^##

PROTO=TCP SPT=1563 DPT=0 WINDOW=512 RES=0x00 URGP=0 

TCP/UDP 協定相關

《1》-s:(--baseport)設定發送包的最開始的端口,如果要使用一個固定的端口的話,就要加上 -k(--keep)

[root@localhost 桌面]# hping3 -s 2 192.168.0.107

len=40 ip=192.168.0.107 ttl=64 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.5 ms

3 packets tramitted, 2 packets received, 34% packet loss

round-trip min/avg/max = 0.5/0.6/0.6 ms

記錄 《--可以看到SPT的起始端口是2,在依次加1,如果使用了 -k 選項,SPT 将會一直是 2 ;

Jul 28 07:54:44 linuxer-desktop kernel: [  755.883483] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=60381 PROTO=TCP SPT=2 DPT=0 WINDOW=512 RES=0x00 URGP=0 

Jul 28 07:54:45 linuxer-desktop kernel: [  756.883579] scan or attackIN=eth0 OUT= MAC=00:0c:29:80:6c:a2:00:1e:ec:c8:1f:b5:08:00 SRC=192.168.0.101 DST=192.168.0.107 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=47720 PROTO=TCP SPT=3 DPT=0 WINDOW=512 RES=0x00 URGP=0 

《2》-p : (--destport),預設是發送到對方的0 端口,可以通過 -p 選項定制,+13 表示當接受到傳回的包後将目标端口增加13,++13表示每發送一個包就将目标端口增加13;

      本文轉自Tenderrain 51CTO部落格,原文連結http://blog.51cto.com/tenderrain/1975730:,如需轉載請自行聯系原作者

繼續閱讀