1 概述
- hping3是一個(gè)強(qiáng)大的命令行工具,用于生成、發(fā)送和解析TCP/IP協(xié)議的數(shù)據(jù)包。它是開源的網(wǎng)絡(luò)安全工具,由Salvatore Sanfilippo開發(fā),主要應(yīng)用于網(wǎng)絡(luò)審計(jì)、安全測(cè)試和故障排查等領(lǐng)域。hping3不僅可以作為普通的網(wǎng)絡(luò)連通性檢測(cè)工具,還因其高度的靈活性和可定制性而被廣泛用于滲透測(cè)試、防火墻測(cè)試、DoS/DDoS攻擊模擬以及協(xié)議漏洞研究。
- 本文章主要介紹如何使用hping3進(jìn)行常見的DDos攻擊。構(gòu)造IP,TCP,UDP,ICMP,HTTP等數(shù)據(jù)包的方法。還有如何使用hping3進(jìn)行端口掃描。hping3的功能也不止文章中介紹的這些,其他功能讀者可自行去探索。
2 hping3安裝
- 以Centos平臺(tái)為例,先要安裝以下兩個(gè)依賴包
-
yum install libpcap-devel yum install tcl-devel ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
- hping3下載地址
- 在github下載源碼后,解壓后通過以下命令安裝
-
./configure make make strip make install
3 命令簡(jiǎn)介
- 這里只介紹本文章中使用到的一些命令,全部命令可以執(zhí)行 hping3 --help查看。
-
# hping3 host [options] -h --help # 顯示幫助 -c --count # 發(fā)送數(shù)據(jù)包的數(shù)目 -i --interval # 發(fā)送數(shù)據(jù)包間隔的時(shí)間 (uX即X微秒, 例如: -i u1000) --fast # 等同 -i u10000 (每秒10個(gè)包) --faster # 等同 -i u1000 (每秒100個(gè)包) --flood # 盡最快發(fā)送數(shù)據(jù)包,不顯示回復(fù) # 模式選擇 default mode # 默認(rèn)模式是TCP -0 --rawip # RAW IP模式,原始IP模式。 -1 --icmp # ICMP模式 -2 --udp # UDP模式 -8 --scan # 掃描模式,掃描指定的端口 # Example: hping3 --scan 1-30,70-90 -S www.target.host -9 --listen # 監(jiān)聽模式 # IP 模式 -a --spoof # 設(shè)置源地址。在進(jìn)行DDos攻擊時(shí)可以使用這個(gè)參數(shù)偽造IP --rand-dest # 隨機(jī)目的地址模式,詳細(xì)使用 man 命令 --rand-source # 隨機(jī)源地址模式,詳細(xì)使用 man 命令 -t --ttl # 指定 ttl 值 (默認(rèn) 64) # ICMP 模式 -C --icmptype # icmp類型,默認(rèn)回顯(echo)請(qǐng)求 # UDP/TCP 模式 -s --baseport # 設(shè)置源端口,默認(rèn)為隨機(jī)源端口 -p --destport # 設(shè)置目的端口,默認(rèn)端口為0 -k --keep # 保持源端口不變(默認(rèn)在發(fā)送一個(gè)包后端口號(hào)會(huì)遞增) -w --win # win的滑動(dòng)窗口。windows發(fā)送字節(jié)(默認(rèn)64) -M --setseq # 設(shè)置TCP序列號(hào) -L --setack # set TCP ack,不是 TCP 的 ACK 標(biāo)志位 -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 -U --urg # set URG flag # 通用設(shè)置 -d --data # 發(fā)送數(shù)據(jù)包的大小,默認(rèn)為0 -E --file # 發(fā)送指定文件內(nèi)的數(shù)據(jù) -e --sign # 指定發(fā)送的數(shù)據(jù)
4 hping3實(shí)現(xiàn)DDos攻擊
- 關(guān)于DDos攻擊原理可參考這篇文章 DDos攻擊原理
- 這里先準(zhǔn)備兩臺(tái)主機(jī),使用hping3進(jìn)行攻擊的主機(jī)為192.168.206.137,被攻擊主機(jī)為192.168.1.2。被攻擊主機(jī)我們先開啟一個(gè)8088的TCP端口。
4.1 SYN Flood
-
先進(jìn)行較常見的SYN Flood攻擊
-
hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000
-
參數(shù)介紹
- 192.168.1.2 : 被攻擊的主機(jī)ip
- –syn : 進(jìn)行SYN攻擊
- -p : 被攻擊主機(jī)端口。在實(shí)際場(chǎng)景中,可以通過NMap等端口掃描工具來判斷哪些端口是開放的。
- -c : 發(fā)送數(shù)據(jù)包的數(shù)目
- -i : 發(fā)送數(shù)據(jù)包間隔時(shí)間
-
通過WireShark看下數(shù)據(jù)包
-
可以看到攻擊者發(fā)起一個(gè)SYN請(qǐng)求,被攻擊者進(jìn)行了一個(gè)ACK回應(yīng),但攻擊者不會(huì)響應(yīng),又重新發(fā)起SYN請(qǐng)求。
-
上面演示的攻擊,攻擊者需要等待被攻擊者響應(yīng)一個(gè)ACK才會(huì)繼續(xù)發(fā)送SYN,可以加個(gè)–flood參數(shù),不需要等待ACK響應(yīng),持續(xù)發(fā)送SYN請(qǐng)求
-
hping3 192.168.1.2 --syn -p 8088 -c 5 -i u500000 --flood
-
可以看下效果
-
還可以在攻擊時(shí)通過-a參數(shù)偽造源IP地址
-
hping3 -a 192.168.11.22 192.168.1.2 --syn -p 8088 -c 5 -i u500000
-
實(shí)際的攻擊者IP為192.168.206.137,這里偽造成了192.168.11.22
-
這里演示只使用了一臺(tái)電腦進(jìn)行攻擊,其實(shí)是看不到什么效果的。實(shí)際的DDos攻擊,可能需要上萬臺(tái)電腦同時(shí)發(fā)起攻擊,如果上萬臺(tái)電腦不間斷的持續(xù)發(fā)送SYN請(qǐng)求,很快就會(huì)達(dá)到服務(wù)器并發(fā)處理能力的上限,導(dǎo)致服務(wù)癱瘓。
4.2 ACK Flood
- 再看下ACK攻擊
-
hping3 192.168.1.2 --ack -p 8088 -c 5 -i u500000
- 直接抓包看下數(shù)據(jù)
4.3 UDP DDos攻擊
- 在被攻擊主機(jī)192.168.1.2上開啟一個(gè)8089的UDP端口
-
hping3 -c 5 -e "hello" -d 5 --udp -p 8089 192.168.1.2
- -e表示發(fā)送的數(shù)據(jù),-d表示發(fā)送的數(shù)據(jù)大小。
4.4 UDP反射放大攻擊
-
攻擊原理:首先有一臺(tái)UDP服務(wù)器192.168.1.2,給這臺(tái)服務(wù)器發(fā)送一個(gè)較小的數(shù)據(jù)請(qǐng)求,UDP服務(wù)器會(huì)進(jìn)行數(shù)據(jù)量很大的響應(yīng)。攻擊者操控肉雞192.168.206.137進(jìn)行攻擊,并將肉雞的IP偽造成被攻擊者的IP,這樣肉雞192.168.206.137發(fā)送請(qǐng)求后,UDP服務(wù)器會(huì)對(duì)攻擊目標(biāo)192.168.206.133進(jìn)行響應(yīng)。
-
如果肉雞頻繁的發(fā)送查詢請(qǐng)求,UDP服務(wù)器就會(huì)頻繁的對(duì)攻擊目標(biāo)進(jìn)行響應(yīng),導(dǎo)致攻擊目標(biāo)服務(wù)癱瘓。
-
攻擊命令
-
hping3 -a 192.168.206.133 -s 1024 -k -c 5 -e "hello" -d 5 --udp -p 8089 192.168.1.2
-
參數(shù)介紹
- -a : 偽造ip地址為攻擊目標(biāo)的地址
- -s : 指定源端口號(hào),這里就可以偽造成攻擊目標(biāo)的端口號(hào)
- -k : 保持源端口號(hào)不變,否則發(fā)送一個(gè)請(qǐng)求后,源端口號(hào)會(huì)遞增
-
借助一個(gè)UDP調(diào)試工具看下效果
-
可以看到,請(qǐng)求本來是肉雞192.168.206.137發(fā)送給UDP服務(wù)的,但實(shí)際上UDP服務(wù)響應(yīng)到了攻擊目標(biāo)192.168.206.133上。
4.5 備注
- 這里演示了典型的幾種DDos攻擊方式,其它攻擊方式讀者可自行去測(cè)試。測(cè)試時(shí)最好使用自己搭建的內(nèi)網(wǎng)服務(wù),不要對(duì)公網(wǎng)服務(wù)去進(jìn)行攻擊。
- 依據(jù)《中華人民共和國(guó)刑法》第二百八十五條【非法侵入計(jì)算機(jī)信息系統(tǒng)罪】:非法侵入國(guó)家事務(wù)、國(guó)防建設(shè)、尖端科學(xué)技術(shù)領(lǐng)域的計(jì)算機(jī)信息系統(tǒng)以及其他重要計(jì)算機(jī)信息系統(tǒng)的,處三年以下有期徒刑或者拘役。
- 依據(jù)《中華人民共和國(guó)刑法》第二百八十六條【破壞計(jì)算機(jī)信息系統(tǒng)罪】:對(duì)計(jì)算機(jī)信息系統(tǒng)功能進(jìn)行刪除、修改、增加、干擾,造成計(jì)算機(jī)信息系統(tǒng)不能正常運(yùn)行,后果嚴(yán)重的,處五年以下有期徒刑或者拘役;后果特別嚴(yán)重的,處五年以上有期徒刑。
5 hping3構(gòu)造自定義數(shù)據(jù)包
5.1 構(gòu)造TCP數(shù)據(jù)包
- TCP包頭
- 可以構(gòu)造一個(gè)TCP數(shù)據(jù)包,包頭的源端口號(hào),目標(biāo)端口號(hào),標(biāo)志位,窗口大小都可以去設(shè)置。也可以通過-a參數(shù)偽造源IP地址,上面DDos攻擊介紹過,這里就不再描述過。
-
hping3 -c 1 -S -A -s 10010 -w 1024 -p 8088 -d 10 -e "helloworld" 192.168.1.2
- 看下抓包
5.2 構(gòu)造UDP數(shù)據(jù)包
-
UDP包頭
-
UDP包頭比較簡(jiǎn)單,一般可以設(shè)置源端口和目標(biāo)端口號(hào)
-
hping3 -c 1 -e "hello" -d 5 --udp -p 8089 192.168.1.2
5.3 構(gòu)造ICMP數(shù)據(jù)包
- ICMP協(xié)議主要用于確認(rèn)IP數(shù)據(jù)包是否成功送達(dá)目標(biāo)地址,我們經(jīng)常使用的ping命令就是使用的ICMP協(xié)議。
- 可以通過hping3構(gòu)造一個(gè)ICMP數(shù)據(jù)包,構(gòu)造ICMP包的命令比較簡(jiǎn)單
-
hping3 --icmp -c 1 192.168.1.2
- 抓包看下
5.4 構(gòu)造IP數(shù)據(jù)包
- IP數(shù)據(jù)包包頭
- 構(gòu)造IP數(shù)據(jù)包,可以設(shè)置源地址,目標(biāo)地址,生存時(shí)間,協(xié)議等字段
-
hping3 --rawip -c 1 -t 126 --ipproto 6 -a 192.168.2.2 192.168.1.2
- Protocol較常用的主要有以下幾種
- 1 : ICMP
- 4 : IP
- 6 : TCP
- 17 : UDP
- 41 : IPv6
5.5 通過IP數(shù)據(jù)包構(gòu)造TCP數(shù)據(jù)包
-
我們知道IP數(shù)據(jù)包位于網(wǎng)絡(luò)層,TCP數(shù)據(jù)包位于傳輸層。TCP數(shù)據(jù)包就是在IP數(shù)據(jù)包的基礎(chǔ)上構(gòu)造的,因此可以直接在IP數(shù)據(jù)包的數(shù)據(jù)部分構(gòu)造一個(gè)TCP數(shù)據(jù)包。聽不懂沒關(guān)系,舉個(gè)栗子。
-
首先需要一個(gè)二進(jìn)制數(shù)據(jù)編譯器。這里可以使用Notepad++的插件,在菜單欄找到Plugins->Plugins Admin,搜索Hex-Editor,點(diǎn)擊安裝
-
安裝完成后在菜單欄Plugins下就會(huì)多出一個(gè)Hex-Editor插件,點(diǎn)擊View in HEX就可以編輯二進(jìn)制文件了。
-
接下來就構(gòu)造一個(gè)TCP數(shù)據(jù)包,再看下TCP數(shù)據(jù)包頭結(jié)構(gòu)
-
構(gòu)造的數(shù)據(jù)包內(nèi)容(16進(jìn)制顯示)
-
27 60 27 62 00 00 00 05 00 00 00 06 50 12 10 08 17 14 00 00
-
首先需要設(shè)置源端口號(hào)和目標(biāo)端口號(hào),各占16位,分別為0x2760和0x2762,對(duì)應(yīng)的十進(jìn)制分別是10080和10082。
-
接下來設(shè)置序列號(hào)和確認(rèn)應(yīng)答號(hào),各占32位,分別為0x00000005和0x00000006,但是這兩位設(shè)置后抓包看不到效果,可能是網(wǎng)絡(luò)傳輸過程中重置了,后續(xù)再研究下。
-
數(shù)據(jù)偏移和保留位這里設(shè)置為0x50。
-
然后是非常重要的標(biāo)志位,比如我們想把SYN和ACK置位,二進(jìn)制位就需要設(shè)置為00010010,那么對(duì)應(yīng)的十六進(jìn)制就是0x12。
-
窗口大小占16位,設(shè)置為0x1008,對(duì)應(yīng)的十進(jìn)制為4104
-
校驗(yàn)和設(shè)為0x1714,后面不需要特別設(shè)置的可設(shè)為0。
-
看下文件中的內(nèi)容
-
文件編輯好后,傳到Centos上,通過以下命令將文件作為數(shù)據(jù)發(fā)送
-
hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 20 192.168.1.2
-
通過–ipproto指定協(xié)議類型為TCP,通過-E參數(shù)指定要發(fā)送的文件。
-
抓包可以看下效果
文章來源:http://www.zghlxwxcb.cn/news/detail-857736.html
-
首先我們構(gòu)造的是IP數(shù)據(jù)包,但實(shí)際上已經(jīng)是TCP數(shù)據(jù)包了。并且端口號(hào)和標(biāo)志位等信息就是我們?cè)谖募性O(shè)置的信息。這里只設(shè)置了包頭,也可以在后面繼續(xù)設(shè)置數(shù)據(jù)信息。通過同樣的方法可以構(gòu)造UDP數(shù)據(jù)包等。文章來源地址http://www.zghlxwxcb.cn/news/detail-857736.html
5.6 通過IP數(shù)據(jù)包構(gòu)造HTTP數(shù)據(jù)包
- hping3沒有提供構(gòu)造應(yīng)用層協(xié)議的命令,那么能不能構(gòu)造應(yīng)用層協(xié)議呢?當(dāng)然可以,參考通過IP數(shù)據(jù)包構(gòu)造TCP數(shù)據(jù)包的方法,可以在此基礎(chǔ)上繼續(xù)構(gòu)造應(yīng)用層數(shù)據(jù)包,比如HTTP數(shù)據(jù)包。
-
27 60 27 62 20 20 20 05 20 20 20 06 50 12 10 08 17 14 00 00 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 31 39 32 2e 31 36 38 2e 31 2e 32 0d 0a 0d 0a
- TCP數(shù)據(jù)包的內(nèi)容不變,在后面繼續(xù)構(gòu)造HTTP數(shù)據(jù)包
- 使用同樣的命令繼續(xù)發(fā)送,-d指定的大小要改成文件實(shí)際大小
-
hping3 --rawip -c 1 --ipproto 6 -E tcp.txt -d 57 192.168.1.2
- 抓包可以看到,數(shù)據(jù)包已經(jīng)變成了HTTP數(shù)據(jù)包
- 通過這種方法,我們幾乎可以構(gòu)造傳輸層和應(yīng)用層的所有網(wǎng)絡(luò)協(xié)議。
6 端口掃描
- hping3也支持端口掃描,掃描主機(jī)192.168.1.2的1-1024端口狀態(tài)
-
hping3 --scan 1-1024 -S 192.168.1.2
- 看下掃描結(jié)果
- 端口掃描建議使用Nmap工具,使用相對(duì)方便。hping3的其他掃描命令就不過多介紹了。
到了這里,關(guān)于使用hping3網(wǎng)絡(luò)工具構(gòu)造TCP/IP數(shù)據(jù)包和進(jìn)行DDos攻擊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!