Xnmap 是一款强大且高效的 Bash 脚本,专为自动化 Nmap 扫描而设计,能够执行主机发现、端口枚举、服务版本检测、操作系统识别、漏洞扫描以及 HTTP 目录扫描等关键安全评估任务。其开发灵感来源于个人打靶机实战经验,旨在提升渗透测试效率,并为通过 OSCP 认证考试提供便利。
- 主机发现:通过
nmap -sn
快速扫描子网,识别存活主机。 - 多模式支持:
- 单 IP 扫描:针对单一目标执行全面的安全扫描。
- 列表扫描:从文件中读取 IP 列表进行批量扫描。
- 子网扫描:自动发现并允许用户选择扫描子网中的存活主机。
- 两种扫描级别:
- 完整扫描 (Full Scan):执行全端口扫描、服务版本和操作系统检测、常见端口漏洞扫描以及 HTTP 目录扫描。
- 轻量级扫描 (Lightweight Scan):仅执行全端口扫描,速度更快。
- 慢速模式 (Slow Mode):可选的慢速扫描模式,降低扫描速率以避免触发速率限制或干扰目标系统。
- 全端口扫描:快速识别目标主机的所有开放端口。
- 服务版本检测:获取运行在开放端口上的服务版本信息。
- 操作系统识别:尝试识别目标主机的操作系统。
- UDP 端口扫描:检测目标主机的前 20 个常见 UDP 端口。
- 漏洞扫描:利用 Nmap 内置的
vuln
脚本检测已知漏洞(仅在完整扫描模式下对常见端口进行)。 - HTTP 目录扫描:使用 Gobuster 对检测到的 HTTP 服务进行常见目录和文件扫描(仅在完整扫描模式下)。
- 彩色输出:通过
grc
为输出添加颜色高亮,提升可读性。 - 自动输出结果:扫描结果按目标 IP 保存在独立目录(如
enum_<IP>
),便于分析。 - 工具可用性检查:自动检查
nmap
和gobuster
是否已安装,增加容错。 - Ctrl+C 捕获:优雅地处理 Ctrl+C 中断信号,退出时清理临时文件。
本脚本依赖以下工具,请确保它们已正确安装:
nmap
(端口扫描工具,必需)gobuster
(Web 目录和文件爆破工具,完整扫描模式需要)grc
(使 Nmap 和 Gobuster 输出变得多彩 🥰,可选)seclists
(用于 HTTP 目录扫描的字典,完整扫描模式需要)
在 Debian/Ubuntu 上安装:
sudo apt update && sudo apt install -y nmap gobuster grc seclists
chmod +x <脚本名称>.sh
sudo mv <脚本名称>.sh /usr/local/bin/xnmap
xnmap [选项]
-i <IP>
:扫描单个 IP。-f <file>
:从文件读取 IP 列表。-s <subnet>
:扫描子网。-l
:轻量级扫描 (仅端口)。-m
:慢速模式。-h
:显示帮助。
xnmap -i 192.168.1.100
xnmap -f targets.txt -l
xnmap -s 192.168.0.0/24 -m
所有扫描结果将保存在以目标 IP 命名的目录下(如 enum_192_168_56_10/
),包括:
ports
:全端口扫描结果。detail.nmap
:详细服务版本和操作系统识别信息。udp.nmap
:UDP 端口扫描结果。vuln.nmap
:漏洞扫描结果(仅在完整扫描模式下,且发现常见开放端口时生成)。godir<端口号>.txt
:Gobuster 在 HTTP 服务端口上发现的目录和文件(仅在完整扫描模式下,且发现 HTTP 服务时生成)。
- 工具检查:脚本启动时会检查
nmap
和gobuster
是否已安装。 - 参数解析:解析用户提供的命令行参数。
- 主机发现(仅子网模式):
输出解析后提取存活主机的 IP,并允许用户选择要扫描的目标。
nmap -sn --min-rate 1000 <subnet> -oG -
- 选择扫描函数:根据
-l
参数选择执行lightweight_scan
或full_scan
函数。 - 执行扫描:
- 轻量级扫描:执行全端口扫描。
- 完整扫描:
- 执行全端口扫描。
- 解析开放端口。
- 执行服务版本和操作系统检测。
- 执行 UDP 端口扫描(前 20 端口)。
- 对常见开放端口执行漏洞扫描。
- 对检测到的 HTTP 服务端口执行 Gobuster 目录扫描。
- 合法性:请确保在合法授权的情况下使用本脚本,避免对未授权目标进行扫描。
- 权限:运行脚本时建议使用
sudo
,因为某些nmap
扫描(如 UDP 或低端口扫描)可能需要 root 权限。 - 防火墙:部分扫描(如
vuln
或 UDP)可能被防火墙拦截,或对目标系统造成影响,请谨慎使用。 - 资源消耗:全端口扫描和漏洞扫描可能会消耗较多系统资源和网络带宽。
- 依赖检查:若缺少
grc
或seclists
,脚本仍可运行,但相关功能(彩色输出、HTTP 目录扫描)将受限。
本项目基于 MIT 许可证开源,欢迎 Fork 和贡献改进!