Zenmap 扫不出漏洞。检查它压根没这功能。安全
很多人把 Zenmap 当成漏洞扫描器,漏洞打开界面输入目标 IP,和隐患点 Scan,检查等进度条走完,安全看着满屏端口列表,漏洞以为自己在做安全评估。和隐患实际上你拿到的检查只是一张地图——哪些门开着,门后可能是安全什么服务。门锁有没有坏、漏洞钥匙是和隐患不是插在锁上,Zenmap 不知道。检查
Nmap 的安全定位是端口扫描和主机发现。Zenmap 是漏洞它的图形前端,把命令行参数变成下拉菜单和勾选框。它能告诉你 22 端口跑着 OpenSSH 8.2,但不会告诉你这个版本有没有 CVE-2023-38408。你能看到 445 端口开着 SMB,但共享目录能不能匿名访问,它管不着。
用 Zenmap 做安全排查,核心思路是把它当侦察兵用,不是审计员。
扫之前先想清楚要什么。默认的 Intense scan 会跑 SYN 扫描加版本探测加操作系统识别加 traceroute,动静大,容易被防火墙拦。内网排查可以用 -sS -sV -O,外网目标建议先 -sS -Pn 看看存活,再决定要不要加 -sV。
版本探测是关键一步。加 -sV 之后,Nmap 会尝试跟服务握手,抓 banner,匹配指纹库。比如扫出来 Apache httpd 2.4.49,这个版本有路径穿越漏洞,CVE-2021-41773。扫出来 vsftpd 2.3.4,笑脸后门,直接能拿 shell。扫出来 OpenSSH 7.4,可能受 CVE-2018-15473 影响,能枚举用户名。这些信息 Zenmap 给你了,但漏洞本身要你自己去查。
NSE 脚本才是 Zenmap 里最接近“检查隐患”的东西。Nmap Scripting Engine 有一堆现成脚本,分类包括 auth、vuln、exploit、discovery。在 Zenmap 的 Profile 里可以手动加 --script 参数。比如 --script vuln 会跑所有漏洞检测类脚本,--script smb-vuln-ms17-010 专门查永恒之蓝,--script http-shellshock 查 Shellshock。这些脚本会主动发探测包,根据响应判断目标是否存在已知漏洞。
但 NSE 脚本覆盖的漏洞有限。它更像一个快速体检,不是全身 CT。很多逻辑漏洞、配置错误、权限问题,脚本查不出来。比如 Web 应用里的越权访问、SQL 注入、文件上传绕过,Nmap 不干这活。
我一般分三步走。
第一步,快速扫描。用 nmap -sS -Pn -T4 --top-ports 1000 目标,先看开放端口分布。如果只开了 80 和 443,那重点在 Web 层面。如果开了 3389、445、1433,那 Windows 侧的风险要优先看。
第二步,版本和脚本。针对开放端口加 -sV -sC,-sC 跑默认脚本集,包括一些基础发现和轻量检查。比如 HTTP 的 title、robots.txt、SMB 的 OS 发现、SSL 证书信息。这一步能拿到不少配置层面的线索。
第三步,定向漏洞脚本。根据前两步结果,选对应脚本。看到 SMB 就加 --script smb-vuln-*,看到 HTTP 就加 --script http-vuln-*,看到 SSL 就加 --script ssl-*。Zenmap 的 Profile 编辑器里可以保存这些组合,下次直接调用。
Zenmap 查不了 Web 漏洞。SQL 注入、XSS、CSRF、文件包含、反序列化,这些需要专门工具,比如 Burp Suite、sqlmap、OWASP ZAP。它查不了业务逻辑漏洞。密码找回绕过、支付金额篡改、越权查看订单,这些得手工测。它查不了弱口令。Nmap 有 --script brute 系列,但效率低,容易锁账号,不如用 hydra 或 medusa 定向爆破。
它也不做合规检查。等保要求里的日志审计、访问控制、数据加密,Nmap 给不了答案。
所以正确的用法是:Zenmap 负责画网络拓扑和端口地图,NSE 脚本做一轮已知漏洞快筛,剩下的交给专业工具和人工。把它当起点,别当终点。扫完看到一堆开放端口和版本号,去 CVE 数据库、Exploit-DB、厂商安全公告里对一遍,比盯着 Zenmap 界面发呆有用得多。
最后提醒一句:别拿 Zenmap 扫不属于你的目标。未经授权的扫描,在某些地区算违法行为。内网自查也要先走审批流程,别手快点了扫描。