hiagokinlevi/ir-playbooks-automation
GitHub: hiagokinlevi/ir-playbooks-automation
这是一个专为SOC团队设计的实战型工具包,提供基于NIST标准的事件响应手册及云环境下的自动化隔离与取证能力。
Stars: 2 | Forks: 0
# ir-playbooks-automation
**为 SOC 团队和蓝队人员提供的事件响应手册、自动分流工作流以及隔离自动化。**
## 概述
`ir-playbooks-automation` 是一个结构化的、面向实践者的工具包,专供安全运营中心 (SOC) 分析师、事件响应人员和蓝队人员使用。它提供:
- **操作手册**,涵盖分流、隔离、根除和恢复阶段
- **自动化脚本**,用于安全、可审计的隔离操作(AWS 隔离、S3 锁定、GCP VM 隔离、Azure 会话撤销、证据打包)
- **事件记录和报告模板**,用于文档标准化
- **Pydantic 数据模式**,用于机器可读的事件状态
- **CLI 工具**,用于开启事件、管理严重性、运行手册和生成报告
- **培训实验室和教程**,用于新分析师入职
该工具遵循 NIST SP 800-61r2 事件响应生命周期,专为现实世界的生产 SOC 环境而设计。
## 仓库结构
```
ir-playbooks-automation/
├── playbooks/
│ ├── triage/ # Alert validation and initial classification
│ ├── containment/ # Isolation and containment procedures
│ ├── eradication/ # Persistence removal and cleanup
│ ├── recovery/ # Controlled service restoration
│ └── incident-types/ # Type-specific response guidance
├── automations/
│ ├── evidence_packaging/ # Evidence collection and hash verification
│ ├── cloud/ # Cloud containment automation (AWS, Azure, GCP)
│ └── identity/ # Identity and session revocation
├── templates/
│ ├── incident-records/ # Incident record templates
│ ├── timelines/ # Attack timeline templates
│ ├── reports/ # Technical report templates
│ └── communications/ # Executive communication templates
├── schemas/ # Pydantic data models
├── workflows/ # Incident state machine
├── cli/ # Click-based CLI entrypoint
├── docs/ # Architecture and model documentation
├── training/ # Tutorials and hands-on labs
└── tests/ # Unit tests
```
## 快速开始
### 前置条件
- Python 3.11+
- 已配置 AWS CLI(用于云自动化)
- Azure PowerShell 模块(用于身份自动化)
### 安装
```
# Clone the repository
git clone https://github.com/hiagokinlevi/ir-playbooks-automation.git
cd ir-playbooks-automation
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# 安装依赖
pip install -e .
# 仅在需要实时 AWS 遏制时安装 AWS 自动化支持
pip install -e .[aws]
# 离线/轻依赖验证路径
pip install -e . --no-deps --no-build-isolation
# 复制并配置环境
cp .env.example .env
# 使用您的环境设置编辑 .env
```
### 开启您的第一个事件
```
# 创建一个新的 incident
k1n-ir open-incident --type credential_compromise --severity high
# 启动 playbook
k1n-ir start-playbook --incident-id INC-20250101-001 --playbook triage/initial_triage
# 调查后设置严重性
k1n-ir set-severity --incident-id INC-20250101-001 --severity critical
# 生成技术报告
k1n-ir generate-report --incident-id INC-20250101-001 --format markdown
# 在实时遏制前预览 S3 公共访问锁定
k1n-ir lockdown-s3-bucket \
--bucket-name exposed-data-bucket \
--incident-id INC-20250101-001 \
--output s3-lockdown-preview.json
# 在实时遏制前预览 Azure VM NSG 隔离
k1n-ir isolate-azure-vm \
--subscription-id 00000000-0000-0000-0000-000000000000 \
--resource-group rg-production \
--vm-name app-server-01 \
--incident-id INC-20250101-001 \
--output azure-isolation-preview.json
# 在实时遏制前预览 GCP Compute Engine 隔离
k1n-ir isolate-gcp-instance \
--project-id production-project \
--zone us-central1-a \
--instance-name web-01 \
--incident-id INC-20250101-001 \
--output gcp-isolation-preview.json
```
## 手册
| 手册 | 阶段 | 描述 |
|----------|-------|-------------|
| `triage/initial_triage` | 分流 | 告警验证、分类、严重性分配 |
| `containment/compromised_credentials` | 隔离 | 凭证撤销、会话终止、MFA 强制执行 |
| `containment/cloud_exposure` | 隔离 | 云资源隔离、策略修复 |
| `eradication/remove_persistence` | 根除 | 持久化机制移除与验证 |
| `recovery/controlled_return` | 恢复 | 受控服务恢复检查清单 |
| `incident-types/api_abuse` | 全生命周期 | API 特定的滥用响应 |
| `incident-types/phishing` | 全生命周期 | 钓鱼邮件和凭证窃取响应 |
| `incident-types/secret_leakage` | 全生命周期 | 凭证和密钥泄露响应 |
## 自动化
| 脚本 | 平台 | 描述 |
|--------|----------|-------------|
| `evidence_packaging/packager.py` | 任意 | 创建包含 SHA-256 清单的结构化证据包 |
| `cloud/isolate_aws_instance.py` | AWS | 通过隔离安全组隔离 EC2 实例 |
| `cloud/lockdown_s3_bucket.py` | AWS | 锁定公共 S3 存储桶并保留回滚状态 |
| `cloud/isolate_azure_vm.py` | Azure | 使用事件 NSG 规则和回滚状态隔离 Azure VM |
| `cloud/isolate_gcp_instance.py` | GCP | 使用拒绝所有防火墙标签和回滚状态隔离 Compute Engine VM |
| `identity/revoke_azure_sessions.ps1` | Azure AD | 撤销被攻陷用户的所有活动会话 |
### Azure VM 网络隔离
已安装的 `k1n-ir isolate-azure-vm` 命令默认会预览 Azure VM 隔离。它会记录实际隔离运行时会保留的回滚元数据,预览特定于事件的 NSG 创建和 NIC 关联,并可选择在批准后解除分配 VM。
仅在隔离批准后才使用 `--execute`。实时模式需要 Azure 身份、计算和网络 SDK 软件包,以及 `automations/cloud/isolate_azure_vm.py` 中列出的 RBAC 权限。
### GCP Compute Engine 隔离
已安装的 `k1n-ir isolate-gcp-instance` 命令默认以 dry-run 模式运行。它预览特定于事件的网络标签、入站拒绝所有防火墙规则、出站拒绝所有防火墙规则、保存的回滚状态以及可选的停止操作,而无需调用 GCP API。
仅在隔离批准后才使用 `--execute`。当 `APPROVAL_REQUIRED_FOR_CONTAINMENT=true` 时,CLI 会在实时执行前提示。实时模式使用 Application Default Credentials,并且需要 Compute Engine 实例管理权限以及防火墙规则权限。
### S3 存储桶暴露隔离
已安装的 `k1n-ir lockdown-s3-bucket` 命令默认会预览存储桶锁定。它会记录存储桶的公共访问阻止、存储桶策略、ACL 授权和标签集以便回滚,然后显示实时模式将应用的公共访问阻止、公共策略移除、ACL 加固和事件标记步骤。
仅在隔离批准后才使用 `--execute`。实时模式需要 boto3 支持(`pip install -e .[aws]` 或 `pip install boto3`)以及 `automations/cloud/lockdown_s3_bucket.py` 中列出的 S3 权限。
## 事件状态机
事件会经过以下状态:
```
DETECTED → TRIAGING → CONFIRMED → CONTAINING → ERADICATING → RECOVERING → CLOSED
↑
POST_INCIDENT_REVIEW ←┘
```
可以在任何状态使用 `CLOSED_FALSE_POSITIVE` 关闭误报。
## 配置
所有运行时行为均通过 `.env` 控制(参见 `.env.example`):
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `INCIDENT_TYPE` | `generic` | 新记录的默认事件类型 |
| `SEVERITY_MODEL` | `standard` | 严重性分类模型 |
| `EVIDENCE_DIR` | `./evidence` | 用于存储证据的本地目录 |
| `SAFE_AUTOMATION_MODE` | `true` | 为所有自动化启用 dry-run 模式 |
| `APPROVAL_REQUIRED_FOR_CONTAINMENT` | `true` | 隔离前需要明确确认 |
| `MASKING_MODE` | `true` | 在日志和报告中屏蔽敏感数据 |
## 安全
请通过 [SECURITY.md](SECURITY.md) 中描述的流程报告漏洞。请不要为安全发现公开开启 issue。
## 贡献
参见 [CONTRIBUTING.md](CONTRIBUTING.md) 以了解开发设置、编码标准和 PR 流程。
## 许可证
CC BY 4.0 — 参见 [LICENSE](LICENSE)。在注明 **Hiago Kin Levi** 的前提下,可自由使用、共享和改编。
标签:AWS, Azure, CLI, DPI, ESC漏洞, GCP, NIST, Playbook, Pydantic, S3, WiFi技术, 事件管理, 云计算安全, 会话撤销, 剧本, 取证, 安全培训, 安全运营, 库, 应急响应, 恢复, 扫描框架, 持续运营, 根除, 模板, 漏洞修复, 漏洞利用检测, 网络安全培训, 网络调试, 自动化, 虚拟机隔离, 证据收集, 调查, 逆向工具, 遏制