一、Nmap介绍
Nmap(Network Mapper)是一款用于网络发现和安全审计的开源工具。它最初由 Gordon Lyon(也被称为 Fyodor Vaskovich)开发,是一款功能强大且广泛使用的网络扫描工具。Nmap 允许用户在网络上执行主机发现、端口扫描、服务识别和版本检测等操作,以帮助评估网络的安全性、发现主机和服务、以及识别潜在的安全威胁。
Nmap的核心功能
- 主机发现:探测网络中的存活设备(如
-sP
扫描局域网存活主机) - 端口扫描:识别开放端口及状态(开放/关闭/过滤)
- 服务识别:检测端口对应的服务及版本(如
-sV
参数) - 操作系统检测:通过指纹识别目标系统(如
-O
参数) - 脚本扩展:使用NSE脚本实现漏洞扫描、密码爆破等高级功能
二、Nmap安装
- Windows:官网下载安装包(https://nmap.org),默认包含图形化工具Zenmap
- Linux/Kali:通过包管理器安装:
sudo apt update && sudo apt install nmap
三、Nmap使用
3.1 主机扫描
3.1.1 快速扫描
nmap ip
我这里扫描的是自己的ip,因为别的网站ip没授权不敢扫。
3.1.2 网段扫描
nmap ip/子网掩码
我扫描的是自己的ip网段,可以发现有4台主机,其中一台正式我们的kali主机。
3.1.3 过滤ip的网段扫描
nmap ip/子网掩码 -exclude 需要过滤的 IP 或 文件
过滤完之后之后,发现只剩三台主机了。
3.1.4 扫描存活主机
nmap -sP ip/子网掩码
对网段内的存活主机进行扫描,仅仅确定存活主机,并不扫描端口。
3.1.5 ARP扫描
可以对局域网内的主机进行高效探测。
nmap -PR -sn ip/子网掩码
-PR:开启ARP扫描
-sn:跳过端口扫描
3.2 端口扫描
Nmap所能识别的六种端口状态
open #端口开放
closed #端口关闭
filtered #端口被过滤
unfiltered #端口未被过滤
open|filtered #端口开放或者被过滤
closed|filtered #端口关闭或者被过滤
3.2.1 指定端口扫描
nmap ip -p 端口号
扫描「指定端口」,使用 -p
参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口。
3.2.2 使用TCP的SYN进行扫描
nmap -sS ip
半开放扫描,只发送SYN,如果服务器回复SYN,ACK。证明端口开放,不建立完整连接。
下面是 TCP SYN 扫描的工作原理:
1、发送TCP SYN包: 扫描发起者(通常是Nmap工具)向目标主机的指定端口发送TCP SYN包(同步包)。
2、等待响应: 如果目标端口是开放的,目标主机将返回一个TCP SYN/ACK包(同步/应答包)表示端口是开放的。如果目标端口是关闭的,目标主机将返回一个TCP RST包(复位包)表示端口是关闭的。
3、分析响应: 扫描发起者分析目标主机的响应来确定端口的状态。如果收到了 SYN/ACK 包,说明端口是开放的。如果收到了 RST 包,说明端口是关闭的。
TCP的SYN扫描在完成第2步的过程中,扫描发起者不会完成TCP连接的建立,而是在收到响应后发送一个 RST 包,关闭连接。这样,扫描对目标系统的影响较小,因为它不会建立完整的连接。
3.2.3 使用TCP进行扫描
nmap -sT ip
这是Nmap的默认扫描方式。
3.2.4 使用UDP进行扫描
nmap -sU ip
扫描UDP所开放的端口。以下是 UDP 扫描的工作原理:
1、发送UDP数据包: 扫描发起者向目标主机的指定 UDP 端口发送UDP数据包。
2、等待响应: 如果目标端口是开放的,目标主机将不发送响应,或者发送一个UDP应答包。如果目标端口是关闭的,目标主机通常会发送一个ICMP不可达消息。
3、分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。缺乏确认机制使得 UDP 扫描相对不稳定,因为目标主机可能选择不响应请求,或者响应包被防火墙过滤。
3.2.5 端口范围扫描
nmap ip -p 端口范围
3.3 高级服务扫描
3.3.1 识别服务版本
nmap -sV ip -p 端口号/端口范围
要想识别服务版本,可以利用-sV参数。
3.3.2 识别操作系统
nmap -O ip
想要识别「操作系统版本」,可以使用 -O
参数,但需要root权限。
3.3.3 利用NSE脚本引擎进行漏洞扫描
nmap --script vuln ip
--script vuln
:调用Nmap漏洞检测脚本库,针对目标进行高危漏洞扫描(覆盖SMB、HTTP、SQL等常见服务漏洞)。192.168.68.220
:内网目标主机IP,属于C类私有地址段。
Host script results 就是扫描出的内容。
四、输出与日志管理
4.1 输出格式
4.1.1 文本格式
nmap -oN result.txt ip
在kali上就会出现result.txt文件,里面记录了扫描的结果。
4.1.2 XML格式
nmap -oX result.xml ip
kali里面就会出现相应的result.xml文件。
4.1.3 多格式保存
nmap -oA scan_result ip
利用多格式保存时,会同时生成.txt/.xml/.gnmap文件。
4.2 日志分析工具推荐
- Zenmap:图形化分析扫描结果
- Ndiff:对比多次扫描差异
五、总结
Nmap是网络安全的“瑞士军刀”,从基础的端口扫描到高级的漏洞利用,其功能覆盖渗透测试全流程。掌握本文内容后,可尝试结合Metasploit、Wireshark等工具构建完整攻防实验环境。如需完整脚本代码或更多案例,请访问Nmap官方文档或参考文末扩展阅读。要注意的是,在未经他人允许的情况下,扫描他人网络可能违法,本文章只用于教学目的,不可用于违法活动,否则后果自负。