| name | conducting-network-penetration-test |
| description | 对授权目标环境执行全面网络渗透测试,通过主机发现、端口扫描、服务枚举、漏洞识别和受控漏洞利用,评估网络基础设施的安全态势。测试人员遵循 PTES 方法论,从侦察到后渗透和报告全流程执行。
|
| domain | cybersecurity |
| subdomain | penetration-testing |
| tags | ["network-pentest","Nmap","Metasploit","vulnerability-exploitation","infrastructure-security"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
执行网络渗透测试
使用场景
- 在部署前后评估内部或外部网络基础设施的安全态势
- 在真实攻击条件下验证防火墙规则、网络分段和访问控制
- 识别网络服务、协议和配置中的可利用漏洞
- 满足要求定期渗透测试的 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,以最小化对运营的影响。
方法:
- 对可访问的子网执行基于 ARP 的主机发现,对禁用 ICMP 的主机执行 TCP SYN 发现
- 对所有已发现主机执行全端口扫描,优先处理 Windows 服务器和域控制器
- 枚举 SMB 共享、SNMP 社区和 Web 管理界面,快速获取初始立足点
- 识别并利用具有默认凭据的未修补 Apache Tomcat 实例获取初始立足点
- 通过本地 Windows 内核漏洞提升权限,然后用 Mimikatz 提取缓存的域凭据
- 演示横向移动至包含客户记录的数据库服务器,证明网络分段不足
- 记录从初始访问到敏感数据的完整攻击路径,以及每个漏洞的修复步骤
常见陷阱:
- 在业务时间内过于激进地扫描,触发 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 服务器层和数据库层之间实施网络分段