# 读取文件扫描,一行一个,可以是主机名或者网段。
nmap -iL target.txt
# 随机选择 5 个目标进行扫描。模拟对网络中随机主机的扫描,以便评估网络安全性。
nmap -iR 5
# 排除在扫描范围之外的主机或网络。
nmap 192.168.1.0/24 --exclude 192.168.1.1
nmap 192.168.1.0/24 --exclude 192.168.1.1-50
nmap 192.168.1.0/24 --exclude 192.168.1.128/25
nmap 192.168.1.0/24 --excludefile excluded_hosts.txt
# 主机存活扫描,不会进行端口扫描或发送任何探测数据包。
nmap -sL 192.168.1.0/24
# 只执行Ping扫描
nmap -sn 192.168.1.0/24
# 这将直接对 192.168.1.100 进行端口扫描,而不发送任何主机发现探测包。
nmap -Pn 192.168.1.0/24
# -PS 发送 TCP SYN 包。这是 nmap 默认使用的扫描技术,它发送一个 TCP SYN 包到目标端口,如果收到 SYN/ACK 响应,则表示端口开放。
# -PA 参数用于发送 TCP ACK 包。这种扫描技术用于确定目标主机是否存活,以及用于绕过一些防火墙规则。它发送一个 TCP ACK 包到目标端口,如果收到 RST 响应,则表示端口关闭。
# -PU 参数用于发送 UDP 包。这种扫描技术用于扫描目标主机上的 UDP 端口。它发送一个 UDP 包到目标端口,如果收到 ICMP 端口不可达消息,则表示端口关闭。
# -PY 参数用于发送 SCTP INIT 包。这种扫描技术用于扫描 SCTP 端口。它发送一个 SCTP INIT 包到目标端口,如果收到 INIT ACK 响应,则表示端口开放。
nmap -PS -PA -PU -PY 192.168.1.100
# -PE 发送 ICMP Echo 请求到目标主机,如果收到 ICMP Echo Reply 响应,则表示目标主机是活跃的。
# -PP 发送 ICMP Timestamp 请求到目标主机,如果收到 ICMP Timestamp Reply 响应,则表示目标主机是活跃的。
# -PM 发送 ICMP Address Mask 请求包。如果收到 ICMP Address Mask Reply 响应,则表示目标主机是活跃的。
nmap -PE -PP -PM 192.168.1.0/24
# 不发送探测包,假定主机是活跃的,并对其进行端口扫描。
nmap -PO 192.168.1.100
# -n 禁用 DNS正向解析。
# -R 启用DNS反向解析。
nmap -n -R 192.168.1.0/24
# --dns-servers 指定一个或多个逗号分隔的 DNS 服务器地址。
# --system-dns 使用系统当前配置的默认 DNS 服务器进行主机名解析。
nmap --dns-servers 8.8.8.8,8.8.4.4 192.168.1.0/24
nmap --system-dns 192.168.1.0/24
# --traceroute 它会在执行端口扫描的同时,尝试确定到目标主机的路径,并显示每一跳(hop)的路由信息。
nmap --traceroute target
# 发送一个 SYN 数据包到目标端口,返回 SYN/ACK 响应,表示相应的端口是开放的;如果返回 RST 响应,表示相应的端口是关闭的。
nmap -sS target
# TCP全连接扫描
nmap -sT target
# 发送一个 ACK 数据包到目标端口。
返回 RST 响应,表明该端口是关闭的。
没响应,端口被过滤,有可能是开放的。
回一个 RST/ACK 响应,表明该端口是被防火墙过滤的。
nmap -sA target
# 发送一个SYN包,然后在收到SYN/ACK响应后,不像通常的扫描技术那样回复ACK,而是发送RST包来终止连接。不常用。
nmap -sM target
# UDP扫描
nmap -sU target
# 发送一个没有任何标志位(Null)设置的TCP数据包。如果目标端口是关闭的,它应该发送一个RST响应。
nmap -sN target
# 发送FIN标志的TCP数据包。如果目标端口是关闭的,它应该发送一个RST响应。
nmap -sF target
# Nmap发送一个带有FIN、URG和PSH标志位设置的TCP数据包。如果目标端口是关闭的,它应该发送一个RST响应。
nmap -sX target
# 手动设置TCP扫描的标志位。例如 SYN、ACK、FIN、URG、PSH 和 RST。
nmap --scanflags <flags> target
nmap --scanflags SA target # 可以组合使用,SA=SYN+ACK
# 进行“IDLE扫描”。IDLE扫描利用目标主机上的开放端口来隐藏扫描者的身份,从而实现匿名扫描。
nmap -sI zombie_host target
# 执行SYN扫描。响应一个RST(复位)数据包,表示该端口是关闭的;如果目标主机不响应,或者响应一个SYN/ACK数据包,表示该端口是开放的。
nmap -sY target
# 通过指定的代理执行扫描。
nmap -sT -b <proxyurl> <target>
# 指定扫描端口。
nmap -p 80 <target>
nmap -p 1-100 <target>
nmap -p 80,443,8080 <target>
# 在扫描中排除端口。
nmap --exclude-ports 80,443 <target>
nmap --exclude-ports 1-100 <target>
# 执行快速扫描。通常是 100 个端口。
nmap -F <target>
# 启用“递归扫描”,也称为“追踪路由”。报告每个跃点的路由信息。
nmap -r <target>
# 扫描的前 N 个常见端口。
nmap --top-ports <number> <target>
# 服务版本检测。
nmap -sV target
# 用于指定服务版本检测的强度级别。0 到 9,数字越高表示检测的强度越大。
nmap --version-intensity 5 target
# 将以一种更快速但不太详细的方式进行服务版本检测。
nmap --version-light target
# 全面的服务版本检测。
nmap --version-all target
# 启用服务版本检测的跟踪模式。在识别目标主机上运行的服务及其版本信息时所执行的具体操作,包括发送的数据包和收到的响应。
nmap --version-trace target
# 执行一系列预定义的脚本来自动化常见的渗透测试任务。
nmap -sC target
# 尝试识别目标主机的操作系统类型。
nmap -O target
# 发送多个探测包来识别目标主机的操作系统类型,这可能需要一定时间。
nmap --osscan-limit target
# 尝试对无法确定的操作系统类型进行猜测。
nmap --osscan-guess target
# 指定扫描强度。
nmap -T4 target
#--min-parallelism <numprobes>: 这个选项允许您指定在扫描期间使用的最小并发探测数。如果目标允许,Nmap 将尝试使用至少这么多的并发连接来加快扫描速度。
nmap --min-hostgroup 10 --max-hostgroup 20 target
#-max-parallelism <numprobes>: 这个选项允许您指定在扫描期间使用的最大并发探测数。即使目标支持更多的并发连接,Nmap 也不会超过这个限制。
nmap --min-parallelism 10 --max-parallelism 20 target
# -min-rtt-timeout <time>: 这个选项允许您指定最小的往返时间(RTT)超时时间。RTT 是指从发送数据包到收到响应所需的时间。指定最小的 RTT 超时时间可以确保在网络响应较快的情况下不会浪费时间等待超时。
# --max-rtt-timeout <time>: 这个选项允许您指定最大的往返时间(RTT)超时时间。指定最大的 RTT 超时时间可以确保在网络响应较慢的情况下不会过早地放弃等待响应。
# --initial-rtt-timeout <time>: 这个选项允许您指定初始的往返时间(RTT)超时时间。在扫描开始时,Nmap 将使用这个初始值,并根据网络响应的情况进行动态调整。
nmap --min-rtt-timeout 300ms --max-rtt-timeout 1000ms --initial-rtt-timeout 500ms target
# 指定尝试的次数。没响应时会重试3次。
nmap --max-retries 3 <target>
# 指定等待响应的时间
nmap --host-timeout 10m <target>
# 扫描间隔1秒。
nmap --scan-delay 1s <target>
# 扫描中最大的延迟时间。
nmap --max-scan-delay 5s <target>
# 每秒至少发送100个数据包的速率进行扫描。
nmap --min-rate 100 <target>
# 使用--max-rate参数来指定最大的扫描速率(x包/秒)。
nmap --max-rate 1000 <target>
# 设置发送的数据包的最大传输单元(MTU)。
nmap -f --mtu 32 <target>
# 用于指定欺骗(decoy)主机,以在进行扫描时混淆目标主机。
nmap -D 10.0.0.1,192.168.1.1,172.16.0.1 <target>
# 指定发送扫描数据包时的源IP地址。
nmap -S 192.168.1.100 <target>
# 指定要发送数据包时使用的网络接口。
nmap -e eth0 <target>
# 发送数据包时使用的源端口号。
nmap -g 80 <target>
# 用于指定通过代理服务器执行扫描时要使用的代理列表。代理服务器允许Nmap通过它们进行扫描,从而隐藏扫描的真实来源。这对于需要匿名执行扫描或需要穿越防火墙的情况非常有用。
nmap --proxies http://proxy1:8080,http://proxy2:8080 <target>
# 指定要包含在发送的数据包中的十六进制字符串。这对于需要在扫描中包含自定义数据或特定的有效载荷时非常有用。
nmap --data "48656C6C6F20576F726C64" <target>
# 用于指定要包含在发送的数据包中的字符串。这对于需要在扫描中包含自定义数据或特定的有效载荷时非常有用。
nmap --data-string "Hello World" <target>
# 指定要发送的数据包的长度。这对于测试网络设备或应用程序的响应以及检测网络上的MTU(最大传输单元)限制非常有用。
nmap --data-length 100 <target>
# 允许发送者在IP数据包头部中包含各种选项,这些选项可以用于各种目的,例如记录路由、时间戳等。
nmap --ip-options "LSRR" <target>
# 指定要发送的数据包的生存时间。
nmap --ttl 64 <target>
# 隐藏真实的MAC地址并发送伪造的MAC地址信息。
nmap --spoof-mac 0A:1B:2C:3D:4E:5F <target>
nmap --spoof-mac Cisco <target> # 伪造的厂商名字来欺骗目标系统。