1. Nmap 是什么?
想象一下你想了解一座大楼的结构:有多少个房间(主机),每个房间开着哪些门(开放端口),门后面是什么(运行的服务),甚至大楼是用什么材料建的(操作系统类型)。Nmap 就是帮你完成这个任务的网络“透视眼”和“扫描仪”。
-
核心功能: 发现网络上的主机、探测主机开放的端口、识别端口上运行的服务及其版本、推断主机使用的操作系统。
-
工作原理: 通过向目标主机发送精心构造的TCP、UDP、ICMP等网络数据包,并分析其响应来实现上述功能。
-
应用场景:
-
网络资产清点和映射
-
安全审计和漏洞评估(发现潜在攻击面)
-
系统管理员监控网络服务状态
-
防火墙配置验证
-
渗透测试(信息收集阶段的核心工具)
-
2. 在 Kali Linux 中使用 Nmap
Kali Linux 默认已经安装了 Nmap。打开终端(Terminal)即可开始使用。
基本语法:
nmap [扫描类型选项] [其它选项] <目标>
-
<目标>
: 可以是单个 IP 地址 (如192.168.1.1
)、一个 IP 范围 (如192.168.1.1-100
)、一个网段 (如192.168.1.0/24
) 或一个域名 (如scanme.nmap.org
)。
3. 最常用、最实用的 Nmap 扫描命令(入门必备):
-
基础扫描:发现主机 & 常用端口
-
nmap <目标>
-
作用: 快速扫描目标最常用的 1000 个 TCP 端口,并尝试判断端口服务和操作系统。
-
示例:
nmap 192.168.1.1
-
输出示例:
Starting Nmap 7.94 ( https://nmap.org ) at 2025-07-01 10:00 CST Nmap scan report for router.local (192.168.1.1) Host is up (0.0010s latency). Not shown: 998 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 8080/tcp open http-proxy MAC Address: AA:BB:CC:DD:EE:FF (Vendor Name) Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
扫描所有端口 (TCP)
-
nmap -p- <目标>
-
-
作用: 扫描目标主机上的 所有 65535 个 TCP 端口。速度较慢,但更全面。
-
示例:
nmap -p- 192.168.1.100
-
-
扫描指定端口
-
nmap -p <端口号或范围> <目标>
-
-
-
-
作用: 只扫描指定的一个或多个端口。
-
示例:
-
扫描单个端口:
nmap -p 80 192.168.1.1
-
扫描多个端口:
nmap -p 80,443,22,8080 192.168.1.1
-
扫描端口范围:
nmap -p 20-100 192.168.1.1
-
组合扫描:
nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1
(扫描UDP 53,111,137端口和TCP 21-25,80,139,8080端口)
-
-
-
服务版本探测
nmap -sV <目标>
-
-
作用: 在发现开放端口后,主动尝试连接这些端口上的服务,获取服务的详细版本信息(如
Apache httpd 2.4.52
,OpenSSH 8.9p1
)。这对识别潜在漏洞至关重要。 -
示例:
nmap -sV 192.168.1.100
-
输出变化: 在基础扫描结果的基础上,
SERVICE
列会变成具体的服务版本信息。
-
-
操作系统探测
nmap -O <目标>
-
-
作用: 根据网络协议栈指纹特征,猜测目标主机运行的操作系统类型(如
Linux 3.X
,Windows 10 or Server 2016
)。准确性并非100%,但非常有参考价值。 -
示例:
nmap -O 192.168.1.100
-
输出变化: 在扫描报告末尾会添加类似
Running: Linux 3.X|4.X
或OS details: Microsoft Windows 10 1607
的信息。
-
-
综合扫描 (常用组合)
nmap -A <目标>
-
-
作用: “Aggressive” 模式,是
-sV
(服务版本探测) 和-O
(操作系统探测) 的增强版组合,还会启用脚本扫描 (--script=default
) 和路由追踪 (--traceroute
)。一次扫描获取最全面的信息,但速度较慢且容易被发现。 -
示例:
nmap -A scanme.nmap.org
(Nmap官方提供的测试站点)
-
-
更隐蔽的扫描:SYN 扫描 (半开扫描)
nmap -sS <目标>
-
-
作用: Nmap 默认的 TCP 扫描方式。发送 SYN 包,如果收到 SYN/ACK 则认为端口开放,然后发送 RST 终止连接(不完成三次握手)。比全连接扫描 (
-sT
) 更快、更隐蔽(不易在目标日志中留下完整的连接记录)。 -
注意: 在 Linux 上通常需要
sudo
权限,因为它需要构造原始数据包。 -
示例:
sudo nmap -sS 192.168.1.100
-
-
UDP 端口扫描
nmap -sU <目标>
-
-
作用: 扫描目标主机上的 UDP 端口。UDP 扫描通常比 TCP 扫描慢得多且结果可能不太可靠(UDP协议本身是无连接的)。
-
示例:
sudo nmap -sU 192.168.1.1
(常用UDP端口如DNS 53, SNMP 161/162, DHCP 67/68)
-
-
输出结果到文件
nmap -oN <文件名.txt> <目标> # 普通文本格式
nmap -oX <文件名.xml> <目标> # XML格式 (便于导入其他工具解析)
4. 理解输出关键信息:
-
PORT
: 端口号和协议 (TCP/UDP)。 -
STATE
: 端口状态。-
open
: 端口开放且有服务在监听。最重要的状态! -
closed
: 端口可访问,但没有服务在监听。 -
filtered
: 端口状态不确定,通常被防火墙/IPS屏蔽了探测包。需要进一步检查。 -
unfiltered
: 端口可访问,但无法确定开放还是关闭(较少见)。 -
open|filtered
: 无法确定是开放还是被过滤(UDP扫描常见)。 -
closed|filtered
: 无法确定是关闭还是被过滤(UDP扫描常见)。
-
-
SERVICE
: 根据端口号猜测的服务名称(基础扫描),或通过-sV
探测到的实际服务名称和版本。 -
MAC Address
: 目标主机的MAC地址和可能的厂商信息(通常出现在局域网扫描中)。 -
操作系统信息: 使用
-O
或-A
后显示的操作系统猜测结果。
5. 渗透测试实战小贴士:
-
信息收集第一步: Nmap 通常是渗透测试信息收集阶段的首发工具,用于绘制目标网络地图,识别开放端口和服务,为后续漏洞扫描和利用提供基础。
-
识别攻击面: 开放的服务及其版本是主要的攻击入口。结合
-sV
和漏洞数据库(如 Exploit-DB),可以快速定位已知漏洞。 -
隐蔽性考虑:
-
默认扫描 (
-sS
) 比连接扫描 (-sT
) 更隐蔽。 -
-T
选项控制扫描速度(-T0
最慢最隐蔽,-T5
最快最激进)。在需要隐蔽时使用-T2
或-T3
(默认)。 -
避免在未授权的情况下扫描公网目标或他人网络!仅在获得明确授权的目标上使用。
-
-
Nmap 脚本引擎 (NSE): Nmap 的强大之处还在于其脚本引擎。使用
--script
参数可以运行大量预定义的脚本,进行更深入的漏洞探测、暴力破解、信息枚举等(例如--script vuln
检查常见漏洞)。这属于进阶内容,掌握了基础后再探索会更容易。
重要安全与法律声明:
-
仅在你有明确权限的网络和目标上进行扫描! 未经授权扫描他人的计算机系统或网络设备是非法行为,可能违反法律(如《网络安全法》、《计算机信息系统安全保护条例》等)和道德规范。
-
使用 Kali Linux 及其工具(包括 Nmap)务必遵守法律法规和道德准则。这些工具的设计初衷是用于安全测试、防御加固和授权审计。
下一步建议:
你现在可以打开 Kali Linux 的终端,尝试对你自己本地网络中的设备(比如你的路由器 192.168.1.1
或 192.168.0.1
,或者另一台你拥有权限的虚拟机)运行上面列出的基础命令,观察输出结果,感受 Nmap 的强大。
如果你想更深入学习某个特定方面(例如 Nmap 脚本引擎 --script
的详细使用,或者更高级的扫描技巧如防火墙规避),随时可以再问我!Nmap 的功能远不止于此,这篇指南只是帮你打开了这扇门。
暂无评论内容