ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

网络扫描工具Nmap和Zenmap:简介、命令行解读、实战

网络扫描工具Nmap和Zenmap:简介、命令行解读、实战 需求获取局域网所有设备的IP地址。本文记录围绕上述需求学到的技术。Nmap官网Network Mapper缩写C/C/Lua等语言实现、开源GitHub13.5K Star2.9K Fork跨平台网络扫描和安全审计工具支持主机发现、端口探测、服务识别、操作系统类型和版本识别、漏洞检测等功能。功能目标指定基础目标格式支持主机名、IP、网段等多种格式灵活适配不同扫描场景单个目标scanme.nmap.org域名、192.168.199.107IP网段目标microsoft.com/24CIDR格式、192.168.0.1;10.0.0-255.1-254分号分隔多网段范围目标192.168.199.1-100IP范围目标筛选参数参数功能描述实战示例-iL inputfilename从文件读取目标列表每行一个目标nmap -iL targets.txttargets.txt含192.168.199.1、[scanme.nmap.org]、(https://scanme.nmap.org/ “scanme.nmap.org”)等-iR num hosts随机选择指定数量的目标扫描nmap -iR 50 -p 80随机扫描50个主机的80端口适合批量探测--exclude host1,host2排除指定目标支持单个/多个/网段nmap 192.168.199.0/24 --exclude 192.168.199.1,192.168.199.107排除网关和特定主机--excludefile exclude_file从文件读取需排除的目标nmap 192.168.199.0/24 --excludefile exclude.txtexclude.txt含需跳过的IP主机发现用于判断目标主机是否在线避免扫描离线主机浪费时间官方帮助多种探测方式参数功能描述适用场景示例-sL仅列出目标列表不探测存活验证目标范围是否正确如避免误扫外部网络nmap -sL 192.168.199.0/24-snPing扫描跳过端口扫描迅速排查局域网在线设备nmap -sn 192.168.199.0/24显示所有Status: Up的主机-Pn跳过主机发现默认所有目标在线目标开启防火墙屏蔽Ping如服务器需强制扫描端口nmap -Pn 192.168.199.107 -p 22-PS [portlist]TCP SYN探测默认443端口绕过拦截ICMP的防火墙nmap -PS22,80 192.168.199.107用22、80端口SYN包探测存活-PA [portlist]TCP ACK探测默认80端口检测对ACK包有响应的主机nmap -PA443 192.168.199.107-PU [portlist]UDP探测默认40125端口探测路由器、IoT设备多响应UDP包nmap -PU53 192.168.199.1用DNS 53端口探测网关-PY [portlist]SCTP探测针对支持SCTP协议的主机如电信设备nmap -PY3847 192.168.199.200-PEICMP Echo请求类似环境ping常规网络环境准确性高nmap -PE 192.168.199.0/24-PPICMP时间戳请求部分禁止Echo请求的环境如企业防火墙nmap -PP 192.168.199.107-PMICMP子网掩码请求探测路由器等网络设备返回子网掩码信息nmap -PM 192.168.199.1-PO [protocol list]IP协议探测支持ICMP/TCP/UDP复杂网络多协议组合验证存活nmap -POicmp,tcp 192.168.199.107--traceroute追踪到目标的路由路径否在局域网内就是排查网络跳转节点如判断目标nmap -sn --traceroute 192.168.199.107域名解析控制参数功能描述适用场景示例-n禁用DNS解析不获取主机名提速网络环境中DNS服务器不稳定或响应缓慢希望快速结束扫描对IP地址进行批量扫描无需获取主机名信息的场景nmap -n 192.168.199.0/24-R强制DNS解析所有目标获取主机名需准确获取目标主机名称以便进一步定位或识别主机身份在安全审计或网络管理中需要将IP与主机名对应记录的场景nmap -R 192.168.199.107--dns-servers serv1,serv2指定自定义DNS如谷歌8.8.8.8系统默认DNS解析不准确或无法解析目标需绕过本地DNS服务器使用更可靠的公共DNS服务器进行解析nmap --dns-servers 8.8.8.8,114.114.114.114 scanme.nmap.org--system-dns应用系统默认DNS解析对解析结果依赖本地网络配置在信任本地DNS服务器且网络环境稳定希望使用默认配备快速执行扫描的场景nmap --system-dns 192.168.199.107扫描技术根据协议和探测方式分类适配不同端口类型和防火墙环境TCP扫描最常用参数扫描类型原理适用场景示例-sSTCP SYN扫描半开扫描发送SYN包收到SYN-ACK即判定端口开放不建立完整连接隐蔽性高避免目标日志记录完整连接nmap -sS 192.168.199.107 -p 22-sTTCP Connect扫描全连接建立完整TCP三次握手无raw socket权限如普通用户兼容性好nmap -sT 192.168.199.107 -p 80-sATCP ACK扫描发送ACK包通过RST包判断端口状态探测防火墙规则如哪些端口被过滤nmap -sA 192.168.199.107 -p 1-1000-sWTCP Window 扫描基于TCP窗口大小判断端口开放补充-sA扫描提高准确性仅对部分体系有效nmap -sW 192.168.199.107-sMTCP Maimon扫描发送FIN/ACK包利用系统响应差异部分Linux系统可识别隐蔽性较好nmap -sM 192.168.199.107-sNTCP Null扫描不设置TCP标志位利用RFC 793漏洞对遵循RFC的架构有效如BSDnmap -sN 192.168.199.107-sFTCP FIN扫描仅设置FIN标志位规避基础端口扫描检测nmap -sF 192.168.199.107-sXTCP Xmas扫描设置FIN、PSH、URG标志位探测对标志位敏感的防火墙nmap -sX 192.168.199.107--scanflags flags自定义TCP标志位手动组合标志如SYNFIN高级场景定制扫描特征nmap --scanflags SYN,FIN 192.168.199.107其他协议扫描参数扫描类型功能描述示例-sUUDP扫描探测UDP端口如DNS 53、SNMP 161耗时较长nmap -sU 192.168.199.1 -p 53,161-sOIP协议扫描探测目标支持的IP协议如ICMP、TCP、UDPnmap -sO 192.168.199.107-sYSCTP INIT扫描类似TCP SYN扫描针对SCTP协议端口nmap -sY 192.168.199.200 -p 3847-sZSCTP COOKIE-ECHO扫描基于SCTP COOKIE机制隐蔽性高nmap -sZ 192.168.199.200-b FTP relayFTP弹跳扫描通过FTP代理扫描目标隐藏真实 IPnmap -b ftp://user:pass192.168.199.5 192.168.199.107需FTP服务器支持空闲扫描高级隐蔽参数功能描述示例-sI zombie[:port]利用僵尸主机扫描隐藏真实IPnmap -sI 192.168.199.6:80 192.168.199.107用192.168.199.6作为僵尸主机端口设置与扫描顺序端口指定与过滤参数功能描述示例-p port ranges指定扫描端口拥护TCP/UDP/SCTP区分-p 22TCP 22、-p U:53,T:80-443,S:9UDP 53 TCP 80-443 SCTP 9--exclude-ports port ranges排除指定端口nmap -p 1-1000 --exclude-ports 22,80 192.168.199.107-F快速扫描仅预设100个常用端口nmap -F 192.168.199.107适合快速排查常见服务--top-ports number扫描指定数量的常用端口nmap --top-ports 200 192.168.199.107扫描前200个高频端口--port-ratio ratio扫描使用频率高于指定比例的端口nmap --port-ratio 0.2 192.168.199.107扫描使用频率20%的端口扫描顺序控制参数功能描述示例-r按端口号顺序扫描默认随机nmap -r 192.168.199.107 -p 1-100按 1→2→…→100 顺序扫描默认随机扫描端口降低扫描行为特征nmap 192.168.199.107 -p 1-1000服务与版本探测精准识别端口对应的服务类型与版本协助判断漏洞风险参数功能描述示例-sV启用服务版本探测nmap -sV 192.168.199.107显示如22/tcp open ssh OpenSSH 8.0--version-intensity level设置探测强度0-9默认5nmap -sV --version-intensity 9 192.168.199.107最精准耗时最长适合深度探测--version-light轻量探测强度2快速nmap -sV --version-light 192.168.199.0/24批量扫描时提速--version-all全量探测强度9尝试所有探针nmap -sV --version-all 192.168.199.107对服务版本识别有严格要求时使用--version-trace显示版本探测的详细过程调试用nmap -sV --version-trace 192.168.199.107查看探测包交互细节脚本扫描基于Nmap脚本引擎NSE扩展扫描效果漏洞检测、信息收集等官方内置数百个脚本参数功能描述示例-sC运行默认脚本集等价于--scriptdefaultnmap -sC 192.168.199.107基础漏洞检测 服务配置查看--scriptscripts指定脚本 / 脚本类别逗号分隔--script ssh-bruteSSH 弱密码破解、--script vuln所有漏洞检测脚本、--script http-enum,http-vuln-cve2021-41773HTTP 目录枚举 Apache 漏洞检测--script-args n1v1,n2v2给脚本传递参数nmap --script http-brute --script-args userdbuser.txt,passdbpass.txt 192.168.199.107指定爆破的用户名 / 密码字典--script-args-file filename从文件读取脚本参数nmap --script http-brute --script-args-file brute-args.txt 192.168.199.107--script-trace显示脚本发送 / 接收的所有数据调试nmap --script http-enum --script-trace 192.168.199.107查看HTTP请求/响应细节--script-updatedb更新脚本数据库新增脚本后执行nmap --script-updatedb确保NSE识别新添加的脚本--script-help scripts查看脚本帮助信息nmap --script-help ssh-brute了解ssh-brute脚本的用法和参数操作系统探测通过分析目标主机的网络特征判断其运行的操作系统类型与版本的技术。主要依托TCP/IP协议栈指纹如TTL值、窗口大小、默认端口开放情况、服务响应信息等精准识别Windows、Linux等架构及具体版本为网络管理资产清查、安全测试漏洞匹配献出核心依据是网络运维与安全防护的基础步骤。参数功能描述使用场景示例-O启用操作系统检测当得了解目标主机的操作系统类型以便进一步制定攻击策略或系统配置时运用nmap -O 192.168.1.100--osscan-limit将操作系统检测限制在可能的目标上扫描大量主机时为提高效率仅对疑似存在主机的目标进行操作系统检测nmap --osscan-limit 192.168.1.0/24--osscan-guess更积极地猜测操作系统当常规检测难以确定操作系统类型需要更激进的推测时使用nmap --osscan-guess 192.168.1.120时间与性能用于控制扫描的时间节奏与运行效率平衡扫描速度与隐蔽性/资源占用适配不同网络环境与扫描需求。参数功能描述使用场景示例-T0-5设置时间模板数值越高速度越快根据网络环境和扫描需求调整扫描速度如快速扫描启用-T5隐蔽扫描启用-T0nmap -T4 192.168.1.0/24--min-hostgroup/max-hostgroup size设置并行主机扫描组大小扫描大量主机时控制并行扫描的主机数量避免网络拥堵nmap --min-hostgroup 10 --max-hostgroup 50 192.168.1.0/16--min-parallelism/max-parallelism numprobes控制探测并行度调整探测请求的并行数量平衡扫描速度和资源消耗nmap --min-parallelism 10 --max-parallelism 50 target.com--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout time指定探测往返时间网络状况不佳时调整探测响应时间阈值防止误判nmap --min-rtt-timeout 500ms --max-rtt-timeout 2s 192.168.1.1--max-retries tries限制端口扫描探测重传次数避免因网络波动导致过多的重复探测请求nmap --max-retries 3 192.168.1.0/24--host-timeout time设置目标主机超时时间长时间无响应的主机自动放弃扫描提高整体效率nmap --host-timeout 10m 192.168.1.0/16--scan-delay/--max-scan-delay time调整探测间隔时间为降低扫描对目标网络的影响增加探测间隔nmap --scan-delay 1s 192.168.1.10--min-rate number限制每秒发送数据包的最小速率确保扫描在一定速度下进行防止速度过慢nmap --min-rate 100 192.168.1.0/24--max-rate number限制每秒发送数据包的最大速率避免扫描流量过大引起网络拥塞或被防火墙发现nmap --max-rate 500 192.168.1.0/16防火墙、IDS绕过与欺骗防火墙FIREWALL和入侵检测系统IDS的绕过与欺骗EVASION AND SPOOFING技术旨在通过各种手段绕过防火墙的访问控制和IDS的检测机制参数功能描述使用场景示例-f; --mtu val对数据包进行分片可指定 MTU 值绕过防火墙对完整数据包的检测规则nmap -f 192.168.1.100或nmap --mtu 1400 192.168.1.1-D decoy1,decoy2[,ME],...采用诱饵 IP 隐藏扫描行为隐藏真实扫描源 IP防止被目标系统追踪nmap -D 192.168.1.10,192.168.1.20,ME 192.168.1.50-S IP_Address伪装源地址模拟其他 IP 地址进行扫描实现匿名扫描nmap -S 10.0.0.1 192.168.1.100-e iface使用指定网络接口当主机有多网卡时指定特定网卡进行扫描nmap -e eth0 192.168.1.0/24-g/--source-port portnum使用指定端口号作为源端口绕过防火墙对特定源端口的过滤规则nmap -g 53 192.168.1.10或nmap --source-port 80 192.168.1.1--proxies url1,[url2],...通过 HTTP/SOCKS4 代理中继连接隐藏真实 IP 地址绕过网络访问限制nmap --proxies http://proxy1.example.com,http://proxy2.example.com 192.168.1.100--data hex string在发送的数据包中附加自定义十六进制负载自定义扫描特征绕过基于特征的检测nmap --data 01020304 192.168.1.1--data-string string在发送的数据包中附加自定义ASCII字符串同样用于自定义扫描特征nmap --data-string testscan 192.168.1.10--data-length num在发送的数据包中附加随机数据增加数据包长度干扰检测机制nmap --data-length 100 192.168.1.0/24--ip-options options发送带有指定IP选项的数据包进行特定的IP协议测试或绕过防护机制nmap --ip-options rr 192.168.1.1--ttl val设置IP生存时间字段伪装数据包的路由特征绕过基于TTL的检测nmap --ttl 64 192.168.1.100--spoof-mac mac address/prefix/vendor name伪装MAC地址绕过基于MAC地址的访问控制或检测nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1或nmap --spoof-mac Apple 192.168.1.10--badsum发送带有虚假TCP/UDP/SCTP校验和的数据包干扰基于校验和的检测机制nmap --badsum 192.168.1.0/24输出控制管理扫描结果的输出形式、保存方式与展示内容方便用户查看、分析或后续二次处理扫描数据。参数功能描述使用场景示例-oN/-oX/-oS/-oG file分别以普通、XML、srIpt kIddi3和 Grepable 格式输出扫描结果到指定文件根据后续分析需求选择合适的输出格式如XML格式便于解析-oA basename同时以三种主要格式输出结果方便以多种方式查看和分析扫描结果nmap -oA myscan 192.168.1.0/24-v增加详细程度可使用-vv或更多获取更多信息需要查看更详细的扫描过程和结果信息时使用nmap -vv 192.168.1.1-d增加调试级别可使用-dd或更多获取更多信息排查扫描过程中的障碍获取调试信息nmap -dd 192.168.1.10--reason显现端口处于特定状态的原因分析端口状态时了解导致该状态的具体原因nmap --reason 192.168.1.100--open仅显示开放或可能开放的端口快速查看目标主机开放的端口提高效率nmap --open 192.168.1.0/24--packet-trace显现所有发送和接收的数据包分析网络通信过程排查问题nmap --packet-trace 192.168.1.1--iflist打印主机接口和路由信息用于调试检查网络接口和路由配置是否正确nmap --iflist--append-output将结果追加到指定输出文件而不是覆盖多次扫描同一目标并保留所有结果时使用nmap --append-output -oN scan.log 192.168.1.10--resume filename恢复中断的扫描扫描过程因各种原因中断后继续未完成的扫描nmap --resume incomplete_scan.nmap 192.168.1.0/24--noninteractive禁用通过键盘进行运行时交互自动化脚本执行扫描避免人工干预nmap --noninteractive 192.168.1.100--stylesheet path/URL指定 XSL 样式表将 XML 输出转换为 HTML将 XML 格式的扫描结果转换为便于查看的 HTML 页面nmap --stylesheet mystyle.xsl -oX scan.xml -oA myscan 192.168.1.1--webxml从Nmap.Org引用样式表以获得更便携的 XML确保 XML 输出符合标准格式便于在不同环境使用nmap --webxml -oX scan.xml 192.168.1.100--no-stylesheet防止将XSL样式表与XML输出关联不需要对XML输出进行样式转换时运用nmap --no-stylesheet -oX scan.xml 192.168.1.1辅助操作MISC是Nmap中整合非核心但实用功能的模块涵盖扫描环境适配、权限控制、版本查询等辅助运行用于补充核心扫描特性适配特殊场景需求。参数功能描述使用场景示例-6启用 IPv6 扫描扫描 IPv6 地址的主机nmap -6 2001:db8::1-A启用操作系统检测、版本检测、脚本扫描和路由追踪进行全面的主机探测获取详细信息nmap -A 192.168.1.100--datadir dirname指定自定义 Nmap 数据文件位置当默认数据文件位置不可用时指定新路径nmap --datadir /custom/nmap/data 192.168.1.1--send-eth/--send-ip利用原始以太网帧或 IP 数据包发送根据网络环境选择合适的数据包发送方式nmap --send-eth 192.168.1.10或nmap --send-ip 192.168.1.1--privileged假设用户具有完全权限当用户实际拥有完全权限加快扫描速度nmap --privileged 192.168.1.0/24--unprivileged假设用户缺少原始套接字权限用户权限受限情况下进行扫描nmap --unprivileged 192.168.1.100-V打印版本号查看当前 Nmap 软件的版本信息nmap -V-h打印帮忙摘要页面查看 Nmap 命令的利用帮助nmap -h扫描示例nmap-v-Ascanme.nmap.org nmap-v-sn192.168.0.0/1610.0.0.0/8 nmap-v-iR10000-Pn-p80实战打开官网选择对应的操作系统如Windows则下载nmap-7.991-setup.exe文件安装双击安装即可。下图可看到围绕着Nmap一系列工具Npcap、Ncat、Nping、Ndiff、Zenmap。安装成功后将安装目录如D:\Program\Nmap添加到环境变量则可在任何位置打开命令行使用nmap命令nmap -sn 192.168.4.0/24初步能满足期望效果Npcap专为Windows开发的一款网络抓包SDK提供被应用程序调用的库文件和系统驱动程序。功能可以得到原始raw网络数据即未经过 TCP/IP 协议栈的数据也就是网卡收到的数据设置接收过滤器这样收到的数据就是我们感兴趣的数据比如某个端口的数据发送原始raw网络数据的功能ZenmapNmap官方推出、免费开源跨平台Linux、Windows、Mac OS X、BSD等GUI应用程序旨在让Nmap对初学者更友好也为经验丰富的Nmap用户提供高级功能。常用扫描可保存为配置文件以便于重复运行。命令创建器允许交互式创建Nmap命令行。扫描结果可保存并稍后查看。保存的扫描结果可相互比较以查看它们之间的差异。最近扫描的结果存储在可搜索的数据库中。实战在Windows下安装Zenmap时需先安装Npcap。上面安装Nmap时默认勾选即安装Zenmap一看图标就知道是Python GUI程序源码也在Nmap下
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进