Nmap 基础教程:端口扫描与安全检测指南
什么是 Nmap?
Nmap(Network Mapper)传统上被描述为网络发现和安全审计工具。它是一种极其流行的开源工具,用于获取目标信息,特别是在渗透测试的侦查阶段。众所周知,侦查被认为是任何安全评估中最重要的方面之一。
Nmap 是一款强大的开源网络扫描和安全审计工具,广泛用于渗透测试的侦查阶段。 Nmap 的核心功能与常用命令,涵盖基础扫描、端口范围探测、多 IP 批量扫描、IP 段 CIDR 扫描、流行端口检测、文件输入输出、DNS 解析控制、操作系统与服务版本识别、TCP/UDP 协议扫描、CVE 漏洞检测脚本、压力测试及暴力破解场景。文章还包含了与 Nikto 等工具的联动用法,以及 ZenMap 图形界面介绍。重点强调了在使用 Nmap 时必须遵循的安全与道德准则,包括获得授权、最小化影响及合法合规操作,旨在帮助安全从业者掌握网络探测技术并构建可靠的评估报告。

Nmap(Network Mapper)传统上被描述为网络发现和安全审计工具。它是一种极其流行的开源工具,用于获取目标信息,特别是在渗透测试的侦查阶段。众所周知,侦查被认为是任何安全评估中最重要的方面之一。
当您需要建立有关感兴趣的实际目标或 IP 的信息时,该工具非常适合使用。它几乎可以在所有可以想象的平台上运行,如果您下载并安装了 Kali Linux、Parrot OS 或 Backbox 等发行版,Nmap 通常会随这些系统一起提供。
在渗透测试或安全审计中,以下功能将为您提供帮助:
只需键入以下命令即可启动 nmap:
nmap
然后输入 IP 地址,例如:
nmap 1.1.1.1
您也可以扫描特定的主机名,只需替换 IP 为主机名:
nmap hostname.com
注意: 如果您是初学者,这种类型的初始扫描可能是合适的,但请谨慎行事。因为它会相当嘈杂,任何具有良好配置的防火墙都会立即标记此行为并可能阻断您。
默认情况下,Nmap 只扫描最常用的 1000 个端口。要扫描所有可能的端口(1-65535),可以使用 -p 标志:
nmap -p 1-65535 servername
之所以有 65535 个端口,是因为这是 IPv4 协议中可用的最大端口号。
如果您只想扫描特定端口,例如 HTTP (80) 和 HTTPS (443),可以这样操作:
nmap -p 80,443 8.8.8.8
这将检查两个访问端口,以便公众查看网页。普通的 HTML 通常通过端口 80 提供,而 SSL/TLS 加密流量则通过 443。
如果您的客户端有一堆要扫描的域或 IP,您可以在语法末尾附加逗号分隔的列表:
nmap 192.168.1.1,192.168.1.2,192.168.1.3
这将依次扫描列出的所有 IP 地址。
能够扫描整个 IP 范围非常有用。为此,您可以使用 CIDR 表示法(斜杠后跟数字):
nmap 192.168.1.0/24
这表示扫描 192.168.1.0 到 192.168.1.255 范围内的所有主机。CIDR /28 则表示扫描较小的子网范围。
只需点击以下命令即可获得网络上'最受欢迎'且通常打开的端口:
nmap --top-ports 30 192.168.1.106
将'30'替换为要扫描的端口数。通常扫描的常见端口包括:
| 端口 | 协议 | 服务 |
|---|---|---|
| 21/tcp | ftp | File Transfer Protocol |
| 22/tcp | ssh | Secure Shell |
| 23/tcp | telnet | Telnet |
| 25/tcp | smtp | Simple Mail Transfer Protocol |
| 53/tcp | domain | DNS |
| 80/tcp | http | Hypertext Transfer Protocol |
| 443/tcp | https | HTTP Secure |
| 3306/tcp | mysql | MySQL Database |
| 3389/tcp | ms-wbt-server | Remote Desktop Protocol |
您可能有一个要扫描的 IP、域或 DNS 记录的列表。无需手动输入,可以将它们放在一个简单的文本文件中:
nmap -iL mylist.txt
文件内容示例 (mylist.txt):
192.168.1.110
cloudflare.com
example.com
在渗透测试中,保存结果非常重要,以便以后查看或将其插入到其他工具中(如 Metasploit)。
保存为普通文本格式:
nmap -oN outputdata.txt concise-courses.com
保存为 XML 格式(便于后续处理):
nmap -oX outputdata.xml concise-courses.com
要加快 Nmap 扫描速度(它们可能需要很长时间),只需添加 -n 标志即可禁用 DNS 解析:
nmap -p 80 -n 8.8.8.8
关于速度的问题,追加 -T 参数将改变扫描的速度模板。例如 -T4 代表激进模式,而 -T1 代表慢速隐蔽模式。快速扫描可能会触发防火墙和入侵检测系统 (IDS)。
使用 -A 标志可以同时启用操作系统检测、版本检测、脚本扫描和 traceroute:
nmap -A -T4 192.168.1.102
这可以通过使用 -sV 标志来完成,它会尝试确定每个开放端口运行的服务及其版本号:
nmap -sV 192.168.1.24
这对于识别已知漏洞至关重要。
与其他网络扫描程序一样,Nmap 可以针对各种端口协议(如 UDP 和 TCP)执行扫描。
TCP 扫描命令示例:
nmap -sT 192.168.1.1
UDP 扫描命令示例:
nmap -sU 192.168.1.1
Nmap 拥有独特的脚本引擎,称为'Nmap Scripting Engine' (NSE),扩展名为 .nse。
要将漏洞检测加载到扫描中,您需要触发 --script vuln 来测试已知漏洞:
nmap -Pn --script vuln 192.168.1.112
*注:-Pn 告诉 Nmap 不要 ping 目标主机,直接进行扫描,适用于防火墙禁用了 ICMP 的情况。
警告: 仅可用于测试你自己或你客户的网络作为'压力测试',看看他们的服务如何应对 DoS 攻击。未经授权的攻击是非法的。
我们可以部署 NSE 脚本来模拟高并发请求:
nmap 192.168.1.110 -max-parallelism 700 -Pn --script http-slowloris --script-args http-slowloris.runforever=true
警告: 仅限授权环境下的密码强度测试。
假设您试图破解 WordPress 登录,可以使用 NSE 脚本:
nmap -sV --script http-wordpress-brute --script-args 'userdb=users.txt,passdb=passwds.txt' 192.168.1.105
对于 FTP 服务:
nmap --script ftp-brute -p 21 192.168.1.112
端口 21 运行 FTP 服务,因此 -p 21 指定了必要的端口。
Nmap 可以结合外部资源检测潜在的恶意软件。建议使用 Google 恶意软件检查资源与 Nmap 结合使用:
nmap -p123 --script http-google-malware clientinfectedsitexyz.com
Nikto 是一个 Web 服务器扫描器,可以与 Nmap 配合使用。例如,先用 Nmap 发现 Web 端口,再传递给 Nikto:
nmap -p80 10.0.1.0/24 -oG - | nikto.pl -h -
Nmap 在网络安全领域占有重要地位,仍然是 2024 年不可或缺的工具。只要你能掌握 Nmap,你就已经站在了一个很好的起点上。如果你正在努力通过 CISSP、OSCP 或 CEH 考试,想在网络安全领域有所建树,学习 Nmap 绝对是必不可少的。
此外,还有一个叫做 ZenMap 的 GUI(图形化)版本,适合初学者使用。如果您想要具体的结果,应始终将多个端口扫描和渗透测试工具的结果结合起来,以获得可靠且无可争议的报告,尤其是在将其呈现给客户时。
在使用 Nmap 进行扫描之前,请务必遵守以下原则:
-T4 增加速度,或使用 -n 禁用 DNS 解析。-Pn 跳过 Ping 探测,或检查防火墙规则。掌握这些基础知识和高级技巧,将帮助您构建更完善的网络安全防御体系。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online