Основні поняття
本文提出 Clid,一種基於無監督學習的 TLS 客戶端識別工具。Clid 利用伺服器名稱指示 (SNI) 欄位中的域名資訊,通過聚類和關聯分析的方式,為各個客戶端識別出最相關的域名集合。這種方法不需依賴硬編碼的資料庫,能夠識別更廣泛的客戶端類型。
Анотація
本文提出了 Clid,一種基於無監督學習的 TLS 客戶端識別工具。Clid 的設計目標是在識別廣泛客戶端的同時,不過度追求每個客戶端的精確特徵。
Clid 的工作流程如下:
- 從 TLS 連接中提取客戶端的 TCP 指紋(包含 IP 標誌、TTL、TCP 窗口大小等參數)作為客戶端的唯一標識。
- 使用 DBSCAN 聚類算法對客戶端和域名分別進行聚類。通過貝葉斯優化找到最佳的聚類參數。
- 計算每個客戶端聚類與域名聚類之間的關聯強度(權重)。權重公式考慮了域名的訪問頻率和獨特性。
- 為每個客戶端聚類識別出與之最相關的域名聚類。
Clid 的實驗結果顯示,在 10,000 個 TLS 連接中,Clid 能夠為最多 90% 的客戶端聚類識別出單一最相關的域名聚類。對於至少 60% 的客戶端聚類,Clid 能夠識別出一個或多個相關的域名聚類。
雖然 Clid 無法提供每個客戶端的精確特徵,但它能夠為廣泛的客戶端提供一些有價值的信息,比如可能的操作系統、設備類型等。這種方法彌補了現有基於硬編碼資料庫的客戶端識別工具的不足。
Статистика
在 2,000 個 TLS 連接中,最多 50.1% 的客戶端 TCP 指紋出現在任一現有資料庫中。
在 2,000 個 TLS 連接中,平均只有 13.6% 的客戶端 TCP 指紋出現在任兩個資料庫中,只有 5.85% 出現在全部三個資料庫中。
在 2,000 個 TLS 連接中,只有 3.05% 的客戶端被所有三個資料庫識別為相同的操作系統。
Цитати
"我們看到,一個新的工具,不依賴於資料庫,是需要的,以提供更準確和可靠的關於客戶端操作系統的信息,以及更多關於 TLS 客戶端的特徵。"
"Clid 不是要能夠確定性地聲稱一個客戶端是某種特定的東西。相反,Clid 識別客戶端與他們連接的某些域名之間的強烈關聯,這可以作為識別客戶端的第一步。"