一. JARM簡介
JARM是一個TLS伺服器指紋識別工具,使用JARM掃描可以識別和分組Internet上的惡意伺服器。
JARM指紋用途
TLS伺服器工作原理
TLS伺服器根據TLS客戶端Hello資料包中收到的詳細資訊來制定其Server Hello資料包。根據給定客戶端Hello的構建方式,為任何給定的Client Hello配製Server Hello的方式可能會有所不同,包括:
作業系統
作業系統版本
使用哪些庫
使用的庫的版本
呼叫庫的順序
自定義配置
所有這些因素導致每個TLS伺服器以獨特的方式進行響應。因素的組合使得不同組織部署的伺服器不太可能具有相同的響應。
JARM工作原理
JARM透過主動向目標TLS伺服器傳送10個TLS客戶端Hello資料包並捕獲TLS Server Hello響應的特定屬性來工作。
然後,以特定方式對聚合的TLS伺服器響應進行雜湊處理,以生成JARM指紋。
JARM指紋雜湊是一種混合模糊雜湊,它結合使用可逆和不可逆雜湊演算法來生成62個字元的指紋。
前30個字元由伺服器為傳送的10個客戶端問候中的每一個選擇的密碼和TLS版本組成。“000”表示伺服器拒絕與該客戶端問好協商。剩下的32個字元是伺服器傳送的累積副檔名的截斷SHA256雜湊,忽略了x509證書資料。
比較JARM指紋時,如果前30個字元相同,但後32個字元不同,則這意味著伺服器具有非常相似的配置,接受相同的版本和密碼,但是由於副檔名不同而並非完全相同。
二. Tor中繼節點遠端識別
Tor是實現匿名通訊的自由軟體,其名源於“The Onion Router”(洋蔥路由器)的英語縮寫。使用者可透過Tor接達由全球志願者免費提供,包含7000多箇中繼節點的覆蓋網路,從而實現隱藏使用者真實地址、避免網路監控及流量分析的目的。
均執行相同TLS配置的一組應用程式伺服器應具有相同的JARM指紋。可以定期使用JARM掃描機群,以確認它們是否相同。
如果機群中的伺服器產生的JARM指紋不同於其他伺服器,則說明該伺服器未執行相同的配置。
因此,我們可以利用伺服器的jarm指紋發現是否存在執行TLS實現的非標準中繼,透過jarm指紋匹配發現新的Tor中繼節點。對某個Tor中繼節點掃描得到jarm指紋結果如下所示:
我們使用jarm對dan.me.uk/tornodes上的8863個Tor節點進行了掃描,有2473個節點沒有相應,數量前5位的jarm雜湊如下所示:
Jarm hash | 數量 |
2ad2ad16d2ad2ad00042d42d000000332dc9cd7d90589195193c8bb05d84fa | 2219
|
2ad2ad16d2ad2ad22c42d42d000000d342d5966a57139eeaff9f8bc4841b25 | 1982 |
2ad2ad16d2ad2ad22c2ad2ad2ad2adce2e4c8c53174ecbf5529ce7584d5518 | 862 |
2ad2ad0002ad2ad00042d42d000000020120996177a65431cde640fa58d2e8 | 680 |
2ad2ad16d2ad2ad22c2ad2ad2ad2ad930c599f185259cdd20fafb488f63f34 | 350
|
可以看到這些Tor中繼節點中存在大量jarm指紋相同的節點。
雖然jarm本身還不足以識別Tor節點,但是可以使用jarm快速地篩選整個網際網路範圍的掃描主機,然後應用其餘的檢查來確定給定主機成為Tor節點的可能性。
參考連結
https://engineering.salesforce.com/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a
https://chaos.institute/fingeprinting-tor-relays-with-jarm/