nssriraam/argus

GitHub: nssriraam/argus

Argus 是一款零基础设施成本的开源 AWS 与 Azure 云端取证及威胁检测平台,通过 MITRE ATT&CK 规则和攻击链关联替代昂贵的商业方案。

Stars: 1 | Forks: 0

Argus — 100 Eyes on Your Cloud

功能演示快速开始架构检测规则命令贡献

Python Cloud MITRE License

## 问题背景 所有专业的云端取证工具每年的费用都在 **50,000 美元以上**。 所有的免费替代方案都需要你针对原始 JSON 编写 SQL 查询。 **Argus 两者都不是。** ## Argus 的功能 | | | |---|---| | 🔍 **多云数据摄取** | AWS CloudTrail + Azure Activity Logs | | 🛡️ **检测引擎** | 跨越 7 种战术的 26+ 条 MITRE ATT&CK 规则 | | ⛓️ **攻击链关联** | 将孤立的事件链接为杀伤链 | | 🧠 **行为基线** | 基于实体的异常检测 | | 📊 **实时仪表盘** | Flask 仪表盘,无需 Splunk | | 📝 **PDF 报告** | 一条命令生成执行级 + 技术级报告 | | 🔔 **实时警报** | Discord, Slack, ntfy 路由分发 | | 🔒 **证据保管链** | SHA-256 证据完整性 + 审计追踪 | | 🗂️ **案件管理** | 多租户取证案例生命周期 | | 🌐 **威胁情报** | VirusTotal, AbuseIPDB,离线 OSINT 订阅源 | ## 横向对比 | | Argus | Cado Security | Splunk | ScoutSuite | |---|---|---|---|---| | 成本 | **免费** | 每年 5 万美元以上 | 每年 10 万美元以上 | 免费 | | 攻击链关联 | ✅ | ✅ | ✅ | ❌ | | 案件管理 | ✅ | ✅ | ✅ | ❌ | | 离线可用 | ✅ | ❌ | ❌ | ✅ | | 支持 Azure | ✅ | ✅ | ✅ | ✅ | | 零基础设施要求 | ✅ | ❌ | ❌ | ✅ | | 证据完整性 | ✅ | ✅ | ✅ | ❌ | | PDF 报告 | ✅ | ✅ | ✅ | ❌ | | 配置时间 | **2 分钟** | 数天 | 数周 | 30 分钟 | ## 演示 [![Argus 演示](https://img.youtube.com/vi/ke8EGGVMUB0/maxresdefault.jpg)](https://www.youtube.com/watch?v=ke8EGGVMUB0) ## 截图 ### 交互式 CLI Interactive CLI ### 实时仪表盘 Live Dashboard ### 检测结果 Detection Findings ### 取证 PDF 报告 Forensic PDF Report ## 功能 ### 🔍 多云数据摄取 - **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, 云取证, 威胁检测, 时间线生成, 逆向工具