0x00 扫描范围的确定

在扫描时排除指定目标: nmap [目标] --exclude [目标]

对文本文件中的地址列表进行扫描: nmap -iL [文本文件]

随机确定扫描目标:nmap -iR [目标的数量]

0x01 Nmap活跃主机发现中与DNS协议相关的选项

在对一台主机进行扫描的时候,如果它有域名的话Nmap会向域名服务器提出请求,显示该IP对应的域名。

  • -R:希望所有的目标IP无论是否是活跃主机,其所对应的域名都列出来。
  • -n:取消对域名的转换。如果强制将每一个IP都转换为域名,将会消耗大量的时间。

0x02 主机发现技术的分析

  • --packet-trace:通过它可以观察nmap发出了哪些数据包,收到了哪些数据包。
  • Nmap会首先判断目标主机与Nmap所在主机是否在同一个网段,如果相同的话,则直接使用ARP扫描模式。
  • 在没有任何指定的情况下Nmap会向目标主机发送两个ICMP的数据包,分别为Echo request和Timestamp request,这两个ICMP数据包的目标端口分别为443、80。

0x03 端口扫描技术

  • 公认端口(0~1024),注册端口(1025~49151),动态或私有端口(49152~65535)。
  • 根据使用协议的不同,还可以将端口分为“TCP协议端口”和“UDP协议端口”。
  • 传输层的功能:为通信双方的主机提供端到端的服务。

0x04 Nmap中对端口状态的定义

状态描述
open该端口有应用程序接收TCP连接或者UDP报文。
closed它接受nmap的探测报文并作出响应, 但没有应用程序在其上监听。
filtered目标网络存在数据包过滤,导致nmap无法确定该端口是否开放。这种设备可能是路由器、防火墙甚至是专门的软件。
unfiltered比较少见。目标端口可以访问但nmap无法判断是open还是closed。通常只有在进行ACK扫描才会出现这个状态。
open|filtered无法确定端口是开放的还是被过滤了。例如开放的端口不响应。
closed|filtered无法确定端口是关闭的还是被过滤了。只有在使用idle扫描时才会发生这种情况

0x05 Nmap中的各种端口扫描技术

  • -sS:SYN扫描。它是nmap所采用的默认的扫描方式,其实只要是以root或administrator权限工作的,扫描形式都是SYN。这种扫描方式没有完成三次握手(收到SYN/ACK后会发送RST包断开连接而不是ACK应答),扫描不会记录到系统日志中。
  • -sT:Connent扫描。这种扫描方式和SYN很像,不过完成了TCP的三次握手。无需root或administrator权限。
  • -sU:UDP扫描,速度相当慢,也是Connent扫描。
  • -sF:TCP FIN扫描。按照RFC 793的规定,对于所有关闭的端口,目标系统应该返回RST标志。
  • -sN:TCP NULL扫描,发送一个不包含任何标志的数据包。
  • -sX:xmas tree扫描。XMAS扫描原理和NULL扫描的类似,将TCP数据包中的ACK、FIN、RST、SYN、URG、PSH标志位置1后发送给目标主机。在目标端口开放的情况下,目标主机将不返回任何信息。
  • -sV:服务版本探测。
  • -D:decoy scanning,诱骗扫描。nmap将假造额外的封包送至目标系统,以便让目标系统以为有多部系统同时正在扫瞄,如此一来将可让真正的扫瞄来源混在多个假造封包之中而难以被追踪。使用-D选项可以直接在选项后输入要伪装的IP群,也可以搭配RND来随机产生伪装的IP,例如:nmap -D RND:5 192.168.0.101

idle扫描:扫描者无需向目标主机发送任何数据包,需要一个“第三方”扮演被利用的无辜角色。idle扫描的原理如下:

  • 向第三方发送SYN/ACK数据包,获得带有分片ID(IPID)的RST报文。IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片(fragmentation)。
  • 发送使用第三方主机IP地址的伪数据包给目标主机。根据目标端口状态的不同,目标主机可能会导致第三方主机的IPID值增加。
  • 再回来检查第三方主机的IPID值。

缺点:idle扫描花费的时间很多。很多时候,宽带提供商不允许你向外界发送伪造的数据包。

判断一个主机是否适合当“第三方”主机:使用-v参数显示详细信息,查看IPID增长方法,如果为“IP ID Sequence Generation: Incremental”就是好消息。

使用sI参数指定test.baidu.com作为第三方主机去扫描www.sina.com:

nmap -Pn -p- -sI test.baidu.com www.sina.com

其中-Pn意思是不检测主机存活情况。

0x06 指定扫描的端口

指定端口指定端口的选项
扫描常见的100个端口-F 192.168.0.1
指定某个端口-p 80 192.168.58.123
使用名字来指定扫描端口-p smtp,http 192.168.46.25
使用协议指定扫描端口-sU -sT -p U:53,T:25 192.168.0.1
扫描所有端口-p * 192.168.0.1
扫描常见的十个端口–top-ports 192.168.57.123

0x07 远程操作系统探测

  • Nmap进行识别的探针和响应对应的关系保存在Nmap-os-db文件中。
  • -O:启用操作系统检测。
  • --osscan-limit:只对满足“至少有 一个 open 和 closed 的端口”的主机进行探测。
  • --osscan-guess:猜测认为最接近目标的匹配操作系统类型。
  • --max-retries:对操作系统检测尝试的次数,默认为5。
  • IDS (入侵检测系统):依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。
  • IPS (入侵防御系统):能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。