网络空间测绘的概念由白帽汇率先提出。在很长一段时间内,国内对于这个行业都不太关注。最近2年,尤其是去年,该行业得到了快速发展,各大网络安全公司都开始布局。
虽然行业已经发展了几年,但在行业标准、资质品类等方面,一直处于不成熟的阶段。例如:至今厂商的相关产品在申请销售许可证时都是向漏洞扫描器去挂靠的;由于是新兴行业,一些非常基础的概念大家仍未能达成共识,在理解上产生了一些非常明显的“偏差”。所以如果能得到更多关注,行业也一定能得到更加规范的发展。当然,我们也一直希望能为行业进步,贡献一份绵薄之力。
近期,中国网络安全年会中发布了一份关于“网络空间搜索引擎技术调研”(https://link.springer.com/chapter/10.1007/978-981-33-4922-3_15#Tab1)的报告。报告中对比、分析了几个知名的网络空间测绘平台,可见网络空间测绘这个网络安全细分领域的技术,已经赢得了来自有关权威部门的关注和认可,这对我们这些一直坚持在技术一线的团队和公司来说,绝对是一件非常值得开心的事情。对于其中的一些说法和数据,我们认为存在一些问题,也有一些小小的建议和想法。在此,我们就“抛砖引玉”,和大家一起探讨一下。
二、详细描述
1、参考链接非权威来源,且缺少价值信息
图1
上图中,根据文章链接内容3(https://www.zoomeye.org/doc?Thechannel=user#d-service),作者尝试说明ZoomEye的用户手册中提到了协议来源于NMAP-Services的描述。点进页面后却发现并没有任何内容提到这一点,且连Nmap字样都看不到。我们姑且认为是网站进行了改版,无法看到之前的信息,那么我们思考一个问题,我们可以宣称参考了某个规范,它可以解读为:a)我们实现了里面的部分协议;b)我们实现了里面的所有协议;官方未必有这个意思,而文章中显然采信了第二种假设。于是我们做了一个很小的随机抽样测试,随机选择了NMAP-Services中的50个协议进行确认,ZoomEye只实现了其中的11种,这个证伪的过程是比较简单的(具体测试方法,如果相关单位有兴趣,可以联系我们)。从另一个角度,如果以后各网络空间测绘引擎在各自官网都写上:我们的“协议参考了Nmap以及Wireshark”,这个领域对比是不是就简单了?
文章参考链接的4(https://www.freebuf.com/articles/ics-articles/196647.html),是名称为《2018年工业控制网络安全态势白皮书》的文章。调研报告中说Fofa的协议列表来源于此,但事实上引用的来源文章里面非但没有提及Fofa。而且来源明确说了信息是“东北大学谛听网络安全团队根据‘谛听’网络空间工控设备搜索引擎收集的各类安全数据”。此类情况出现在一篇严谨的学术论文里面,可能不太合适。退一万步说,2018年的分析肯定不能与现在的另外几家去比较。很简单的逻辑:仅工业控制协议,Fofa从2018年起都增加了十个以上。
基于上述分析,我们认为数据的参考是不可取的。如果由各平台自行报送,并由权威部门进行汇总整理,以及做验证确认,数据价值才会更高,并且不会有失偏颇和公平。因为参考了不一定实现了,实现了不一定准确了,准确了不一定全网数据采集全面了。对比就是为了区分不同平台的优劣势,大家选择发力方向不同,结果自然不同。
2、对比的核心维度概念模糊,存在不一致性
图2
其中这一张图比较有代表性。首先介绍一下在网络空间测绘领域比较重要的几个基本数据的统计维度:
1)网络资产数:
通俗一点就是数据记录条数,技术上说就是用什么作为存储的key值。不同的平台实现的机制并不一致,例如:Shodan是按照ip:port存储,Fofa和ZoomEye是按照host:port存储,360的Quake平台是根据ip:port:date存储。因为Shodan选择的是只针对IP层面进行分析,所以他们直接放弃了主机域名的分析。一个IP可以对应任意多个域名,所以说Shodan做针对某个企业的互联网暴露面梳理效果比较差。其他平台都采用了网站域名的方式,数据量差别比较大,目前Fofa的主机域名数暂时来说还是有一些优势的。基于host:port的方式会存储两个数据存储:一个叫热数据,比如昨天发现了1.1.1.1:80,今天又发现了,在你热数据中会发生覆盖,只会有一条最新的;另一个叫冷数据或者叫历史数据,大家按名字理解就好。Quake平台稍微特殊,由于加入了date作为key,会导致一个IP的同一个端口,可以查询出来多条数据。
2)独立IP数:
基于上面的说法,大家就知道,记录数不代表IP数,一个IP开了多个端口,就对应多条记录。大家通常对IP比较容易理解,所以Fofa在搜索的时候会明确告知聚合后的IP总数有多少。在Shodan直接查询一个端口,例如:port:80,以此搜索出来的统计数据就是准确的IP个数,其他平台大家可以自行分析方法。在硬件(物联网或者服务器)领域,IP和硬件是一一对应的,但在软件应用领域,一个IP可以承载任意多个应用,这也就是我们俗称的攻击点。
3)指纹规则数:
一条指纹规则简单来说就是能够用于识别某一类设备或者软件的查询语句。这是Fofa最先提出的,早期各平台都内嵌了一些简单的设备识别库,并未提供html等大文本的关键字检索,所以用户无法自定义规则和保存。Fofa一开始的设计理念就是用户更懂场景,所以放开了这种方法,让用户来自定义识别的语法,然后可以保存下来方便后续使用。最初我们叫应用规则库,后来慢慢叫法各异,有叫指纹库的、有叫规则集的,还有叫软硬件识别库的。一条指纹可以对应任意多条设备。目前论指纹规则库,Fofa在数量上还是有一点点优势的。
4)特定规则集匹配的网络资产数:
如上所述,一个规则查询的结果其实就是匹配的网络资产数,所有指纹规则库匹配的网络资产数基本就是全库了。
图3
如果上面说的还是难以理解,现在通过上图这个简单的示例来说明:我们尝试搜索互联网中开放的Apache网站服务器数量,我们可以在Fofa中检索app="APACHE-Web-Server",这时返回的11682万代表了互联网中存在的所有使用了这个服务器的资产数,其中网站和协议是可以有重合的,分别对应7446万和4235万,因为一个80端口在协议中是存在的,但是它可能会绑定多个域名。独立IP只有2918万,是因为一个IP的apache服务器可以绑定到多个端口。
回到图2来看,就是一个非常有意思的结果了:Shodan对应4亿,ZoomEye对应11亿,Fofa对应27万。我们相信每一条数据作者都是经过思考和挑选的,只是没能梳理清楚,到底是全网的网络资产数、独立IP数、指纹规则库的数量、抑或特定规则集匹配的网络资产数,甚至是可能没有分清是热数据还是包含了历史数据?如果不在一个维度来对比,也就没有太大的参考价值了。
另外,值得强调的是,哪怕是在一个维度进行对比,单纯的对比数据也存在很大的误导性,比如Shodan只拿出一个月的数据作为热数据,老的数据并未展示(没覆盖的也不显示),而ZoomEye则是把历史数据都展示出来,所以实际上很难统计出一个公允的结果。在对比时,我们要考虑一定时间内数据的获取能力(注意必须要考虑一定时间内),要考虑数据的深入性和准确性(比如协议或者规则)。如果没有这些,就必然出现各大平台玩起了刷数据的游戏,乐此不疲。如果Shodan隐藏实力,我们向它学习还是有意义的。
3、数据抽样测试参考标准存在差异,直接影响了结果
这里必须帮ZoomEye说一句话:如果作为互联网使用量最大的HTTP协议一轮扫描需要超过一年时间,基本上这个平台就废了,ZoomEye不至于这么不济。Shodan的周期稍微有些偏差,ZoomEye和Fofa的时间则是存在很大的问题。这几个协议是互联网使用最多的,数量大变化快,能够很好的用于实战体系中,所以各家都比较重视,不会存在不抓取的情况。
在图中出现了“-”说明没有扫描数据,而Shodan和Censys有,我们大胆地推测拿出来的对比测试的IP是以Shodan或者Censys为主的(这⼀点只是推测)。由于网络变化太快,一个IP端口上线后快速下线,所以哪怕在一天一次这种极速轮询过程中,一定会出现一些IP刚好只被一个平台抓到,在其他平台都没有抓取到。举个反例,比如24.232.7.242这个IP,大家到各平台搜索一下,你会发现这个IP对应的23端口只存在于Fofa平台,这仅仅能证明那一天刚好被Fofa抓到了,其他平台到它那去的时候23端口已经关闭,但由此一定证明不了Shodan或者Censys的扫描频率是“-”。
实际运营过程中,大家会把不同的端口进行分组,一个端口可以存在不同的扫描集群中,比如一个大端口(覆盖大量IP的端口)可能同时并行的存在不同的端口组策略中,并行地进行扫描。又由于大网的端口扫描一定是随机IP的,也一定存在网络抖动的,所以依靠一次完成95%的数据相似度根本就不可能。大家会进行不断的轮询扫描,尽可能覆盖最新上线的资产。那种尝试用Nmap实现端口扫描和协议识别的网络空间测绘技术, 暂时打一个问号,宣称即快又全又准的,内网可以,全网扫描很难。
4、其他一些细节点
1)协议分类和设备分类是否为同一个概念?
2)Domain database这一项提到了只分析了top 100万Alexa排名域名的Censys,没有提域名存量最多的Fofa?
3) 探针分布的分析维度?
这些细枝末节倒也无关痛痒,只是大家对权威论文的理解是:分析方法应该经得起公示、经得起挑战,如果存在诸多不明确,很容易产生分歧、引起误会。
三、总结
Shodan是第一个开拓者,大家或多或少会受其影响,站在老师傅的肩膀上前行。今天老师傅还是老师傅,无论是从基础的投入、数据的严谨性,还是历史存量数据的积累和功能的丰富程度等等,国内的平台暂时都还难以与其并行。不过,我们当然也存在弯道超车的可能,我们也看到了很多机会,只是在当下,任何一家公司单方面宣布是世界第一,还是欠妥。一个让我们值得深思的问题:论实战化的能力,如果真的需要对攻对防,我们这些储备真的够吗?
我们要关注各种数据的对比,根据我们这些年对网络空间测绘的理解,网络空间测绘的技术对比维度,应该聚焦于实战,应当包含如下一些点:
资产总量(历史存续数据、域名数据等)
支持的端口和协议
搜索和展示字段数
数据更新速度(每周、每月)
数据准确度(协议、规则等)
协议解析深入度
产品规则数
活跃用户规模
为了满足实战化,以及持续性的常态实战化。我们呼吁相关部门能够针对网络空间测绘这一个细分领域给予指导,出台相关的技术标准和规范。标准化一些概念和名称,规范化搜索关键字和语法,统一化数据的存储格式,归一化资产的分类和分层。进而制定出对应的技术评判标准,最终引导行业步入健康有序的发展,为国家创造更多更好的技术输出。