Nmap 简介
Nmap 是一个开源的网络扫描工具,主要用于发现网络中的主机和端口,检查安全漏洞,并获取相关信息,它支持多种网络协议,包括 TCP、UDP、ICMP 等,并且可以进行远程主机信息收集和服务检测。
主要功能
- 网络扫描:探测网络中的主机和开放端口。
- 主机发现:识别网络中的设备及其 IP 地址。
- 端口扫描:检查目标主机上开放的端口及其状态(开、闭、filtered)。
- 服务检测:通过发送特定协议的请求,检测目标主机上运行的服务和版本。
- 安全漏洞评估:检测服务器上的常见安全漏洞,如 SQL 注入、跨站脚本(XSS)、缓冲区溢出等。
- 操作系统和应用版本检测:获取目标主机上安装的操作系统和应用程序的版本信息。
- 路由器和防火墙检测:发现网络中的路由器和防火墙设备。
工作原理
Nmap 工作原理基于网络协议的响应机制,它发送 SYN 请求包(用于 TCP 连接)或 ICMP 数据包(用于 ICMP 验证),并根据目标主机的响应来确定主机的状态和开放端口。
常用 Nmap 命令
以下是一些常用的 Nmap 命令和参数:
1 基本扫描
nmap 192.168.1.1
这个命令会对指定的主机进行全面的网络扫描,输出包含开、闭和 filtered 端口的结果。
2 扫描特定端口
nmap -p 80 192.168.1.1
这将只扫描目标主机的TCP 端口 80(通常是 HTTP 端口)。
3 检测服务版本
nmap -sV 192.168.1.1
这个参数会检测目标主机上运行的服务版本,HTTP、SSH、Telnet 等。
4 检查 UDP 端口
nmap -sU 192.168.1.1
这个命令会扫描目标主机上开放的 UDP 端口。
5 快速扫描
nmap -sT 192.168.1.1
快速扫描选项 -sT 会尽可能快速地完成扫描,适用于大型网络。
6 保存结果
nmap -oA 192.168.1.1
这个命令会将扫描结果保存为 HTML 格式的文件,方便后续查看。
输出格式
Nmap 的输出格式可以是普通文本(默认格式)或 HTML 格式(使用 -oA 参数),普通文本输出包含以下信息:
- 目标状态(Up 或 Down)
- 开放端口(State: open)
- 端口号(如 80)
- 协议(如 TCP、UDP)
- 服务名称和版本(如 HTTP/1.1)
Nmap 插件
Nmap 提供了丰富的插件功能,用户可以根据需求选择插件来定制扫描任务,常见插件包括:
-traceroute或--traceroute:检测网络路径(类似于 traceroute 工具)。-p p1-p100或--ports 1-100**:扫描特定的 TCP 端口范围。-sC或--script=credmap**:检测常见的安全漏洞(如 credmap 脆弱性)。
Nmap 脚本
Nmap 提供了脚本功能,用户可以编写自定义脚本来执行自动化任务。
--script=vuln:检测已知的安全漏洞。--script=http-sflist:检测 HTTP 请求中可能的安全问题。
使用场景
- 网络安全:用于发现网络中的安全漏洞。
- 网络管理:用于监控网络中的主机和端口状态。
- penetration testing:用于模拟攻击者对网络的探测,测试防护措施。
注意事项
- 遵守网络规则:在使用 Nmap 时,确保你有权限对目标网络进行扫描。
- 尊重隐私:避免对未经授权的网络进行扫描。
- 谨慎处理高风险漏洞:发现安全漏洞后,及时修复并采取措施防止被攻击。
通过合理使用 Nmap,您可以有效地进行网络安全评估和管理,提升网络的安全性和可靠性。









