直到最近为止,对拥有数之不尽的独立地址的互联网进行整体扫描还是一种非常缓慢而“劳动密集型”的过程。举例来说,有人曾使用nmap进行过一次扫描,想要搜集有关加密技术在线使用量的数据。其结果是,这一过程足足花了两三个月时间。
密歇根大学研究人员觉得,他们在这一方面能做得更好;事实上,应该说是好得多。在周五于华盛顿召开的Usenix国际安全研讨会上,他们宣布推出了一种名为“ZMap”的工具,这种工具能令一台普通的服务器在短短44分钟时间里扫描互联网上的每一个地址。
2010年有人曾所使用的是一种名为“Nmap”的工具,这个工具会向一台主机发出请求,随后等待接到请求的主机作出回应。这些请求可以并行操作,但为每一个未得到回复的请求保留相关记录仍旧会带来大量的工作,从而拖缓扫描互联网的进程。
那为什么ZMap可以在一个小时内扫遍整个互联网呢?与nmap相比,ZMap则是一种“无状态”的工具;也就是说,这种工具会向服务器发出请求,然后就“忘记”这些请求。ZMap不会保留未获回复请求的清单,而是在传出的数据包中对识别信息进行编码,这样一来该工具就能对回复进行鉴别。
传统上的TCP/IP需要“三次握手”报文交互,在此期间需要维持记录着与对方交互的状态。这种状态记录量是巨大的,占用内存和CPU资源很大。ZMap在扫描时索性就不进行三次握手,只进行第一个SYN,然后等待对方回复SYN-ACK,之后即RST取消连接。这样肯定会因网络原因丢失一定比例的数据,根据其实验,这个比例在2%左右。
关键性的问题出现在对回复的SYN-ACK进行seq number的校验。传统上就需要记录状态。而ZMap是将对方receiver ip地址进行hash,将其处理保存到了sender port和seq number两个字段中,当SYN-ACK回来的时候,就可以根据sender ip、receiver port、ack number这些字段进行校验。因此避免了状态存储,接近了网络带宽极限。
这种方法拥有巨大的优势,意味着Zmap输出数据包的速度比Nmap高出1000倍以上。因此,用Nmap对整个互联网进行扫描需要花费几个星期时间,而使用ZMap这种工具则只需要44分钟。
在拥有这种工具以后,人们将可迅速扫描整个互联网,而且费用也不高,这就为针对整个互联网的研究工作开辟了一些令人深深着迷的新可能性。
那么ZMap的诞生对我们又有什么益处呢,密歇根大学的研究人员用它做了几次实验:
日益加密的网络
现在,越来越多的网站正在使用网络基本协议的加密HTTPS版本。那么,企业组织正在以多快的速度作出这种转变呢?在以前,哪怕只是对这个问题作出 一种简单的估测也会是个缓慢而代价高昂的过程;但在今天,ZMap不仅能在一个小时以内就对这个问题作出回答,而且还能通过定期扫描的方式来追踪 HTTPS人气度随时间推移而上升的程度。
密歇根大学的研究人员利用ZMap工具进行追踪研究后发现,在过去一年时间里,排名前100万名的网站对于HTTPS的使用量(如下图中红线所示)已经增长了23%左右,而HTTPS的整体数量(如下图中的蓝线所示)则已经增长了将近20%。
飓风会对互联网造成怎样的损害
当重大的自然灾害来袭时,电脑可能会被迫断开网络连接,而使用ZMap工具则可对自然灾害令互联网受损的程度作出测量。
在去年10月29日到31日之间,也就是桑迪飓风(Hurricane Sandy)横扫美国东海岸的那段时间里,密歇根大学的研究团队每隔两个小时就会对整个互联网进行一次扫描。通过将IP地址与地理位置联系起来的方式,研 究人员能对哪些地区的网络服务中断情况最为严重进行观察。下面这张地图所显示的就是“收听主机数量减少30%以上的位置”。
飓风来临时对互联网进行扫描,来判断受损区域
互联网的睡眠周期
在扫描整个互联网需要耗时几个星期的时期,何时开始启动一次扫描并没有什么意义;但是,当扫描过程只需要不到一个小时就能完成时,何时开始扫描就变得很有意义了。那么,何时开始进行一次全网扫描才是最好的时机呢?
为了回答这个问题,密歇根大学的研究人员在一天中的不同时刻进行了扫描,然后观察自己能获得多少回复。以下是他们的研究结果:
对于以上图表所显示的模式,或许有两个理由能作为解释。有一种可能性是,有些在线服务仅在一天中的某些特定时段开放。但是,可能性更高的一种解释则 与网络堵塞有关。在默认状态下,ZMap只会向每个主机发出一个数据包;如果数据包是在网络流量拥堵的高峰时段发出的,那么这个数据包(或是接收数据包的 主机所作出的回应)丢失的可能性就会变得更高。
扫描睡眠周期
从密歇根大学的研究报告来看,在任何情况之下,对整个互联网进行扫描的最好时段都是凌晨,而最坏的时段则是傍晚。
分布广泛的安全漏洞
安全研究人员总是能在现有的软件里找到安全漏洞,从而迫使厂商迅速发布补丁来加以修复。但是,用户在实际生活中要花多长时间才会真正使用补丁来修复安全漏洞呢?ZMap提供了一种迅速而有效的方法来对此作出测量。
密歇根大学的研究团队进行了一次实验,针对今年早些时候在所谓的“通用即插即用”(Universal Plug and Play)技术中被发现的一个重大漏洞对整个互联网进行了扫描。在这个漏洞曝露以后的两个星期时间里,研究人员进行了全网扫描以追踪有多少主机没有升级。 其结果是,在研究人员所追踪的1570万部“通用即插即用”设备中,有256万部没有升级,在总数中所占比例为16.7%。
在另一次实验中,研究人员则针对存在两个问题(这两个问题分别是在2008年和2011年被发现的)之一的加密密钥进行了全网扫描。以下图表所显示的是,研究人员在2012年6月份到2013年6月份之间反复进行的扫描的结果。
从这张图表来看,“通用即插即用”设备进行升级的情况在某种程度上令人感到鼓舞。仅有很小一部分的加密密钥受到了两个漏洞中某一个的影响;在两个案 例中,受攻击加密密钥的数量均已呈现出下降的趋势。不过,在“Debian弱密钥”(Debian weak key)案例中仍有2743个主机受到了攻击,而在“可分解因子RSA密钥”(factorable RSA keys)案例中则有4.46万个主机受到了攻击。
ZMap迅速找到电脑安全漏洞的能力可能是件好事,前提是这个工具能让富有道德责任感的安全研究人员和软件厂商找到漏洞,并在信息传递给普通大众以前就提前向系统管理员发出通知。
但与此同时,ZMap也能被用来干坏事。一名心怀恶意的黑客可以利用这种工具来迅速发现有漏洞尚未修复的电脑,并迅速地入侵这些电脑,从而在短短几个小时时间里创造数以百万计的所谓“僵尸网络”。