13、利用 ICMP 隧道穿透防火牆
以前穿透防火牆總是使用 SSH 隧道、DNS 隧道或 HTTP 隧道等等,今天來說一個利用 SNMP 隧道進行穿透工具–icmptunnel。
簡介
icmptunnel 可以將 IP 流量封裝進 IMCP 的 ping 資料包中,旨在利用 ping 穿透防火牆的檢測,因為通常防火牆是不會遮蔽 ping 資料包的。但是現在市面上已經有了很多類似的工具了,那麼 icmptunnel 又有哪些優勢呢?icmptunnel 提供在狀態機防火牆和 NAT 網路之間,更加可靠的連線。
編譯
首先從 Github 上面 clone 下程式碼:
git clone https://github.com/jamesbarlow/icmptunnel.git
隨後使用 make 命令進行編譯即可。
示例
注:這款工具只能在 Linux 下面使用。
首先我們需要在兩端裝置上面禁止 ICMP 響應。下面這條命令會阻止核心響應 ping 資料包:
隨後,在服務端以伺服器模式啟動 icmptunnel,並給隧道介面分配一個 IP 地址:
# ./icmptunnel –s
opened tunnel device: tun0
(ctrl-z)
# bg
# /sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
在客戶端,使用 icmptunnel 連線上伺服器,並給隧道介面分配一個 IP 地址:
現在,我們就擁有一個端到端基於 ICMP 資料包的隧道了。其中伺服器地址為 10.10.0.1,客戶端地址為 10.10.0.2。在客戶端可以嘗試通過 SSH 連線伺服器:
# ssh root@10.0.0.1
Password:
當然也可以把遠端伺服器當作一個加密的 SOCKS 代理:# ssh -D 8080 -N root@10.0.0.1
Password:
至此,我們就可以在瀏覽器上使用本地 SOCKS 代理了。工作機理
請求端的 Ping 工具通常會在 ICMP 資料包後面附加上一段隨機的資料作為 Payload,而響應端則會拷貝這段 Payload 到 ICMP 響應資料包中返還給請求端,用於識別和匹配 Ping 請求。
Windows 和 Linux 系統下的 Ping 工具預設的 Payload 長度為 64 位元,但實際上協議允許附加最大 64K 大小的 Payload。
對於隧道資料,icmptunnel 首先會指定客戶端和伺服器端。隨後,客戶端會將 IP 幀封裝在 ICMP 請求資料包中傳送給伺服器,而伺服器端則會使用相匹配的 ICMP 響應資料包進行回覆。這樣在旁人看來,網路中傳播的僅僅只是正常的 ICMP 資料包。
狀態防火牆和 NAT
那麼就出現了一個問題,隧道如何穿過狀態防火牆或 NAT?一些裝置會過濾沒有匹配響應資料包的 Ping 包。而在非對稱連線中,來自伺服器端的流量會大於客戶端,反之亦然,這樣客戶端可能會丟棄一些相應資料包,因為響應資料包多餘請求資料包。
icmptunnel 有一個機制來專門解決這個問題。客戶端會定期傳送一個空的 ICMP 請求資料包給狀態防火牆或 NAT,而這些請求資料包都會被記錄在防火牆狀態表中。同時通過保持傳送帶有載體的資料包,這樣客戶端會維持一個可以用於伺服器端傳送資料的“資料包視窗”。
檢測隧道
- 檢測同一來源 ICMP 資料包的數量。一個正常的 ping 每秒最多隻會傳送兩個資料包。而使用 ICMP 隧道的瀏覽器在同一時間會產生上千個 ICMP 資料包。
- 注意那些 ICMP 資料包中 payload 大於 64 位元的資料包。當然 icmptunnel 可以配置限制所有資料包的 payload 為 64 位元,這樣會使得更難以被檢測到。
- 尋找那些響應資料包中 payload 跟請求資料包不一致的 ICMP 資料包。
- 檢查 ICMP 資料包的協議標籤。例如,icmptunnel 會在所有的 ICMP payload 前面增加 ‘TUNL’ 標記以用於識別隧道,這就是特徵。
工具主頁
https://github.com/jamesbarlow/icmptunnel
相關文章
- DNS隧道技術繞防火牆DNS防火牆
- 6、ICMP隧道
- 12、利用 DNS 隧道傳遞資料和命令來繞過防火牆DNS防火牆
- Windows ICMP DNS隧道是一種利用ICMP和DNS協議進行網路隧道傳輸的技術。它透過將資料包封裝在ICMP或DNS報文中,繞過防火牆和其他安全裝置,實現在受限網路之間傳輸資料的方法。WindowsDNS協議封裝防火牆
- HUAWEI防火牆同一例項場景下配置IPSec隧道防火牆
- WAb防火牆與傳統防火牆防火牆
- 內網-隱藏隧道通訊技術,場景復現(ICMP隧道)內網
- 防火牆防火牆
- ICMP隱蔽隧道攻擊分析與檢測(二)
- ICMP隱蔽隧道攻擊分析與檢測(三)
- ICMP隱蔽隧道攻擊分析與檢測(四)
- 防火牆入侵於檢測——————3、思科 PIX 防火牆和 ASA 防火牆產品線防火牆
- iptables防火牆防火牆
- 防火牆配置防火牆
- 防火牆iptables防火牆
- 防火牆(firewall)防火牆
- "ssh 反向隧道 實現內網穿透內網穿透
- CentOS 7.0防火牆CentOS防火牆
- Linux防火牆命令Linux防火牆
- CentOS 防火牆操作CentOS防火牆
- Linux配置防火牆Linux防火牆
- 防火牆部署案例防火牆
- 防火牆介紹防火牆
- LINUX 防火牆 firewalldLinux防火牆
- ubuntu 關閉防火牆命令 ubuntu怎樣關閉防火牆Ubuntu防火牆
- 防火牆 搜尋 釋出 防火牆是什麼?怎麼理解?防火牆
- linux 7 防火牆操作Linux防火牆
- Firewalld防火牆基礎防火牆
- 資料庫防火牆資料庫防火牆
- Iptables防火牆應用防火牆
- CentOS防火牆設定CentOS防火牆
- Linux防火牆基礎Linux防火牆
- 防火牆的分類防火牆
- CentOS 7 防火牆操作CentOS防火牆
- iptables防火牆規則防火牆
- Linux 防火牆配置使用Linux防火牆
- 利用京東雲Web應用防火牆實現Web入侵防護Web防火牆
- linux關閉防火牆命令 linux防火牆關閉和開啟命令Linux防火牆