hping3 教學:SYN Flood 攻擊演練、常用參數與偵測防禦方法
hping3 是一套可以自訂 TCP/IP 封包的命令列工具,常用於防火牆規則測試、連接埠掃描,以及在授權的實驗環境中模擬 SYN Flood 等阻斷服務(DoS)攻擊,用來驗證防護設備是否有效。這篇在 Kali 對 Windows 10 靶機實際演練,最後補充如何偵測與防禦這類攻擊。
注意:對未經授權的系統發動 DoS 攻擊屬於違法行為(例如刑法第 360 條妨害電腦使用罪),請只在自己架設的隔離實驗環境中練習。
利用大量封包,藉以消耗受害者的網路頻寬與系統資源,導致網路癱瘓,無法提供正常的服務。
任務目標
根據《線上零售效能現狀報告》指出,網站載入時間延遲100毫秒,就會損及7%轉換率,您的目標是針對甲方的電商網站進行一定流量攻擊,以提出強化該網站效能的方案。
使用工具
hping3
作者:antirez
載點:https://github.com/antirez/hping 或 http://www.hping.org/
簡介:hping3 作為網路工具,可自定義TCP/IP封包並顯示回應,用於網路、連接埠、協定、作業系統、服務類型掃描。
攻擊環境
OS:Kali 2021.04
滲透目標:Win10
進行演練
Step 1. 下載 hping3,結果kali自帶了。
apt-get install hping3

Step 2. 查看 hping3 參數設定,說明如下:
- -c:發送封包的個數
- -d:每個封包的大小
- -S:發送SYN封包
- -w:TCP window大小
- -p:目標埠,你可以指定任意埠
- –flood:儘可能快的發送封包
- –rand-source:隱藏來源位置(隨機產生)
man hping3

Step 3. 使用hping3 工具進行 DoS 攻擊,其中目標網址為 http://192.168.100.112/shop.html 。
sudo hping3 -S 192.168.238.128 -a 192.168.100.112 -p 80 --flood
- SYN flooding:SYN洪水,一種阻斷服務攻擊
- Ping of Death:死亡之Ping,惡意的ping指令

Step 4. 觀察目標網站的封包變化,其中圖表顯示目標接收到大量的封包。


討論
儘管hping3的初衷是作為安全工具,卻有可能被有心人士用於非法行為,期望使用這套工具的白帽駭客們,在強化與審核自家系統能否承受外來攻擊之時,也不忘初心,守護永恆的系統。
hping3 的其他實用用途
除了壓力測試,hping3 在日常網路除錯也很好用:
# 用 TCP SYN 測試 443 埠是否可達(適合 ICMP 被擋的環境)
sudo hping3 -S -p 443 -c 3 example.com
# 測試防火牆是否擋下特定旗標的封包
sudo hping3 -F -P -U -p 80 -c 3 192.168.1.20
# 以 TCP 進行 traceroute
sudo hping3 -S -p 80 --traceroute example.com
如何偵測 SYN Flood?
- 觀察半開連線數量:Linux 用
ss -s或netstat -an | grep SYN_RECV | wc -l,SYN_RECV 異常暴增就是典型徵兆 - 封包分析:用 Wireshark 過濾
tcp.flags.syn==1 && tcp.flags.ack==0,觀察是否大量來自偽造的隨機 IP - IDS 規則:用 Snort 3 的
detection_filter設定短時間內 SYN 數量門檻並發出告警
如何防禦 SYN Flood?
- 啟用 SYN Cookies:Linux 設定
net.ipv4.tcp_syncookies = 1,讓伺服器在不保留半開連線的情況下完成交握 - 調整連線佇列:增加
tcp_max_syn_backlog、縮短tcp_synack_retries - 防火牆限速:用 iptables / nftables 限制單一來源的 SYN 速率
- 上游防護:大規模 DDoS 要靠 ISP 清洗或 Cloudflare 等 CDN 服務在邊緣吸收流量
