Zmap之于Nmap的扫描技术

发表于:2015-3-05 11:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:运动轩    来源:51Testing软件测试网采编

  ZMap工具,用一台普通的服务器耗时44分钟就能扫描全部互联网地址。
  扫描工具如Nmap使用的方法是发送请求然后监听回应,虽然请求可以同步进行,但为了记录每一个未回应请求需要大量开销,导致速度下降。而ZMap使用了不同的方法,它发生的是无状态请求,发送之后就忽略了,它不需要记录未回应请求的名单,而是在发送的数据包中编码身份信息去识别回应,从而降低开销。ZMap发送数据包的速度是Nmap的上千倍。Nmap需要数周时间扫描全部网址,而ZMap只要几十分钟。密歇根研究人员利用ZMap发现,100万最流行网站内HTTPS使用率一年内增加了23%。
  传统上的TCP/IP需要“三次握手”报文交互,在此期间需要维持记录着与对方交互的状态。
  这种状态记录量是巨大的,占用内存和CPU资源很大。
  而ZMap索性就不进行三次握手,只进行第一个SYN,然后等待对方回复SYN-ACK,之后即RST取消连接。这样肯定会因网络原因丢失一定比例的数据,根据其实验,这个比例在2%左右。
  以上策略,在nmap中也有实现,即其TCP SYN扫描方式。
  关键性的问题出现在对回复的SYN-ACK进行seq number的校验。传统上就需要记录状态。
  而ZMap是将对方receiver ip地址进行hash,将其处理保存到了sender port和seq number两个字段中,当SYN-ACK回来的时候,就可以根据sender ip、receiver port、ack number这些字段进行校验。
  因此避免了状态存储,接近了网络带宽极限。
  一个TCP数据包包括一个TCP头,后面是选项和数据。一个TCP头包含6个标志位。它们的意义分别为:
  SYN: 标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接。
  FIN: 表示发送端已经没有数据要求传输了,希望释放连接。
  RST: 用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。
  URG: 为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。
  ACK: 为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号无效。
  PSH: 如果置位,接收端应尽快把数据传送给应用层。
  大部分TCP/IP实现遵循以下原则:
  1:当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包。
  2:当一个RST数据包到达一个监听端口,RST被丢弃。
  3:当一个RST数据包到达一个关闭的端口,RST被丢弃。
  4:当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包。
  5:当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃。
  6:当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN ACK数据包。
  7:当一个FIN数据包到达一个监听端口时,数据包被丢弃。"FIN行为"(关闭得端口返回RST,监听端口丢弃包),在URG和PSH标志位置位时同样要发生。所有的URG,PSH和FIN,或者没有任何标记的TCP数据包都会引起"FIN行为"。
  经典的扫描:全TCP连接和半连接(TCP SYN)
  秘密扫描:
  秘密扫描基于FIN段的使用。在大多数实现中,关闭的端口对一个FIN 段返回一个RST,但是打开的端口通常丢弃这个段,不作任何回答。间接扫描,就像它的名字,是用一个欺骗主机来帮助实施,这台主机通常不是自愿的。
  Xmas和Null扫描是秘密扫描的两个变种。
  间接扫描:
  间接扫描的思想是利用第三方的IP(欺骗主机)来隐藏真正扫描者的IP。由于扫描主机会对欺骗主机发送回应信息,所以必须监控欺骗主机的IP行为,从而获得原始扫描的结果。
  认证扫描:
  认证扫描是一个非常有趣的例子。利用认证协议,这种扫描器能够获取运行在某个端口上进程的用户名(userid)。认证扫描尝试与一个TCP端口建立连接,如果连接成功,扫描器发送认证请求到目的主机的113TCP端口。认证扫描同时也被成为反向认证扫描,因为即使最初的RFC建议了一种帮助服务器认证客户端的协议,然而在实际的实现中也考虑了反向应用(即客户端认证服务器)。
  文件传输协议(FTP)支持一个非常有意思的选项:代理ftp连接。这个选项最初的目的(RFC959)是允许一个客户端同时跟两个FTP服务器建立连接,然后在服务器之间直接传输数据。然而,在大部分实现中,实际上能够使得FTP服务器发送文件到Internet的任何地方。许多攻击正是利用了这个缺陷。最近的许多扫描器利用这个弱点实现ftp代理扫描。
  安全扫描器:
  可能SATAN是最著名的安全扫描器。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号