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

RING:基於 TCP 重傳時序的遠端作業系統指紋識別新技術

     編輯:關於VC++

背景與動機

傳統 OS 指紋工具(Nmap、Xprobe、QueSO)高度依賴開放/關閉埠的 ICMP/TCP 回應,防火牆過濾導致誤判率飆升。RING 提出「單一開放埠 + TCP 重傳間隔分析」新範式,穿透防火牆限制。

核心原理:重傳計時器指紋

TCP 三向交握中,客戶端發送 SYN 後故意不回 ACK,伺服器將重傳 SYN-ACK。不同作業系統的重傳間隔序列(RTO 演算法、初始值、退避策略)具有高度特徵性:

客戶端 → SYN → 伺服器
客戶端 ← SYN-ACK ← 伺服器 (t1)
客戶端 ← SYN-ACK ← 伺服器 (t2)
客戶端 ← SYN-ACK ← 伺服器 (t3) ...

測量相鄰重傳封包到達時間差 Δt,構成指紋向量 [Δt1, Δt2, ..., Δtn, RST行為]。

實驗數據對比(秒)

重傳次數Windows 2000FreeBSD 4.4Linux 2.2.14Linux 2.4
1st333.54.26
2nd666.56
3rd無1212.512
4th無2424.524
RST無30s 後無無

Win2k 僅重傳 2 次且無 RST;FreeBSD 指數退避至 24s 並發 RST;Linux 核心版本間細微差異亦可區分。

網路抖動緩解:TCP 時間戳選項

為消除網路延遲干擾,RING 在 SYN 中攜帶 TCP Timestamps 選項(RFC 1323),解析回應封包中的 TSval 還原發送端真實間隔,將「接收間隔」修正為「發送間隔」。

距離度量與識別

採用曼哈頓距離:

Distance = Σ |r_i - s_i|
r_i: 實測間隔, s_i: 資料庫樣本間隔

最小距離對應之 OS 即為識別結果。若距離接近,輔以 TCP 旗標(RST/FIN)、序號/確認號模式二次判斷。

工具鏈與部署

  • libdnet:控制本機防火牆(ipchains/ipfilter)封鎖目標 IP 回應
  • libpcap:捕獲重傳封包並解析時間戳
  • libnet:構造/發送 SYN 封包
  • 僅需 root 權限、單一開放 TCP 埠、穩定網路環境

防禦與繞過

  • SYN Proxy / SYN Gateway:防火牆代理三向交握,僅在完成握手後轉發至後端,切斷重傳觀測
  • 隨機化 RTO:修改核心參數增加熵,但可能影響 TCP 效能
  • FIN_WAIT_1 擴展:RING 亦可利用主動關閉端的重傳特徵,穿透 SYN Proxy 直達真實主機

結語

RING 證明了「協議實作細節差異」是比「埠掃描回應」更穩健的指紋來源。單一開放埠即可識別,極大提升了防火牆後資產發現的成功率。結合傳統活躍掃描,可構建多層次識別體系。

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