mcpField
S
scanning-network-with-nmap-advanced

scanning-network-with-nmap-advanced

github.com/mukul975安全35.2k236 次安装8 周前更新
代码仓库

关于 scanning-network-with-nmap-advanced

面向安全团队的高级 Nmap 技能,用于执行经授权的网络评估。内容涵盖主机发现、服务与漏洞扫描、规避技术及结构化报告。

主要功能

  1. 01分层主机发现
  2. 02TCP 与 UDP 端口扫描
  3. 03服务与操作系统检测
  4. 04NSE 漏洞检查
  5. 05防火墙规避技术
  6. 06结构化扫描报告

适用场景

  1. 01盘点企业网络资产
  2. 02查找过时服务与漏洞
  3. 03在授权评估中测试网络防御
  4. 04为漏洞管理流程准备扫描数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill scanning-network-with-nmap-advanced

安装后在 Claude Code 中输入/scanning-network-with-nmap-advanced确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

使用 Nmap 高级技术扫描网络

何时使用

  • 在经授权的评估期间,对大型企业网络执行全面的资产发现
  • 枚举服务版本和配置,以识别过时或存在漏洞的软件
  • 在经授权的渗透测试期间,使用扫描规避技术绕过防火墙规则和 IDS
  • 使用 Nmap 脚本引擎(NSE)编写自动化漏洞检查脚本
  • 生成结构化扫描输出,以便集成到漏洞管理工作流中

请勿使用于未经明确书面授权的网络、未经批准在高峰时段的生产系统上使用,或通过激进的扫描时序执行拒绝服务攻击。

前置条件

  • 已安装 Nmap 7.90+(使用 nmap --version 验证)
  • 具备 root/sudo 权限,以进行 SYN 扫描、操作系统检测和原始数据包技术
  • 书面授权,其中明确指定范围内的 IP 地址段以及任何排除的主机
  • 能够访问目标地址段的网络(VPN、直接连接或跳板主机)
  • 熟悉 TCP/IP 协议和常见端口分配

工作流

第 1 步:使用多种探测进行主机发现

使用分层发现,即使 ICMP 被阻止也能找到活动主机:

# ARP discovery for local subnet (most reliable on LAN)
nmap -sn -PR 192.168.1.0/24 -oA discovery_arp

# Combined ICMP + TCP + UDP probes for remote networks
nmap -sn -PE -PP -PS21,22,25,80,443,445,3389,8080 -PU53,161,500 10.0.0.0/16 -oA discovery_combined

# List scan to resolve DNS names without sending packets to targets
nmap -sL 10.0.0.0/24 -oN dns_resolution.txt

将结果合并到活动主机文件中:

grep "Host:" discovery_combined.gnmap | awk '{print $2}' | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n > live_hosts.txt
第 2 步:结合时序和性能调优进行端口扫描
# Full TCP SYN scan with optimized timing
nmap -sS -p- --min-rate 5000 --max-retries 2 -T4 -iL live_hosts.txt -oA full_tcp_scan

# Top 1000 UDP ports with version detection
nmap -sU --top-ports 1000 --version-intensity 0 -T4 -iL live_hosts.txt -oA udp_scan

# Specific port ranges for targeted assessment
nmap -sS -p 1-1024,3306,5432,6379,8080-8090,9200,27017 -iL live_hosts.txt -oA targeted_ports
第 3 步:服务版本检测和操作系统指纹识别
# Aggressive service detection with version intensity
nmap -sV --version-intensity 5 -sC -O --osscan-guess -p <open_ports> -iL live_hosts.txt -oA service_enum

# Specific service probing for ambiguous ports
nmap -sV --version-all -p 8443 --script ssl-cert,http-title,http-server-header <target> -oN service_detail.txt
第 4 步:NSE 漏洞扫描
# Run vulnerability detection scripts
nmap --script vuln -p <open_ports> -iL live_hosts.txt -oA vuln_scan

# Target specific vulnerabilities
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

# Brute force default credentials on discovered services
nmap --script http-default-accounts,ftp-anon,ssh-auth-methods -p 21,22,80,8080 -iL live_hosts.txt -oA default_creds
第 5 步:防火墙规避技术
# Fragment packets to evade simple packet inspection
nmap -sS -f --mtu 24 -p 80,443 <target> -oN fragmented_scan.txt

# Use decoy addresses to obscure scan origin
nmap -sS -D RND:10 -p 80,443 <target> -oN decoy_scan.txt

# Spoof source port as DNS (53) to bypass poorly configured firewalls
nmap -sS --source-port 53 -p 1-1024 <target> -oN spoofed_port_scan.txt

# Idle scan using a zombie host (completely stealthy)
nmap -sI <zombie_host> -p 80,443,445 <target> -oN idle_scan.txt

# Slow scan to evade IDS rate-based detection
nmap -sS -T1 --max-rate 10 -p 1-1024 <target> -oA stealth_scan
第 6 步:输出解析和报告
# Convert XML output to HTML report
xsltproc full_tcp_scan.xml -o scan_report.html

# Extract open ports per host from grepable output
grep "Ports:" full_tcp_scan.gnmap | awk -F'Ports: ' '{print $1 $2}' > open_ports_summary.txt

# Parse XML with nmap-parse-output for structured data
nmap-parse-output full_tcp_scan.xml hosts-to-port 445

# Import into Metasploit database
msfconsole -q -x "db_import full_tcp_scan.xml; hosts; services; exit"

# Generate CSV for vulnerability management tools
nmap-parse-output full_tcp_scan.xml csv > scan_results.csv

关键概念

术语定义
SYN 扫描(-sS)半开放 TCP 扫描,发送 SYN 数据包并分析响应,而不完成三次握手,因此比 connect 扫描更快、更隐蔽
NSE(Nmap 脚本引擎)Nmap 内置的基于 Lua 的脚本框架,支持漏洞检测、暴力破解、服务发现和自定义自动化
时序模板(-T0 到 -T5)预定义的扫描速度配置,从 Paranoid(T0)到 Insane(T5),控制探测并行度、超时值和探测间隔延迟
空闲扫描(-sI)高级扫描技术,利用僵尸主机的 IP ID 序列对目标进行端口扫描,而不从扫描器自身的 IP 地址发送数据包
版本探测强度控制 Nmap 发送多少探测来确定服务版本,范围从 0(轻量)到 9(所有探测),以速度换取准确性
Grepable 输出(-oG)传统 Nmap 输出格式,专为使用 grep、awk 和 sed 轻松解析而设计,用于对扫描结果进行脚本化分析

工具与系统

  • Nmap 7.90+:核心扫描引擎,支持 NSE 脚本、操作系统检测、版本探测和多种输出格式
  • nmap-parse-output:社区工具,用于将 Nmap XML 输出解析为结构化格式(CSV、JSON、主机列表)
  • Ndiff:Nmap 实用程序,用于比较两次扫描结果,以识别网络状态随时间的变化
  • Zenmap:官方 Nmap GUI,提供可视化网络拓扑映射和扫描配置管理
  • Metasploit Framework:导入 Nmap XML 输出,将扫描结果与漏洞利用模块直接关联

常见场景

场景:企业网络资产发现与漏洞基线

背景:某安全团队需要为覆盖 10.0.0.0/8、拥有约 5,000 台活跃主机的企业网络建立漏洞基线。扫描必须在周末维护窗口内完成,并将网络中断降到最低。

方法:

  1. 使用 ARP(本地子网)、TCP SYN(端口 22、80、443、445、3389)和 ICMP echo 探测,在所有 /24 子网上执行分层主机发现
  2. 对发现的主机执行完整 TCP SYN 扫描,使用 --min-rate 5000 和 -T4,以便在窗口内完成
  3. 对所有开放端口运行服务版本检测和默认 NSE 脚本
  4. 针对关键服务(SMB、SSL/TLS、HTTP)执行定向 NSE 漏洞脚本
  5. 解析 XML 输出,生成按子网划分的 CSV 报告,并导入漏洞管理平台
  6. 安排 Ndiff 与未来扫描进行对比,以跟踪修复进度

常见陷阱:

  • 在拥塞网段上将 --min-rate 设置得过高,导致丢包和漏报
  • 在生产网络上使用 -T5(Insane)时序,可能压垮较旧的网络设备
  • 忘记扫描 UDP 端口,遗漏 SNMP(161)、DNS(53)和 TFTP(69)等关键服务
  • 未以 XML 格式保存输出(-oX 或 -oA),导致下游工具集成所需的结构化数据丢失

输出格式

## Nmap Scan Summary

**Scan Profile**: Full TCP + Top 200 UDP + Service Enumeration
**Target Range**: 10.10.0.0/16
**Hosts Discovered**: 347 live hosts
**Scan Duration**: 2h 14m

### Critical Findings

| Host | Port | Service | Version | Vulnerability |
|------|------|---------|---------|---------------|
| 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 (Path Traversal) |
| 10.10.12.5 | 3306/tcp | MySQL | 5.6.24 | CVE-2016-6662 (RCE) |
| 10.10.3.77 | 161/udp | SNMP | v2c | Public community string |

### Recommendations
1. Patch MS17-010 on 10.10.5.23 immediately -- Critical RCE vulnerability
2. Upgrade Apache httpd to 2.4.58+ on 10.10.8.100
3. Upgrade MySQL to 8.0.x on 10.10.12.5 and restrict bind address
4. Change SNMP community strings from "public" on 10.10.3.77

评论

支持 Markdown