-
-sS/sT/sA/sW/sM:TCP扫描
-
S是SYN扫描,半链接扫描,nmap只发送SYN报文,经过服务器是否响应SYN+ACK来判断对应端口是否开放
-
T是全链接扫描会和服务器创建完整的三次握手,效率低
-
A发送ACK报文,经过服务器响应来判断是否开放,有的服务器不开会回复ICMP端口不可达,当回复RST时表示可能被拦截或者端口开放,不是一个准确的判断条件
-
W 是窗口扫描,发出的报文和ACK同样,利用的是在某些系统中若是端口开放,收到ACK包后会响应一个窗口非0的RST包
-
M是Maimon扫描,使用发现者的名字命名。其原理是向目标服务器发送FIN/ACK 报文,在某些系统中若是端口开放则会丢弃该报文不作响应,若是端口关闭则回复RST或者ICMP,Nmap可借此判断服务器端口的开放状况。不许
-
-sU:UDP扫描,某些系统若是UDP端口不开放会回复ICMP差错报文(这也是Linux系统中traceroute的实现原理)。Nmap UDP端口扫描的强大之处在于它会针对知名端口构造初始交互报文,好比会针对UDP 500构造一个主模式协商的IKE报文
-
-sN/sF/sX:特定TCP标志位的扫描,N是空标志位;F是FIN置位;X是Xmas扫描将FIN、PSH、URG同时置位。收到RST说明端口关闭,无响应说明被过滤或者端口开放,不许。
-
--scanflags <flags>:实现上同上面几种相似,可让用户自定义TCP标志位。
-
-sI <zombie host[:probeport]>: Idle扫描须要一台没有流量的僵尸主机,这种扫描的实现原理是在必定的时间里,同一台主机发出的IP数据报文其ip头中的identification字段是累加的。探测分为3步:一、Nmap主机向僵尸机发包,经过僵尸机的响应包探测其ID;二、Nmap主机伪造僵尸机源地址向服务器的特定端口发送SYN包;三、Nmap主机再次探测僵尸机的ip.id。若是目标服务器端口开放,则必然会向僵尸机发送SYN/ACK,因为莫名其妙收到一个SYN/ACK 报文,僵尸机会向目标服务器发送RST报文,该报文的ip.id 是第一步+1,则第三步Nmap主机探测到的ip.id应该是第一步+2,说明目标主机端口开放。反之,若是目标主机端口未开放,则收到第二步的报文后会向僵尸机回复RST或者直接丢弃该报文不响应,不管哪一种状况,都不会触发僵尸机发包,进而僵尸机的ip.id不会变化,第三步Nmap探测到的id应该是第一步+1.
-
-sY/sZ:SCTP协议INIT或cookie-echo扫描
-
-sO:基于IP协议的扫描,经过变换IP报文头中的Protocol值来对服务器进行探测
-
-b <FTP relay host>::FTP反弹扫描,借助FTP特性,经过FTP服务器链接想要扫描的主机实现隐身的目的