用 Nmap 扫描你的第一个网络目标:新手硬核入门指南
工欲善其事,必先利其器。Nmap,就是网络安全人员的那把"瑞士军刀"。
一、为什么是 Nmap?
如果你刚入行网络安全,可能听过这句话:"不会 Nmap 的安全工程师,就像不会用枪的士兵。"
Nmap(Network Mapper)是一款开源的网络探测和安全审计工具,诞生于 1997 年,至今仍是行业标准。它能帮你:
- 发现存活主机 —— 目标网络里有哪些设备在线
- 识别开放端口 —— 哪些服务在运行
- 探测服务版本 —— 跑的是什么软件、什么版本
- 识别操作系统 —— 目标是 Windows 还是 Linux
- 发现安全漏洞 —— 配合脚本引擎(NSE)做漏洞扫描
一句话:信息收集阶段,Nmap 是必选项。
二、环境搭建:把 Nmap 装起来
2.1 Linux(Kali/Ubuntu/Debian)
# Kali 默认已安装,验证一下
nmap --version
# Ubuntu/Debian 手动安装
sudo apt update
sudo apt install nmap -y
2.2 macOS
# 使用 Homebrew
brew install nmap
2.3 Windows
访问官网下载安装包:https://nmap.org/download.html
勾选安装 Nmap 和 Ncat,安装完成后在 CMD 或 PowerShell 中验证:
nmap --version
⚠️ 重要提醒:本文所有命令仅用于学习测试,请在自己搭建的靶场环境或获得书面授权的目标上操作。未经授权的扫描可能违反《网络安全法》。
三、基础命令:从简单开始
3.1 扫描单个目标
# 基础扫描(扫描最常见的 1000 个端口)
nmap 192.168.1.1
# 扫描指定 IP 的所有端口(1-65535)
nmap -p- 192.168.1.1
# 扫描指定端口范围
nmap -p 1-1000 192.168.1.1
# 扫描特定端口(多个端口用逗号分隔)
nmap -p 22,80,443,3306 192.168.1.1
3.2 扫描整个网段
# 扫描整个 C 类网段(256 个 IP)
nmap 192.168.1.0/24
# 扫描指定范围
nmap 192.168.1.1-50
3.3 快速扫描
# 只扫描最常见的 100 个端口(速度优先)
nmap -F 192.168.1.1
# 极速模式(牺牲准确性换速度)
nmap -T5 192.168.1.1
四、实战:扫描你的第一个目标
假设我们有一个靶机 IP:192.168.1.100,让我们做一次完整的信息收集。
4.1 第一步:存活探测
# 禁用 Ping 扫描(有些目标会禁 ICMP)
nmap -Pn 192.168.1.100
# 仅 Ping 扫描(快速判断是否在线)
nmap -sn 192.168.1.100
输出示例:
Starting Nmap 7.94 ( https://nmap.org )
Nmap scan report for 192.168.1.100
Host is up (0.00045s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
4.2 第二步:端口扫描 + 服务识别
# -sV 探测服务版本
# -O 探测操作系统
# -v 显示详细输出
nmap -sV -O -v 192.168.1.100
输出示例:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5
80/tcp open http Apache httpd 2.4.41
443/tcp open ssl/http Apache httpd 2.4.41
3306/tcp open mysql MySQL 5.7.38
OS details: Linux 5.4.0 - 5.10.0
看到没?我们已经知道了:
- SSH 服务是 OpenSSH 8.2p1(Ubuntu 版本)
- Web 服务是 Apache 2.4.41
- 数据库是 MySQL 5.7.38
- 操作系统是 Linux 5.4-5.10 内核
这些信息,足以让我们判断下一步该用什么攻击向量。
4.3 第三步:漏洞扫描(使用 NSE 脚本)
Nmap 的脚本引擎(NSE)内置了大量扫描脚本:
# 扫描常见漏洞
nmap --script vuln 192.168.1.100
# 扫描特定漏洞(如 Heartbleed)
nmap --script ssl-heartbleed 192.168.1.100
# 扫描弱密码
nmap --script mysql-brute 192.168.1.100
# 扫描 Web 目录
nmap --script http-enum 192.168.1.100
漏洞扫描输出示例:
|_http-sql-injection: Possible SQL injection
|_ssl-heartbleed: VULNERABLE: Heartbleed bug
五、进阶技巧:像老手一样用 Nmap
5.1 输出格式化(写报告必备)
# 输出到文件(多种格式)
nmap -oN result.txt -oX result.xml -oG result.gnmap 192.168.1.100
# 所有格式一起输出
nmap -oA scan_result 192.168.1.100
生成三个文件:
scan_result.nmap—— 人类可读格式scan_result.xml—— 机器可读(可导入其他工具)scan_result.gnmap—— 快速解析格式
5.2 隐蔽扫描(避开检测)
⚠️ 仅限授权测试使用
# SYN 扫描(半开放扫描,不建立完整连接)
nmap -sS 192.168.1.100
# 碎片化数据包(绕过简单 IDS)
nmap -f 192.168.1.100
# 随机扫描顺序(避开基于时间的检测)
nmap --randomize-hosts 192.168.1.0/24
# 限速扫描(降低被发现的概率)
nmap --max-rate 10 192.168.1.100
5.3 组合拳:完整渗透测试扫描
# 终极扫描命令(信息收集阶段)
nmap -sS -sV -O -A -p- -T4 -v --script vuln,exploit 192.168.1.100 -oA full_scan
参数解释:
-sS:SYN 扫描-sV:服务版本探测-O:操作系统探测-A:激进探测(包含脚本、traceroute 等)-p-:全端口扫描-T4:速度模板(0-5,数字越大越快)--script vuln,exploit:加载漏洞和 exploits 脚本-oA:输出所有格式
六、常见端口速查表
| 端口 | 服务 | 风险等级 | 备注 |
|---|---|---|---|
| 21 | FTP | 🔴 高 | 明文传输,易被爆破 |
| 22 | SSH | 🟡 中 | 弱密码风险 |
| 23 | Telnet | 🔴 高 | 明文协议,建议禁用 |
| 80 | HTTP | 🟡 中 | Web 攻击面 |
| 443 | HTTPS | 🟡 中 | SSL/TLS 配置问题 |
| 445 | SMB | 🔴 高 | 永恒之蓝等漏洞 |
| 3306 | MySQL | 🟡 中 | 弱密码、未授权访问 |
| 3389 | RDP | 🔴 高 | 暴力破解、BlueKeep |
| 6379 | Redis | 🔴 高 | 未授权访问常见 |
| 27017 | MongoDB | 🔴 高 | 默认无认证 |
七、学习建议
-
搭建自己的靶场
- VulnHub(https://www.vulnhub.com)
- HackTheBox
- DVWA(Damn Vulnerable Web Application)
-
每天练一个命令
Nmap 参数众多,不用一次记完。每天挑一个参数在靶场里试,一周后你就超越 80% 的新手了。 -
读官方文档
https://nmap.org/book/ —— 免费、权威、详细 -
加入社区
- 看别人的扫描案例
- 分享自己的发现
- 保持好奇心
结语
Nmap 是网络安全的基本功,但工具本身不是目的。真正的能力在于:
- 知道什么时候用什么参数
- 能读懂扫描结果背后的含义
- 把信息转化为攻击/防御策略
这篇文章只是个开始。打开你的终端,扫描你的第一个靶机,然后——
欢迎来到网络安全的世界。 🖤
法律免责声明:本文内容仅供学习参考。任何未经授权的网络扫描行为可能违反《中华人民共和国网络安全法》及相关法律法规。请确保你的测试行为在合法授权范围内使用。

浙公网安备 33010602011771号