Nmap是用于端口扫描,服务检测,甚至是漏洞扫描等多种功能的强大工具。Nmap从入门到高级覆盖了许多基础的概念和命令,在这篇文章的第二部分,我将提及Nmap一些高级的技术。
  防火墙和入侵检测系统(IDS)从安全的视角来讲,它们在对拒绝远程目标起到了非常重要的作用。因为这些硬件和软件阻塞入侵非常有效果,所以,在渗透测试过程中,你需要绕过这些工具来获得正确的结果,否则,你可能会走错方向。Nmap能够对远程目标计算机防火墙和其他的入侵检测系统进行扫描,因为它使用不同的技术来对抗这些软件,并且这些技术依赖于远程软件。目标计算机中所安全装的防火墙可能有两种:
  基于主机的防火墙(一个运行在单独目标计算机上的防火墙,比如,你的计算机中现在运行的防火墙)
  基于网络的防火墙(一个用于保护整个网络,并且被部署在网络节点上的防火墙)
  有两种IDS/IPS也可能被安装在目标机器中,这也是在渗透测试过程中需要解决的情况。有很多不同的Nmap技术用于处理这种情况,例如:
  入门篇
  TCP ACK Scan (-sA)
  使用这个命令将发送ACK包,而不是SYN包,因为如果远程计算机中有防火墙在工作的话,ACK包是不会被防火墙记录的,而且防火墙对待ACK包和 对待SYN包的响应是一样的。TCP ACK扫描开始时需要root权限(Nmap启动时使用root权限启动),并且他对于对付无状态的防火墙和IDS 有很好的效果。作为一个渗透测试人员,你需要检查防火墙的响应:有可能有四种类型的响应:
  1.Open port(防火墙允许少数端口打开)
  2.Closed Port(由于防火墙的缘故,大部分的端口被关闭)
  3.Filtered(Nmap不确定端口是否打开或者关闭)
  4.Unfiltered(Nmap能够访问这个端口,但是不清楚这个端口打开的状态)
  这些重要的响应都有肯能是你在渗透测试期间获得的。ACK扫描和其他的扫描技术有一点不同,它不能有计划地发现打开的端口,但是他可以有效的banding过滤和未过滤响应。让我们来比较下ACK扫描的两种结果:

  现在可以很容易的发现目标的计算机是否启用了防火墙,因为一个简单的ACK扫描意味着攻击者只有较低的概率检测到受害机,但是有较高的几率发现防火墙。下面我们来看下一个SYN扫描在防火墙开启和未开启的时候,扫描的结果:

  TCP Window Scan(-sW)
  与ACK扫描非常相似,但是有一点不同,TCP window扫描可以区分未被过滤端口的打开或者关闭。它也需要root权限执行。让我们看下TCP window扫描的不同响应。

  这类扫描不能打开目标计算机任何活动会话,所以不会被受害机记录。它的工作原理很简单,是发送ACK包,然后在响应中接受单独的RST包。
  Fragment Packets (-f)
  这是一个非常通用的概念,并且可以被用在许多不同的情况下,例如:如果目标机器没有能力处理大量的包,那么碎片技术可以有效的绕过防火墙。这个技术 的参数是-f,它将提交分成小段的IP包,这些小的包被称为碎片IP包。如果你想机一部的打散IP头的话,可以使用双-f(即:-ff)。

  Spoof MAC Address
  这是个更简单的技术,你可以伪造你的MAC(攻击者的MAC)地址。MAC地址欺骗造成了受害者检测提交来源困难的局面。Nmap可以每个扫描选择 一个完整的随机MAC地址,并且这些MAC地址都是基于不同厂商的,另外的设置是手工的指定MAC地址(通过这样,攻击者能够在相同网络中伪造一台计算机 地址)。Nmap有一个叫做
  Default
  namp-mac-prefixes
  的数据库,当把厂商的名字提供给这个数据库时,它会从中找到满足条件的MAC地址。

  高级篇
  Nmap Timing Option
  时间参数是Nmap的一个非常重要和有趣的功能,因为,有时你需要在两次提交之间有一定的延时。这样的情况有很多原因,但是重要的原因是网络;有 时,受害者的计算机和实际网络不能处理大量的提交。作为一个渗透测试人员,你需要确定你的扫描不会造成拒绝服务攻击(DoS),所以适时的响应和提交在扫 描中是非常重要的。Nmap有非常多的功能和参数,对适时的扫描目标是非常有帮助的,碎片技术(-f)对于拆分你的提交也是一个非常有用的技术。下面讨论 其他的重要参数:
  Delay (–scan_delay)
  这是用户控制每次提交之间时间的做好参数,因为你可以使用整数形式控制你每次探查所需要的间隔,不过不要忘记时间的单位:
  毫秒e.g. 5ms
  秒  e.g. 5s
  分  e.g. 5m
  时  e.g. 5h
  让我们看一个例子: