scanning-network-with-nmap-advanced
使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。
Best use case
scanning-network-with-nmap-advanced is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。
Teams using scanning-network-with-nmap-advanced should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/scanning-network-with-nmap-advanced/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How scanning-network-with-nmap-advanced Compares
| Feature / Agent | scanning-network-with-nmap-advanced | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 使用 Nmap 高级技术进行网络扫描
## 适用场景
- 在授权评估中对大型企业网络进行全面资产发现
- 枚举服务版本和配置,识别过时或存在漏洞的软件
- 在授权渗透测试中使用扫描规避技术绕过防火墙规则和 IDS
- 使用 Nmap 脚本引擎(NSE)自动化漏洞检测
- 生成结构化扫描输出,集成到漏洞管理流程中
**不要在**未获明确书面授权的网络上使用,不要在未经批准的情况下于业务高峰期对生产系统操作,不要通过激进扫描时序执行拒绝服务攻击。
## 前置条件
- 已安装 Nmap 7.90+(通过 `nmap --version` 验证)
- SYN 扫描、操作系统检测和原始数据包技术需要 root/sudo 权限
- 书面授权,注明目标 IP 范围及任何排除的主机
- 能够访问目标范围(VPN、直连或跳板机)
- 熟悉 TCP/IP 协议和常见端口分配
## 工作流程
### 步骤 1:使用多种探测方式进行主机发现
采用分层发现策略,即使 ICMP 被封锁也能找到在线主机:
```bash
# ARP 发现本地子网(局域网中最可靠)
nmap -sn -PR 192.168.1.0/24 -oA discovery_arp
# 组合 ICMP + TCP + UDP 探测远程网络
nmap -sn -PE -PP -PS21,22,25,80,443,445,3389,8080 -PU53,161,500 10.0.0.0/16 -oA discovery_combined
# 列表扫描:仅解析 DNS 名称,不向目标发送数据包
nmap -sL 10.0.0.0/24 -oN dns_resolution.txt
```
将结果汇总到在线主机列表:
```bash
grep "Host:" discovery_combined.gnmap | awk '{print $2}' | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n > live_hosts.txt
```
### 步骤 2:带时序和性能调优的端口扫描
```bash
# 使用优化时序进行全端口 TCP SYN 扫描
nmap -sS -p- --min-rate 5000 --max-retries 2 -T4 -iL live_hosts.txt -oA full_tcp_scan
# Top 1000 UDP 端口扫描(含版本检测)
nmap -sU --top-ports 1000 --version-intensity 0 -T4 -iL live_hosts.txt -oA udp_scan
# 针对特定端口范围进行定向评估
nmap -sS -p 1-1024,3306,5432,6379,8080-8090,9200,27017 -iL live_hosts.txt -oA targeted_ports
```
### 步骤 3:服务版本检测和操作系统识别
```bash
# 使用版本强度进行激进服务检测
nmap -sV --version-intensity 5 -sC -O --osscan-guess -p <open_ports> -iL live_hosts.txt -oA service_enum
# 针对模糊端口进行特定服务探测
nmap -sV --version-all -p 8443 --script ssl-cert,http-title,http-server-header <target> -oN service_detail.txt
```
### 步骤 4:NSE 漏洞扫描
```bash
# 运行漏洞检测脚本
nmap --script vuln -p <open_ports> -iL live_hosts.txt -oA vuln_scan
# 针对特定漏洞
nmap --script smb-vuln-ms17-010,smb-vuln-ms08-067 -p 445 -iL live_hosts.txt -oA smb_vulns
nmap --script ssl-heartbleed,ssl-poodle,ssl-ccs-injection -p 443,8443 -iL live_hosts.txt -oA ssl_vulns
# 对发现的服务暴力破解默认凭证
nmap --script http-default-accounts,ftp-anon,ssh-auth-methods -p 21,22,80,8080 -iL live_hosts.txt -oA default_creds
```
### 步骤 5:防火墙规避技术
```bash
# 分片数据包以规避简单数据包检测
nmap -sS -f --mtu 24 -p 80,443 <target> -oN fragmented_scan.txt
# 使用诱饵地址混淆扫描来源
nmap -sS -D RND:10 -p 80,443 <target> -oN decoy_scan.txt
# 伪装源端口为 DNS(53)以绕过配置不当的防火墙
nmap -sS --source-port 53 -p 1-1024 <target> -oN spoofed_port_scan.txt
# 空闲扫描(使用僵尸主机,完全隐蔽)
nmap -sI <zombie_host> -p 80,443,445 <target> -oN idle_scan.txt
# 慢速扫描以规避 IDS 基于速率的检测
nmap -sS -T1 --max-rate 10 -p 1-1024 <target> -oA stealth_scan
```
### 步骤 6:输出解析与报告
```bash
# 将 XML 输出转换为 HTML 报告
xsltproc full_tcp_scan.xml -o scan_report.html
# 从可检索输出中提取每台主机的开放端口
grep "Ports:" full_tcp_scan.gnmap | awk -F'Ports: ' '{print $1 $2}' > open_ports_summary.txt
# 使用 nmap-parse-output 解析 XML 获取结构化数据
nmap-parse-output full_tcp_scan.xml hosts-to-port 445
# 导入 Metasploit 数据库
msfconsole -q -x "db_import full_tcp_scan.xml; hosts; services; exit"
# 生成 CSV 供漏洞管理工具使用
nmap-parse-output full_tcp_scan.xml csv > scan_results.csv
```
## 核心概念
| 术语 | 定义 |
|------|------|
| **SYN 扫描(-sS)** | 半开放 TCP 扫描,发送 SYN 包并分析响应,不完成三次握手,比全连接扫描更快更隐蔽 |
| **NSE(Nmap 脚本引擎)** | Nmap 内置的基于 Lua 的脚本框架,支持漏洞检测、暴力破解、服务发现和自定义自动化 |
| **时序模板(-T0 至 -T5)** | 预定义扫描速度配置,从偏执(T0)到疯狂(T5),控制探测并行度、超时值和探测间隔 |
| **空闲扫描(-sI)** | 高级扫描技术,利用僵尸主机的 IP ID 序列对目标进行端口扫描,无需从扫描器自身 IP 发送数据包 |
| **版本强度** | 控制 Nmap 为确定服务版本发送的探测数量,从 0(轻量)到 9(全部探测),以速度换精度 |
| **可检索输出(-oG)** | Nmap 历史输出格式,专为使用 grep、awk 和 sed 进行脚本化分析而设计 |
## 工具与系统
- **Nmap 7.90+**:核心扫描引擎,支持 NSE 脚本、操作系统检测、版本探测和多种输出格式
- **nmap-parse-output**:社区工具,用于将 Nmap XML 输出解析为结构化格式(CSV、JSON、主机列表)
- **Ndiff**:Nmap 工具,用于比较两次扫描结果,识别网络状态随时间的变化
- **Zenmap**:官方 Nmap 图形界面,提供可视化网络拓扑映射和扫描配置文件管理
- **Metasploit Framework**:导入 Nmap XML 输出,将扫描结果与漏洞利用模块直接关联
## 常见场景
### 场景:企业网络资产发现与漏洞基线建立
**背景**:安全团队需要为覆盖 10.0.0.0/8、约有 5,000 台活跃主机的企业网络建立漏洞基线。扫描须在周末维护窗口内完成,同时将网络影响降至最低。
**方法**:
1. 针对所有 /24 子网运行分层主机发现:ARP(本地子网)、TCP SYN(端口 22,80,443,445,3389)和 ICMP 回显探测
2. 对发现的主机使用 `--min-rate 5000` 和 `-T4` 进行全端口 TCP SYN 扫描,确保在维护窗口内完成
3. 对所有开放端口运行服务版本检测和默认 NSE 脚本
4. 针对关键服务(SMB、SSL/TLS、HTTP)执行定向 NSE 漏洞脚本
5. 解析 XML 输出生成各子网 CSV 报告,并导入漏洞管理平台
6. 设置 Ndiff 定期与后续扫描对比,跟踪修复进度
**注意事项**:
- 在拥塞网络段将 `--min-rate` 设置过高,导致数据包丢失和漏报
- 在生产网络上运行 `-T5`(疯狂)时序,可能导致老旧网络设备过载
- 忘记扫描 UDP 端口,遗漏 SNMP(161)、DNS(53)和 TFTP(69)等关键服务
- 未以 XML 格式(`-oX` 或 `-oA`)保存输出,导致结构化数据无法供下游工具使用
## 输出格式
```
## Nmap 扫描摘要
**扫描配置**:全端口 TCP + Top 200 UDP + 服务枚举
**目标范围**:10.10.0.0/16
**发现主机**:347 台在线主机
**扫描时长**:2 小时 14 分钟
### 严重发现
| 主机 | 端口 | 服务 | 版本 | 漏洞 |
|------|------|------|------|------|
| 10.10.5.23 | 445/tcp | SMB | Windows Server 2012 R2 | MS17-010 (EternalBlue) |
| 10.10.8.100 | 443/tcp | Apache httpd | 2.4.29 | CVE-2021-41773(路径遍历) |
| 10.10.12.5 | 3306/tcp | MySQL | 5.6.24 | CVE-2016-6662(远程代码执行) |
| 10.10.3.77 | 161/udp | SNMP | v2c | 公共团体字符串 |
### 建议
1. 立即修补 10.10.5.23 的 MS17-010——严重远程代码执行漏洞
2. 将 10.10.8.100 的 Apache httpd 升级至 2.4.58+
3. 将 10.10.12.5 的 MySQL 升级至 8.0.x 并限制绑定地址
4. 更改 10.10.3.77 的 SNMP 团体字符串(不使用"public")
```Related Skills
scanning-kubernetes-manifests-with-kubesec
使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。
scanning-infrastructure-with-nessus
Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。
scanning-docker-images-with-trivy
Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。
scanning-containers-with-trivy-in-cicd
本技能涵盖将 Aqua Security 的 Trivy 扫描器集成到 CI/CD 流水线中,用于全面的容器镜像漏洞检测。包括扫描 Docker 镜像中的操作系统包和应用依赖 CVE、检测 Dockerfile 中的错误配置、扫描文件系统和 Git 仓库,以及建立基于严重性的质量门禁以阻止有漏洞的镜像部署。
scanning-container-images-with-grype
使用 Anchore Grype 扫描容器镜像的已知漏洞(Vulnerability),支持基于 SBOM 的匹配和可配置的严重性阈值。
performing-wireless-network-penetration-test
执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。
performing-web-application-scanning-with-nikto
Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。
performing-vulnerability-scanning-with-nessus
使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。
performing-sca-dependency-scanning-with-snyk
本技能涵盖使用 Snyk 实施软件成分分析(SCA, Software Composition Analysis),在 CI/CD 流水线中检测存在漏洞的开源依赖项。内容包括扫描包清单和锁文件、自动修复拉取请求生成、许可证合规检查、已部署应用程序的持续监控,以及与 GitHub、GitLab 和 Jenkins 流水线的集成。
performing-ot-vulnerability-scanning-safely
使用被动监控、原生协议查询和经过精心控制的Tenable OT Security主动扫描,在OT/ICS环境中安全执行漏洞扫描,在不破坏工业过程或导致旧版控制器崩溃的情况下识别漏洞。
performing-ot-network-security-assessment
本技能涵盖对运营技术(OT)网络(包括SCADA系统、DCS架构和工业控制系统通信路径)进行全面安全评估。内容涉及Purdue参考模型各层、识别IT/OT融合风险、评估区域间防火墙规则,以及映射工业协议流量(Modbus、DNP3、OPC UA、EtherNet/IP),以检测关键基础设施中的错误配置、未授权连接和攻击面。
performing-network-traffic-analysis-with-zeek
部署 Zeek 网络安全监控器,捕获、解析和分析网络流量元数据,用于威胁检测、异常识别和取证调查。