压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

Untangle:多層Web服務器指紋識別

原文標題:Untangle: Multi-Layer Web Server Fingerprinting

原文作者:Cem Topcuoglu,Kaan Onarlioglu,Bahruz Jabiyev,Engin Kirda原文鏈接:https://dx.doi.org/10.14722/ndss.2024.24497發表會議:NDSS筆記作者:李智宇@安全學術圈主編:黃誠@安全學術圈編輯:張貝寧@安全學術圈

1、背景介紹

在現代互聯網中,Web 應用程序通常部署在多層代理服務器之后。由于現有的指紋識別技術沒有分層服務器的概念,針對分層架構的差異攻擊日益凸顯。因此,本文提出了首個通過利用多層 Web 服務器之間 HTTP 處理差異來進行指紋識別的方法,并通過一個名為 Untangle 的 HTTP 模糊測試工具進行實現,實驗證明其能夠以高精度對三層架構進行指紋識別。

差異攻擊是指當流量路徑上的多個服務器對相同的HTTP 報文的處理方式不一致時,攻擊者可能會濫用這種差異實施惡意操作,例如:HTTP 請求走私、Web 緩存投毒、Web 緩存欺騙和 HTTP2 協議降級漏洞利用。

Web 服務器指紋識別是安全測試、漏洞管理和網絡可觀測性中的一項標準實踐?,F有的指紋識別工具通過一組有效和無效的請求來探測目標,分析響應以獲取服務器的特征,例如響應頭的特定排序或獨特錯誤。

模糊測試是一種自動化的軟件測試技術,通過生成或變異輸入數據并將其注入目標系統,以觸發異常行為,從而發現潛在缺陷。差分模糊測試是模糊測試的一種變體,其核心思想是向多個系統發送相同的輸入,通過對比其行為差異來發現潛在的錯誤。

2、方案設計

2.1 多層指紋識別方法

假設存在一個行為庫,該行為庫提供兩個函數 Behavior 和 Match:

  • Behavior(request, server) → {Error, Pass, Other} 。該函數指示給定服務器在收到請求時的行為,Error 代表服務器以錯誤響應,Pass 代表服務器轉發請求且未做任何修改,Other 包括在轉發之前請求被修改,以及由終端源服務器處理并成功響應的情況。
  • Match(response) → {server ∈ Servers, Unknown} 。 該函數將給定的錯誤響應映射到唯一服務器。

指紋識別的過程分為 3 個階段:

2.1.1 有序采集指紋

該階段的核心思想是通過遞進式錯誤響應探測實現多層架構的服務器指紋識別。具體流程為:從空列表開始,針對每一層構造特定探測請求,該請求需滿足如下兩個條件。

  • 對所有未識別的服務器 s 滿足 Behavior(request, s) → Error;
  • 對所有已識別的服務器 s 滿足 Behavior(request, s) → Pass。

通過向目標發送此類請求,可獲取到下一待識別層的錯誤響應,將其與已知服務器技術進行匹配并將結果添加至有序列表 Ordered。該過程循環迭代,直至所有層均被識別。

2.1.2 無序采集指紋

由于行為庫實際上可能并不完整,故該階段旨在對剩余層中的服務器進行指紋識別,其具體流程與階段 1 類似:從階段 1 構建的有序列表開始,構造滿足兩個條件的探測請求。

  • 對未識別的服務器 s 滿足 Behavior(request, s) ∈ {Error, Pass};
  • 對已識別的服務器 s 滿足 Behavior(request, s) → Pass。

通過觸發未識別服務器的錯誤響應,將響應特征與已知服務器技術進行匹配,由于沒有任何關于層放置的信息,將結果添加到無序集合 Unordered 中。

2.1.3 完善排序

最后一個階段根據所識別服務器的正確位置,將 Unordered 中的條目移動到 Ordered 中。其具體流程是:用滿足以下兩個條件的請求探測目標。

  • 對所有 Ordered 中的 s 滿足 Behavior(requests, s) → Pass;
  • 對所有 Unordered 中的 s 滿足 Behavior(request, s) → Error。

這保證了從 Unordered 中最靠近客戶端的服務器得到錯誤響應,經過分析匹配將被指紋識別的服務器移至 Ordered,然后重復該過程。

2.2 通過模糊測試建立行為庫

生成和改變 HTTP 請求。研究者使用了差分 HTTP 模糊測試器 T-Reqs 作為基礎,并修改了 其語法和變異能力,設計了 3 個分別針對 HTTP 請求的請求行、頭部和正文的模糊測試實驗。

模糊器配置為最多應用 2 個字符變異,并使用了 40 個方法名,8 個不同的請求 URI,一個包含 66 個標準頭部名稱和 1142 個非標準頭部名稱的頭部池。最終該實驗在請求行突變實驗中生成了 2,029,592 個唯一請求,在頭部突變實驗中生成了 1,753,955 個,在正文突變實驗中生成了 497,292 個。

下圖分別展示了實驗中使用的 HTTP 請求、頭部和正文(藍色表示應用字符突變的部分,棕色表示特定值):

發現差異和錯誤。研究者使用上述生成的請求對實驗范圍內的 13 臺服務器進行了測試,對于每個請求,得到了每個服務器的相應行為以及各自的錯誤響應。下圖所展示的引發服務器對之間差異的請求數量(X 軸表示完整轉發請求的服務器,Y 軸表示返回錯誤的服務器)表明:模糊測試能夠提供一個豐富的行為庫并捕獲絕大多數服務器對之間的差異。

2.3 錯誤與服務器匹配

Untangle 的最后一個實現細節在于確定一種將錯誤響應與服務器進行匹配的分析策略。Untangle 通過計算 Jaccard 相似度得分將響應與行為庫中最相似的條目進行匹配。研究者使用了兩種方案進行相似度比較:計算整個響應消息的相似度; 分別計算完整響應、錯誤代碼和主體數據三個部分的相似度。為了進一步提升準確性,研究者額外檢查了 5 個 CDN 響應頭作為補充特征。最后通過兩種方式執行基于相似性的服務器匹配:第一種是選擇最佳匹配;第二種通過使用相似度閾值進行匹配,若相似度得分小于等于閾值,被探測的服務器將被標記為未知。

3、實驗評估

指紋識別準確率。使用 Untangle 對之前提到的 13 臺服務器進行測試,共進行 4 次實驗,每次實驗共產生 756 次指紋識別,每次測試有完整指紋識別、部分指紋識別和錯誤識別三種結果。

實驗 A:配置 Untangle 僅執行階段 1,使用整個響應消息計算相似度得分并選擇最佳匹配,未對靜態標頭進行檢查。

實驗 B:配置 Untangle 僅執行階段 1,使用完整響應、錯誤代碼和主體數據計算相似度得分,選擇最佳匹配并對靜態 CDN 標頭進行檢查。

實驗 C:在實驗 B 的配置基礎上,Untangle 執行所有 3 個階段。

實驗 D:在實驗 C 的配置基礎上,所有階段均使用相似度閾值。

下表展示了該準確性實驗的結果匯總。結果表明,實驗 A 的配置可以 100% 檢測到第 1 層,但隨著層數增加,識別準確率顯著下降。實驗 C 在引入階段 2 和 3 后,第 2 和 3 層的檢測結果激增至 683 個和 390 個,顯著提高了完整指紋識別率。而實驗 D 在第 3 層準確率略有降低,這是由于閾值匹配會覆蓋一些已經匹配成功的案例。

未知服務器準確度。為了模擬 Untangle 在存在未知服務器情況下的表現,共進行 13 次實驗,每次實驗會從行為庫中移除與某個服務器對應的所有條目。實驗結果顯示,Untangle 在大多數情況下能正確將其標記為未知,但在特定服務器間(如 Envoy 與 Caddy、Cloudflare 與 NGINX)會出現混淆。最終在共 2286 個排列中產生了 185 個錯誤分類。

對比 Untangle 與 Nmap。由于 Nmap 沒有分層服務器的概念,此實驗僅對第 1 層進行檢測。在隔離狀態下 Nmap 能夠識別出 13 個服務器中的 9 個并出現錯誤分類,而 Untangle 能檢測到所有服務器并沒有錯誤分類。下表展示了按層細分的準確率結果,在756 種排列組合中,Nmap 僅正確檢測到 450 種排列組合中的第 1 層服務器。由此可見,Untangle 在單層服務器識別上優于 Nmap,并且是目前唯一能有效識別多層服務器架構的工具。

4、總結

本文提出了一種多層 Web 服務器指紋識別方法,通過利用 HTTP 處理差異,實現了對三層結構的精準指紋識別。與現有方案相比,Untangle 克服了傳統工具在多層架構識別方面的固有缺陷。盡管該方法并不完善且存在依賴服務器差異的局限性,但實驗證明其實際應用是可行的。

安全學術圈招募隊友-ing

有興趣加入學術圈的請聯系?secdr#qq.com

聲明:本文來自安全學術圈,稿件和圖片版權均歸原作者所有。所涉觀點不代表東方安全立場,轉載目的在于傳遞更多信息。如有侵權,請聯系rhliu@skdlabs.com,我們將及時按原作者或權利人的意愿予以更正。

上一篇:仿冒奇安信證書!針對區塊鏈客戶的定向攻擊活動

下一篇:IDC首選:360安全大模型一體機引領行業場景落地