最没有意思的参数释义:nmap参数--“端口扫描”

概述

Nmap定义了6中端口状态:

open, closed, filtered, unfiltered, open|filtered, or closed|filtered.

每种状态对应了特定的扫描类型。我们会在不同的扫描类型中进行解释。

虽然Nmap尝试生成准确的结果,但请记住,它的所有结果都是基于目标计算机或其前面的防火墙)返回的数据包。主机前存在防火墙时,该主机返回结果可能不值得信任,并发送旨在混淆或误导Nmap的响应。更常见的是不兼容RFC的主机,它们不响应Nmap探测器。FIN,NULL和Xmas扫描特别容易受到此问题的影响。此类问题特定于某些扫描类型,因此将在各个扫描类型条目中进行讨论。

本节介绍Nmap支持的十几种端口扫描技术。除了UDP scan-sU)和任何一种SCTP扫描类型(-sY-sZ)可以与任何一种TCP扫描类型组合之外,一次只能使用一种方法

非特权用户只能执行连接和FTP反弹扫描。

参数说明

-sS (TCP SYN scan)

SYN扫描是默认和最流行的扫描选项,原因很简单。快速(数千个端口/秒)且容易绕过防火墙,且足够隐秘(不会建立连接,又称:半开扫描)。所有兼容TCP协议栈的设备都适用,而不像FIN / NULL / XmasMaimon和空闲扫描那样依赖特定的平台

注意:半开连接:nmap:SYN;被扫描IP:SYN-ACK;nmap所在OS:RST。
Repose SYN/ACK | SYN(附录:五次握手):open
Repose RST:closed
No-reposed| ICMP unreachable error (type 3, code 0, 1, 2, 3, 9, 10, or 13) is received:filtered

IP地址和端口扫描攻击防范功能只对IP报文的首包生效。
当某个源的IP报文速率超过设定的阈值时,USG9000为发生了扫描攻击,将该IP地址加入黑名单,禁止其建立新的连接。
监控某个源地址发送的IP报文,当该报文中端口的变化速率超过设定的阈值时,则认为发生了扫描攻击,将该IP地址加入黑名单,禁止其建立新的连接。

-sT (TCP connect scan)

TCP连接扫描。当SYN不可用(非特权用户)时,该扫描为默认的TCP扫描类型。Nmap通过connect系统调用,与目标建立连接(全连接)。它是名为Berkeley Sockets API的编程接口的一部分。Nmap不是通过线路读取原始数据包响应,而是使用此API获取每次连接尝试的状态信息。

这个过程会导致性能降低、被扫描目标记录(不再隐秘),如果建立连接而不发送业务数据,有可能导致port对应的服务崩溃。

相比原始报文的处理,Nmap对更高层次的connect调用控制乏力。

-sN; -sF; -sX (TCP NULL, FIN, and Xmas scans)

扫描原理:Page 65 of RFC 793 says that “如果目标端口是closed,那么不包含RST标签的报文会触发RST响应”。据此,我们只要发送不包含RST & SYN & ACK的任何报文都可以探测端口的状态。

Null scan (-sN) :--scanflags NULL
FIN scan (-sF):--scanflags FIN
Xmas scan (-sX):--scanflags FINPSHURG

除了探测包中设置的TCP标志外,这三种扫描类型的行为完全相同。
Repose RST:closed
Repose ICMP unreachable error (type 3, code 0, 1, 2, 3, 9, 10, or 13):filtered
No repose:open|filtered

缺点:不推荐使用。
》》这类报文会被状态防火墙(主流防火墙都是状态防火墙,包括主机防火墙)拦截。非所有OS都遵循RFC793。这里就包括:Windows、大部分Cisco系统、IBM OS/400。
》》很难区分open和filtered端口

-sA (TCP ACK scan)

同--scanflags ACK

扫描原理:When using -sA to scan unfiltered systems, open and closed ports will both return a RST packet.

TCP ACK扫描,本扫描和其他扫均不同,因为它不会区分open、closed、open|filtered的状态的端口。在-sA扫描中,只有filtered和unfiltered两种状态。

作用:1、检测探测路径上是否有防火墙;2、映射防火墙规则集;3、判断防火墙是否状态防火墙;4、检测哪些端口被filtered。

Repose RST:unfiltered
No repose | ICMP error messages back (type 3, code 0, 1, 2, 3, 9, 10, or 13):filtered
如果扫描端口,并对open端口进一步探测,不建议使用。

-sW (TCP Window scan)

同--scanflags ACK

窗口扫描与ACK扫描完全相同,不同之处在于它利用某些系统的实现细节来区分open端口和closed端口,而不是在返回RST时始终标记为:unfiltered。

在某些系统上,开放端口使用正窗口大小(即使对于RST数据包),而关闭的窗口使用零窗口。

但是,大多数系统RST回包(closed port)使用零窗口。此时,-sW和-sA完全一样,只是前者标记为closed,后者标记为unfiltered。

不建议使用

-sM (TCP Maimon scan)

同--scanflags FIN/ACK。

扫描原理:除了探测器是FIN/ACK之外,此技术与NULL,FIN和Xmas扫描完全相同。
此外,-sM扫描也无法区分open和filtered。虽然多数BSD派生系统当port is open,Drop FIN/ACK包文。
Repose RST:closed
Repose ICMP unreachable error (type 3, code 0, 1, 2, 3, 9, 10, or 13):filtered
No repose:open|filtered

缺点:有防火墙,FIN/ACK会被丢弃,结果不准确,不建议使用。

--scanflags (Custom TCP scan)

我们完全可以通过本选项定义“预定义扫描类型”,也可以定义我们自己的扫描类型。从左至右每个标志各占1位。

倒序排列如下:

二进制十进制*缩略全称简介
0000011* FFIN结束; 结束会话
0000102* SSYN同步; 表示开始会话请求
0001004* RRST复位;中断一个连接
0010008* PPSH推送; 数据包立即发送
01000016* A ACK应答
10000032* UURG紧急

* E : ECN- 显式拥塞提醒回应
* W : CWR - 拥塞窗口减少

具体解释参见《TCP 标志位》
--scanflags 9 等于--scanflags PSHFIN
--scanflags 2 等于--scanflags SYN

指定全部标记如下,显然这种格式更加易用。这些指定的顺序是无关紧要的。
--scanflags URGACKPSHRSTSYNFIN

需要注意的是:
除了指定自定义的类型外,还可以指定基本扫描类型(仅限于TCP)。如果不指定基本扫描类型,其实按照-sS类型处理。指定基本扫描类型的作用:解释repose报文,如-sS处理RST是closed,-sA处理RST是unfiltered;-sS处理no-repose为filtered,-sF是open|filtered。
所以,--scanflags ACK 不等于 -sA,因为前者对于repose的处理是采用-sS的。

-sU (UDP scans)

最常见的UDP服务:DNS, SNMP, and DHCP (registered ports 53, 161/162, and 67/68),其实还有NTP(123)。UDP扫描通常比TCP更慢且更困难。

对于一些常见UDP端口, protocol-specific payload is sent。

载荷来自于share/nmap/nmap-payloads。其他不常见的发送UDP空报文,除非指定--data, --data-string, or --data-length这些参数,强制发送payload。

Repose ICMP port unreachable error (type 3, code 3):closed
ICMP unreachable errors (type 3, codes 0, 1, 2, 9, 10, or 13):filtered
Repose UDP packet:open
No-repose:open|filtered

版本检测(-sV)可用于帮助区分真正开放的端口和过滤的端口。因为open|filtered端口会被进一步调用,发送若干服务探测Probes。

UDP扫描面临的一大挑战是快速完成。

Open|filtered端口很少发送任何响应,使Nmap超时,然后进行重新传输,以防探测或响应丢失。

Closed端口也很麻烦,因为很多主机默认限制ICMP unreachable的发送速度。Linux和Solaris就很严格:Linux 2.4.20 kernel限制每秒1个,65535个Port需要扫描18个小时。

所以,并发扫描+扫描知名端口,并使用--host-timeout to skip slow hosts。

-sY (SCTP INIT scan)

SCTP属于新的传输层协议,2000年10月份才成为RFC规范。目前应用并不广泛。SCTP作为一个传输层协议,SCTP兼有TCP及UDP两者的特点。SCTP可以称为是TCP的改进协议,但它们之间仍然存在着较大的差别。主要用于SS7 / SIGTRAN相关服务,但也有可能用于其他应用程序。

SCTP INIT扫描等于TCP SYN扫描,只不过-sS发送TCP SYN报文,-sY发送SCTP INIT chunk。

Repose INIT-ACK chunk:open
Repose ABORT chunk:closed
No repose | ICMP unreachable error (type 3, code 0, 1, 2, 3, 9, 10, or 13):filtered

缺点:SCTP协议目前应用很较少,不建议使用

-sZ (SCTP COOKIE ECHO scan)

扫描原理:在open端口上SCTP会静默丢弃包含 COOKIE ECHO chunks(块)的包文,而closed端口会响应ABORT chunks。

No repose:open|filtered
Repose ABORT chunk:closed
ICMP unreachable error (type 3, code 0, 1, 2, 3, 9, 10, or 13):filtered

优点:1、比INIT更隐秘;2、可绕过blocking INIT包的firewall rulesets;

缺点:1、无法区分open和filtered状态端口;2、sctp协议应用不广泛。

不建议使用

-sO (IP protocol scan)

IP协议扫描,总共256种(8位协议,2^8种)IP协议,如:ICMP:1,TCP:6,UDP:17。

这里通过-p指定的不再是Port而是IP协议号。多数情况下,发送标记protocol号的IP空包,只有ICMP、IGMP、TCP、UDP、SCTP会带有响应协议的包头。

Repose 对应协议的回包:open

Repose ICMP protocol unreachable error (type 3, code 2):closed

Repose ICMP port unreachable (type 3, code 3):open

Repose ICMP unreachable errors (type 3, code 0, 1, 9, 10, or 13):filtered

No repose:open|filtered

-b <FTP relay host> (FTP bounce scan)

扫描原理:FTP协议(RFC 959)的一个有趣特性是支持所谓的代理FTP连接。这允许用户连接到一个FTP服务器,然后要求将文件发送到第三方服务器。

此功能被滥用之一是导致FTP服务器端口扫描其他主机。

目前,大多数机器已经停止支持该功能。

-p <port ranges> (Only scan specified ports)

specify -p- to scan ports from 1 through 65535.

如果是-sO做IP协议扫描,则该参数指定的是0-255个协议号。

我们知道,TCP扫描类型、UDP扫描类型、SCTP扫描类型、IP扫描类型可以组合的,如果组合在一起,我们怎么指定端口和协议号呢?

nmap --disable-arp-ping -n -Pn -T4 --packet-trace -sSUZ -sO -p T:1-1000,U:123,S:80,P:6 192.168.11.109

这里-sO目前必须是单独扫描,所以就得改成:

nmap --disable-arp-ping -n -Pn -T4 --packet-trace -sSUZ -p T:1-1000,U:123,S:80 192.168.11.109

按照nmap-services中服务名指定,可以使用?和*通配符。---- 不推荐如此使用

-p ftp,http*

-p [-1024] 等同于 -p1-1024

--exclude-ports <port ranges> (Exclude the specified ports from scanning)

指定扫描是希望nmap排除的端口,如果扫描类型是-sO,则为希望排除的IP协议号。

生效阶段:主机发现、端口扫描

端口扫描:指定后在所有类型的扫描中均会排除指定的端口。

-F (Fast (limited port) scan)

快速扫描。默认情况下nmap扫描1000个端口,这里只扫描100个。

根据Well Known Port List :nmap-services中的使用频率过滤出来的。

-r (Don't randomize ports)

Nmap默认随机扫描端口。这里指定nmap顺序扫描端口。

--port-ratio <ratio><decimal number between 0 and 1>

指定出现比率大于指定值的端口,取值范围0.0-1.0。

--top-ports <n>

除去--exclude-ports指定的端口后,扫描出现比率最高的前n个端口,这里n必须大于等于1。

--open (Show only open (or possibly open) ports)

只作用于端口扫描

--reason (Host and port state reasons)

作用于端口扫描和主机发现

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值