Nmap网络探测和安全审核工具指南:端口扫描技术

作为一个修车新手,我可能折腾几个小时来摸索怎样把基本工具(锤子,胶带,扳子等) 用于手头的任务。当我惨痛地失败,把我的老爷车拖到一个真正的技师那儿的时候,他总是在他的工具箱里翻来翻去,直到拽出一个完美的工具然后似乎不费吹灰之力搞定它。端口扫描的艺术和这个类似。专家理解成打的扫描技术,选择最适合的一种 (或者组合)来完成给定的任务。 另一方面,没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。既然Nmap是免费的,掌握端口扫描的唯一障碍就是知识。这当然是汽车世界所不能比的,在那里,可能需要高超的技巧才能确定您需要一个压杆弹簧压缩机,接着您还得为它付数千美金。

大部分扫描类型只对特权用户可用。这是因为他们发送接收原始报文,这在Unix系统需要root权限。">在Windows上推荐使用administrator账户,但是当WinPcap已经被加载到操作系统时,非特权用户也可以正常使用Nmap。当Namp在1997年发布时,需要root权限是一个严重的局限,因为很多用户只有共享的shell账户。现在,世界变了,计算机便宜了,更多人拥有互联网连接,桌面UNIX系统 (包括Linux和MAC OS X)很普遍了。Windows版本的Nmap现在也有了,这使它可以运行在更多的桌面上。由于所有这些原因,用户不再需要用有限的共享shell账户运行Nmap。这是很幸运的,因为特权选项让Nmap强大得多也灵活得多。

虽然Nmap努力产生正确的结果,但请记住所有结果都是基于目标机器(或者它们前面的防火墙)返回的报文的。。这些主机也许是不值得信任的,它们可能响应以迷惑或误导Nmap的报文。更普遍的是非RFC兼容的主机以不正确的方式响应Nmap探测。FIN,Null和Xmas扫描特别容易遇到这个问题。这些是特定扫描类型的问题,因此我们在个别扫描类型里讨论它们。这一节讨论Nmap支持的大约十几种扫描技术。一般一次只用一种方法,除了UDP扫描(-sU)可能和任何一种TCP扫描类型结合使用。友情提示一下,端口扫描类型的选项格式是-sC,其中C 是个显眼的字符,通常是第一个字符。一个例外是deprecated FTP bounce扫描(-b)。默认情况下,Nmap执行一个 SYN扫描,但是如果用户没有权限发送原始报文(在UNIX上需要root权限)或者如果指定的是IPv6目标,Nmap调用connect()。本节列出的扫描中,非特权用户只能执行connect()和ftp bounce扫描。

-sS (TCP SYN扫描)

SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。 SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。它也不像Fin/Null/Xmas,Maimon和Idle扫描依赖于特定平台,而可以应对任何兼容的 TCP协议栈。它还可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态

它常常被称为半开放扫描,因为它不打开一个完全的TCP连接。它发送一个SYN报文,就像您真的要打开一个连接,然后等待响应。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。如果数次重发后仍没响应,该端口就被标记为被过滤。如果收到ICMP不可到达错误 (类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。

-sT (TCP connect()扫描)

当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。当用户没有权限发送原始报文或者扫描IPv6网络时,就是这种情况。 Instead of writing raw packets as most other scan types do,Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。 这是和Web浏览器,P2P客户端以及大多数其它网络应用程序用以建立连接一样的 高层系统调用。它是叫做Berkeley Sockets API编程接口的一部分。Nmap用该API获得每个连接尝试的状态信息,而不是读取响应的原始报文。

当SYN扫描可用时,它通常是更好的选择。因为Nmap对高层的 connect()调用比对原始报文控制更少,所以前者效率较低。 该系统调用完全连接到开放的目标端口而不是像SYN扫描进行半开放的复位。这不仅花更长时间,需要更多报文得到同样信息,目标机也更可能记录下连接。IDS(入侵检测系统)可以捕获两者,但大部分机器没有这样的警报系统。 当Nmap连接,然后不发送数据又关闭连接,许多普通UNIX系统上的服务会在syslog留下记录,有时候是一条加密的错误消息。此时,有些真正可怜的服务会崩溃,虽然这不常发生。如果管理员在日志里看到来自同一系统的一堆连接尝试,她应该知道她的系统被扫描了。

-sU (UDP扫描)

虽然互联网上很多流行的服务运行在TCP 协议上,UDP服务也不少。 DNS,SNMP,和DHCP (注册的端口是53,161/162,和67/68)是最常见的三个。因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。这是一个错误,因为可探测的UDP服务相当普遍,攻击者当然不会忽略整个协议。所幸,Nmap可以帮助记录并报告UDP端口。

UDP扫描用-sU选项激活。它可以和TCP扫描如 SYN扫描 (-sS)结合使用来同时检查两种协议。

UDP扫描发送空的(没有数据)UDP报头到每个目标端口。如果返回ICMP端口不可到达错误(类型3,代码3),该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3,代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。如果几次重试后还没有响应,该端口就被认为是 open|filtered(开放|被过滤的)。这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。可以用版本扫描(-sV)帮助区分真正的开放端口和被过滤的端口。

UDP扫描的巨大挑战是怎样使它更快速。开放的和被过滤的端口很少响应,让Nmap超时然后再探测,以防探测帧或者响应丢失。关闭的端口常常是更大的问题。它们一般发回一个ICMP端口无法到达错误。但是不像关闭的TCP端口响应SYN或者Connect 扫描所发送的RST报文,许多主机在默认情况下限制ICMP端口不可到达消息。 Linux和Solaris对此特别严格。例如, Linux 2.4.20内核限制一秒钟只发送一条目标不可到达消息 (见net/ipv4/icmp。c)。

Nmap探测速率限制并相应地减慢来避免用那些目标机会丢弃的无用报文来阻塞网络。不幸的是,Linux式的一秒钟一个报文的限制使65,536个端口的扫描要花 18小时以上。加速UDP扫描的方法包括并发扫描更多的主机,先只对主要端口进行快速扫描,从防火墙后面扫描,使用--host-timeout跳过慢速的主机。 -sN; -sF; -sX (TCP Null,FIN,and Xmas扫描)

这三种扫描类型 (甚至用下一节描述的 --scanflags 选项的更多类型) 在TCP RFC 中发掘了一个微妙的方法来区分open(开放的)和 closed(关闭的)端口。第65页说“如果 [目标]端口状态是关闭的.... 进入的不含RST的报文导致一个RST响应。” 接下来的一页讨论不设置SYN,RST,或者ACK位的报文发送到开放端口: “理论上,这不应该发生,如果您确实收到了,丢弃该报文,返回。 ” 如果扫描系统遵循该RFC,当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致一个RST返回,而当端口开放时,应该没有任何响应。只要不包含SYN,RST,或者ACK,任何其它三种(FIN,PSH,and URG)的组合都行。Nmap有三种扫描类型利用这一点: Null扫描 (-sN)

不设置任何标志位(tcp标志头是0)
FIN扫描 (-sF)

只设置TCP FIN标志位。
Xmas扫描 (-sX)

设置FIN,PSH,和URG标志位,就像点亮圣诞树上所有的灯一样。

除了探测报文的标志位不同,这三种扫描在行为上完全一致。如果收到一个RST报文,该端口被认为是 closed(关闭的),而没有响应则意味着端口是open|filtered(开放或者被过滤的)。如果收到ICMP不可到达错误(类型 3,代号 1,2,3,9,10,或者13),该端口就被标记为 被过滤的。

这些扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。但是别依赖它 -- 多数现代的IDS产品可以发现它们。一个很大的不足是并非所有系统都严格遵循RFC 793。 许多系统不管端口开放还是关闭,都响应RST。这导致所有端口都标记为closed(关闭的)。这样的操作系统主要有Microsoft Windows,许多Cisco设备,BSDI,以及IBM OS/400。但是这种扫描对多数UNIX系统都能工作。这些扫描的另一个不足是它们不能辨别open(开放的)端口和一些特定的 filtered(被过滤的)端口,从而返回 open|filtered(开放或者被过滤的)。

-sA (TCP ACK扫描)

这种扫描与目前为止讨论的其它扫描的不同之处在于它不能确定open(开放的)或者 open|filtered(开放或者过滤的))端口。它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。

ACK扫描探测报文只设置ACK标志位(除非您使用 --scanflags)。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。不响应的端口或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10,或者13)的端口,标记为 filtered(被过滤的)。

时间: 2024-09-05 22:58:09

Nmap网络探测和安全审核工具指南:端口扫描技术的相关文章

Nmap网络探测和安全审核工具指南:概述

Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和安全审核的工具.它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题.Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,哪些主机提供什么服务(应用程序名和版本),哪些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能.虽然Nmap通常用于安全审核,许多http://www.aliyun.com/zixun/aggregatio

Nmap网络探测和安全审核工具指南:时间和性能

Nmap开发的最高优先级是性能.在本地网络对一个主机的默认扫描(nmap hosthttp://www.aliyun.com/zixun/aggregation/11696.html">name)需要1/5秒.而仅仅眨眼的时间,就需要扫描上万甚至几十万的主机.此外,一些特定的扫描选项会明显增加扫描时间,如UDP扫描和版本检测.同样,防火墙配置以及特殊的响应速度限制也会增加时间.Nmap使用了并行算法和许多先进的算法来加速扫描,用户对Nmap如何工作有最终的控制权.高级用户可以仔细地调整Nm

Nmap网络探测和安全审核工具指南:服务和版本探测

把Nmap指向一个远程机器,它可能告诉您 端口25/tcp,80/tcp,和53/udp是开放的.使用包含大约2,200个著名的服务的 nmap-services数据库, Nmap可以报告那些端口可能分别对应于一个http://www.aliyun.com/zixun/aggregation/12489.html">邮件服务器 (SMTP),web服务器(HTTP),和域名服务器(DNS). 这种查询通常是正确的 -- 事实上,绝大多数在TCP端口25监听的守护进程是邮件 服务器.然而,您

Nmap网络探测和安全审核工具指南:主机发现

任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为 一列活动的或者您感兴趣的主机.扫描每个IP的每个端口很慢,通常也没必要. 当然,什么样的主机令您感兴趣主要依赖于扫描的目的.网管也许只对运行特定服务的 主机感兴趣,而从事安全的人士则可能对一个马桶都感兴趣,只要它有IP地址:-).一个系统管理员 也许仅仅使用Ping来定位内网上的主机,而一个外部入侵测试人员则可能绞尽脑汁用各种方法试图 突破防火墙的封锁. 由于主机发现的需求五花八门,Nmap提供了一箩筐的选项来定制

Nmap网络探测和安全审核工具指南:防火墙/IDS躲避和哄骗

很多Internet先驱们设想了一个全球开放的网络,使用全局的IP 地址空间,使得任何两个节点之间都有虚拟连接.这使得主机间可以作为真正的对等体,相互间提供服务和获取信息.人们可以在工作时访问家里所有的系统.调节空调温度.为提前到来的客人开门.随后,这些全球连接的设想受到了地址空间短缺和安全考虑的限制.在90年代早期,各种机构开始部署防火墙来实现减少连接的目的,大型网络通过代理.NAT和包过滤器与未过滤的Internet隔离.不受限的信息流被严格控制的可信通信通道信息流所替代. 类似防火墙的网络

Nmap网络探测和安全审核工具指南:端口扫描基础

虽然Nmap这些年来功能越来越多, 它也是从一个高效的端口扫描器开始的,并且那仍然是它的http://www.aliyun.com/zixun/aggregation/17626.html">核心功能. nmap target这个简单的命令扫描主机target上的超过 1660个TCP端口. .许多传统的端口扫描器只列出所有端口是开放还是关闭的, Nmap的信息粒度比它们要细得多. 它把端口分成六个状态: open(开放的), closed(关闭的),filtered(被过滤的), unf

Nmap网络探测和安全审核工具指南:目标说明

除了选项,所有出现在Nmap命令行上的都被视为对目标主机的说明.最简单的情况是指定一个目标IP地址或主机名. 有时候您希望扫描整个网络的相邻主机.为此,Nmap支持CIDR风格的地址.您可以附加一个/numbit在一个IP地址或主机名后面, Nmap将会扫描所有和该参考IP地址具有 numbit相同比特的所有IP地址或主机.例如,192.168.10.0/24将会扫描192.168.10.0 (二进制格式: 11000000 10101000 00001010 00000000)和192.168

Nmap网络探测和安全审核工具指南:端口说明和扫描顺序

除了所有前面讨论的扫描方法, Nmap提供选项说明那些端口被扫描以及扫描是随机还是顺序进行. 默认情况下,Nmap用指定的协议对端口1到http://www.aliyun.com/zixun/aggregation/12560.html">1024以及nmap-services 文件中列出的更高的端口在扫描. -p <port ranges> (只扫描指定的端口) 该选项指明您想扫描的端口,覆盖默认值. 单个端口和用连字符表示的端口范围(如 1-1023)都可以. 范围的开始以

Nmap网络探测和安全审核工具指南:输出

任何安全工具只有在输出结果时才是有价值的,如果没有通过组织和 易于理解的方式来表达,复杂的测试和算法几乎没有意义.Nmap提供了一些 方式供用户和其它软件使用,实际上,没有一种方式可以使所有人满意. 因此Nmap提供了一些格式,包含了方便直接查看的交互方式和方便软件处理 的XML格式. 除了提供输出格式外,Nmap还提供了选项来控制输出的细节以及调试信息.输出内容可发送给标准输出或命名文件,可以追加或覆盖.输出文件还可被用于继续中断的扫描. Nmap提供5种不同的输出格式.默认的方式是inter