在野流量中經常會看到一批 IP 地址使用相同的 User-Agent 或者將 Payload 部署到相同的 Web 路徑,盡管存在部分差異,但仍然非常相似。基于這種觀察,GreyNoise 推出了基于 IP 相似度的計算:


通過長期運營,GreyNoise 收集的數據非常豐富,以 IP 為視角查看相關的各類特征:
- VPN、Tor、rDNS、OS、JA3、HASSH
- Bot、Spoofable、Web Path、User-Agent、Mass Scanner、Port
在相似度計算時,不使用 GreyNoise 產出的判別標簽(惡意、良性、未知等),避免基于自身生產的數據產生信息偏差。
相似度實現
首先要將 GreyNoise 中記錄的數據轉換為特征向量,但數據中包含大量非結構化與半結構化文本數據。例如 User-Agent 有 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 與 Anarchy99;Web 路徑有 / 與 /${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("whoami").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}/。
為了轉換為固定大小的數字特征向量,需要使用 Token 化與特征哈希兩種技術進行處理。有大量的內容對此進行描述,此處就簡單進行介紹:
- 將字母數字以外的所有字符替換為空格,再利用空格拆分字符串并將所有字符統一小寫
可以將 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 處理成 ['mozilla', '5', '0', 'x11', 'linux', 'x86_64', 'applewebkit', '537', '36', 'khtml', 'like', 'gecko']。
- 創建一個固定大小的零向量,例例如 [0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0]。將文本進行哈希計算
import hashlibbucket_size = 16
text = 'mozilla'
hash_index = int(hashlib.sha1(text.encode("utf-8")).hexdigest(), 16) % (bucket_size)
- 將對應數值插入 hash_index,所有都進行同類處理
mozilla 會被插入向量中的第 9 位,變成 [0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0]。所有的字符 ['mozilla', '5', '0', 'x11', 'linux', 'x86_64', 'applewebkit', '537', '36', 'khtml', 'like ', 'gecko'] 會被計算成 [0, 0.0833, 0.0833, 0.1667, 0.1667, 0.0833, 0, 0.0833, 0, 0.0833, 0.0833, 0.0833, 0.0833, 0, 0, 0]。
- 想要獲取更高的準確度,可以將向量的維度從 16 擴到更大
最終就將文本轉換成了固定數值向量,變成了長特征向量。如下所示:

根據特征重要程度的不同,還可以為不同的特征創建不同的權重。例如,相比 Web 路徑來說,JA3 就沒那么重要。例如權重如下所示:

最終就會得到可以用于比較或者機器學習的向量表示,如下所示:

據此,GreyNoise 就利用 ElasticSearch 提供了 IP 相似度的計算能力。

系統也能提供 IP 相似的原因介紹:

示例-1
以 Shodan 的一個 IP 地址 89.248.172.16 為例,根據 IP 相似性可發現 Shodan 另外的 19 個 IP 地址。

GreyNoise 也給出了 IP 相似的原因介紹:


示例-2
研究人員發現有許多 IP 在掃描 Tridium NiagraAX Fox ICS,很多都是 Shodan、Censys 類的網空搜索引擎。但也有部分未知的掃描源,如 122.238.45.114 正在掃描工控設備。但如果利用 JA3 指紋作為特征,會找到超過七千個相似 IP。

但是如果利用 IP 相似度計算,并將閾值提高到 95% 以上。可以發現 8 個同類掃描 IP,這提供了一種快速調查的方法。

示例-3
通過一個執行 NETGEAR DGN 命令執行的 IP 地址,發現其他類似攻擊的 IP:

在操作系統、端口、Web 路徑與 rDNS 上都是相同的。
示例-4
ReCyber 掃描項目也是如此,根據一個也可以發現同類的 ReCyber 掃描 IP:

總結
通過數據分析來發現網絡空間中實體的關聯關系,是網絡安全領域中一個經久不衰的研究點。不論是通過各種指紋還是解析類的應然關系,都是為了撥開網絡空間中的“戰爭迷霧”。GreyNoise 現在的玩法也越來越多,回望當年“青澀”的 GreyNoise 還是很令人感慨。
拓展閱讀
https://docs.greynoise.io/docs/greynoise-ip-similarityhttps://greynoise-website.webflow.io/blog/introducing-ip-similarityhttps://www.greynoise.io/blog/how-we-built-ip-similarityhttps://www.greynoise.io/blog/fingerprinting-attackers-with-ip-similarity
D1Net
GoUpSec
FreeBuf
一顆小胡椒
安全牛
中國信息安全
FreeBuf
安全內參
安全圈
安全內參
穿過叢林
一顆小胡椒