SuperAPI AI 工具集

test-attack-technique

安全与审计

查看项目

更新于 10-16 06:04

技能介绍

用途

该技能用于测试和验证 Stratus Red Team 的攻击技术。它围绕单个攻击技术执行完整的生命周期:预热(warmup)、引爆(detonation)和清理(cleanup),并在过程中进行校验,最终生成 HTML 报告。

主要能力

  • 解析输入并验证指定技术 ID 是否存在,若不存在则列出可用技术。
  • 根据技术所属平台验证当前云凭证,并请求用户明确确认。
  • 基于技术文档、源码分析和对攻击的理解,起草预期结果计划,包括预热阶段预期创建的基础设施、引爆阶段的预期行为以及验证检查项。
  • 执行攻击生命周期:运行预热、引爆、验证假设、清理(除非使用 --skip-cleanup),并解析各阶段输出。
  • 生成 HTML 测试报告,保存到 scratchpad 目录,文件名格式为 test-report-<technique-id>-<timestamp>.html。

使用方式

技能被调用后按以下工作流执行:

  1. 解析输入并验证技术存在:从参数提取技术 ID,检查 --skip-cleanup 标志,先切换到 v2/ 目录(cd v2),静默运行 go run cmd/stratus/.go show <technique-id> 验证技术是否存在,若不存在则显示错误并用 go run cmd/stratus/.go list 列出可用技术。存储技术元数据(名称、平台、MITRE ATT&CK 战术)。

  2. 验证云凭证:根据技术平台验证当前凭证并获取用户明确确认。各平台快速参考命令:

    • AWS:aws sts get-caller-identity,显示 Account、UserId、Arn。
    • Azure:az account show,显示 name、id、user、tenantId;关键:在运行 stratus 命令前导出 AZURE_SUBSCRIPTION_ID 和 ARM_SUBSCRIPTION_ID 环境变量。
    • GCP:gcloud config get-value project && gcloud auth list,显示项目和活动账户。
    • Kubernetes:kubectl config current-context && kubectl config view --minify,显示集群和命名空间。
    • Entra ID:az ad signed-in-user show,显示 userPrincipalName 和 id。 向用户展示凭证并请求确认,使用 AskUserQuestion 获取确认;若用户拒绝则停止并提供更改凭证的说明。
  3. 起草预期结果计划:阅读技术详情(go run cmd/stratus/*.go show <technique-id> 的输出),阅读攻击技术源码以理解实现意图和创建的资源,包括基础设施创建逻辑(预热阶段)、攻击执行逻辑(引爆阶段)、资源名称/类型/配置、预期输出和产物。将源码实现映射到预期行为,理解 MITRE ATT&CK 战术和技术行为。起草高层计划,包括预热阶段预期(将创建的基础设施、大致资源数量、特殊配置)、引爆阶段预期(将执行的操作、生成的产物如凭证/令牌/数据、可观察行为)、验证检查(预热后验证什么、引爆后验证什么)。注意:仅关注资源创建、攻击输出和产物,不关注审计日志或安全监控。先以纯文本输出完整计划,再用 AskUserQuestion 获取用户验证,选项为“是,按此计划继续”或“否,我想修改计划”。

  4. 执行攻击生命周期并解析输出:使用 TodoWrite 跟踪进度。检查清单包括:验证技术存在、验证并确认凭证、起草并批准执行计划、导出 AZURE_SUBSCRIPTION_ID 和 ARM_SUBSCRIPTION_ID(仅 Azure)、运行预热并解析输出、运行引爆并解析输出、对照结果验证假设、运行清理(除非 --skip-cleanup)、生成 HTML 报告。

    预热阶段:对于 Azure 技术,先导出订阅 ID: export AZURE_SUBSCRIPTION_ID=$(az account show --query id -o tsv) export ARM_SUBSCRIPTION_ID=$AZURE_SUBSCRIPTION_ID 然后从 v2/ 目录运行预热:cd v2 && go run cmd/stratus/*.go warmup <technique-id> 解析输出以提取资源标识符(存储桶名称、实例 ID、ARN)、状态消息、警告或错误。输出是非结构化的,需根据技术类型智能解析。

    引爆阶段:cd v2 && go run cmd/stratus/*.go detonate <technique-id> 解析输出以提取攻击执行消息、检索到的凭证/令牌/泄露数据引用、成功/失败指示、错误消息。

    验证阶段:比较预期与实际结果,使用云提供商 CLI 命令验证资源创建,使用 stratus 输出和云 CLI 命令验证攻击行为,记录差异。重要:使用 stratus 输出、云 CLI 命令和直接资源检查进行验证,不使用审计日志或监控。为每个使用 CLI 命令的验证检查捕获命令及其输出。若 CLI 验证不可行,在报告中建议手动验证命令。

    清理阶段(默认运行):cd v2 && go run cmd/stratus/*.go cleanup <technique-id> 除非设置了 --skip-cleanup,否则清理会运行。验证成功并记录任何失败。

  5. 生成 HTML 报告:保存到 scratchpad 目录,文件名 test-report-<technique-id>-<timestamp>.html。使用模板文件 assets/report-template.html 并替换占位符,包括技术 ID、名称、平台、战术、时间戳、凭证信息、预期预热资源、预期引爆行为、计划检查、预热状态、预热资源、预热输出、引爆状态、引爆行为、引爆输出、验证检查(为每个检查生成 HTML,包含 CLI 命令和输出)、清理状态、清理输出、总体结果、通过检查数、总检查数、问题、建议。生成后显示文件路径、显示摘要、建议在浏览器中打开。

适用场景

  • 在专用测试环境中验证云攻击技术的实现效果。
  • 测试 Stratus Red Team 攻击技术的预热、引爆和清理流程。
  • 需要生成攻击技术测试报告的场景。

限制与要求

  • 需要 Go 1.22+。
  • 必须从 v2/ 目录运行。
  • 需要为目标平台配置云凭证。
  • 需要创建/删除资源的权限。
  • 仅限测试/开发环境(非生产环境)。
  • 执行真实攻击,创建云资源,可能产生最低成本。
  • 默认运行清理(使用 --skip-cleanup 可保留资源)。
  • 可能触发安全警报(预期内)。
  • 报告仅包含账户 ID,绝不包含凭证。

安全说明

该技能执行真实攻击并创建云资源,仅应在专用测试环境中运行。

另见

references/credentials.md - 各云提供商的详细凭证验证。