http://netsecurity.51cto.com/art/201308/407831.htm

直到最近为止,对拥有数之不尽的独立地址的互联网进行整体扫描还是一种非常缓慢而“劳动密集型”的过程。举例来说,有人曾使用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也能被用来干坏事。一名心怀恶意的黑客可以利用这种工具来迅速发现有漏洞尚未修复的电脑,并迅速地入侵这些电脑,从而在短短几个小时时间里创造数以百万计的所谓“僵尸网络”。

为什么ZMap用一个小时内就能扫遍整个互联网相关推荐

  1. 一个小时内学习SQLite数据库

    FROM: http://database.51cto.com/art/201205/335411.htm SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. ...

  2. 8.10 直播回顾 | 一个小时内,我们用UWA GOT解决了这些问题...

    昨天UWA技术直播间,UWA当家主播强哥再次强力圈粉,凭着备受粉丝认可的极具磁性的声音,过硬的技术实力以及在手上挥洒自如的的黑科技UWA GOT,UWA这次几乎将压箱底的绝招都公开啦!接下来,让这个视 ...

  3. mysql获取一个小时内的数据

     (第一种方法)SELECT * FROM 表名 WHERE 字段名>NOW()-INTERVAL 2 HOUR;(第二种方法)SELECT * FROM 表名 WHERE 字段名 > ...

  4. 引导分区 pbr 数据分析_如何在1小时内引导您的分析

    引导分区 pbr 数据分析 by Tim Abraham 蒂姆·亚伯拉罕(Tim Abraham) 如何在1小时内引导您的分析 (How to bootstrap your analytics in ...

  5. 快餐业的噩梦?机器人一个小时可做150个汉堡 | 深度

    ▼ 大型年度AI人物评选--2017中国AI英雄风云榜已于12月4日在乌镇张榜,12月18日在北京国贸三期举行颁奖典礼. 榜单评选出年度技术创新人物TOP 10:商业创新人物TOP 10,获取完整榜单 ...

  6. 查询银行柜员半小时内办理业务的记录

    查询出银行柜员半小时内办理开户业务的记录.看看是否存在半个小时内办理了3笔及以上的开户业务. 给出了一张表,里面是一个柜员的操作记录,表records的结构为: 字段 数据类型 Cid(客户id) i ...

  7. 1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?具体该如何实现方法讲解

    对于此问题,一个思路是通过对问题分解: 首先一个猪在一个小时内的状态可以分为5种: 一.0分钟喝水,15分钟死去 二.15分钟活着再喝水,30分钟死去 三.30分钟活着再喝水,45分钟死去 四.45分 ...

  8. 关于1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?的问题

    这是个概率学问题,在计算机中也是个进制问题,我看了网上一些关于这个问题的解答,感觉有的人说的并不清楚,或者感觉有的写解答的人自己都没太搞清楚,回答也不对,只是因为知道答案是5硬往上套.这个问题,首先判 ...

  9. mysql 查询1小时内_mysql查询一个小时之内的数据

    由于项目的需要经常查询一个小时之内的数据,接下来吾爱编程为大家分享一下使用Mysql查询一个小时之内的数据的sql,有需要的小伙伴可以参考一下: 1.方法一: (1).sql写法: SELECT *  ...

最新文章

  1. r语言绘制精美pcoa图_如何绘制精美的PCoA图形?
  2. Leetcode 378. 有序矩阵中第K小的元素 解题思路及C++实现
  3. python为什么找不到csv文件_python读写csv文件的方法(还没试,先记录一下)
  4. activemq的使用经验
  5. 让Elasticsearch飞起来:性能优化实践干货
  6. JavaScript 函数循环、延时、节流、防抖
  7. 【EOJ Monthly 2019.02 - F】方差(数学,前缀和,积的前缀和)
  8. 刷抖音看到 Python 工程师的工资条后,我沉默了...
  9. if( 1 == x ) 比 if( x == 1 ) 哪个好
  10. ip找计算机名 linux,如何从IP地址中查找LAN中的计算机名称?
  11. java runnable 启动_Java多线程:线程的创建与启动
  12. ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本
  13. [unity3d]自定义鼠标指针
  14. 服务器指定网卡进行备份数据避免影响业务口
  15. 解析JSON字串的方法有eval,json_parse,JSON.parse
  16. 新型超级生物计算机简介,自然形成的超级生物计算机
  17. Vue.js 还是 React?你会选择哪一个?为什么?
  18. 解决 webpack-dev-server 不能自动刷新的问题
  19. ams1117 lm317 对比_最受电子工程师欢迎的10款经典稳压电源器件,电路当中经常用到...
  20. Kconfig Kbuild

热门文章

  1. 后台指标计算返回数据格式说明5 - DRAWTEXT_FIX格式
  2. 中间件监控和告警方案
  3. 仿照QQ的左右滑动切换界面的效果
  4. 2021-05-26投资基金的选择,基本面信息如何分析
  5. u-boot移值(九)-u-boot的编译、链接过程
  6. WinCE流驱动基础知识小结
  7. android一行三列,Android -- listview实现一行多列效果
  8. 天空盒里放风筝,OpenGL就这么任性:想怎么放,就怎么放!
  9. Opencv学习笔记完整版
  10. 第二章:互联网灵魂之TCP/IP(二)