# Conducting Network Penetration Test

> 对授权目标环境执行全面网络渗透测试，通过主机发现、端口扫描、服务枚举、漏洞识别和受控漏洞利用，评估网络基础设施的安全态势。测试人员遵循 PTES 方法论，从侦察到后渗透和报告全流程执行。

- Skill: `killvxk/conducting-network-penetration-test` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/conducting-network-penetration-test`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/conducting-network-penetration-test/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/conducting-network-penetration-test

---

# 执行网络渗透测试

## 使用场景

- 在部署前后评估内部或外部网络基础设施的安全态势
- 在真实攻击条件下验证防火墙规则、网络分段和访问控制
- 识别网络服务、协议和配置中的可利用漏洞
- 满足要求定期渗透测试的 PCI-DSS、HIPAA、SOC 2 或 ISO 27001 合规要求
- 针对真实攻击流量评估 IDS/IPS、SIEM 和 SOC 检测能力的有效性

**不适用场景**：未经资产所有者明确书面授权的网络测试、未预先批准变更窗口和回滚计划的生产系统测试，或未明确划定范围和授权的拒绝服务测试。

## 前置条件

- 已签署的交战规则（RoE）文档，指定目标 IP 范围、排除的主机、测试时间窗口和紧急联系方式
- 来自网络所有者的书面授权书（免责信）
- 安装了最新工具的 Kali Linux 或同等发行版的专用测试笔记本
- 按 RoE 定义的 VPN 或直接网络访问目标范围
- 与客户事件响应团队的带外通信渠道
- 列出测试范围内 IP 范围、域名及明确排除系统（医疗设备、SCADA、关键基础设施）的范围文档

## 工作流程

### 步骤一：演练前准备和范围验证

通过与客户确认 IP 范围来验证范围。使用 ARIN/RIPE WHOIS 查询验证范围内的所有 IP 地址均属于客户。确认测试窗口、升级程序和任何敏感性约束。使用专用虚拟机、VPN 连接和所有工具启用日志记录来设置测试环境。创建带时间戳的活动日志，记录整个演练过程中执行的每条命令、发起的每次扫描和尝试的每次漏洞利用。

### 步骤二：主机发现和网络映射

使用分层发现技术识别授权范围内的存活主机：

- **ICMP 扫描**：`nmap -sn -PE -PP -PM 10.10.0.0/16 -oA discovery_icmp` 查找响应 ping 的主机
- **ARP 扫描**（内网）：`nmap -sn -PR 10.10.0.0/24 -oA discovery_arp` 或 `arp-scan -l` 进行本地子网枚举
- **TCP SYN 发现**：`nmap -sn -PS21,22,25,80,443,445,3389,8080 10.10.0.0/16 -oA discovery_tcp` 查找 ICMP 被阻止的主机
- **UDP 发现**：`nmap -sn -PU53,161,500 10.10.0.0/16 -oA discovery_udp` 查找仅响应 UDP 的主机

将存活主机整合到目标列表中。通过识别网关、VLAN 边界和信任关系来映射网络拓扑，在授权范围内使用 traceroute 和 SNMP 社区字符串猜测。

### 步骤三：端口扫描和服务枚举

对发现的主机执行详细端口扫描：

- **全 TCP 扫描**：`nmap -sS -p- --min-rate 1000 -T4 -oA full_tcp <target>` 识别所有开放的 TCP 端口
- **主要 UDP 端口**：`nmap -sU --top-ports 200 -T4 -oA top_udp <target>` 针对常见可利用的 UDP 服务
- **服务版本检测**：`nmap -sV -sC -p <open_ports> -oA service_enum <target>` 对服务版本进行指纹识别并运行默认 NSE 脚本
- **操作系统指纹识别**：`nmap -O --osscan-guess -oA os_detection <target>` 识别操作系统

使用协议专属工具深度枚举已发现的服务：
- SMB：`enum4linux -a <target>`、`crackmapexec smb <target> --shares`
- SNMP：`snmpwalk -v2c -c public <target>`
- DNS：`dig axfr @<dns_server> <domain>` 尝试区域传输
- LDAP：`ldapsearch -x -H ldap://<target> -b "dc=example,dc=com"`

### 步骤四：漏洞识别

将发现的服务版本与已知漏洞数据库关联：

- 运行 `nmap --script vuln -p <ports> <target>` 执行 NSE 漏洞脚本
- 使用 `searchsploit <service> <version>` 查询 Exploit-DB 离线数据库
- 与 NVD（国家漏洞数据库）和 CVE 记录交叉验证已确认的漏洞
- 检查管理界面的默认凭据（Tomcat Manager、Jenkins、phpMyAdmin、数据库控制台）
- 测试常见错误配置：匿名 FTP、开放 SMTP 中继、不受限制的 SNMP 社区、无需认证的 NFS 导出

按 CVSS 评分、可利用性和业务影响对漏洞进行优先级排序。记录每个发现，包含 CVE 标识符、受影响主机、服务和版本。

### 步骤五：漏洞利用

遵循最小必要访问权限原则，尝试对已验证漏洞进行受控利用：

- **Metasploit 框架**：使用 `msfconsole` 配合与已确认漏洞匹配的适当利用模块。设置 RHOSTS、RPORT 和载荷选项。优先使用绑定/反向 TCP Meterpreter 以实现后渗透灵活性
- **手动漏洞利用**：代码审查后使用来自 Exploit-DB 的公开概念验证漏洞利用。根据目标环境需要编译和修改
- **凭据攻击**：使用 `hydra` 或 `crackmapexec` 对已发现的服务（SSH、RDP、SMB、HTTP 基本认证）进行密码喷洒，使用常见凭据列表。遵守账户锁定策略
- **哈希传递/中继**：如果获取到 NTLM 哈希，在 SMB 签名被禁用的情况下，使用 `impacket-psexec` 尝试哈希传递或使用 `impacket-ntlmrelayx` 尝试中继攻击

记录每次漏洞利用尝试（包括失败的尝试）。截取显示主机名、IP、当前用户和权限级别的成功入侵截图。

### 步骤六：后渗透和横向移动

获得主机访问权限后，演示业务影响：

- **权限提升**：使用 `linpeas.sh`（Linux）或 `winPEAS.exe`（Windows）检查本地权限提升路径。查找错误配置的服务、SUID 二进制文件、未加引号的服务路径或内核漏洞
- **凭据收割**：从内存（`mimikatz`）、文件（配置文件、浏览器存储）或缓存哈希（`hashdump`）提取存储的凭据
- **横向移动**：使用获取的凭据横向移动到其他系统。通过尝试从已控制主机访问范围外的网络来测试网络分段
- **数据访问演示**：识别从已控制系统可访问的敏感数据（PII 数据库、文件共享、备份文件），并在不实际窃取数据的情况下记录访问

维护关于每个横向移动点、获得的凭据和访问的系统的详细笔记，以构建攻击链叙述。

### 步骤七：清理和报告

从已控制系统中删除所有测试工件：

- 删除上传的工具、Shell 和临时文件
- 删除测试期间创建的任何账户
- 恢复漏洞利用期间所做的配置更改
- 通过重新扫描受影响的主机验证清理结果

准备渗透测试报告，包括执行摘要、方法论说明、带 CVSS 评分的发现详情、概念验证证据和优先级修复建议。

## 核心概念

| 术语 | 定义 |
|------|------------|
| **交战规则（RoE）** | 正式文档，定义渗透测试的范围、边界、测试时间、授权行动和升级程序 |
| **横向移动** | 将已控制主机用作中继点，访问测试人员位置无法直接到达的其他网络段 |
| **服务枚举** | 识别已发现主机上运行的服务、版本和配置，以映射攻击面的过程 |
| **凭据喷洒** | 对多个账户同时测试少量常用密码，以避免触发账户锁定阈值 |
| **CVSS** | 通用漏洞评分系统；用于以 0-10 评分评级漏洞严重性的行业标准框架 |
| **横向移动** | 在网络内从一个已控制系统移动到另一个系统的技术，扩大访问范围 |
| **后渗透** | 初始入侵后的活动，包括权限提升、持久化、凭据收割和数据访问 |

## 工具与系统

- **Nmap**：通过 Nmap 脚本引擎（NSE）进行网络发现、端口扫描、服务枚举和漏洞检测
- **Metasploit 框架**：提供漏洞利用模块、载荷、编码器和后渗透工具的漏洞利用框架，用于已验证漏洞的利用
- **CrackMapExec**：Windows/活动目录环境的瑞士军刀，支持 SMB、WinRM、LDAP 和 MSSQL 枚举与利用
- **Impacket**：提供网络协议（SMB、MSRPC、Kerberos）低级编程访问的 Python 库，用于中继攻击和远程执行
- **Burp Suite**：当网络服务暴露基于 HTTP 的管理界面时使用的 Web 应用代理

## 常见场景

### 场景：金融机构内部网络渗透测试

**背景**：客户是一家中型银行，需要 PCI-DSS 合规。范围包括内部企业网络（10.10.0.0/16），不包括独立 VLAN 中的支付处理系统。测试窗口为周一至周五 20:00-06:00，以最小化对运营的影响。

**方法**：
1. 对可访问的子网执行基于 ARP 的主机发现，对禁用 ICMP 的主机执行 TCP SYN 发现
2. 对所有已发现主机执行全端口扫描，优先处理 Windows 服务器和域控制器
3. 枚举 SMB 共享、SNMP 社区和 Web 管理界面，快速获取初始立足点
4. 识别并利用具有默认凭据的未修补 Apache Tomcat 实例获取初始立足点
5. 通过本地 Windows 内核漏洞提升权限，然后用 Mimikatz 提取缓存的域凭据
6. 演示横向移动至包含客户记录的数据库服务器，证明网络分段不足
7. 记录从初始访问到敏感数据的完整攻击路径，以及每个漏洞的修复步骤

**常见陷阱**：
- 在业务时间内过于激进地扫描，触发 IDS 告警或服务中断
- 扫描前未验证所有目标 IP 实际上由客户所有
- 未记录失败的漏洞利用尝试，错过报告有效控制措施的机会
- 测试后忘记清理 Meterpreter 会话和上传的工具

## 输出格式

```
## 发现：Apache Tomcat 未修补且使用默认凭据

**ID**: NET-001
**严重性**: 严重（CVSS 9.8）
**受影响主机**: 10.10.5.23（tomcat-prod.internal.corp）
**服务**: Apache Tomcat 8.5.31，端口 8080
**CVE**: CVE-2019-0232

**描述**:
10.10.5.23:8080 上的 Apache Tomcat 实例运行版本 8.5.31，
易受 CVE-2019-0232（通过 CGI Servlet 远程执行代码）攻击。
此外，Tomcat Manager 界面可使用默认凭据（tomcat:tomcat）访问，
允许部署任意 WAR 文件。

**概念验证**:
1. 使用凭据 tomcat:tomcat 访问 http://10.10.5.23:8080/manager/html
2. 部署包含反向 Shell 载荷的恶意 WAR 文件
3. 获得以 NT AUTHORITY\SYSTEM 身份的命令执行权限

**影响**:
Tomcat 服务器完全入侵。从该主机，测试人员
使用收割的凭据横向移动到同一子网的 3 个其他系统，
最终访问包含 50,000+ 条记录的客户数据库。

**修复建议**:
1. 立即更改默认 Tomcat Manager 凭据
2. 将 Apache Tomcat 升级到最新稳定版本（当前为 10.1.x）
3. 限制 Tomcat Manager 界面只允许授权管理 IP 访问
4. 在 Web 服务器层和数据库层之间实施网络分段
```

