-sL (List Scan)
列表扫描:是主机发现的简化形式,只是列出指定网段的所有IP地址,并不向目标发送网络包文,指定其他扫描参数均无效。此过程会有DNS解析。
-sn (No port scan)
跳过端口扫描阶段:主机发现之后,不做端口扫描,仅仅打印出存活主机。使用该参数后,端口扫描以及其后对端口扫描有依赖的所有高级扫描均无效,但是支持--traceroute和--script,尽管如此,一些依赖port的NSE脚本执行仍然没有意义。也就是说只能做主机发现。
目的:对目标网络进行轻微侦察,而不会引起太多关注。
-Pn (No ping)
跳过主机发现阶段:此选项完全跳过Nmap发现阶段,但是如果还进行主机发现之后阶段的扫描,则默认会进行ARP or ND Ping,除非指定参数:--disable-arp-ping或--send-ip。当然,如果主机发现阶段后面的都不进行。
-PS <port list> (TCP SYN Ping)
此选项发送一个设置了SYN标志的空TCP数据包。默认目标端口为80。除了像T:端口类型说明符不允许使用之外,语法与-p的语法相同 。请注意,-PS端口列表之间不能有空格。如果指定了多个探测器,它们将并行发送。如果端口open,nmap所在主机会发送RST报文结束连接,这个RST包文是由运行Nmap的机器的内核发送,以响应意外的SYN/ACK,而不是由Nmap本身。
-PS和-sS的区别:前者是顺序扫描端口,后者是随机扫描端口。
在Unix机器上,只有root用户(privileged user)可以发送和接收原始TCP包文。非特权用户(unprivileged user)的方案是发起connect系统调用,试图和目标端口建立连接。如果connect() return success(open)或return ECONNREFUSED(closed),则底层TCP堆栈必须已收到SYN / ACK或RST,那么主机是存活的。如果connect()挂起直到超时,那么主机不存活。
-PA <port list> (TCP ACK Ping)
同-PS,只是发送的TCP flag is ACK。大部分主机防火墙都是drop 孤立ack包的。至于物理防火墙基本都是状态防火墙,孤立ack肯定被丢。综合性能和准确性考虑故不推荐使用。
-PU <port list> (UDP Ping)
同-PS,但发送UDP报文,且只能在root用户下使用。未指定Port则默认值为40125,本扫描通常发送到非常用端口,open端口是不会有响应的,只有closed端口才有可能。但是,对于大多数主机来说,其上防火墙都是“白名单”策略,除了open端口大部分都是filtered端口,且UDP扫描会降低性能。故不推荐。
-PY <port list> (SCTP INIT Ping)
同-PS,但发送包含最小INIT块的SCTP报文,且只能在root用户下使用。未指定Port则默认值为80。
-PE; -PP; -PM (ICMP Ping Types)
分别为ICMP echo(8)、timestamp(13)、mask(17) Ping。ICMP echo则为ping程序发送的标准数据包。Windows防火墙策略对于-PP包直接丢掉,Linux会处理;两者网络底层对-PM包直接丢弃,无关防火墙。
Linux 修改iptables防火墙策略后,可与Windows保持一致:
-A INPUT -p icmp --icmp-type 8 -j ACCEPT
-PO <protocol list> (IP Protocol Ping)
一种比较新的主机发现方式:IP协议Ping。the default is to send multiple IP packets for ICMP (protocol 1), IGMP (protocol 2), and IP-in-IP (protocol 4)。指定协议号类似于-PS的端口号指定格式。因此,该方式无法指定Port。当然,只有TCP、UDP协议,其他的貌似也不需要端口。
-PR (ARP Ping)
To scan an ethernet LAN。只有在Ipv4网络中是ARP Ping,在Ipv6网络中(-6 option), -PR uses ICMPv6 Neighbor Discovery instead of ARP。该扫描只适用于同LAN网络扫描。在同LAN中,默认ARP Ping会替代其他主机发现方式;在不同LAN中,ARP Ping会被skip掉。如果不管哪种情况均不想ARP Ping,则使用--disable-arp-ping。右上所知,该扫描是隐式的,没必要指定。
--disable-arp-ping (No ARP or ND Ping)
ARP Ping在同LAN中高效且准确性高,不建议禁用。但是同LAN中划分了VLAN就会导致扫描结果存在漏扫。
--traceroute (Trace path to host)
-n (No DNS resolution)
DNS解析发生在“主机发现”阶段之后,当发现IP存活时才会做。-n就是告诉nmap不要对active IP做反向DNS解析。也就是说指定的扫描对象本身就是域名或者主机名,该选项并不起作用。域名解析颇耗性能。
-R (DNS resolution for all targets)
与-n相反。
--resolve-all (Scan each resolved address)
扫描每一个解析出来的IP地址。域名或者主机名解析出来多个IP地址时,默认只对第一个进行扫描。
--system-dns (Use system DNS resolver)
默认情况下,nmap向主机上配置的DNS服务器发送请求进行反向域名解析,多IP时,多个请求是平行发送的以提高速度。该参数告诉nmap调用主机上的解析程序(再由该程序发送解析请求给DNS服务器)进行反向域名解析(多次一举),系统解析程序一次只能处理一个IP地址。系统解析器始终用于正向查找。
--dns-servers <server1>[,<server2>[,...]] (Servers to use for reverse DNS queries)
指定反向域名解析的DNS Server。
默认情况下,nmap读取系统resolv.conf文件中的域名服务器进行rDNS解析。指定本参数后,--system-dns会被忽略。多个DNS服务器并行解析会加快解析速度。
使用-sL & --dns-servers可以查找出哪些DNS服务器可以反解目标IP地址。
--randomize-hosts
Ping扫描阶段(任何一种)、端口扫描阶段,主机是顺序执行的,为了绕过扫描监控,我们需要将目标散列。