Skip to main content

soc-chronicle banner

PyPI version Python versions Build Status License GitHub Stars GitHub Issues

Open-source Professional Attack Investigation & Incident Narrative Engine — transforms raw cybersecurity alerts into complete, evidence-driven attack narratives.

Vision

SOC-Chronicle sits between existing detection platforms (SIEM, EDR, XDR, Cloud Security, IDS/IPS) and incident response workflows. Unlike traditional SIEMs that collect and search logs, SOC-Chronicle focuses on:

  • Investigation automation — correlate events, build attack graphs, reconstruct timelines
  • Evidence correlation — every conclusion traces back to supporting evidence
  • Root cause analysis — patient zero, initial compromise, blast radius
  • Deterministic analysis — explainable outputs, no black-box scoring

Core System Capabilities

  • IOC Extraction: Parses domains, IP addresses (IPv4/IPv6), hashes (MD5, SHA1, SHA256, SHA512, IMPHASH, SSDEEP, TLSH), TLS fingerprints, vulnerabilities (CVE IDs), ASNs, CIDR blocks, and cryptocurrency wallets. Dynamically un-defangs indicators and decodes Base64-encoded PowerShell payloads.
  • Threat Intelligence Integration: Queries 9 intelligence providers. Unauthenticated providers (MalwareBazaar, URLhaus, ThreatFox, Shodan InternetDB, IP-API) are enabled by default. Integrates with API-gated providers (VirusTotal, AbuseIPDB, AlienVault OTX, GreyNoise). Implements disk-backed TTL caching and rate limiting.
  • MITRE ATT&CK Mapping (v15): Maps process execution, PowerShell usage, network C2 activity, Linux persistence, and cloud activity to specific sub-techniques to evaluate tactical attack chains.
  • Log Normalization: Ingests and normalizes logs from Windows Security, Sysmon, Zeek, Auditd, Azure Activity, AWS VPC Flow, GCP Cloud Logging, GitHub Audit, K8s Audit, Microsoft Defender for Endpoint, Cisco IOS, FortiGate, LEEF (QRadar), and Apache/Nginx CLF into an OCSF-aligned schema.
  • Risk Assessment: Calculates composite risk scores based on MITRE tactic progressions, asset criticality, temporal clustering, and malware family associations.
  • Threat Hunting Artifact Generation: Translates investigation findings into operational hunting queries formatted as Sigma, YARA, Elastic EQL, KQL, Splunk SPL, QRadar AQL, and OpenSearch DSL.

Installation

# Install from PyPI
pip install soc-chronicle

Install with optional live ingest connectors and PDF export capability:

pip install soc-chronicle[all]

Detailed Use Cases

Use Case 1: Automated SIEM Alert Investigation

When a generic SIEM alert triggers, investigators traditionally spend hours piecing together logs. SOC-Chronicle automates this by correlating events to a timeline and extracting indicators:

chronicle investigate examples/alert.json --logs examples/logs/ --enrich -o report.html --format html

Outcome: You receive an interactive HTML report with a full D3.js timeline, graph of the attack, patient zero identification, and integrated Threat Intelligence scores from tools like MalwareBazaar and URLhaus.

Use Case 2: Proactive Threat Hunting Pivot

During an investigation, you discover a suspicious binary or C2 IP. Rather than manually crafting queries to sweep the rest of your environment, SOC-Chronicle generates them for you:

chronicle hunt --alert alert.json --logs /path/to/logs

Outcome: Automatic generation of:

  • Sigma Rules for process tracking.
  • YARA Rules using file hashes and string extraction.
  • KQL/Splunk/EQL/AQL Queries covering network IPs, domain connections, and parent-child execution chains.

Use Case 3: Behavioral Chain Risk Assessment

If an attacker triggers multiple low-severity alerts (e.g. Discovery -> Credential Access -> Lateral Movement), standard systems may ignore them individually. SOC-Chronicle correlates them and provides a Tactic Chain Bonus and Asset Criticality Multiplier:

from soc_chronicle import InvestigationEngine
engine = InvestigationEngine()
report = engine.investigate(alert="examples/alert.json", logs="./examples/logs")
print(f"Risk Severity: {report.risk.severity}")
print(f"Justification: {report.risk.severity_justification}")

Outcome: The script accurately identifies the multi-stage tactic chain against a high-value asset and appropriately classifies the incident as CRITICAL risk.

Use Case 4: Incident Triage & Case Management

Analysts can instantly create cases from investigations and track notes collaboratively over time:

chronicle case new --from-report report.json
chronicle case list --status open
chronicle case note CASE-A1B2C3D4 "Confirmed lateral movement via SMB."

Supported Ingest Connectors

Connector Description Usage
EVTX Parse Windows Event Log binary files chronicle ingest evtx file.evtx
File Watch Stream from growing local log directories chronicle ingest watch /var/log/syslog
Syslog Receive RFC 5424/3164 Syslog (UDP) chronicle ingest syslog --port 514
Webhook Receive JSON HTTP POSTs chronicle serve --port 8514

Architecture

Security Alert → Alert Intake → IOC Extraction + Log Normalization (OCSF)
                                      ↓
                              Correlation Engine (DuckDB)
                                      ↓
              Attack Graph ← Timeline Engine → Risk Engine
                                      ↓
                        Incident Narrative Generator + Threat Hunt Artifacts
                                      ↓
                    Interactive HTML / JSON / Markdown Reports

Configuration

Create chronicle.yaml for advanced behavior control:

log_level: INFO
correlation_window_seconds: 3600
cache_ttl_seconds: 14400
max_enrichment_concurrency: 10
threat_intel:
  virustotal:
    enabled: true
    api_key: "${VT_API_KEY}"
  otx:
    enabled: true
    api_key: "${OTX_API_KEY}"

Plugin Development

Register custom log parsers or exporters via entry points in pyproject.toml:

[project.entry-points."soc_chronicle.plugins"]
my_parser = "my_package:MyLogParser"

Development & Testing

pip install -e ".[dev,all]"
pytest
ruff check src tests
mypy src/soc_chronicle
mkdocs serve

Metadata

Release files for soc-chronicle 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for soc-chronicle 0.3.1
File Size Uploaded
soc_chronicle-0.3.1.tar.gz 96.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for soc-chronicle 0.3.1
File Interpreter ABI Platform
soc_chronicle-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 211.4 kB

Release files / soc_chronicle-0.3.1.tar.gz

Download URL soc_chronicle-0.3.1.tar.gz
Size 96.6 kB
Tags Source
SHA-256 checksum
How to use checksums
96ad2071ae9d6ff2ae243c63f36c47d58154ca7bc074427ff15b0007a1112b66
BLAKE2b-256 checksum
How to use checksums
28e81ae197798a96b0ab700204c408c982f041e2fe367519bea5659a33578260
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / soc_chronicle-0.3.1-py3-none-any.whl

Download URL soc_chronicle-0.3.1-py3-none-any.whl
Size 114.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
35335139cca2602171743ec2b9134aad608c8b8e818960d82195a11550e6ffd5
BLAKE2b-256 checksum
How to use checksums
73cd62bd9ec8ef41778723d74c79625329fa286a92138bdc7968e0e327427c67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page