nssriraam/argus
GitHub: nssriraam/argus
Argus 是一款零基础设施成本的开源 AWS 与 Azure 云端取证及威胁检测平台,通过 MITRE ATT&CK 规则和攻击链关联替代昂贵的商业方案。
Stars: 1 | Forks: 0
功能 • 演示 • 快速开始 • 架构 • 检测规则 • 命令 • 贡献
### 实时仪表盘
### 检测结果
### 取证 PDF 报告
## 功能
### 🔍 多云数据摄取
- **AWS CloudTrail** — 摄取导出的 JSON 日志包,或通过 `boto3` 实时轮询 CloudTrail
- **Azure Activity Logs** — 解析 Azure Monitor / Activity Log JSON 导出文件,并自动进行 schema 归一化
- 去重引擎可防止在重叠导出时发生重复摄取
### 🛡️ MITRE ATT&CK 检测引擎
- **26+ 条检测规则**,涵盖 7 种战术类别:
| 战术 | AWS 规则 | Azure 规则 |
|---|---|---|
| Initial Access | Root 登录、暴力破解检测、不可能的旅行 | — |
| Privilege Escalation | Policy 附加、内联 Policy 注入、用户创建 | Role 分配、Owner 提权 |
| Defense Evasion | Trail 删除、日志禁用、告警抑制 | Diagnostic 删除、NSG 修改、Policy 篡改 |
| Credential Access | Access key 创建、Root 控制台登录、Secrets 获取 | Key Vault 密钥访问 |
| Lateral Movement | 跨账号 `AssumeRole`、跨区域活动 | — |
| Exfiltration | S3 公开访问、Bucket Policy 更改、大量下载 | 存储账号修改 |
| Persistence | — | 访客用户邀请 |
### ⛓️ 攻击链关联
- 自动将孤立的发现链接为**多步骤攻击叙事**
- 10 种预置攻击链模式(6 种 AWS + 4 种 Azure),支持自定义时间窗口
- 检测经典的杀伤链:_Initial Access → Privilege Escalation → Persistence → Defense Evasion_
### 🧠 行为基线分析
- 从历史数据中构建各实体的行为画像
- 标记 4 种异常类型:**时间**、**区域**、**IP 地址**和**新操作类型**
- 随着新数据的摄取自适应调整基线 —— 无需静态阈值
### 📊 实时 Web 仪表盘
- 基于 Flask 的单页仪表盘,支持自动刷新(5 秒轮询)
- 严重程度分布、高频实体、事件时间轴和地理分布
- 专属视图:发现结果、攻击链、事件探索器、实体画像
### 🔗 威胁情报集成
- **VirusTotal** — 通过 API 自动进行 IP/hash 信誉评分
- **AbuseIPDB** — 恶意 IP 置信度评分
- **离线 OSINT 订阅源** — Tor 出口节点 (torproject.org) 和 Feodo Tracker 僵尸网络 C2 IP (abuse.ch)
- 当源 IP 匹配已知的威胁指标时,动态提升风险评分
### 📋 案件管理
- 完整的取证案例生命周期:`OPEN → INVESTIGATING → INGESTED → CLOSED → ARCHIVED`
- 多租户:支持并行调查,每个案件的数据相互隔离
- 分析师备注、时间戳和优先级标记 (CRITICAL / HIGH / MEDIUM / LOW)
### 📝 报告与导出
- **PDF 报告** — 执行摘要、MITRE 热力图、风险评分、IOC 附录和修复 playbook (通过 ReportLab)
- **IOC 提取** — 自动导出可疑 IP、高风险实体和观察到的 MITRE 技术
- **修复引擎** — 将每项发现映射到具体的 AWS CLI 修复命令
### 🔔 警报
- 将实时警报路由至 **Discord** webhook
- 可配置严重程度阈值 —— 只推送值得关注的内容
- 去重机制防止警报疲劳
### 🎯 实时监控
- 后台守护进程以可配置的时间间隔轮询 AWS CloudTrail `LookupEvents` API
- 在单一 pipeline 中完成自动摄取、检测和警报
- 智能云端检测:如果活动案例包含 Azure 日志,则阻止 AWS 守护进程运行
### 🔒 证据完整性
- **SHA-256 哈希** — 每个被摄取的事件在摄取时都会进行哈希处理;通过数据库层面的 `UNIQUE` 约束拒绝重复项
- **不可变证据存储** — 事件通过 `INSERT OR IGNORE` 写入;不对原始事件数据执行 `UPDATE` 或 `DELETE` 操作
- **案件隔离** — 每个案件维护自己独立的数据集;`case delete` 仅精准删除目标案件,而不影响其他调查
- **审计追踪** — 所有事件都带有 `ingested_at` 时间戳,`verify` 命令会验证整个证据存储中的记录数量和哈希一致性
- **保管链** — 案件生命周期状态(`OPEN → INVESTIGATING → CLOSED → ARCHIVED`)包含分析师归属、带时间戳的备注及优先级分类,提供可辩护的取证记录
- **强化的架构** — 完全参数化的 SQL 查询可防止注入,严格的确定性加密哈希可防止跨进程冲突漏洞
## 快速开始
### 前置条件
- Python 3.10+
- 配置好 AWS 凭证(`aws configure`)以进行实时 CloudTrail 监控
- _(可选)_ 用于威胁情报富化的 VirusTotal / AbuseIPDB API 密钥
### 安装
```
git clone https://github.com/nssriraam/argus.git
cd argus
pip install -r requirements.txt
pip install -e .
```
### 配置
```
# 复制并自定义 config file
cp argus.yaml.example argus.yaml
# 设置环境变量(可选)
cp .env.example .env
# 使用您的 VIRUSTOTAL_API_KEY 编辑 .env
```
### 启动
```
argus
```
你将看到交互式 shell 的欢迎界面:
```
█████╗ ██████╗ ██████╗ ██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔════╝ ██║ ██║██╔════╝
███████║██████╔╝██║ ███╗██║ ██║███████╗
██╔══██║██╔══██╗██║ ██║██║ ██║╚════██║
██║ ██║██║ ██║╚██████╔╝╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
1 0 0 E Y E S O N Y O U R C L O U D
argus [CASE-DEFAULT]>
```
### 卸载
要从你的系统中移除 Argus 及其 CLI 命令:
```
pip uninstall argus-forensics
```
### 首次调查
```
# 1. 创建案例
argus> case new
# 2. 摄取 AWS CloudTrail logs
argus> ingest --file path/to/cloudtrail.json
# 3. 摄取 Azure Activity Logs
argus> ingest-azure --file path/to/azure-activity.json
# 4. 运行检测引擎
argus> analyze
# 5. 查看 findings、chains、timeline
argus> findings
argus> chains
argus> timeline
# 6. 启动 live dashboard
argus> dashboard
# 7. 生成 PDF 报告
argus> report
```
## 架构
```
argus/
├── argus.py # CLI entry point & interactive shell
├── argus.yaml.example # Configuration template
├── setup.py # Package configuration
├── requirements.txt # Dependencies
│
├── ingestion/ # Log ingestion pipelines
│ ├── local_ingestor.py # AWS CloudTrail JSON parser
│ ├── azure_ingestor.py # Azure Activity Log normalizer
│ ├── normalizer.py # Event schema normalization
│ └── live_monitor.py # Real-time CloudTrail polling daemon
│
├── detection/ # Detection engine
│ ├── rule_engine.py # Core engine — orchestrates all rule modules
│ ├── remediation.py # AWS CLI remediation command mapper
│ └── rules/ # MITRE ATT&CK detection rules
│ ├── azure_rules.py # Azure-specific detections
│ ├── credential_access.py # T1552, T1078
│ ├── defense_evasion.py # T1562
│ ├── exfiltration.py # T1537
│ ├── initial_access.py # T1078, T1110
│ ├── lateral_movement.py # T1548, T1550
│ └── privilege_escalation.py # T1098, T1078
│
├── analysis/ # Advanced analysis modules
│ ├── attack_chain.py # Multi-step attack chain correlator
│ ├── behavioral_baseline.py # Per-entity behavioral profiling
│ ├── threat_intel.py # VirusTotal, AbuseIPDB, OSINT feeds
│ └── timeline_builder.py # Forensic timeline reconstruction
│
├── dashboard/ # Web-based dashboard
│ ├── server.py # Flask API server
│ └── index.html # Single-page dashboard UI
│
├── reporting/ # Output & export
│ ├── pdf_generator.py # Executive PDF report builder
│ ├── ioc_extractor.py # IOC list export
│ └── alerter.py # Discord/Slack/ntfy alert routing
│
├── db/ # Data layer
│ └── storage.py # SQLite schema, queries, migrations
│
└── data/ # Sample data & generators
├── generate_sample_logs.py # AWS CloudTrail sample generator
└── generate_azure_sample.py # Azure Activity Log sample generator
```
## 命令
### 调查
| 命令 | 描述 |
|---|---|
| `case new` | 创建新的取证案件 |
| `case list` | 列出所有案件 |
| `case show --case ID` | 显示案件详情和备注 |
| `case note --case ID --text 'note'` | 添加分析师备注 |
| `case close --case ID` | 关闭案件 |
| `case archive --case ID` | 归档案件 |
| `case delete --case ID` | 精准删除案件的所有数据 |
### 数据
| 命令 | 描述 |
|---|---|
| `ingest --file FILE` | 摄取 AWS CloudTrail JSON 日志 |
| `ingest-azure --file FILE` | 摄取 Azure Activity Log JSON |
| `analyze` | 运行 MITRE ATT&CK 检测引擎 |
| `verify` | 验证数据完整性 |
### 检测
| 命令 | 描述 |
|---|---|
| `findings` | 查看所有检测结果 |
| `chains` | 查看关联的攻击链 |
| `timeline` | 取证事件时间轴 |
| `baseline` | 行为异常报告 |
| `entity --name NAME` | 实体画像查询 |
### 输出
| 命令 | 描述 |
|---|---|
| `report` | 生成执行级 PDF 报告 |
| `dashboard` | 在 `localhost:5000` 上启动 Web 仪表盘 |
### 情报
| 命令 | 描述 |
|---|---|
| `update-intel` | 刷新离线 OSINT 威胁订阅源 |
### 系统
| 命令 | 描述 |
|---|---|
| `listen` | 开始实时 AWS CloudTrail 监控 |
| `stop` | 停止后台监控守护进程 |
| `reset` | 重置数据库(需要确认) |
| `status` | 系统状态和案件概览 |
| `help` | 显示所有命令 |
## 检测规则
### AWS CloudTrail(18 条规则)
| 规则 | 严重程度 | MITRE 技术 |
|---|---|---|
| `StopLogging` | CRITICAL | T1562.008 |
| `DeleteTrail` | CRITICAL | T1562.008 |
| `AlarmDeletion` | HIGH | T1562 |
| `AttachUserPolicy` | HIGH | T1078.004 |
| `PutUserPolicy` | HIGH | T1078.004 |
| `CreateAdminUser` | MEDIUM | T1136.003 |
| `AddUserToGroup` | MEDIUM | T1078.004 |
| `CreateAccessKey` | HIGH | T1098.001 |
| `RootConsoleLogin` | CRITICAL | T1078.001 |
| `GetSecretValue` | HIGH | T1552.001 |
| `LoginFailures` | MEDIUM | T1110 |
| `RootLogin` | CRITICAL | T1078.001 |
| `ImpossibleTravel` | HIGH | T1078 |
| `S3BucketPolicyChange` | HIGH | T1537 |
| `S3PublicAccess` | CRITICAL | T1537 |
| `LargeS3Download` | MEDIUM | T1530 |
| `AssumeRoleExternal` | MEDIUM | T1548.005 |
| `CrossRegionActivity` | MEDIUM | T1078 |
### Azure Activity Logs(8 条规则)
| 规则 | 严重程度 | MITRE 技术 |
|---|---|---|
| `AzureRoleAssignmentCreated` | HIGH | T1098.003 |
| `AzurePolicyAssignment` | MEDIUM | T1562 |
| `AzureDiagnosticDeleted` | CRITICAL | T1562.008 |
| `AzureKeyVaultAccess` | HIGH | T1552.001 |
| `AzureStorageModified` | MEDIUM | T1537 |
| `AzureNSGModified` | HIGH | T1562.007 |
| `AzureGuestUserInvited` | MEDIUM | T1136.003 |
| `AzureOwnerAdded` | CRITICAL | T1078.004 |
## 攻击链模式
| 攻击链 | 步骤 | 时间窗口 | 严重程度 |
|---|---|---|---|
| 凭证泄露 + Persistence | Root 登录 → Access Key 创建 | 60 分钟 CRITICAL |
| Defense Evasion + 提权 | 停止日志 → 附加 Policy | 120 分钟 | CRITICAL |
| 经典云杀伤链 | Root 登录 → Policy → Key → 停止日志 | 180 分钟 | CRITICAL |
| 数据外泄准备 | S3 Policy 更改 → 外部下载 | 60 分钟 | CRITICAL |
| Trail 摧毁 | 停止日志 → 删除 Trail | 30 分钟 | CRITICAL |
| Azure 权限提升 | 分配 Role → 删除 Diagnostics | 120 分钟 | CRITICAL |
| Azure 身份 Persistence | 邀请访客 → 分配 Role | 60 分钟 | HIGH |
| Azure Defense Evasion | 更改 Policy → 删除 Diagnostics | 90 分钟 | CRITICAL |
| Azure 数据外泄 | 修改存储 → 更改 NSG | 120 分钟 | HIGH |
## 配置
### `argus.yaml`
```
# Cloud Environment Context
expected_regions:
- us-east-1
- us-west-2
# Alerting Channels
alerts:
discord: "https://discord.com/api/webhooks/..."
slack: ""
ntfy: "argus-alerts-prod"
# Alert Threshold
severity_threshold: HIGH
# Threat Intelligence
abuseipdb_api_key: "your-api-key"
# Live Monitoring
monitoring_interval: 60
# Azure Settings
azure:
enabled: false
subscription_id: ''
tenant_id: ''
```
### `.env`
```
VIRUSTOTAL_API_KEY=your-virustotal-api-key
AWS_DEFAULT_REGION=us-east-1
```
## 技术栈
| 组件 | 技术 |
|---|---|
| 语言 | Python 3.10+ |
| CLI 框架 | Click + Rich + prompt_toolkit |
| 数据库 | SQLite (零配置,可移植) |
| Web 仪表盘 | Flask + Vanilla JS |
| PDF 报告 | ReportLab |
| 云端 SDK | Boto3 (AWS), Azure REST API |
| 威胁情报 | VirusTotal API, AbuseIPDB API, Tor/Feodo OSINT |
| 警报通知 | Discord / Slack / ntfy webhook |
## 路线图
**v1.1**
- [ ] 实时 Azure Monitor 轮询
- [ ] GCP Cloud Audit Log 摄取
- [ ] SIGMA 规则导入/导出
**v2.0**
- [ ] Elasticsearch 后端选项
- [ ] SOAR playbook 集成
- [ ] Kubernetes 审计日志摄取
- [ ] 带有审批流程的自动修复
- [ ] 多用户认证层
## 贡献
欢迎贡献代码!有关添加新检测规则的指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
本项目基于 [MIT License](LICENSE) 授权。
由 Sriraam Nagarajan 构建
云安全 • 检测工程 • 事件响应
标签:AMSI绕过, AWS, Azure, Cloudflare, DPI, Flask, MITRE ATT&CK, 云取证, 威胁检测, 时间线生成, 逆向工具