二、端口扫描
  Nmap通过探测将端口划分为6个状态:
  open:端口是开放的。
  closed:端口是关闭的。
  filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
  unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
  open|filtered:端口是开放的或被屏蔽。
  closed|filtered :端口是关闭的或被屏蔽。
  端口扫描方式命令
  -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
  -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
  -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
  --scanflags <flags>: 定制TCP包的flags。
  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
  -sO: 使用IP protocol 扫描确定目标机支持的协议类型。
  -b <FTP relay host>: 使用FTP bounce scan扫描方式
  扫描参数
  -p <port ranges>: 扫描指定的端口
  实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
  -F: Fast mode – 快速模式,仅扫描TOP 100的端口
  -r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。
  --top-ports <number>:扫描开放概率高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描有可能的1000个TCP端口)
  --port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
  三、版本侦测
  命令参数:
  -sV: 指定让Nmap进行版本侦测
  --version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
  --version-light: 指定使用轻量侦测方式 (intensity 2)
  --version-all: 尝试使用所有的probes进行侦测 (intensity 9)
  --version-trace: 显示出详细的版本侦测过程信息。
  四、操作系统侦测命令
  -O: 指定Nmap进行OS侦测。
  --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
  --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。
  五、防火墙/IDS规避
  命令参数
  -f; --mtu <val>: 指定使用分片、指定数据包的MTU.
  -D <decoy1,decoy2[,ME],...>: 用一组IP地址掩盖真实地址,其中ME填入自己的IP地址。
  -S <IP_Address>: 伪装成其他IP地址
  -e <iface>: 使用特定的网络接口
  -g/--source-port <portnum>: 使用指定源端口
  --data-length <num>: 填充随机数据让数据包长度达到Num。
  --ip-options <options>: 使用指定的IP选项来发送数据包。
  --ttl <val>: 设置time-to-live时间。
  --spoof-mac <mac address/prefix/vendor name>: 伪装MAC地址
  --badsum: 使用错误的checksum来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)。