界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
效率与协作 · SKILL.md

implementing-continuous-security-validation-with-bas

implementing-continuous-security-validation-with-bas

【效率与协作】部署违规和攻击模拟(BAS)工具,通过安全模拟整个杀伤链中的真实攻击技术,持续验证安全控制有效性。

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: implementing-continuous-security-validation-with-bas description: > 部署违规和攻击模拟(BAS)工具,通过安全模拟整个杀伤链中的真实攻击技术,持续验证安全控制有效性。 domain: cybersecurity subdomain: vulnerability-management tags: [breach-attack-simulation, bas, security-validation, safebreach, attackiq, picus, cymulate, mitre-attack] version: "1.0" author: mahipal license: Apache-2.0

使用 BAS 实施持续安全验证(Implementing Continuous Security Validation with BAS)

概述

违规和攻击模拟(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 平台授权(SafeBreach、AttackIQ、Picus、Cymulate 或 Pentera)
  • 待验证的已部署安全控制(EDR、NGFW、邮件网关、SIEM、WAF)
  • 熟悉 MITRE ATT&CK 框架
  • BAS Agent/模拟器可访问的网络段
  • 能对验证结果采取行动的安全运营团队
  • 在生产环境运行模拟的变更管理审批

核心概念

BAS 与传统安全测试对比

维度BAS渗透测试红队
频率持续/定时每年/每季度每年
自动化全自动工具辅助手动手动
范围完整杀伤链特定目标目标导向
安全性安全模拟,无实际利用受控利用真实利用
覆盖率数千种技术数百项测试聚焦场景
输出控制差距分析漏洞报告叙述性报告
成本模式订阅制按项目收费按项目收费

MITRE ATT&CK 覆盖率映射

战术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、SMBNDR、微分段
收集屏幕截图、键盘记录、邮件采集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%

实施步骤

步骤 1:部署 BAS 平台组件

架构:
  管理控制台(云 SaaS):
    - 中央编排和报告
    - 攻击场景库管理
    - MITRE ATT&CK 映射仪表板

  模拟 Agent:
    - 攻击者 Agent:模拟威胁行为者行为
    - 目标 Agent:接受模拟攻击
    - 网络 Agent:测试网络层控制

  跨区域部署 Agent:
    - 企业网络(工作站)
    - DMZ(Web 服务器)
    - 数据中心(关键服务器)
    - 云环境(AWS/Azure/GCP)
    - 远程/VPN 网段

步骤 2:配置攻击场景

# 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

步骤 3:将结果映射到安全控制

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

步骤 4:安排持续验证

验证计划:
  每日:
    - 恶意软件投递模拟(邮件网关测试)
    - C2 通信模拟(防火墙/代理测试)
    - 已知勒索软件行为模拟(EDR 测试)

  每周:
    - 完整杀伤链模拟(APT 场景)
    - 横向移动模拟(网络分段测试)
    - 数据外泄模拟(DLP 测试)

  每月:
    - 完整 MITRE ATT&CK 覆盖率评估
    - 新威胁组织 TTP 模拟
    - 安全控制变更后的回归测试

  按需:
    - 防火墙规则变更后
    - EDR 策略更新后
    - 新威胁情报(零日响应)后

最佳实践

  1. 从与行业相关的已知威胁组织模拟开始
  2. 在启用完整模拟之前,始终先在安全模式下运行
  3. 与 SOC 团队协调,使其能够区分 BAS 流量和真实攻击
  4. 使用 BAS 结果优先排序 SIEM 检测规则的开发工作
  5. 跟踪控制有效性评分的趋势,以证明安全态势改善
  6. 将 BAS 与工单系统集成,自动为差距生成修复工单
  7. 每次安全控制变更后运行验证,捕获回归问题
  8. 将所有模拟映射到 MITRE ATT&CK,实现标准化报告

常见误区

  • 在未通知 SOC 的情况下运行 BAS,导致不必要的事件响应
  • 只测试阻断能力,忽略检测/响应验证
  • 不对 BAS 发现采取行动,导致安全差距长期存在
  • 只在一个网络区域部署 BAS Agent,遗漏跨区域差距
  • 只关注通用威胁,而非与 APT 相关的场景
  • 将 BAS 视为渗透测试的替代品而非补充

相关技能

  • implementing-attack-path-analysis-with-xm-cyber
  • performing-purple-team-exercise
  • implementing-siem-use-cases-for-detection
  • implementing-threat-modeling-with-mitre-attack
我的收藏