在野流量中经常会看到一批 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-similarity
https://greynoise-website.webflow.io/blog/introducing-ip-similarity
https://www.greynoise.io/blog/how-we-built-ip-similarity
https://www.greynoise.io/blog/fingerprinting-attackers-with-ip-similarity
声明:本文来自威胁棱镜,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。