目 录CONTENT

文章目录

Nmap

Administrator
2025-01-10 / 0 评论 / 0 点赞 / 14 阅读 / 0 字

Nmap 所有主要参数的详细解释,包括基础参数、高级参数、扫描类型、输出设置等:


└─# nmap --help                             
Nmap 7.94SVN ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
---
# Nmap 所有主要参数的详细解释
### TARGET SPECIFICATION:
- 支持的目标格式:主机名、IP 地址、网络范围等。
  - 示例:`scanme.nmap.org`、`microsoft.com/24`、`192.168.0.1; 10.0.0-255.1-254`。
  -iL <inputfilename>:从文件读取目标列表。
  -iR <num hosts>:随机选择指定数量的目标。
  --exclude <host1[,host2][,host3],...>:排除指定的主机或网络。
  --excludefile <exclude_file>:从文件中读取要排除的目标。
---
### HOST DISCOVERY:
  -sL:仅列出目标,不执行扫描。
  -sn:Ping 扫描,仅检测主机存活,不扫描端口。
  -Pn:跳过 Ping 探测,假定所有主机都在线。
  -PS/PA/PU/PY[portlist]:使用 TCP SYN/ACK、UDP 或 SCTP 进行指定端口的探测。
  -PE/PP/PM:ICMP Echo、时间戳和地址掩码探测。
  -PO[protocol list]:IP 协议探测。
  -n/-R:禁用/强制启用 DNS 解析。
  --dns-servers <serv1[,serv2],...>:指定自定义 DNS 服务器。
  --system-dns:使用操作系统默认的 DNS 解析器。
  --traceroute:追踪到目标主机的路由路径。
---
### SCAN TECHNIQUES:
  -sS:TCP SYN 扫描(半开放扫描)。
  -sT:TCP Connect 扫描。
  -sU:UDP 扫描。
  -sA:ACK 扫描,探测防火墙规则。
  -sW:窗口扫描,识别开放端口。
  -sM:Maimon 扫描,绕过防火墙。
  -sN/sF/sX:TCP Null、FIN 和 Xmas 扫描。
  --scanflags <flags>:自定义 TCP 扫描标志。
  -sI <zombie host[:probeport]>:Idle 扫描,利用僵尸主机伪装。
  -sY/sZ:SCTP INIT/COOKIE-ECHO 扫描。
  -sO:IP 协议扫描。
  -b <FTP relay host>:FTP 反弹扫描。
---
### PORT SPECIFICATION AND SCAN ORDER:
  -p <port ranges>:仅扫描指定端口范围(示例:`-p 22` 或 `-p 1-65535`)。
  --exclude-ports <port ranges>:排除指定的端口范围。
  -F:快速扫描模式,扫描默认的常见端口。
  -r:按顺序扫描端口(不随机化)。
  --top-ports <number>:扫描最常见的指定数量端口。
  --port-ratio <ratio>:扫描比率高于指定值的端口。
---
### SERVICE/VERSION DETECTION:
  -sV:探测服务版本。
  --version-intensity <level>:设置探测强度(0-9,默认 7)。
  --version-light:轻量服务探测(强度 2)。
  --version-all:尝试所有探测方法(强度 9)。
  --version-trace:显示探测活动的详细日志。
---
### SCRIPT SCAN:
  -sC:使用默认脚本扫描(等同于 `--script=default`)。
  --script=<Lua scripts>:加载指定脚本或脚本类别。
  - 示例:`--script vuln`。
  --script-args=<n1=v1,...>:为脚本传递参数。
  - 示例:`--script-args user=admin,pass=1234`。
  --script-args-file=filename:从文件中加载脚本参数。
  --script-trace:显示脚本的详细运行日志。
  --script-updatedb:更新脚本数据库。
  --script-help=<Lua scripts>:显示脚本的帮助信息。
---
### OS DETECTION:
  -O:启用操作系统检测。
  --osscan-limit:仅对疑似在线的目标进行操作系统检测。
  --osscan-guess:更积极地猜测操作系统。
---
### TIMING AND PERFORMANCE:
  -T<0-5>:设置扫描速度模板(0 慢,5 快)。
  --min-hostgroup/max-hostgroup <size>:设置主机组大小。
  --min-parallelism/max-parallelism <numprobes>:设置并行探测数量。
  --min-rate/max-rate <rate>:设置最小/最大包发送速率。
  --host-timeout <time>:指定单目标的超时时间。
  --scan-delay/--max-scan-delay <time>:调整探测间隔时间。
---
### FIREWALL/IDS EVASION AND SPOOFING:
  -f/--mtu <val>:分片数据包。
  -D <decoy1,decoy2[,ME],...>:伪装扫描来源。
  -S <IP_Address>:伪造源地址。
  -e <iface>:指定网络接口。
  -g/--source-port <portnum>:指定源端口。
  --proxies <url1,[url2],...>:通过代理转发连接。
  --data <hex string>:附加自定义负载。
  --data-length <num>:填充随机数据。
  --ttl <val>:设置数据包 TTL 值。
  --spoof-mac <mac address/prefix/vendor name>:伪造 MAC 地址。
---
### OUTPUT:
  -oN/-oX/-oS/-oG <file>:输出普通文本、XML、脚本和 grep 格式文件。
  -oA <basename>:同时输出所有格式。
  -v:提高详细程度。
  -d:增加调试信息。
  --reason:显示端口状态的原因。
  --append-output:追加到现有文件。
  --resume <filename>:从中断处恢复扫描。
  --stylesheet <path/URL>:为 XML 输出设置自定义样式表。
---
### MISC:
  -6:启用 IPv6 扫描。
  -A:启用操作系统检测、版本检测、脚本扫描和路由追踪。
  --datadir <dirname>:指定 Nmap 数据文件位置。
  --send-eth/--send-ip:选择使用以太网帧或 IP 数据包发送。
  --privileged/--unprivileged:强制启用或禁用原始套接字权限。
  -V:打印 Nmap 版本号。
  -h:打印帮助信息。
---
如需进一步深入每个参数的应用场景或具体案例,请告诉我!
EXAMPLES:
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p 80
SEE THE MAN PAGE (https://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
                                              

Nmap 所有主要参数的详细解释

TARGET SPECIFICATION:
支持的目标格式:主机名、IP 地址、网络范围等。
示例:scanme.nmap.org、microsoft.com/24、192.168.0.1; 10.0.0-255.1-254。
-iL :从文件读取目标列表。
-iR :随机选择指定数量的目标。
--exclude <host1[,host2][,host3],...>:排除指定的主机或网络。
--excludefile <exclude_file>:从文件中读取要排除的目标。
HOST DISCOVERY:
-sL:仅列出目标,不执行扫描。
-sn:Ping 扫描,仅检测主机存活,不扫描端口。
-Pn:跳过 Ping 探测,假定所有主机都在线。
-PS/PA/PU/PY[portlist]:使用 TCP SYN/ACK、UDP 或 SCTP 进行指定端口的探测。
-PE/PP/PM:ICMP Echo、时间戳和地址掩码探测。
-PO[protocol list]:IP 协议探测。
-n/-R:禁用/强制启用 DNS 解析。
--dns-servers <serv1[,serv2],...>:指定自定义 DNS 服务器。
--system-dns:使用操作系统默认的 DNS 解析器。
--traceroute:追踪到目标主机的路由路径。
SCAN TECHNIQUES:
-sS:TCP SYN 扫描(半开放扫描)。
-sT:TCP Connect 扫描。
-sU:UDP 扫描。
-sA:ACK 扫描,探测防火墙规则。
-sW:窗口扫描,识别开放端口。
-sM:Maimon 扫描,绕过防火墙。
-sN/sF/sX:TCP Null、FIN 和 Xmas 扫描。
--scanflags :自定义 TCP 扫描标志。
-sI <zombie host[:probeport]>:Idle 扫描,利用僵尸主机伪装。
-sY/sZ:SCTP INIT/COOKIE-ECHO 扫描。
-sO:IP 协议扫描。
-b :FTP 反弹扫描。
PORT SPECIFICATION AND SCAN ORDER:
-p :仅扫描指定端口范围(示例:-p 22 或 -p 1-65535)。
--exclude-ports :排除指定的端口范围。
-F:快速扫描模式,扫描默认的常见端口。
-r:按顺序扫描端口(不随机化)。
--top-ports :扫描最常见的指定数量端口。
--port-ratio :扫描比率高于指定值的端口。
SERVICE/VERSION DETECTION:
-sV:探测服务版本。
--version-intensity :设置探测强度(0-9,默认 7)。
--version-light:轻量服务探测(强度 2)。
--version-all:尝试所有探测方法(强度 9)。
--version-trace:显示探测活动的详细日志。
SCRIPT SCAN:
-sC:使用默认脚本扫描(等同于 --script=default)。
--script=:加载指定脚本或脚本类别。
示例:--script vuln。
--script-args=<n1=v1,...>:为脚本传递参数。
示例:--script-args user=admin,pass=1234。
--script-args-file=filename:从文件中加载脚本参数。
--script-trace:显示脚本的详细运行日志。
--script-updatedb:更新脚本数据库。
--script-help=:显示脚本的帮助信息。
OS DETECTION:
-O:启用操作系统检测。
--osscan-limit:仅对疑似在线的目标进行操作系统检测。
--osscan-guess:更积极地猜测操作系统。
TIMING AND PERFORMANCE:
-T<0-5>:设置扫描速度模板(0 慢,5 快)。
--min-hostgroup/max-hostgroup :设置主机组大小。
--min-parallelism/max-parallelism :设置并行探测数量。
--min-rate/max-rate :设置最小/最大包发送速率。
--host-timeout :指定单目标的超时时间。
--scan-delay/--max-scan-delay :调整探测间隔时间。
FIREWALL/IDS EVASION AND SPOOFING:
-f/--mtu :分片数据包。
-D <decoy1,decoy2[,ME],...>:伪装扫描来源。
-S <IP_Address>:伪造源地址。
-e :指定网络接口。
-g/--source-port :指定源端口。
--proxies <url1,[url2],...>:通过代理转发连接。
--data :附加自定义负载。
--data-length :填充随机数据。
--ttl :设置数据包 TTL 值。
--spoof-mac <mac address/prefix/vendor name>:伪造 MAC 地址。
OUTPUT:
-oN/-oX/-oS/-oG :输出普通文本、XML、脚本和 grep 格式文件。
-oA :同时输出所有格式。
-v:提高详细程度。
-d:增加调试信息。
--reason:显示端口状态的原因。
--append-output:追加到现有文件。
--resume :从中断处恢复扫描。
--stylesheet <path/URL>:为 XML 输出设置自定义样式表。
MISC:
-6:启用 IPv6 扫描。
-A:启用操作系统检测、版本检测、脚本扫描和路由追踪。
--datadir :指定 Nmap 数据文件位置。
--send-eth/--send-ip:选择使用以太网帧或 IP 数据包发送。
--privileged/--unprivileged:强制启用或禁用原始套接字权限。
-V:打印 Nmap 版本号。
-h:打印帮助信息。

Nmap 所有主要参数的详细解释

(目标指定)
TARGET SPECIFICATION:

  • 支持的目标格式:主机名、IP 地址、网络范围等。

    • 示例:scanme.nmap.orgmicrosoft.com/24192.168.0.1; 10.0.0-255.1-254

  • -iL :从文件读取目标列表。

  • -iR :随机选择指定数量的目标。

  • --exclude <host1[,host2][,host3],...>:排除指定的主机或网络。

  • --excludefile <exclude_file>:从文件中读取要排除的目标。


(主机发现)
HOST DISCOVERY:

  • -sL:仅列出目标,不执行扫描。

  • -sn:Ping 扫描,仅检测主机存活,不扫描端口。

  • -Pn:跳过 Ping 探测,假定所有主机都在线。

  • -PS/PA/PU/PY[portlist]:使用 TCP SYN/ACK、UDP 或 SCTP 进行指定端口的探测。

  • -PE/PP/PM:ICMP Echo、时间戳和地址掩码探测。

  • -PO[protocol list]:IP 协议探测。

  • -n/-R:禁用/强制启用 DNS 解析。

  • --dns-servers <serv1[,serv2],...>:指定自定义 DNS 服务器。

  • --system-dns:使用操作系统默认的 DNS 解析器。

  • --traceroute:追踪到目标主机的路由路径。


(扫描技术)
SCAN TECHNIQUES:

  • -sS:TCP SYN 扫描(半开放扫描)。

  • -sT:TCP Connect 扫描。

  • -sU:UDP 扫描。

  • -sA:ACK 扫描,探测防火墙规则。

  • -sW:窗口扫描,识别开放端口。

  • -sM:Maimon 扫描,绕过防火墙。

  • -sN/sF/sX:TCP Null、FIN 和 Xmas 扫描。

  • --scanflags :自定义 TCP 扫描标志。

  • -sI <zombie host[:probeport]>:Idle 扫描,利用僵尸主机伪装。

  • -sY/sZ:SCTP INIT/COOKIE-ECHO 扫描。

  • -sO:IP 协议扫描。

  • -b :FTP 反弹扫描。


(端口指定与扫描顺序)
PORT SPECIFICATION AND SCAN ORDER:

  • -p :仅扫描指定端口范围(示例:-p 22-p 1-65535)。

  • --exclude-ports :排除指定的端口范围。

  • -F:快速扫描模式,扫描默认的常见端口。

  • -r:按顺序扫描端口(不随机化)。

  • --top-ports :扫描最常见的指定数量端口。

  • --port-ratio :扫描比率高于指定值的端口。


(服务与版本探测)
SERVICE/VERSION DETECTION:

  • -sV:探测服务版本。

  • --version-intensity :设置探测强度(0-9,默认 7)。

  • --version-light:轻量服务探测(强度 2)。

  • --version-all:尝试所有探测方法(强度 9)。

  • --version-trace:显示探测活动的详细日志。


(脚本扫描)
SCRIPT SCAN:

  • -sC:使用默认脚本扫描(等同于 --script=default)。

  • --script=:加载指定脚本或脚本类别。

    • 示例:--script vuln

  • --script-args=<n1=v1,...>:为脚本传递参数。

    • 示例:--script-args user=admin,pass=1234

  • --script-args-file=filename:从文件中加载脚本参数。

  • --script-trace:显示脚本的详细运行日志。

  • --script-updatedb:更新脚本数据库。

  • --script-help=:显示脚本的帮助信息。


(操作系统探测)
OS DETECTION:

  • -O:启用操作系统检测。

  • --osscan-limit:仅对疑似在线的目标进行操作系统检测。

  • --osscan-guess:更积极地猜测操作系统。


(时间与性能优化)
TIMING AND PERFORMANCE:

  • -T<0-5>:设置扫描速度模板(0 慢,5 快)。

  • --min-hostgroup/max-hostgroup :设置主机组大小。

  • --min-parallelism/max-parallelism :设置并行探测数量。

  • --min-rate/max-rate :设置最小/最大包发送速率。

  • --host-timeout :指定单目标的超时时间。

  • --scan-delay/--max-scan-delay :调整探测间隔时间。


(防火墙/IDS 绕过与伪装)
FIREWALL/IDS EVASION AND SPOOFING:

  • -f/--mtu :分片数据包。

  • -D <decoy1,decoy2[,ME],...>:伪装扫描来源。

  • -S <IP_Address>:伪造源地址。

  • -e :指定网络接口。

  • -g/--source-port :指定源端口。

  • --proxies <url1,[url2],...>:通过代理转发连接。

  • --data :附加自定义负载。

  • --data-length :填充随机数据。

  • --ttl :设置数据包 TTL 值。

  • --spoof-mac <mac address/prefix/vendor name>:伪造 MAC 地址。


(输出)OUTPUT:

  • -oN/-oX/-oS/-oG :输出普通文本、XML、脚本和 grep 格式文件。

  • -oA :同时输出所有格式。

  • -v:提高详细程度。

  • -d:增加调试信息。

  • --reason:显示端口状态的原因。

  • --append-output:追加到现有文件。

  • --resume :从中断处恢复扫描。

  • --stylesheet <path/URL>:为 XML 输出设置自定义样式表。


(杂项)MISC:

  • -6:启用 IPv6 扫描。

  • -A:启用操作系统检测、版本检测、脚本扫描和路由追踪。

  • --datadir :指定 Nmap 数据文件位置。

  • --send-eth/--send-ip:选择使用以太网帧或 IP 数据包发送。

  • --privileged/--unprivileged:强制启用或禁用原始套接字权限。

  • -V:打印 Nmap 版本号。

  • -h:打印帮助信息。


如需进一步深入每个参数的应用场景或具体案例,请告诉我!

基础参数

1. 主机发现(Host Discovery)

  • -sn:仅主机发现,不进行端口扫描。

  • -Pn:跳过 Ping 探测,假设所有主机存活。

  • -PS:TCP SYN Ping,指定端口。

  • -PA:TCP ACK Ping,指定端口。

  • -PU:UDP Ping,指定端口。

  • -PE:ICMP Echo 请求。

  • -PP:ICMP 时间戳 Ping。

  • -PM:ICMP 地址掩码 Ping。

2. 端口扫描(Port Scanning)

  • -sS:TCP SYN 扫描(半开放扫描)。

  • -sT:TCP Connect 扫描。

  • -sU:UDP 扫描。

  • -sA:ACK 扫描,用于探测防火墙规则。

  • -sW:窗口扫描,识别开放端口。

  • -sM:TCP Maimon 扫描,绕过防火墙。

  • -p:指定扫描的端口范围(例如:-p 80-p 1-1000)。

  • --top-ports:扫描常见的端口(例如 --top-ports 100)。

  • --port-ratio:根据端口比例选择扫描。

3. 服务和版本探测

  • -sV:服务版本探测。

  • --version-intensity:调整服务探测的强度(0-9,默认7)。

  • --version-light:轻量级服务探测。

  • --version-all:尝试所有探测方法。

4. 操作系统与设备探测

  • -O:启用操作系统探测。

  • --osscan-limit:仅扫描疑似在线的主机。

  • --osscan-guess:猜测操作系统。


高级参数

1. 绕过防火墙和 IDS

  • -f:分片数据包。

  • --mtu:设置分片大小。

  • --data-length:在数据包中填充随机数据。

  • --ip-options:设置 IP 选项。

  • --spoof-mac:伪造 MAC 地址(例如 --spoof-mac 0:11:22:33:44:55 或随机值)。

  • --source-port:指定源端口。

  • --badsum:发送校验和错误的数据包。

2. 扫描时间与性能优化

  • -T<0-5>:调整扫描速度(0 为最慢,5 为最快)。

  • --min-rate:设置最小发送包速率(例如 --min-rate 1000)。

  • --max-rate:设置最大发送包速率。

  • --scan-delay:两次扫描之间的最小间隔。

  • --max-scan-delay:设置最大扫描间隔。

  • --host-timeout:设置每个主机的超时时间(例如 --host-timeout 30s)。

  • --min-hostgroup/--max-hostgroup:设置同时扫描的主机数量。

3. 扫描脚本(NSE 脚本引擎)

  • --script :指定使用的脚本(例如 --script vuln)。

  • --script-args:向脚本传递参数(例如 --script-args user=admin,pass=1234)。

  • --script-args-file:从文件中读取脚本参数。

  • --script-trace:显示脚本的运行过程。

  • --script-updatedb:更新脚本数据库。

4. 输出控制

  • -oN <file>:将扫描结果以普通文本格式输出到指定文件中。

  • -oX <file>:将扫描结果以 XML 格式输出到指定文件中。

  • -oS <file>:将扫描结果以 "s|<rIpt kIddi3"(脚本小子风格)格式输出到指定文件中。

  • -oG <file>:将扫描结果以 Grepable(便于 grep 搜索的)格式输出到指定文件中。

  • -oA <basename>:同时将扫描结果保存为上述三种格式(普通文本、XML 和 Grepable),文件名使用指定的 basename 作为前缀。

  • -v:增加输出的详细程度。

    • 使用 -vv 或更多可进一步增加详细程度。

  • -d:增加调试级别输出,用于问题排查。

    • 使用 -dd 或更多以获得更详细的调试信息。

  • --reason:显示端口状态的原因。例如,显示一个端口是开放的原因。

  • --open:仅显示开放端口或可能开放的端口。

  • --packet-trace:显示所有发送和接收的网络数据包,便于调试或深入分析。

  • --iflist:列出主机的网络接口和路由信息,用于调试网络配置。

  • --append-output:将扫描结果附加到指定的输出文件,而不是覆盖已有内容。

  • --resume <filename>:恢复上次中断的扫描,扫描结果将从 <filename> 文件中继续。

  • --noninteractive:禁用扫描过程中的交互操作,适合脚本自动化使用。

  • --stylesheet <path/URL>:指定 XSL 样式表路径或 URL,用于将 XML 输出转换为 HTML 格式。

  • --webxml:在 XML 输出中引用 Nmap 官方提供的样式表(https://nmap.org)。
    这样可以生成更具可移植性的 XML 文件。

  • --no-stylesheet:禁止在 XML 输出中关联 XSL 样式表。


如果你还有其他需求,随时告诉我!

  • -oN :输出普通文本格式到文件。

  • -oX :输出 XML 格式到文件。

  • -oG :输出易于解析的 grepable 格式。

  • -oA :同时生成所有三种格式的输出文件。

  • --append-output:追加扫描结果到现有文件。

  • --resume :从中断的扫描中恢复。

  • --stylesheet :自定义 XML 样式表。

5. 调试与日志

  • -v:启用详细输出模式(可多次使用,如 -vv)。

  • --packet-trace:显示每个发送/接收的包。

  • --open:仅显示开放的端口。

  • --reason:显示端口状态的理由。

  • --stats-every:定期显示扫描统计信息(例如 --stats-every 10s)。

  • --log-errors:记录错误信息。


常见扫描类型与应用场景

1. 存活探测

nmap -sn 192.168.1.0/24

2. 快速扫描(默认扫描 100 个常见端口)

nmap -F 192.168.1.0/24

3. 服务与版本探测

nmap -sS -sV -p 80,443 192.168.1.1

4. 操作系统探测

nmap -O 192.168.1.1

5. 脚本扫描

nmap --script vuln 192.168.1.1

NSE 脚本分类与示例

Nmap Scripting Engine(NSE)分为以下几类:

  • auth:认证相关脚本(例如 smb-brute)。

  • broadcast:局域网广播脚本(例如 broadcast-dhcp-discover)。

  • brute:暴力破解脚本(例如 ftp-brute)。

  • default:默认脚本(例如 default)。

  • discovery:信息发现脚本(例如 dns-brute)。

  • dos:拒绝服务攻击脚本(例如 http-slowloris)。

  • exploit:漏洞利用脚本(例如 http-vuln-cve2017-5638)。

  • external:外部脚本。

  • fuzzer:模糊测试脚本(例如 http-fuzz)。

  • intrusive:侵入性脚本(例如 http-sql-injection)。

  • malware:恶意软件脚本。

  • safe:安全脚本。

  • version:服务版本探测脚本。

  • vuln:漏洞检测脚本。



主机发现的代码算法

Nmap 的主机发现和扫描算法复杂而强大,能够根据网络状况自动调整扫描节奏,确保结果的准确性和效率。通过拥塞控制、往返时间估算、自适应重传等多种算法,Nmap 实现了对大规模网络的高效扫描。此外,用户还可以通过调整 min-rate--max-retries 等参数对扫描行为进行更细致的控制,适应不同的应用场景。

代码机制与包追踪

  • 源代码分析:Nmap 作为一款开源软件,其源代码始终是了解其运行机制的重要资源之一。通过分析源代码,可以追踪每一个细节。然而,对于大多数用户来说,直接研究代码并不是最简单的途径。

  • packet-trace 选项:使用户能够看到工具发送和接收的所有数据包,从而直观地了解其运行细节。

主机发现的分块与 ultra_scan 引擎

  • 分块处理:Nmap 扫描大量主机时,会将这些主机划分为若干块,每一块可以包含多至几百到几千个主机。这些块通过 ultra_scan 进行处理,这是 Nmap 的通用扫描引擎,负责发送、接收和解释数据包。

探测包发送与响应标记机制

  • 扫描时,Nmap 并不会一次性发送所有探测包,而是先发送一个探测包到所有目标主机,等待响应,然后再发送下一个探测包。

  • 当接收到有效响应时,该主机会被标记为“存活”,不再发送额外探测包。

  • 若目标主机在所有探测包重试后仍无响应,则标记为“不可达”。

多种扫描方式与复杂因子处理

  • 支持的扫描方式:包括 SYN、UDP、NULL、FIN、Xmas 等。

  • 处理复杂因子:不仅要考虑端口和主机的并行化问题,还需估算网络延迟、检测数据包丢失等。

状态记录与无状态扫描器对比

  • 与其他一些简单的扫描器不同,Nmap 保存了大量状态信息(如序列号、源/目标端口等),能够识别响应并根据网络情况调整发送速度。

  • 无状态扫描器通过大批量发送数据包的方式虽然可以提高速度,但无法检测到数据包丢失,导致准确性下降。

用户控制的参数设置

  • 用户可通过 min-rate 设置每秒发送的数据包数量,以及 --max-retries 设置最大重传次数。

  • 需谨慎使用这些参数,因为它们可能导致扫描结果不准确。

并行扫描与动态调整

  • Nmap 允许同时扫描多台主机及多个端口,大幅提高了扫描效率。

  • 根据网络状况及用户指定的参数(如 -min-hostgroup-T4),Nmap 会动态调整扫描的并行程度。如果某台主机负载过高,Nmap 会自动减缓对该主机的扫描速度。

RTT 计算与扫描节奏调整

  • 每当收到探测包的响应时,Nmap 会计算从发送到接收的时间(RTT,往返时间)。

  • 根据 RTT 值,Nmap 会更新以下三个时间参数:

    • srtt:平滑的平均往返时间。

    • rttvar:往返时间的偏差。

    • timeout:超时时间。

  • 这些值的计算类似于 TCP 的重传定时算法,帮助 Nmap 动态调整扫描节奏。

拥塞控制算法的关键机制

  • 借鉴了 TCP 中的三个关键机制:

    1. 拥塞窗口:限制同时发送的探测包数量。

    2. 指数回退:在检测到数据包丢失时减缓扫描速度。

    3. 慢启动:逐步增加扫描速度,直至达到最佳网络性能。

拥塞控制与数据包丢失的处理

  • 在拥塞控制中,如果探测包丢失,Nmap 会降低拥塞窗口值。

  • 当网络条件变好时,拥塞窗口长度将缓慢增加,确保不会占用过多网络资源。

  • Nmap 会根据接收到的响应与发送探测包之间的比例调整扫描速度,这在面对大量防火墙过滤时尤为重要。

自适应重传与数据包丢失检测

  • Nmap 根据实际丢包情况进行自适应重传。

    • 丢包率较低时,可能只重传一次探测包。

    • 丢包率较高时,可能重传十次甚至更多。

  • 当达到一定重传次数后,Nmap 会放弃进一步重传,并标记该端口为不可达。

扫描延迟与丢包控制

  • 当响应速率较低时,Nmap 会自动插入扫描延迟。

  • 如果探测包大量丢弃,Nmap 会逐渐增加探测包之间的延迟时间,直至丢包情况减少。

  • 用户可通过 --max-scan-delay 参数限制最大扫描延迟,加快扫描过程。


-.-

0

评论区