任何网络侦察任务的第一步就是将一组IP范围缩减为一组活动的主机,由于最初咱们锁定的IP地址范围每每要比实际须要深刻扫描的目标数大得多。并且,扫描每个IP地址的每个端口这个过程既慢也不必。至于咱们须要关注什么样的主机,这取决于咱们的扫描目的。网络管理员可能只对运行某项服务的主机感兴趣,安全审计人员则对每一个具备IP地址的设备都感兴趣。管理员可能仅使用ICMP ping就能在本身的内部网络上定位主机,而外部***测试人员可能会使用数十种探针来逃避防火墙的限制。 因为主机发现需求是如此多样,所以Nmap提供了多种用于自定义的技术选项。有时候主机发现也被称做ping扫描,但这远远超出了与无处不在的ping工具关联的简单ICMP回显请求数据包。咱们能够使用列表扫描(-sL)或禁用ping(-Pn)来彻底跳过ping,也能够经过任意组合多个端口和TCP SYN/ACK,UDP,SCTP INIT和ICMP探针扫描网络。这些探针的目的是探测某个IP地址实际上处于活动状态的响应,也就是某个IP地址正在被主机或网络设备使用。在不少网络中,一段时间内通常只有不多比例的IP地址处于活动状态,尤为是在私有地址空间过大的网络中这种状况更加常见,例如:10.0.0.8/8,这个网络内包括了超过16000000个IP地址,但有的公司在网络内的设备还没超过1000台。主机发现能够在稀疏分配的IP地址中找到这些机器。 若是不设置任何主机发现的选项,Nmap会向端口443发送ICMP回显请求和TCP SYN数据包,向端口80发送TCP ACK数据包以及ICMP时间戳请求(对于IPv6,将忽略ICMP时间戳记请求,由于它不是ICMPv6的一部分)。这些默认的选项至关于-PE -PS433 -PA80 -PP选项。ARP(用于IPv4)和邻居发现(用于IPv6)扫描例外,由于它们会自动扫描本地以太网上的任何目标。对于非特权Unix Shell用户,默认探针是使用connect系统调用到达端口80和443的SYN数据包。若是你只是扫描本地网络,主机发现的默认选项就足够了,可是若是要进行安全审计则建议使用更全面的探针集。 -P*选项能够组合使用。你能够使用不一样的TCP端口、标志位和ICMP代码组合的探针来提升穿透防火墙的概率。还要注意,即便你指定其余-P*选项,默认状况下也会针对本地以太网上的目标执行ARP扫描和邻居发现,由于它们通常更加快速有效。 默认状况下,Nmap会进行主机发现,而后对它肯定在线的每一个主机执行端口扫描。即便指定了非默认主机发现类型,例如:UDP探针(-PU),也是如此。咱们使用-sn选项能够仅执行主机发现;使用-Pn选项能够跳过主机发现,直接对全部主机进行端口扫描。咱们会在后面的部分详细介绍有关控制选项的内容。