Deploys BAS platforms like SafeBreach, AttackIQ, Picus to simulate MITRE ATT&CK kill chain attacks and continuously validate security controls like EDR, SIEM, NGFW.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
违规和攻击模拟(Breach and Attack Simulation,BAS)是一种自动化、持续的方法,通过在生产安全基础设施上安全执行真实世界的攻击技术来验证安全控制有效性。与传统渗透测试(时间点评估)不同,BAS 平台持续模拟映射到 MITRE ATT&CK 的威胁,测试端点防护、网络安全、邮件网关、SIEM 检测和事件响应能力。主要平台包括 SafeBreach、AttackIQ、Picus Security(2024 年 Gartner 用户选择奖)、Cymulate、Pentera 和 SCYTHE。BAS 2.0 解决方案无需在每个端点预部署 Agent,即可跨整个 IT 环境安全模拟真实攻击者行为。
Deploys Breach and Attack Simulation (BAS) tools like SafeBreach and AttackIQ to continuously validate security controls by emulating MITRE ATT&CK techniques.
Deploys Breach and Attack Simulation (BAS) tools to continuously validate security controls by safely emulating MITRE ATT&CK techniques across production infrastructure.
Executes Purple Team exercises coordinating red team attack simulations and blue team detection validation with MITRE ATT&CK mapped scenarios and real-time testing. For SOC teams verifying detections and fixing gaps.
Share bugs, ideas, or general feedback.
违规和攻击模拟(Breach and Attack Simulation,BAS)是一种自动化、持续的方法,通过在生产安全基础设施上安全执行真实世界的攻击技术来验证安全控制有效性。与传统渗透测试(时间点评估)不同,BAS 平台持续模拟映射到 MITRE ATT&CK 的威胁,测试端点防护、网络安全、邮件网关、SIEM 检测和事件响应能力。主要平台包括 SafeBreach、AttackIQ、Picus Security(2024 年 Gartner 用户选择奖)、Cymulate、Pentera 和 SCYTHE。BAS 2.0 解决方案无需在每个端点预部署 Agent,即可跨整个 IT 环境安全模拟真实攻击者行为。
| 维度 | BAS | 渗透测试 | 红队 |
|---|---|---|---|
| 频率 | 持续/定时 | 每年/每季度 | 每年 |
| 自动化 | 全自动 | 工具辅助手动 | 手动 |
| 范围 | 完整杀伤链 | 特定目标 | 目标导向 |
| 安全性 | 安全模拟,无实际利用 | 受控利用 | 真实利用 |
| 覆盖率 | 数千种技术 | 数百项测试 | 聚焦场景 |
| 输出 | 控制差距分析 | 漏洞报告 | 叙述性报告 |
| 成本模式 | 订阅制 | 按项目收费 | 按项目收费 |
| 战术 | BAS 模拟示例 | 测试控制 |
|---|---|---|
| 初始访问 | 钓鱼载荷投递、利用公开应用 | 邮件网关、WAF、IPS |
| 执行 | PowerShell、WMI、恶意宏 | EDR、应用控制 |
| 持久化 | 注册表运行键、计划任务、服务 | EDR、SIEM 检测规则 |
| 权限提升 | Token 操控、UAC 绕过 | EDR、PAM、SIEM |
| 防御规避 | 进程注入、混淆、时间戳篡改 | EDR、行为分析 |
| 凭据访问 | Mimikatz、Kerberoasting、LSASS 转储 | EDR、Credential Guard |
| 发现 | AD 枚举、网络扫描 | SIEM、NDR |
| 横向移动 | PsExec、WMI、RDP、SMB | NDR、微分段 |
| 收集 | 屏幕截图、键盘记录、邮件采集 | DLP、UEBA |
| 外泄 | HTTP/DNS 外泄、云存储上传 | DLP、CASB、代理 |
| 命令与控制 | C2 信标、DNS 隧道、加密通道 | NGFW、代理、NDR |
控制有效性 = (阻断攻击数 + 检测攻击数)/ 总模拟攻击数 * 100
示例:
总模拟次数: 500
阻断(已拦截): 350
检测(已告警): 100
遗漏(无响应): 50
阻断率:350/500 = 70%
检测率:100/500 = 20%
总体评分:450/500 = 90%
差距率:50/500 = 10%
架构:
管理控制台(云 SaaS):
- 中央编排和报告
- 攻击场景库管理
- MITRE ATT&CK 映射仪表板
模拟 Agent:
- 攻击者 Agent:模拟威胁行为者行为
- 目标 Agent:接受模拟攻击
- 网络 Agent:测试网络层控制
跨区域部署 Agent:
- 企业网络(工作站)
- DMZ(Web 服务器)
- 数据中心(关键服务器)
- 云环境(AWS/Azure/GCP)
- 远程/VPN 网段
# BAS 场景配置示例
scenario:
name: "APT29(Cozy Bear)完整杀伤链"
threat_group: APT29
mitre_attack_techniques:
- T1566.001 # 鱼叉式网络钓鱼附件
- T1059.001 # PowerShell 执行
- T1547.001 # 注册表运行键持久化
- T1003.001 # LSASS 内存凭据转储
- T1021.002 # SMB/Windows 管理共享
- T1071.001 # Web 协议 C2
- T1048.003 # DNS 外泄
phases:
- name: "初始访问"
actions:
- deliver_phishing_payload:
type: office_macro
target: email_gateway
variants: [docm, xlsm, ppam]
- name: "执行与持久化"
actions:
- execute_powershell:
encoded: true
amsi_bypass: true
- create_scheduled_task:
technique: T1053.005
- name: "凭据访问"
actions:
- dump_lsass:
method: [procdump, comsvcs, nanodump]
- name: "横向移动"
actions:
- psexec_lateral:
target: internal_server
- wmi_lateral:
target: file_server
- name: "外泄"
actions:
- dns_exfiltration:
data_size: 10MB
encoding: base64
def map_bas_results_to_controls(simulation_results):
"""将 BAS 结果映射到安全控制有效性。"""
control_scores = {}
control_mapping = {
"email_gateway": ["T1566.001", "T1566.002", "T1566.003"],
"edr": ["T1059.001", "T1003.001", "T1055", "T1547.001"],
"ngfw": ["T1071.001", "T1071.004", "T1048"],
"siem": ["T1053.005", "T1021.002", "T1087"],
"dlp": ["T1048.003", "T1567", "T1041"],
"ndr": ["T1071", "T1021", "T1040"],
}
for control, techniques in control_mapping.items():
relevant = [r for r in simulation_results
if r["technique_id"] in techniques]
if not relevant:
continue
prevented = sum(1 for r in relevant if r["result"] == "prevented")
detected = sum(1 for r in relevant if r["result"] == "detected")
missed = sum(1 for r in relevant if r["result"] == "missed")
total = len(relevant)
control_scores[control] = {
"total_tests": total,
"prevented": prevented,
"detected": detected,
"missed": missed,
"prevention_rate": round(prevented / total * 100, 1),
"detection_rate": round(detected / total * 100, 1),
"effectiveness": round((prevented + detected) / total * 100, 1),
}
return control_scores
验证计划:
每日:
- 恶意软件投递模拟(邮件网关测试)
- C2 通信模拟(防火墙/代理测试)
- 已知勒索软件行为模拟(EDR 测试)
每周:
- 完整杀伤链模拟(APT 场景)
- 横向移动模拟(网络分段测试)
- 数据外泄模拟(DLP 测试)
每月:
- 完整 MITRE ATT&CK 覆盖率评估
- 新威胁组织 TTP 模拟
- 安全控制变更后的回归测试
按需:
- 防火墙规则变更后
- EDR 策略更新后
- 新威胁情报(零日响应)后