Features • Demo • Quick Start • Architecture • Detection Rules • Commands • Contributing
Every serious cloud forensics tool costs $50,000+/year.
Every free alternative makes you write SQL queries against raw JSON.
Argus is neither.
Built as a free, open-source alternative to tools like Cado Security and Mitiga — full cloud forensics pipeline on your laptop, zero cost, zero infrastructure.
| 🔍 Multi-Cloud Ingestion | AWS CloudTrail + Azure Activity Logs |
| 🛡️ Detection Engine | 26+ MITRE ATT&CK rules across 7 tactics |
| ⛓️ Attack Chain Correlation | Links isolated events into kill chains |
| 🧠 Behavioral Baseline | Per-entity anomaly detection |
| 📊 Live Dashboard | Flask dashboard, no Splunk needed |
| 📝 PDF Reporting | Executive + Technical reports in one command |
| 🔔 Real-Time Alerts | Discord, Slack, ntfy routing |
| 🔒 Chain of Custody | SHA-256 evidence integrity + audit trail |
| 🗂️ Case Management | Multi-tenant forensic case lifecycle |
| 🌐 Threat Intelligence | VirusTotal, AbuseIPDB, offline OSINT feeds |
| Argus | Cado Security | Splunk | ScoutSuite | |
|---|---|---|---|---|
| Cost | Free | $50k+/yr | $100k+/yr | Free |
| Attack Chain Correlation | ✅ | ✅ | ✅ | ❌ |
| Case Management | ✅ | ✅ | ✅ | ❌ |
| Works Offline | ✅ | ❌ | ❌ | ✅ |
| Azure Support | ✅ | ✅ | ✅ | ✅ |
| Zero Infrastructure | ✅ | ❌ | ❌ | ✅ |
| Evidence Integrity | ✅ | ✅ | ✅ | ❌ |
| PDF Reports | ✅ | ✅ | ✅ | ❌ |
| Setup Time | 2 minutes | Days | Weeks | 30 min |
💡 Note: Click the image above to watch the full Argus demo on YouTube!
- AWS CloudTrail — Ingest exported JSON log bundles or poll CloudTrail in real-time via
boto3 - Azure Activity Logs — Parse Azure Monitor / Activity Log JSON exports with automatic schema normalization
- Deduplication engine prevents double-ingestion across overlapping exports
- 26+ detection rules spanning 7 tactic categories:
| Tactic | AWS Rules | Azure Rules |
|---|---|---|
| Initial Access | Root login, brute-force detection, impossible travel | — |
| Privilege Escalation | Policy attachment, inline policy injection, user creation | Role assignment, owner escalation |
| Defense Evasion | Trail deletion, logging disabled, alarm suppression | Diagnostic deletion, NSG modification, policy tampering |
| Credential Access | Access key creation, root console login, secrets retrieval | Key Vault secret access |
| Lateral Movement | Cross-account AssumeRole, cross-region activity |
— |
| Exfiltration | S3 public access, bucket policy change, large download | Storage account modification |
| Persistence | — | Guest user invitation |
- Automatically links isolated findings into multi-step attack narratives
- 10 pre-built chain patterns (6 AWS + 4 Azure) with configurable time windows
- Detects classic kill chains: Initial Access → Privilege Escalation → Persistence → Defense Evasion
- Builds per-entity behavioral profiles from historical data
- Flags 4 anomaly types: time, region, IP address, and new action type
- Adapts baselines as new data is ingested — no static thresholds
- Flask-powered single-page dashboard with auto-refresh (5-second polling)
- Severity breakdown, top entities, event timeline, and geographic distribution
- Dedicated views: Findings, Attack Chains, Event Explorer, Entity Profiles
- VirusTotal — Automated IP/hash reputation scoring via API
- AbuseIPDB — Malicious IP confidence scoring
- Offline OSINT Feeds — Tor exit nodes (torproject.org) and Feodo Tracker botnet C2 IPs (abuse.ch)
- Risk scores dynamically boosted when source IPs match known threat indicators
- Full forensic case lifecycle:
OPEN → INVESTIGATING → INGESTED → CLOSED → ARCHIVED - Multi-tenant: run parallel investigations with isolated data per case
- Analyst notes, timestamps, and priority tagging (CRITICAL / HIGH / MEDIUM / LOW)
- PDF Reports — Executive summary, MITRE heatmap, risk scores, IOC appendix, and remediation playbooks (via ReportLab)
- IOC Extraction — Automated export of suspicious IPs, high-risk entities, and observed MITRE techniques
- Remediation Engine — Maps each finding to specific AWS CLI remediation commands
- Real-time alert routing to Discord webhooks
- Configurable severity threshold — only route what matters
- Deduplication prevents alert fatigue
- Background daemon polls AWS CloudTrail
LookupEventsAPI at configurable intervals - Automatic ingestion, detection, and alerting in a single pipeline
- Smart cloud detection: blocks AWS daemon if active case contains Azure logs
- SHA-256 hashing — Every ingested event is hashed at ingestion time; duplicates are rejected at the database layer via
UNIQUEconstraints - Immutable evidence store — Events are written once via
INSERT OR IGNORE; noUPDATEorDELETEoperations are performed on raw event data - Case isolation — Each case maintains its own partitioned dataset;
case deletesurgically removes only the target case without touching other investigations - Audit trail — All events carry
ingested_attimestamps, and theverifycommand validates record counts and hash consistency across the evidence store - Chain of custody — Case lifecycle states (
OPEN → INVESTIGATING → CLOSED → ARCHIVED) with analyst attribution, timestamped notes, and priority classification provide a defensible forensic record - Hardened Architecture — Fully parameterized SQL queries prevent injection, and strict deterministic cryptographic hashing prevents cross-process collision vulnerabilities
- Python 3.10+
- AWS credentials configured (
aws configure) for live CloudTrail monitoring - (Optional) VirusTotal / AbuseIPDB API keys for threat intelligence enrichment
git clone https://github.com/nssriraam/argus.git
cd argus
pip install -r requirements.txt
pip install -e .# Copy and customize the config file
cp argus.yaml.example argus.yaml
# Set up environment variables (optional)
cp .env.example .env
# Edit .env with your VIRUSTOTAL_API_KEYargusYou'll be greeted by the interactive shell:
█████╗ ██████╗ ██████╗ ██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔════╝ ██║ ██║██╔════╝
███████║██████╔╝██║ ███╗██║ ██║███████╗
██╔══██║██╔══██╗██║ ██║██║ ██║╚════██║
██║ ██║██║ ██║╚██████╔╝╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
1 0 0 E Y E S O N Y O U R C L O U D
argus [CASE-DEFAULT]>
To remove Argus and its CLI command from your system:
pip uninstall argus-forensics# 1. Create a case
argus> case new
# 2. Ingest AWS CloudTrail logs
argus> ingest --file path/to/cloudtrail.json
# 3. Ingest Azure Activity Logs
argus> ingest-azure --file path/to/azure-activity.json
# 4. Run the detection engine
argus> analyze
# 5. View findings, chains, timeline
argus> findings
argus> chains
argus> timeline
# 6. Launch the live dashboard
argus> dashboard
# 7. Generate a PDF report
argus> reportargus/
├── 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
| Command | Description |
|---|---|
case new |
Create a new forensic case |
case list |
List all cases |
case show --case ID |
Show case details and notes |
case note --case ID --text 'note' |
Add an analyst note |
case close --case ID |
Close a case |
case archive --case ID |
Archive a case |
case delete --case ID |
Surgically delete all data for a case |
| Command | Description |
|---|---|
ingest --file FILE |
Ingest AWS CloudTrail JSON logs |
ingest-azure --file FILE |
Ingest Azure Activity Log JSON |
analyze |
Run MITRE ATT&CK detection engine |
verify |
Verify data integrity |
| Command | Description |
|---|---|
findings |
View all detection findings |
chains |
View correlated attack chains |
timeline |
Forensic event timeline |
baseline |
Behavioral anomaly report |
entity --name NAME |
Entity profile lookup |
| Command | Description |
|---|---|
report |
Generate executive PDF report |
dashboard |
Launch web dashboard on localhost:5000 |
| Command | Description |
|---|---|
update-intel |
Refresh offline OSINT threat feeds |
| Command | Description |
|---|---|
listen |
Start real-time AWS CloudTrail monitoring |
stop |
Stop the background monitoring daemon |
reset |
Reset the database (requires confirmation) |
status |
System status and case overview |
help |
Show all commands |
| Rule | Severity | MITRE Technique |
|---|---|---|
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 |
| Rule | Severity | MITRE Technique |
|---|---|---|
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 |
| Chain | Steps | Window | Severity |
|---|---|---|---|
| Credential Compromise + Persistence | Root Login → Access Key Created | 60 min | CRITICAL |
| Defense Evasion + Priv Esc | Stop Logging → Attach Policy | 120 min | CRITICAL |
| Classic Cloud Kill Chain | Root Login → Policy → Key → Stop Logging | 180 min | CRITICAL |
| Data Exfiltration Setup | S3 Policy Change → External Download | 60 min | CRITICAL |
| Trail Destruction | Stop Logging → Delete Trail | 30 min | CRITICAL |
| Azure Privilege Escalation | Role Assigned → Diagnostics Deleted | 120 min | CRITICAL |
| Azure Identity Persistence | Guest Invited → Role Assigned | 60 min | HIGH |
| Azure Defense Evasion | Policy Changed → Diagnostics Deleted | 90 min | CRITICAL |
| Azure Data Exfiltration | Storage Modified → NSG Changed | 120 min | HIGH |
# 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: ''VIRUSTOTAL_API_KEY=your-virustotal-api-key
AWS_DEFAULT_REGION=us-east-1| Component | Technology |
|---|---|
| Language | Python 3.10+ |
| CLI Framework | Click + Rich + prompt_toolkit |
| Database | SQLite (zero-config, portable) |
| Web Dashboard | Flask + Vanilla JS |
| PDF Reports | ReportLab |
| Cloud SDKs | Boto3 (AWS), Azure REST API |
| Threat Intel | VirusTotal API, AbuseIPDB API, Tor/Feodo OSINT |
| Alerting | Discord / Slack / ntfy webhooks |
v1.1
- Live Azure Monitor polling
- GCP Cloud Audit Log ingestion
- SIGMA rule import/export
v2.0
- Elasticsearch backend option
- SOAR playbook integration
- Kubernetes audit log ingestion
- Auto-remediation with approval workflow
- Multi-user authentication layer
Contributions are welcome! See CONTRIBUTING.md for guidelines on adding new detection rules.
This project is licensed under the MIT License.
Built by Sriraam Nagarajan
Cloud Security • Detection Engineering • Incident Response




