【技術向】基於jarm的Tor中繼節點遠端識別

星河Salaxy發表於2021-04-15

一.  JARM簡介

JARM是一個TLS伺服器指紋識別工具,使用JARM掃描可以識別和分組Internet上的惡意伺服器。


JARM指紋用途


  • 快速驗證組中的所有伺服器都具有相同的TLS配置。

  • 根據配置對網際網路上的不同伺服器進行分組,例如,標識伺服器可能屬於谷歌(Google)、Salesforce和蘋果(Apple)。

  • 識別預設的應用程式或基礎結構。

  • 識別Internet上的惡意軟體命令和控制基礎結構以及其他惡意伺服器。


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數量
2ad2ad16d2ad2ad00042d42d000000332dc9cd7d90589195193c8bb05d84fa2219
2ad2ad16d2ad2ad22c42d42d000000d342d5966a57139eeaff9f8bc4841b251982
2ad2ad16d2ad2ad22c2ad2ad2ad2adce2e4c8c53174ecbf5529ce7584d5518862
2ad2ad0002ad2ad00042d42d000000020120996177a65431cde640fa58d2e8680
2ad2ad16d2ad2ad22c2ad2ad2ad2ad930c599f185259cdd20fafb488f63f34350


可以看到這些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/




相關文章