L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

scanning-network-with-nmap-advanced

scanning-network-with-nmap-advanced

使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: scanning-network-with-nmap-advanced description: > 使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。 domain: cybersecurity subdomain: network-security tags: [network-security, nmap, port-scanning, service-enumeration, reconnaissance] version: "1.0" author: mahipal license: Apache-2.0

使用 Nmap 高级技术进行网络扫描

适用场景

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

不要在未获明确书面授权的网络上使用,不要在未经批准的情况下于业务高峰期对生产系统操作,不要通过激进扫描时序执行拒绝服务攻击。

前置条件

  • 已安装 Nmap 7.90+(通过 nmap --version 验证)
  • SYN 扫描、操作系统检测和原始数据包技术需要 root/sudo 权限
  • 书面授权,注明目标 IP 范围及任何排除的主机
  • 能够访问目标范围(VPN、直连或跳板机)
  • 熟悉 TCP/IP 协议和常见端口分配

工作流程

步骤 1:使用多种探测方式进行主机发现

采用分层发现策略,即使 ICMP 被封锁也能找到在线主机:

# 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

将结果汇总到在线主机列表:

grep "Host:" discovery_combined.gnmap | awk '{print $2}' | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n > live_hosts.txt

步骤 2:带时序和性能调优的端口扫描

# 使用优化时序进行全端口 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:服务版本检测和操作系统识别

# 使用版本强度进行激进服务检测
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 漏洞扫描

# 运行漏洞检测脚本
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:防火墙规避技术

# 分片数据包以规避简单数据包检测
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:输出解析与报告

# 将 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")
Skills enregistrées