首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HTTP Tunnel 技術原理與防火牆/IDS 繞過實戰分析

     編輯:關於C++

什麼是 HTTP Tunnel?

將任意 TCP/UDP 流量封裝在 HTTP 請求/響應中,利用防火牆通常開放 80/443 端口的特性,實現受限網絡環境下的「通道」通信。典型場景:內網主機 A 需訪問外網主機 B 的 Telnet(23)、RDP(3389) 等被封鎖服務。

httptunnel 工作流程實測

部署拓撲

  • Client (內網,防火牆後) → 僅允許 80/53 端口出站。
  • Server (外網,無限制)。

啟動命令

# Client 內網機器
htc -F 1234 server.yiming.com:80
# 本地監聽 1234,將流量轉發至遠程 80 端口

# Server 外網機器
hts -F localhost:23 80
# 監聽 80,將收到的隧道流量轉發至本地 Telnet(23)

驗證結果

內網執行 telnet localhost 1234 成功登錄外網主機,抓包確認所有數據走 80 端口,Payload 為 HTTP POST/GET 封裝的 Telnet 流數據。

安全檢測繞過現狀

防禦層檢測結果原因
防火牆 (端口控制)繞過流量偽裝為合法 HTTP 80 端口
Snort IDS (簽名匹配)誤報/漏報觸發 "WEB-MISC whisker splice attack" 告警,未識別隧道特征

基於簽名的 IDS 易產生 False Positive/Negative,且無法識別未知協議異常。

深度流量特征分析

  1. 握手階段: Client 發起 HTTP POST 請求 (POST /index.html?crap=1007880486 HTTP/1.1)。
  2. 雙通道機制: Server 響應 200 OK 後,雙方各自發起新的 TCP 連接到 80 端口(共兩條並發連接),後續數據純二進制流,**不再包含 HTTP 關鍵字 (GET/POST/HTTP)**。
  3. 流量特征: 長連接、無標準 HTTP 請求頭、數據熵值高、雙向對稱傳輸。

進階檢測與防禦方案

  • 應用層語義分析 (e-Gap): 檢查 80 端口流量是否符合 HTTP 協議語義(有無 URL、Method、Header),異常即阻斷。局限: 加密流量 (HTTPS) 無法檢測。
  • 流行為分析 (StealthWatch / NetFlow): 基於流統計(時長、雙向字節比、連接並發數、周期性)識別異常隧道,**支持加密流量檢測**,但設備昂貴(~$4萬)。
  • 零信任/微隔離: 原則上禁止非必要出站連接,應用層代理審核所有 80/443 流量。

總結

單一防禦手段(防火牆/傳統 IDS)不可靠。需結合**協議合規檢查、流行為基線、加密流量可見性、最小權限原則**構建纵深防禦體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved