Skip to content

Add SOC IR Playbook Library web application with MITRE ATT&CK integration - #2

Draft
vector1one wants to merge 4 commits into
mainfrom
claude/adoring-curie-xd7of5
Draft

Add SOC IR Playbook Library web application with MITRE ATT&CK integration#2
vector1one wants to merge 4 commits into
mainfrom
claude/adoring-curie-xd7of5

Conversation

@vector1one

Copy link
Copy Markdown
Owner

Summary

This PR introduces a complete web-based SOC Incident Response Playbook Library application with MITRE ATT&CK framework integration, threat group profiles, and multi-tool/SIEM query generation support.

Key Changes

Core Application

  • New web application (app/app.js, app/index.html) - Full-featured playbook library interface with:
    • 42+ incident response playbooks covering malware, cloud, identity, data exfiltration, and supply chain threats
    • 100+ threat group profiles (APT groups, ransomware operators)
    • Multi-tool support: Splunk SPL, KQL, QRadar AQL, Sigma, Sysmon, Velociraptor, OSQuery, Elastic EQL, Chronicle, CrowdStrike, and more
    • MITRE ATT&CK Navigator integration for technique visualization
    • Playbook search, filtering, and categorization

Playbook Library

  • Manifest system (app/playbooks/manifest.json) - Centralized registry of all playbooks with metadata (ID, severity, MITRE techniques, related playbooks)
  • 42 incident response playbooks organized by category:
    • Malware (ransomware, USB-based, LOLBins)
    • Cloud security (account compromise, misconfiguration, lateral movement)
    • Identity & access (credential attacks, privilege escalation, MFA bypass)
    • Data protection (exfiltration, database access, DNS tunneling)
    • Supply chain (CI/CD exploitation, third-party vulnerabilities)
    • Application security (web exploitation, API attacks, JavaScript injection)
    • Network attacks (DDoS, ARP spoofing, DNS attacks)
  • 100+ threat group playbooks - MITRE ATT&CK group profiles with techniques and TTPs

MITRE ATT&CK Integration

  • Techniques database (app/playbooks/mitre-techniques.json) - Comprehensive MITRE ATT&CK technique reference
  • Generation scripts (scripts/generate-mitre-techniques.mjs, scripts/generate_mitre_group_playbooks.py) - Automated playbook generation from MITRE data
  • Elastic Detection Rules generator (scripts/generate_elastic_detection_rules.py) - Tool-specific query generation

Backend & Infrastructure

  • CGI scripts for playbook management:
    • load_playbooks.sh - Load playbook library
    • save_playbook.sh - Create custom playbooks
    • update_playbook.sh - Modify existing playbooks
    • delete_playbook.sh - Remove playbooks
    • get_config.sh - Retrieve active tool configuration
  • Docker improvements - Multi-stage build with Node.js for MITRE data generation
  • Project structure - Organized playbook directories by threat category

Configuration & Documentation

  • Updated Dockerfile with MITRE technique generation build stage
  • Updated README.md with application overview
  • Added .dockerignore and .gitignore for cleaner builds
  • Updated docker-compose.yml for application deployment

Notable Implementation Details

  • Playbooks include detection queries for multiple SIEM/tool platforms
  • Each playbook contains investigation steps, detection methods, and remediation guidance
  • MITRE ATT&CK technique mapping enables cross-referencing with threat intelligence
  • Modular architecture allows easy addition of new playbooks and threat groups
  • Support for both library playbooks and user-created custom playbooks

https://claude.ai/code/session_01TjKtRapWpjp13ZPwHTCMix

claude added 4 commits June 11, 2026 19:50
edit/delete/export) into the main project, replacing the v3.0 monolith.

Update the SIEM/tool tab set: drop Security Onion and Carbon Black, keep
Sysmon, OSQuery and Velociraptor, and add a new Elastic Detection Rules tab
(generated as Elastic Security TOML rule definitions for the 696 steps that
already had Elastic EQL queries). Active tabs trimmed from 6 to 5 across
app.js, get_config.sh, Dockerfile and docker-compose.yml.
- Replace per-file JSON loading with a single SQLite-backed endpoint.
  init_db.py seeds all 216 library playbooks on first boot; subsequent
  saves/edits/deletes go through the DB (INSERT OR REPLACE / DELETE).
- Add SOP tab: upload PDFs with name + category, view inline via the
  browser's native PDF viewer, delete from the UI.  PDFs stored at
  /data/sops/, metadata in the sops SQLite table.
- Replace all CGI shell scripts with Python3 equivalents (.py) for
  proper JSON + multipart-upload handling.
- Dockerfile: add python3 + sqlite packages, register .py CGI handler,
  add Apache Alias /sops/ -> /data/sops/, switch CMD to entrypoint.sh.
- docker-compose: volume changed from ./playbooks-data:/playbooks to
  ./app-data:/data.
- app.js: remove manifest/per-file loading; single loadPlaybooks() call;
  new SOP state + renderSopPanel() + uploadSop() + viewSop() + delete.
- index.html: add SOPs nav item and panel; update badges/subtitle.
- style.css: add SOP layout, card, upload form and delete button styles.
- Unify SOPs and reference docs into a single `documents` table with a
  `type` column ('sop' or 'doc').  init_db.py migrates the legacy `sops`
  table on first run so existing data is preserved.
- All files now stored under /data/docs/ (one directory, two types).
  Apache Alias updated from /sops/ to /docs/.
- New "Query Reference" panel (panel-docs) with categories:
  Elastic EQL · Elasticsearch Detection · Velociraptor VQL · General Reference.
  Upload, inline PDF view, and delete work identically to SOPs.
- load_sops.py, upload_sop.py, delete_sop.py updated to pass/filter by type.
- app.js: loadDocs(), renderDocsPanel(), viewDoc(), uploadDoc(),
  confirmDeleteDoc() added; called from init().
- index.html: 🔍 Query Reference nav item + panel.
- style.css: doc-badge purple variant + nav icon.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants