Yamato-Security/senrigan
GitHub: Yamato-Security/senrigan
Senrigan 是一款开源的离线 AWS CloudTrail 数字取证与威胁狩猎平台,无需 SIEM 即可在几分钟内追踪 AWS 威胁。
Stars: 2 | Forks: 0
# Senrigan
## 什么是 Senrigan?
### 几分钟内追踪 AWS 威胁 — 无需 SIEM,无需云基础设施
[](LICENSE)
[](https://github.com/Yamato-Security/senrigan/actions/workflows/ci.yml)
[](docker/docker-compose.yml)
[](ingester/Cargo.toml)
[](agent/requirements.txt)
### 核心功能
### 🔍 100+ 内置追踪 + AI 聊天
### 📄 HTML 威胁追踪报告
### 📊 60 个预置仪表板图表
### 🗺 AWS Config 资源图谱
### 适用人群
- 🔍 安全工程师 — 调查 AWS 账户遭入侵、权限提升或数据泄露
- 🛡 云安全团队 — 无需专用 SIEM 即可执行周期性的云安全态势审查
- 🧑💻 开发者与 SRE — 在安全事件发生期间或之后,快速审计自身账户的 CloudTrail 历史记录
## 前置条件
| 需求 | 详情 |
|---------------------------------------|----------------------------------------------------|
| **Docker** | Docker Desktop 或 Docker Engine + Compose v2 |
| **make** | GNU Make(macOS 已预装) |
| **资源** | 至少 16 GB 内存,推荐使用 SSD |
| **CloudTrail 日志** | 从 AWS 导出的 `.json` 或 `.json.gz` 文件 |
| *(可选)* **AWS Config 快照** | 用于 AWS 资源图谱的 `.json` 或 `.json.gz` 文件 |
| *(可选)* **OpenAI API key** | 用于生成 AI 查询 |
| *(可选)* **MaxMind GeoLite2** | 用于 GeoIP 富化的 `.mmdb` 文件 |
## 快速开始
**第 1 步。** 从 S3 下载 CloudTrail 日志。
```
aws s3 cp s3:// / --recursive --include "*.json.gz"
```
**第 2 步。** 克隆仓库,导入日志,并启动所有服务。
```
# Clone 代码仓库
git clone https://github.com/Yamato-Security/senrigan.git
cd senrigan
# 将下载的日志放入 Docker logs 目录中
cp -r / docker/logs/
# 将 CloudTrail logs 导入 DuckDB
make ingest
# 启动所有服务(agent + dashboard)
make up
```
**第 3 步。** 🪽 打开浏览器,开始追踪!🪽
- http://localhost:8501 — 内置查询和 AI 聊天
- http://localhost:8088 — 仪表板(`admin` / `admin`)
- http://localhost:8502 — AWS Config 资源图谱
**(可选)** GeoIP 富化。
将 [GeoLite2 `.mmdb` 文件](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) 放入 `docker/data/geoip/`,然后:
```
make ingest-geoip
```
**(可选)** 导入 AWS Config 快照以进行资源图谱可视化。
将 AWS Config 快照文件放入 `docker/logs/config/`,然后:
```
make ingest-config
```
## 企业代理 / 自定义 CA 证书
如果您处于执行 TLS 检查的企业代理之后,请参阅 [doc/DEVELOPMENT.md](doc/DEVELOPMENT.md#6-corporate-proxy--custom-ca-certificate) 获取设置说明。
## 内置查询和仪表板参考
### 🎯 内置追踪 — 100+ 查询
类别按 DFIR 取证优先级排序 — 首先检查检测工具篡改,其次是身份滥用,最后是数据影响。
| 类别 | 查询数量 | 涵盖的主要威胁 |
|----------|:-------:|---------------------|
| 🛡 检测与响应 | 12 | 审计服务篡改 (CloudTrail/GuardDuty/Config/SecurityHub/Macie) · SCP 删除 · 告警抑制 · 日志泄露 |
| 🔑 身份与访问 | 26 | Root 使用 · 控制台登录/MFA · 权限提升 · 信任策略后门 · PassRole 滥用 · 跨账户 AssumeRole · SSO/SAML/OIDC · 凭据枚举 |
| 🪣 数据与存储 | 21 | S3 批量删除/下载 · 机密信息批量读取 · 备份篡改 · KMS 操作 · 快照共享 · EBS Direct API 泄露 · DynamoDB 导出 · S3 跨账户复制 |
| ⚡ 计算与无服务器 | 14 | EC2 大规模停止/终止 · SSM 横向移动 · Lambda/ECS/EKS/ECR 篡改 · EventBridge 持久化 · 挖矿 · Lightsail 滥用 |
| 🌐 网络与基础设施 | 14 | 对互联网开放的安全组 · VPC 流日志删除 · CloudFront 劫持 · 隐蔽 VPN/TGW 隧道 · Elastic IP C2 · API Gateway 密钥 |
| 🕵 威胁模式 | 5 | 非工作时间写入 · 探测突发 · 多区域扩散 · 异常用户代理 · 首次 API 调用 |
| 📊 活动与基线 | 3 | 控制台写入事件 · 错误激增 · 近期错误 |
| 🌍 GeoIP 分析 ✦ | 12 | 不可能旅行 · 多国凭据 · 按地理位置排名的登录/拒绝/写入 · 国家/城市/ASN 细分 · event_name × 国家 · 身份 × 国家 |
| ☁ IaC 与平台 | 2 | CI/CD 供应链 · CloudFormation 滥用 |
### 📊 仪表板图表 — 60+ 图表
| 标签页 | 图表 | 显示内容 |
|-----|:------:|---------------|
| 🔑 身份与访问 | 9 | 控制台登录 · MFA 趋势 · 登录热力图 · 敏感 API · Root 使用 · IAM 实体活动 · 权限提升 · SSO/privesc |
| 🎯 威胁检测 | 12 | 事件量 · 读/写比率 · 防御规避 · 访问拒绝 · 错误趋势 · SCP/Config/NACL/EventBridge 篡改 |
| 📊 API 活动 | 7 | 热门 API · 区域分布 · 源 IP · 用户代理 · 机密异常 · 外部 AssumeRole · Route53 更改 |
| 🖥️ 计算 | 5 | SSM 执行 · EC2 公共快照 · EKS/ECR 事件 · ECS 后门 · EBS Direct API 泄露 |
| 🪣 S3 与 RDS | 9 | S3 策略/ACL · 批量下载/删除 · 版本控制/日志记录已禁用 · 跨账户复制 · RDS 快照共享 · Backup 篡改 |
| 🌍 GeoIP 情报 | 6 | 世界地图 · 按请求量排名靠前的国家/城市/ASN · event_name × 国家 · 身份 × 国家 |
| 🕒 时序分析 | 6 | 按身份/IP/API/代理划分的首次/最后一次出现 · 休眠账户重新激活 · 速度激增 |
| 🚨 高危 API 监控 | 7 | HRM 时间序列 · 热门调用/操作者/IP · 防御规避/凭据详情 · 按区域 |
## 模块
| 模块 | 语言 | 角色 | README |
|--------|----------|------|--------|
| `ingester` | Rust 1.85+ | CloudTrail 日志导入 (READ_WRITE) | [ingester/README.md](ingester/README.md) |
| `agent` | Python 3.14+ / Streamlit | 用于威胁追踪的 AI 辅助交互式聊天 (READ_ONLY) | [agent/README.md](agent/README.md) |
| `dashboard` | Apache Superset 6.1 | BI 可视化 (READ_ONLY) | [dashboard/README.md](dashboard/README.md) |
| `config_viz` | FastAPI + React | AWS Config 可视化 (READ_ONLY) | [config_viz/README.md](config_viz/README.md) |
## 架构
四个 Docker 容器通过 bind mount (`docker/data/db/`) 共享一个 DuckDB 文件。
```
┌────────────────────────────────────────────────────────────────────────┐
│ Docker Compose │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ ingester │ │ agent │ │ config_viz │ │ dashboard │ │
│ │ (Rust) │ │ (Streamlit) │ │ (FastAPI+ │ │ (Superset) │ │
│ │ │ │ │ │ React) │ │ │ │
│ │ CloudTrail │ │ AI Chat │ │ Resource │ │ Visualiz │ │
│ │ AWS Config │ │ SQL gen/exec│ │ Graph │ │ │ │
│ │ ingest │ │ READ_ONLY │ │ READ_ONLY │ │ READ_ONLY │ │
│ │ READ_WRITE │ │ │ │ │ │ │ │
│ └──────┬───────┘ └──────┬───────┘ └────┬────────┘ └─────┬───────┘ │
│ └─────────────────┴───────────────┴─────────────────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ DuckDB │ │
│ │ (Bind Mount) │ │
│ │ (SSD) │ │
│ └──────────────┘ │
└────────────────────────────────────────────────────────────────────────┘
```
### 端到端时序图
有关完整的生命周期时序图,请参阅 [doc/ARCHITECTURE.md](doc/ARCHITECTURE.md#end-to-end-sequence-diagram)。
## 许可证
GNU Affero General Public License v3.0 — 详见 [LICENSE](LICENSE)。
## 致谢
这个项目的存在要感谢这些优秀的开源项目和数据集 :)
- [Apache Superset](https://superset.apache.org/) — BI 平台
- [AWS CloudTrail Lake query samples](https://github.com/aws-samples/cloud-trail-lake-query-samples) — CloudTrail Lake 查询示例
- [AWS Incident Response](https://github.com/easttimor/aws-incident-response/) - AWS 事件响应手册和工具
- [DuckDB](https://duckdb.org/) — 嵌入式分析数据库
- [flaws.cloud](http://flaws.cloud) — 故意暴露漏洞的 AWS CloudTrail 数据集
- [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) — GeoIP 数据库
- [SIEM on Amazon OpenSearch Service](https://github.com/aws-samples/siem-on-amazon-opensearch-service) — 类似 SIEM 的 CloudTrail 分析参考实现
- [Suzaku](https://github.com/Yamato-Security/suzaku) — Suzaku,由 Yamato Security 创建的 CloudTrail 日志分析工具
- [Yamato Security](https://github.com/Yamato-Security) — [suzaku-sample-data](https://github.com/Yamato-Security/suzaku-sample-data)
## 什么是 Senrigan?
### 几分钟内追踪 AWS 威胁 — 无需 SIEM,无需云基础设施
[](LICENSE)
[](https://github.com/Yamato-Security/senrigan/actions/workflows/ci.yml)
[](docker/docker-compose.yml)
[](ingester/Cargo.toml)
[](agent/requirements.txt)
### 核心功能
### 🔍 100+ 内置追踪 + AI 聊天
### 📄 HTML 威胁追踪报告
### 📊 60 个预置仪表板图表
### 🗺 AWS Config 资源图谱
### 适用人群
- 🔍 安全工程师 — 调查 AWS 账户遭入侵、权限提升或数据泄露
- 🛡 云安全团队 — 无需专用 SIEM 即可执行周期性的云安全态势审查
- 🧑💻 开发者与 SRE — 在安全事件发生期间或之后,快速审计自身账户的 CloudTrail 历史记录
## 前置条件
| 需求 | 详情 |
|---------------------------------------|----------------------------------------------------|
| **Docker** | Docker Desktop 或 Docker Engine + Compose v2 |
| **make** | GNU Make(macOS 已预装) |
| **资源** | 至少 16 GB 内存,推荐使用 SSD |
| **CloudTrail 日志** | 从 AWS 导出的 `.json` 或 `.json.gz` 文件 |
| *(可选)* **AWS Config 快照** | 用于 AWS 资源图谱的 `.json` 或 `.json.gz` 文件 |
| *(可选)* **OpenAI API key** | 用于生成 AI 查询 |
| *(可选)* **MaxMind GeoLite2** | 用于 GeoIP 富化的 `.mmdb` 文件 |
## 快速开始
**第 1 步。** 从 S3 下载 CloudTrail 日志。
```
aws s3 cp s3://📋 完整列表 — 所有 100+ 查询(点击展开)
### 内置追踪 #### 🛡 检测与响应 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🛑 CloudTrail 篡改 | timeseries | 检测任何停止或修改 CloudTrail 的尝试 — 最关键的掩盖痕迹指标 | | 2 | 🛡️ GuardDuty 探测器篡改 | timeseries | 检测 GuardDuty 的禁用、删除和威胁情报操纵 | | 3 | ⛔ Security Hub 篡改 | timeseries | 检测 Security Hub 的禁用、标准禁用和调查结果抑制 | | 4 | ⚙️ AWS Config 篡改 | timeseries | 检测 AWS Config 记录器/规则删除(消除合规性证据) | | 5 | 🛡 Organizations SCP 更改 | timeseries | 检测 SCP 创建、更新和删除 — 移除 Deny SCP 会消除 OU 中每个账户的防护栏 | | 6 | 🚫 AWS Macie 篡改 | timeseries | 检测 Macie 禁用和调查结果过滤器创建(泄露前的防御规避) | | 7 | 🚨 CloudWatch 告警删除 / 禁用 | timeseries | 检测告警删除和 DisableAlarmActions — 在不删除告警的情况下使安全告警静音 | | 8 | 📜 CloudWatch Logs 订阅更改 | timeseries | 检测 CW Logs 订阅过滤器的创建/删除(将实时日志泄露到攻击者的 Kinesis/Lambda) | | 9 | 🏹 WAF WebACL 更改 | timeseries | 检测跨 WAFv2/WAF Classic 的 WAF WebACL 创建、更新和删除 | | 10 | 🔍 GuardDuty 调查结果读取 | timeseries | 检测 ListFindings / GetFindings — 攻击者读取活动的调查结果以了解 SOC 已经检测到了什么 | | 11 | 💰 预算 / 成本异常更改 | timeseries | 检测 Budget/AnomalyMonitor 删除(隐藏挖矿成本) | | 12 | 🚫 访问拒绝错误 | bar | 按身份和 API 对 AccessDenied 错误进行分组 — 排名靠前的违规者表明存在凭据滥用 | #### 🔑 身份与访问 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🔑 Root 账户活动 | timeseries | 检测由 root 账户发出的任何 API 调用 — 生产环境中绝不应使用 root | | 2 | 🔓 未使用 MFA 的控制台登录 | timeseries | 检测未使用 MFA 的控制台登录 — 账户被盗用的高风险指标 | | 3 | 🌐 控制台登录 | timeseries | 列出所有控制台登录尝试,包括成功和失败(暴力破解检测) | | 4 | 🔐 MFA 与密码更改 | timeseries | 检测 MFA 停用和密码重置 — 账户接管的强烈指标 | | 5 | 🔄 权限提升 (IAM) | timeseries | 检测 IAM 策略附加和角色操纵 (PutUserPolicy, AttachRolePolicy, CreatePolicyVersion 等) | | 6 | 🔄 IAM 角色信任策略更改 | timeseries | 检测 UpdateAssumeRolePolicy — 向信任策略添加外部主体会产生持久的后门 | | 7 | 🚧 IAM 权限边界更改 | timeseries | 检测权限边界放置/删除事件 — 移除边界会立即扩大有效权限 | | 8 | 👑 用户被添加到管理员组 | timeseries | 检测添加到名称中包含 'admin' 的组的用户 — 典型的权限提升 | | 9 | 👥 IAM 组成员身份更改 | timeseries | 检测所有 AddUserToGroup / RemoveUserFromGroup / CreateGroup / DeleteGroup 事件,无论组名如何 | | 10 | 👤 新建 IAM 用户 / 密钥 | timeseries | 识别 IAM 用户和访问密钥创建事件 — 意外的创建可能表明存在持久化 | | 11 | 🎯 IAM PassRole 滥用 | timeseries | 通过检查接收服务事件(RunInstances, CreateFunction, CreateNotebookInstance 等)来检测 iam:PassRole 的使用(传入角色 ARN) | | 12 | 🔐 AssumeRole 跨账户 | timeseries | 显示调用者和目标处于不同 AWS 账户中的 AssumeRole 事件(横向移动) | | 13 | 🏢 跨账户访问 | timeseries | 查找调用者账户与接收者账户不同的所有事件 | | 14 | 🔑 STS 联合令牌发放 | timeseries | 检测 GetFederationToken 和 GetSessionToken — 将长期有效的密钥转换为持久的临时凭据 | | 15 | 🧩 STS AssumeRoleWithWebIdentity | timeseries | 检测 OIDC 信任滥用(配置错误的 sub 声明 / 没有仓库条件的 GitHub Actions) | | 16 | 🆔 IAM Identity Center (SSO) 事件 | timeseries | 检测 AWS IAM Identity Center 管理操作 (CreatePermissionSet, CreateAccountAssignment 等) | | 17 | 🔗 SAML / OIDC 提供商更新 | timeseries | 检测 SAML/OIDC 身份提供商更改 — 使用攻击者控制的 IdP 更新 SAML 元数据会创建持久的身份验证后门 | | 18 | 🧐 IAM Access Analyzer 调用 | timeseries | 检测 IAM Access Analyzer 的任何使用 — 攻击者利用原生分析器枚举可外部访问的资源,无需自定义探测脚本 | | 19 | 🔄 凭据报告与枚举 | timeseries | 检测 IAM 枚举 (GenerateCredentialReport, ListUsers, ListRoles, GetAccountAuthorizationDetails 等) | | 20 | 🗝 访问密钥滥用 | bar | 检测 7 天内从 3 个以上不同源 IP 使用的访问密钥 — 密钥泄露的强烈指标 | | 21 | 📰 AWS Organizations 账户创建 | timeseries | 检测 Organizations 账户创建和委托管理员更改(影子账户持久化) | | 22 | 👥 Cognito 未授权访问 | timeseries | 检测 allowUnauthenticatedIdentities=true 的 Cognito 身份池 | | 23 | 🧪 Glue DevEndpoint 权限提升 | timeseries | 检测 Glue DevEndpoint 创建 (iam:PassRole + glue:CreateDevEndpoint = 以传入角色的完全权限运行的、可通过 SSH 访问的端点) 以及用于凭据收集的连接枚举 | | 24 | 🧪 SageMaker Notebook 权限提升 | timeseries | 检测 SageMaker notebook 创建和预签名 URL 生成 — iam:PassRole + sagemaker:CreateNotebookInstance 会启动一个带有传入角色完全 AWS 权限的 Jupyter 环境 | | 25 | 🛠 Data Pipeline / CodeStar 权限提升 | timeseries | 检测用于 iam:PassRole 提升的 Data Pipeline 和 CodeStar 资源创建(CreateProjectFromTemplate 会作为副作用创建一个管理员 IAM 角色) | | 26 | 🧩 Step Functions 权限提升 | timeseries | 检测 Step Functions 状态机创建(iam:PassRole + states:CreateStateMachine 会以传入的角色执行 Lambda/ECS 任务) | #### 🪣 数据与存储 | # | 标签 | 图表 | 描述|---|-------|:-----:|-------------| | 1 | 💣 S3 批量对象删除 | bar | 检测每小时执行 ≥50 次 DeleteObject/DeleteObjects 调用的身份 — 勒索软件 / 数据擦除破坏模式 | | 2 | 🔥 AWS Backup 篡改 | timeseries | 检测 Backup Vault / Plan / RecoveryPoint 删除以及移除保管库锁 — 勒索软件消除恢复选项的第一步 | | 3 | 🔓 KMS 密钥操作 | timeseries | 标记敏感的 KMS 操作(DisableKey, ScheduleKeyDeletion, CreateGrant, PutKeyPolicy, 大量 Decrypt) | | 4 | 🔓 S3 公共访问块已禁用 | — | 检测 S3 公共访问块设置被禁用 — 立即的数据暴露风险 | | 5 | 🪣 S3 存储桶策略 / ACL 更改 | timeseries | 检测 S3 存储桶策略和 ACL 修改(带有 Principal='*' 的 PutBucketPolicy 尤为关键) | | 6 | 🪣 S3 数据访问异常 | bar | 检测批量 GetObject 调用(≥100次/小时) — 自动化数据泄露模式 | | 7 | 🔐 Secrets Manager 批量 GetSecretValue | bar | 检测在一小时内检索 ≥10 个不同机密的实体 — 凭据收集信号 | | 8 | 🗝 Secrets Manager 删除与跨账户策略 | timeseries | 检测机密删除、PutResourcePolicy(跨账户共享)和 CancelRotateSecret | | 9 | 🔐 SSM Parameter Store 批量读取 | bar | 检测在一小时内读取 ≥20 个参数的身份 — 经常被忽视的泄露渠道 | | 10 | 💾 RDS 快照跨账户共享 | timeseries | 检测与外部 AWS 账户共享的 RDS/Aurora 快照(通过快照进行数据库泄露) | | 11 | 💣 RDS 未创建最终快照被删除 | — | 检测 skipFinalSnapshot=true 的 RDS 删除 — 潜在的数据破坏 | | 12 | 💽 RDS 启用公共可访问性 | timeseries | 检测创建或修改时带有 publiclyAccessible=true 的 RDS 实例 | | 13 | 🗄 DynamoDB 导出 / 批量泄露 | timeseries | 检测 ExportTableToPointInTime(绕过 GetItem DLP 的服务器端全表导出)、DeleteTable 和 PITR 禁用 | | 14 | 💾 EBS Direct API 快照泄露 | timeseries | 检测 EBS Direct API (ListSnapshotBlocks / GetSnapshotBlock) — Pacu ebs__download_snapshots 在没有 EC2 的情况下流式传输原始快照数据,绕过了 ModifySnapshotAttribute 检测 | | 15 | 🌊 Kinesis Firehose / Stream 泄露通道 | timeseries | 检测指向外部 S3 的 Firehose 传输流创建/更新 — 对网络 DLP 不可见的实时数据流水线 | | 16 | 🔁 S3 跨账户复制 | timeseries | 检测 PutBucketReplication — 将所有新对象静默复制到攻击者控制的存储桶,而不会生成额外的 GetObject 事件 | | 17 | 📂 S3 版本控制 / 日志记录已禁用 | timeseries | 检测版本控制挂起(允许永久删除)和服务器访问日志记录禁用(移除证据链) | | 18 | 📧 SES 身份与转发配置更改 | timeseries | 检测 SES 接收规则和身份配置更改 — 转发规则将所有入站邮件中继到攻击者地址;已验证的身份可进行钓鱼活动 | | 19 | 📡 SQS / SNS 跨账户策略更改 | timeseries | 检测授予外部账户访问权限的 SQS/SNS 策略更改(将消息静默流式传输到攻击者端点) | | 20 | 📸 EC2 公共快照 / AMI 共享 | timeseries | 检测公开共享的 EBS 快照或 AMI(group=all) — 允许任何人复制磁盘镜像并提取数据 | | 21 | 📧 数据泄露渠道 | bar | 检测来自单个身份的大量 SNS/SQS/SES/S3 PutObject 调用(≥50次/小时) | #### ⚡ 计算与无服务器 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 💥 EC2 大规模停止 / 终止 | timeseries | 检测在一小时内执行 ≥5 次 StopInstances/TerminateInstances 的身份 — 勒索软件 / 数据擦除指标 | | 2 | 🖥️ SSM Session / Run Command | timeseries | 检测 SSM StartSession, SendCommand 和 StartAutomationExecution — 通过托管实例进行横向移动的主要路径 | | 3 | 🔑 EC2 Instance Connect / 串行控制台访问 | timeseries | 检测 SendSSHPublicKey 和 SendSerialConsoleSSHPublicKey — 绕过 EC2 密钥对(有效期为 60 秒,不留 SSH 密钥痕迹) | | 4 | 📝 EC2 User Data 修改 | timeseries | 检测带有 userData 更改的 ModifyInstanceAttribute — 脚本在下次启动时以 root 身份运行 | | 5 | ⚡ Lambda 函数篡改 | timeseries | 检测 Lambda 创建、代码更新 (UpdateFunctionCode) 和权限更改 (AddPermission) | | 6 | 📦 Lambda Layer 添加 | timeseries | 检测带有通配符主体的 Lambda layer 发布和 AddLayerVersionPermission(公共供应链攻击) | | 7 | 📦 ECS Task Definition | timeseries | 检测 RegisterTaskDefinition / UpdateService — Pacu ecs__backdoor_task_def 会注入恶意的 sidecar 容器,而无需触及 ECR | | 8 | 👤 EC2 实例配置文件更改 | timeseries | 检测 AssociateIamInstanceProfile / ReplaceIamInstanceProfileAssociation — 附加特权配置文件以实现横向移动 | | 9 | 🖥 EC2 实例启动 | timeseries | 列出所有 RunInstances 事件,包括实例类型、数量、密钥名称和 AMI(挖矿检测) | | 10 | 💰 EC2 Spot Fleet / 预留实例滥用 | timeseries | 检测大规模 Spot Fleet 请求 (ec2) 和具有高容量的 Auto Scaling 组创建 — 挖矿财务影响指标 | | 11 | ☸️ EKS Cluster API 调用 | timeseries | 检测 EKS 集群控制平面修改(公共 API server 暴露、恶意 Fargate 配置文件) | | 12 | 🐳 ECR 存储库 / 镜像更改 | timeseries | 检测 ECR 存储库/镜像事件(标记为 'latest' 的 PutImage 会污染所有后续部署) | | 13 | 📅 EventBridge / CloudWatch 规则更改 | timeseries | 检测 EventBridge 规则和 Scheduler 修改(PutRule, CreateSchedule) — 在没有运行进程的情况下建立持久化 | | 14 | 💡 Lightsail 实例与密钥滥用 | timeseries | 检测 Lightsail 密钥检索、端口暴露和实例访问 — Pacu lightsail__download_ssh_keys / lightsail__generate_temp_access | #### 🌐 网络与基础设施 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🌍 安全组对互联网开放 | timeseries | 查找允许来自 0.0.0.0/0 流量的安全组规则 — 直接的公共暴露风险 | | 2 | 🔥 安全组修改 | timeseries | 检测所有安全组规则更改 (AuthorizeSecurityGroupIngress, ModifySecurityGroupRules 等) | | 3 | 🌊 VPC Flow Log 更改 | timeseries | 检测 VPC Flow Logs 的删除 — 移除流日志会消除主要的网络取证证据 | | 4 | 🌐 CloudFront Distribution 篡改 | timeseries | 检测 CloudFront 源站更改,将所有 CDN 流量重定向到攻击者控制的服务器 (MitM) | | 5 | 🛡 Network Firewall / Shield 篡改 | timeseries | 检测 Network Firewall 和 Shield 保护移除 — 将整个子网范围暴露给攻击流量 | | 6 | 🧱 Network ACL 更改 | timeseries | 检测 NACL 条目的创建、删除和替换 — NACL 在子网级别覆盖安全组 | | 7 | 🛣️ 路由表更改 | timeseries | 检测路由表修改 — 攻击者将流量重定向到恶意网关以进行拦截或 C2 | | 8 | 🧱 VPN / Direct Connect / Transit Gateway | timeseries | 检测新的 VPN 连接和 Transit Gateway 附加 — 创建用于 C2 或数据泄露的持久三层网络路径 | | 9 | 📡 Elastic IP 分配 / 关联 | timeseries | 检测 Elastic IP 分配/关联 — 将固定的公共 IP 分配给受损实例,以实现稳定的 C2 基础设施 | | 10 | 🗝️ EC2 密钥对创建 | timeseries | 检测 CreateKeyPair 和 ImportKeyPair — 攻击者创建 SSH 密钥以获得持久的实例访问权限 | | 11 | 📡 网络基础设施更改 | timeseries | 检测 VPC / 子网 / IGW / NAT Gateway / peering 可能建立攻击者控制的基础设施的更改 | | 12 | 🏷 ACM 证书操作 | timeseries | 检测 ACM 证书请求和删除 — 受损账户可以为钓鱼域名签发 TLS 证书 | | 13 | 🔑 API Gateway 密钥创建与管理 | timeseries | 检测 API Gateway 密钥创建和授权方更改 — Pacu api_gateway__create_api_keys 生成在 IAM 密钥轮换后依然存活的持久凭据 | | 14 | 🚧 VPC Endpoint 访问拒绝 | timeseries | 检测通过 VPC endpoint 的访问拒绝错误 — 可能表明端点策略配置错误 | #### 🕵 威胁模式 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🔍 探测模式 | bar | 识别在一小时内运行了 10 个以上不同 Describe*/List*/Get* API 的调用者 — 常见的早期攻击阶段 | | 2 | 🤖 异常用户代理 | bar | 列出罕见用户代理(<5 个事件)或已知的攻击工具(Pacu, curl, wget) — 可能表明存在攻击工具 | | 3 | 🌍 多区域活动 | bar | 检测在一天内在 3 个以上区域执行写入操作的身份 — 地理位置的扩散可能表明账户被盗用 | | 4 | 🕵 首次 API 调用 (24h) | — | 查找在过去 24 小时内出现过但以前从未出现过的 API 调用 — 新奇的操作可能表明存在攻击工具 | #### 📊 活动与基线 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🖥 来自管理控制台的写入事件 | timeseries | 识别通过 AWS 控制台发出的 mutating API 调用 — 在预期仅进行 CLI 访问时非常有用 | | 2 | 🔍 带有错误的事件 (24h) | timeseries | 列出过去 24 小时内的所有错误事件 — 快速概述失败或正在被探测的内容 | | 3 | ❌ 错误激增检测 | — | 查找错误计数超过每日平均值 3 倍的 1 小时窗口 | #### 🌍 GeoIP 分析 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🕵 不可能旅行检测 | — | 检测同一身份在 2 小时内从相距甚远的城市调用 API — 强烈的凭据被盗指标 | | 2 | ⚠ 身份多国访问 | bar | 查找从 2 个或更多国家/地区进行 API 调用的身份 — 合法用户很少同时从多个国家/地区进行操作 | | 3 | 🗺 按国家/地区划分的控制台登录 | timeseries | 将控制台登录事件映射到其地理位置 — 来自意外国家/地区的登录属于高风险 | | 4 | 🚨 异常国家/地区访问 | bar | 检测罕见的国家/身份组合(<10 个事件) — 低量的国外访问可能是攻击者基础设施 | | 5 | 🚫 按国家/地区划分的访问拒绝 | bar | 按源国家/地区对访问拒绝错误进行分组 — 来自同一国家/地区的集中拒绝可能表明存在攻击 | | 6 | 🔍 按国家/地区划分的写入事件 | bar | 显示按源国家/地区分组的 mutating API 调用 — 来自意外国家/地区的写入是比读取更信号 | | 7 | 🌍 主要源国家/地区 | bar | 按 API 调用量对源国家/地区进行排名,并提供写入事件和唯一身份细分 | | 8 | 🏢 主要 ASN / 组织 | bar | 按 API 调用量列出自治系统 (ISP/云提供商) — VPN/托管 ASN 可能表明存在攻击者基础设施 | | 9 | 📍 主要源城市 | bar | 按事件量对源城市进行排名 — 城市级数据可精确定位特定的攻击者基础设施或办公地点 | | 10 | 🌐 私有 / 内部 IP 摘要 | bar | 汇总来自私有/环回/AWS 内部 IP 的事件 — 预期内部流量的基线 | | 11 | 📋 按国家/地区划分的 API 调用 (Event Name) | table | 按调用量排名前列的 (event_name, 国家/地区) 对 — 揭示哪些 API 操作源自意外的地理区域 | | 12 | 👤 按国家/地区划分的身份 (user_identity_arn) | table | 按调用量排名前列的 (user_identity_arn, 国家/地区) 对 — 显示在意外国家/地区活跃的 IAM 身份及其首次/最后一次出现的时间 | #### ☁ IaC 与平台 | # | 标签 | 图表 | 描述 | |---|-------|:-----:|-------------| | 1 | 🛠 CodeBuild / CodePipeline 供应链攻击 | timeseries | 检测 CI/CD 流水线创建和修改(UpdateProject 会将恶意构建步骤注入到后续的每次构建中) | | 2 | 🏗 CloudFormation / IaC 滥用 | timeseries | 检测 CloudFormation 堆栈操作 — 攻击者可能使用 IaC 快速部署恶意基础设施 |📋 完整列表 — 所有 60+ 图表(点击展开)
### 仪表板图表 (Apache Superset — `dashboard/`) #### 🔑 身份与访问 | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | 控制台登录活动 | 按 IAM 身份分组的控制台登录事件 (DSH-08) | | 2 | 无 MFA 登录趋势 | 按 MFA 使用情况划分的每日控制台登录 (DSH-28) | | 3 | 登录活动热力图(小时 × 天) | 按星期几和一天中的小时(JST)划分的控制台登录计数 (DSH-19) | | 4 | 敏感 API 调用 | 已知具有安全敏感性的 AWS API 操作的调用 (DSH-12) | | 5 | Root 账户使用情况 | 由 AWS Root 账户发起的所有 API 调用 (DSH-13) | | 6 | IAM 实体活动 | 按 API 调用总数排名前 50 的 IAM 实体,包含写入比率和错误率 | | 7 | 权限提升时间表 | 按事件名称划分的权限提升 API 调用每日计数 (DSH-30) | | 8 | IAM Identity Center (SSO) 事件 | 来自 sso.amazonaws.com 的 AWS IAM Identity Center 管理事件 (DSH-44) | | 9 | Glue 和 SageMaker 权限提升 | 用于通过 iam:PassRole 进行 IAM 权限提升的 Glue DevEndpoint 和 SageMaker Notebook 事件 (DSH-50) | #### 🎯 威胁检测 | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | CloudTrail 事件随时间变化 | 随时间变化的每小时读取与写入事件量 (DSH-01) | | 2 | 写入/读取比率趋势 | 读取与写入 API 调用的每小时细分 (DSH-20) | | 3 | Throttling 异常激增 | 按 AWS 服务划分的每小时 Throttling/速率限制错误 (DSH-21) | | 4 | 防御规避事件 | 匹配已知防御规避技术的所有 CloudTrail 事件 (DSH-22) | | 5 | 主要访问拒绝操作 | 返回 AccessDenied 错误的前 20 个 API 操作 (DSH-09) | | 6 | 错误事件趋势 | 按 error_code 细分的每小时错误事件 (DSH-04) | | 7 | Organizations / SCP 更改 | AWS Organizations 管理事件,包括 SCP 策略更改 (DSH-24) | | 8 | 首次出现的服务来源 | 按首次出现日期排序的所有不同的 AWS 服务来源 (DSH-26) | | 9 | VPC Flow Log 更改 | VPC Flow Log 创建和删除事件 (DSH-42) | | 10 | AWS Config 篡改 | AWS Config 记录器和规则篡改事件 (DSH-43) | | 11 | Network ACL / 路由表更改 | NACL 和路由表修改事件 (DSH-46) | | 12 | EventBridge / CloudWatch 规则篡改 | EventBridge 和 CloudWatch Events 规则篡改 (DSH-47) | #### 📊 API 活动 | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | 前 20 个 API 调用 | 调用最频繁的 20 个 AWS API 操作 (DSH-02) | | 2 | 区域活动 | CloudTrail 事件在 AWS 各个区域的分布情况 (DSH-14) | | 3 | 主要源 IP 地址 | 按请求计数排名前 100 的外部源 IP (DSH-05) | | 4 | 用户代理分析 | 按请求计数排名前 50 的用户代理,包含错误和写入细分 (DSH-11) | | 5 | 机密访问异常 | 在一小时内访问 Secrets Manager 或 SSM Parameter Store ≥10 次的身份 | | 6 | 来自外部 IP 的 AssumedRole | 来自公共(非私有)IP 地址的 AssumeRole 调用 (DSH-27) | | 7 | Route53 DNS 更改 | Route 53 托管区域和解析器配置更改 (DSH-29) | #### 🖥️ 计算 | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | SSM Session / Run Command 执行 | AWS Systems Manager 远程执行事件 (DSH-39) | | 2 | EC2 公共快照 / AMI 共享 | EBS 快照和 AMI 公共共享事件 (DSH-41) | | 3 | EKS / ECR 容器平台事件 | EKS 集群和 ECR 容器镜像仓库事件 (DSH-48) | | 4 | ECS Task Definition | ECS 任务定义注册和服务更新事件 — Pacu ecs__backdoor_task_def 模式 (DSH-49) | | 5 | EBS Direct API 快照泄露 | 用于在没有 EC2 的情况下流式传输快照数据的 EBS Direct API 调用 (ListSnapshotBlocks / GetSnapshotBlock) (DSH-51) | #### 🪣 S3 与 RDS | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | S3 保护配置更改 | 削弱存储桶安全态势的 S3 事件 (DSH-25) | | 2 | S3 存储桶策略 / ACL 更改 | S3 存储桶策略和 ACL 修改事件 (DSH-45) | | 3 | RDS 快照跨账户共享 | RDS 和 Aurora 快照共享事件 (DSH-40) | | 4 | S3 批量下载 | 每小时执行 ≥100 次 GetObject 调用的身份 — 自动化数据泄露模式 (DSH-52) | | 5 | S3 批量对象删除 | 每小时执行 ≥50 次 DeleteObject/DeleteObjects 调用的身份 — 勒索软件数据破坏模式 (DSH-53) | | 6 | S3 版本控制 / 日志记录已禁用 | PutBucketVersioning (Suspended) 和 PutBucketLogging (Disabled) — 数据破坏前的反取证前兆 (DSH-54) | | 7 | S3 跨账户复制 | PutBucketReplication / DeleteBucketReplication — 指向攻击者控制账户的持久静默泄露通道 (DSH-55) | | 8 | RDS 未创建最终快照被删除 | skipFinalSnapshot=true 的 DeleteDBInstance / DeleteDBCluster — 不可恢复的数据破坏 (DSH-56) | | 9 | AWS Backup 篡改 | Backup Vault / Plan / RecoveryPoint 删除以及保管库锁移除 — 勒索软件消除恢复选项的第一步 (DSH-57) | #### 🌍 GeoIP 情报 | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | 全球请求来源地图 | 显示 CloudTrail API 调用来源地理分布的世界地图 | | 2 | 按请求量排名的国家 | 按 API 调用量排名前 20 的来源国家,包含写入事件和唯一调用者细分 | | 3 | 按请求量排名的城市 | 按 API 调用量排名前 25 的城市,包含写入事件和唯一调用者细分 | | 4 | 按请求量排名的 ASN 组织 | 按 API 调用量排名前 25 的 ASN 组织 | | 5 | 按国家划分的 API 调用 (Event Name × GeoIP) | 前 50 个 (event_name, 国家) 对 — 揭示从每个地理区域调用了哪些 API 操作 (DSH-79) | | 6 | 按国家划分的身份 (user_identity_arn × GeoIP) | 前 50 个 (user_identity_arn, 国家) 对 — 显示在意外国家/地区活跃的 IAM 身份及其写入计数和首次/最后一次出现的时间 (DSH-80) | #### 🕒 时序分析 | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | 每个 IAM 身份的首次 / 最后一次出现 | 包含首次/最后一次出现时间戳、事件计数和不同 API 的 IAM 身份 | | 2 | 每个源 IP 的首次 / 最后一次出现 | 包含首次/最后一次出现时间、不同身份和不同 API 的源 IP | | 3 | 每个 API 调用的首次 / 最后一次出现 | 按首次出现排序的 API 操作 — 新的调用可能表明存在新型攻击工具 (DSH-33) | | 4 | 每个用户代理的首次 / 最后一次出现 | 按首次出现排序的用户代理 — 新工具检测 (DSH-34) | | 5 | 重新激活的休眠账户 | 具有 72 小时以上不活动间隔后恢复活动的身份 (DSH-37) | | 6 | 每个身份的事件速度激增 | 具有每小时 50 个以上事件突发活动的身份 (DSH-38) | #### 🚨 高危 API 监控 (HRM) | # | 图表名称 | 描述 | |---|------------|-------------| | 1 | 随时间变化的高危 API 事件 | 攻击活动中通常观察到的 API 的每日调用量 (HRM-39) | | 2 | 主要高危 API 调用 | 高危监控名单中按总调用计数排名的 API 操作 (HRM-40) | | 3 | 主要操作者 高危 API | 按对高危监控名单 API 的总调用次数排名的 IAM 主体 (HRM-42) | | 4 | 主要源 IP — 高危 API | 按对高危监控名单 API 的总调用次数排名的源 IP (HRM-43) | | 5 | 防御规避 API 事件 | 用于禁用或篡改审计控制的 API 的详细事件日志 (HRM-44) | | 6 | 凭据访问 API 事件 | 用于检索机密和凭据的 API 的详细事件日志 (HRM-45) | | 7 | 按区域划分的高危 API 调用 | 按 AWS 区域分布的高危监控名单 API 调用 (HRM-46) |标签:Apache Superset, AWS CloudTrail, Kubernetes, Python, Rust, 可视化界面, 无后门, 网络流量审计, 请求拦截, 逆向工具