Project Spectre
A Behavioral Host Intrusion Detection System (HIDS)
Instead of asking "Is this file known?", Spectre asks "Does this sequence of actions make sense?"
Table of Contents
- Overview
- Why Spectre?
- Architecture
- Key Features
- Getting Started
- Usage & CLI Reference
- Detection Rules & Sigma Integration
- Testing & Verification
- Documentation & Roadmap
- Acknowledgments & External Links
Overview
Project Spectre is a lightweight, local-first behavioral Host Intrusion Detection System (HIDS). Rather than relying heavily on static file signatures, Spectre models the grammar of host processes and resource actions to detect anomalous execution chains and behaviors.
Currently on V10 (Active Containment) with Phase 1 (Detection Engineering Platform) features, Spectre tracks process lineages, monitors file and network I/O, evaluates threats in real-time, provides MITRE ATT&CK context, scans payloads via YARA, and can actively quarantine or terminate malicious process trees.
New in Phase 1:
- Sigma-native rule format — Write rules in Sigma YAML, convert to Spectre automatically
- 24 built-in rules across 4 packs: webshell, privilege escalation, credential access, lateral movement
- Rule testing CLI — Validate Sigma syntax, test conversion, replay traces
- Rule pack management — Install/uninstall community rule packs
- Detection-as-code ready — CI/CD integration for rule validation
Why Spectre?
Traditional endpoint protection platforms (EPP) and antiviruses (AV) often rely heavily on static signatures—checking file hashes against a known database of malware. This approach completely fails against zero-day threats, fileless malware, and "living off the land" techniques where attackers abuse legitimate system binaries (like powershell, curl, or bash).
Spectre shifts the security paradigm from static characteristics to dynamic relationships. By continuously tracking process ancestry (who spawned who) and correlating it with resource access (who touched which file, who opened which socket), Spectre identifies malicious intent rather than malicious files.
Example Attack Chain Detected:
nginx (Web Server)
└── bash (Interactive Shell)
├── curl (Downloads payload)
│ └── [WRITE] -> /tmp/malware.sh
└── sh (Executes payload)
└── [CONNECT] -> 192.168.1.50:4444 (C2 Server)
Architecture
The system operates across a 4-stage pipeline:
+---------------------+ +---------------------+ +---------------------+
| | | | | |
| 1. OS Telemetry |----->| 2. Graph Builder |----->| 3. Detection Engine |
| (psutil / eBPF) | | (NetworkX Memory) | | (Rules & Scoring) |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
|
v
+---------------------+
| |
| 4. Action & Alert |
| (Containment, REST) |
| |
+---------------------+
- Telemetry Sensing: Continuously polls the OS for process spawns, file descriptors, and network sockets (psutil) — eBPF sensor in development for zero-gap visibility.
- Graph Construction: Events are normalized into a sliding-window, directed process-resource graph, automatically pruning stale events to prevent memory leaks.
- Detection Engine: The active graph is evaluated against JSON/Sigma-configurable behavioral rules. Threat scores accumulate along process lineage chains.
- Action & Visualization: Once a threshold is breached, Spectre fires an alert, maps it to MITRE ATT&CK, runs a deep-scan via YARA, and can actively freeze/kill the process tree. REST API + Next.js dashboard for real-time monitoring.
Key Features
- Process Ancestry Tracking: Reconstructs complete execution lineages, handling PID recycling and short-lived processes safely.
- Resource Monitoring: Tracks I/O operations including
READ/WRITEfor files, andCONNECT/LISTENfor sockets. - Behavioral Detection Engine: Scores chains of events dynamically using JSON-configurable rules.
- Sigma-Native Rules: Write rules in Sigma YAML; automatic conversion to Spectre format with MITRE ATT&CK extraction.
- Threat Enrichment:
- MITRE ATT&CK: Alerts mapped automatically to ATT&CK tactics (e.g., T1059 - Command and Scripting Interpreter).
- YARA Integration: Scans suspicious files on-the-fly using the
yara-pythonengine.
- Active Containment: Configurable actions (
--contain stoporkill) to instantly freeze or terminate entire threat process trees. - Persistence & API: Events and alerts stored in local SQLite database, exposed via FastAPI REST interface.
- Live Dashboard: Real-time web dashboard for monitoring graph, alerts, and system telemetry.
- Detection Engineering Platform: Rule testing, Sigma validation, pack management, CI/CD integration.
Getting Started
Prerequisites
- Python 3.8 or newer
- Linux Operating System (for accurate
/procmapping andpsutilcompatibility) - Root privileges (required for process monitoring and containment)
- Dependencies:
psutil,networkx,fastapi,yara-python,uvicorn,click,rich,pyyaml
Installation
Option 1: One-line installer (recommended)
curl -sSL https://raw.githubusercontent.com/Aayushbankar/spectre/main/install.sh | sudo bash
Option 2: PyPI
pip install spectre-hids[yara]
Option 3: Docker
docker run -d --privileged --pid=host --cgroupns=host \
-v /:/host:ro \
-v /var/log/spectre:/var/log/spectre \
-v /var/lib/spectre:/var/lib/spectre \
ghcr.io/aayushbankar/spectre:latest \
--contain kill --api
Option 4: From source
git clone https://github.com/Aayushbankar/spectre.git
cd spectre
pip install -e ".[yara]"
Usage & CLI Reference
Spectre provides a highly configurable Command Line Interface (CLI) for tuning the engine's sensitivity and enabling specific modules.
Basic Usage
[!IMPORTANT] Quiet Mode vs. Verbose Mode By default,
spectre runruns in Quiet Mode, meaning it will only log to the terminal when a critical alert threshold is breached. To see the graph updating in real-time, use the--verbose(-v) flag.
Run with Active Containment & REST API:
spectre run --verbose --contain kill --api
Full CLI Commands
| Command | Description |
|---|---|
spectre run |
Run HIDS monitoring with all V10 options |
spectre rules |
List loaded detection rules (table/JSON) |
spectre rule list |
List available rule packs (4 packs, 24 rules) |
spectre rule install <pack> |
Install a rule pack (webshell, privilege_escalation, credential_access, lateral_movement) |
spectre rule uninstall <pack> |
Uninstall a rule pack |
spectre rule info <pack> |
Show detailed rule pack information |
spectre test rule <files...> |
Validate Sigma rules and test Spectre conversion |
spectre test technique <Txxxx> |
Test against ATT&CK technique (Atomic Red Team) |
spectre stats |
Show database statistics |
spectre doctor |
Run system diagnostics |
spectre api |
Run REST API server standalone |
spectre run Options
| Argument | Description | Default |
|---|---|---|
--interval |
Polling interval in seconds | 0.5 |
--window-size, -w |
Sliding time window in seconds for event expiration | 60.0 |
--threshold, -t |
Threat score threshold for high-severity alerts | 15 |
--rules, -r |
Path to behavioral rules JSON file | rules.json |
--log-file |
Path to security alerts output log file | /var/log/spectre/alerts.log |
--db |
Path to SQLite database | /var/lib/spectre/spectre.db |
--yara-rules |
Directory containing YARA rule files | /usr/share/spectre/yara_rules |
--contain |
Mitigation action: none, stop, kill |
kill |
--api / --no-api |
Enable/disable REST API and Dashboard | Enabled |
--api-port |
Port for REST API server | 8000 |
--verbose, -v |
Enable verbose mode (print all events) | False |
Detection Rules & Sigma Integration
Built-in Rule Packs (24 Sigma Rules)
| Pack | Rules | ATT&CK Coverage | Description |
|---|---|---|---|
| webshell | 6 | T1059.004, T1505.003, T1059, T1027.004, T1046, T1570, T1105, T1016, T1071, T1041 | Web server compromises, shell spawns, compilers, downloaders, post-exploitation |
| privilege_escalation | 6 | T1548.003, T1548.001, T1068, T1574.006, T1053.003, T1543.002 | Sudo abuse, SUID exploitation, kernel exploits, LD_PRELOAD, cron, systemd |
| credential_access | 6 | T1003.008, T1555.004, T1555.003, T1555.001, T1552.001 | Shadow files, SSH keys, browser creds, GPG keys, AWS/Docker secrets |
| lateral_movement | 6 | T1021.004, T1550.002, T1543.003, T1021.002, T1021.001, T1021.006 | SSH, pass-the-hash, remote services, SMB, RDP, WMI/WinRM |
Install Rule Packs
# List available packs
spectre rule list
# Install webshell detection pack
spectre rule install webshell
# Install all packs
for p in webshell privilege_escalation credential_access lateral_movement; do
spectre rule install "$p"
done
Write Custom Sigma Rules
title: Suspicious Python Script Execution
id: custom-suspicious-python-001
description: Detects python executing scripts from /tmp or /dev/shm
status: experimental
author: Your Name
date: 2024-01-15
logsource:
category: process_creation
product: linux
detection:
selection_python:
Image|endswith: '/python3'
selection_tmp_script:
CommandLine|contains:
- '/tmp/'
- '/dev/shm/'
condition: selection_python and selection_tmp_script
level: high
tags:
- attack.t1059.006
- attack.execution
Test Rules
# Validate Sigma syntax and test conversion
spectre test rule my_rule.yml
# Test all rules in a pack
spectre test rule spectre/rules/packs/webshell/*.yml
Testing & Verification
Spectre includes an automated E2E verification test suite to simulate and assert threat escalation behaviors.
Run V10 Test Suite
python -m pytest tests/v10/run_test.py
Run Unit Tests
python -m pytest tests/unit/ -v
Run Rule Tests (CI)
# Validates Sigma syntax and conversion
python -m pytest tests/ -k "sigma" -v
Manual Verification
# Start Spectre in background with low threshold
spectre run --threshold 5 --contain kill --api &
# Trigger a test alert (reads /etc/hosts with python)
python -c "open('/etc/hosts').read(); import time; time.sleep(10)"
# Check dashboard at http://localhost:8000
Documentation & Roadmap
Detailed architectural notes and version progression can be found in the docs/ directory:
- Master Design Document: Vision, entity relations, and the 17-stage SDLC roadmap.
- Progress Tracker: Current completion status of the project.
- GTU Internship Submission: Details for project submission.
Incremental SDLC Roadmap (Current Status):
- V0-V3: Process Monitor, Rule Engine, Resource Tracking, Graph Memory.
- V4-V5: Detection Engine, MITRE ATT&CK Mapping.
- V6-V8: SQLite Persistence, REST API, Live Dashboard.
- V9: YARA Engine Integration.
- V10: Active Containment (SIGSTOP/SIGKILL).
- Phase 1: Sigma Integration, Rule Packs, Testing CLI, Pack Management.
- V11: Attack Replay Framework (Atomic Red Team).
- V12: OS Telemetry Upgrades (eBPF, auditd).
- V13-V17: Machine Learning, Graph Embeddings, Multi-host Agent.
Acknowledgments & External Links
Spectre is built on the shoulders of giants. We heavily rely on the following open-source frameworks and security standards:
- psutil: For cross-platform OS-level process and system monitoring.
- NetworkX: For sliding-window directed graph processing and ancestry modeling.
- FastAPI: For exposing the high-performance telemetry API.
- YARA: The pattern matching swiss knife for malware researchers.
- MITRE ATT&CK®: The globally-accessible knowledge base of adversary tactics and techniques.
- Sigma: Generic signature format for SIEM systems.
- Atomic Red Team: Atomic tests for ATT&CK techniques.
Author: Aayush Bankar (aayushbankar42@gmail.com)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spectre_hids-10.0.4.tar.gz.
File metadata
- Download URL: spectre_hids-10.0.4.tar.gz
- Upload date:
- Size: 47.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aed1ef65e551fa698e936fe2901f5b9225a77db2e1644ac979ed5ecf1eb94ae5
|
|
| MD5 |
5359311a68900ff1deab0ee9ab947141
|
|
| BLAKE2b-256 |
e75d56fa8637157cb30d859070d190c424bd59f1879232318aefabc8dd40ca44
|
Provenance
The following attestation bundles were made for spectre_hids-10.0.4.tar.gz:
Publisher:
release.yml on Aayushbankar/spectre
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spectre_hids-10.0.4.tar.gz -
Subject digest:
aed1ef65e551fa698e936fe2901f5b9225a77db2e1644ac979ed5ecf1eb94ae5 - Sigstore transparency entry: 2324076111
- Sigstore integration time:
-
Permalink:
Aayushbankar/spectre@8abfcb0340be3de0d9919c03e6b3c7fffbfc7918 -
Branch / Tag:
refs/tags/v10.0.4 - Owner: https://github.com/Aayushbankar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8abfcb0340be3de0d9919c03e6b3c7fffbfc7918 -
Trigger Event:
push
-
Statement type:
File details
Details for the file spectre_hids-10.0.4-py3-none-any.whl.
File metadata
- Download URL: spectre_hids-10.0.4-py3-none-any.whl
- Upload date:
- Size: 57.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97e4c9bbda34433cb807d11b1ad09a4395409811f313c9897c70928bd7993ffe
|
|
| MD5 |
197c8856c7a8cf3bc04088bf5efcf4df
|
|
| BLAKE2b-256 |
72d1e5988f9b0268365073fa61f2d9ca394b519041adc8b835ce062179e87eb4
|
Provenance
The following attestation bundles were made for spectre_hids-10.0.4-py3-none-any.whl:
Publisher:
release.yml on Aayushbankar/spectre
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spectre_hids-10.0.4-py3-none-any.whl -
Subject digest:
97e4c9bbda34433cb807d11b1ad09a4395409811f313c9897c70928bd7993ffe - Sigstore transparency entry: 2324076196
- Sigstore integration time:
-
Permalink:
Aayushbankar/spectre@8abfcb0340be3de0d9919c03e6b3c7fffbfc7918 -
Branch / Tag:
refs/tags/v10.0.4 - Owner: https://github.com/Aayushbankar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8abfcb0340be3de0d9919c03e6b3c7fffbfc7918 -
Trigger Event:
push
-
Statement type: