
Lokale, quelloffene Threat Hunting für die Logs, die Sie bereits haben: Zeek, Pi-hole, syslog oder das systemd-Journal, CloudTrail. Jeder Lauf benennt die Technik hinter jedem Detektor. Kein Agent, kein Daemon, keine Blackbox – zwischen grep und einem SIEM.

zwischen grep und einem SIEM
sigwood ist ein lokal arbeitendes Kommandozeilen-Tool zur Bedrohungssuche für Selbsthoster. Richte es auf
Logs, die du bereits hast – Zeek, Pi-hole/dnsmasq, syslog oder CloudTrail – und es erstellt ein Profil
dessen, was darin enthalten ist, und führt dann eine Handvoll Detektoren darüber aus: Beaconing, verdächtiges DNS, Port-
Scans, umfangreiche ausgehende Übertragungen, untypische TLS-Konfigurationen, Authentifizierungsstruktur, seltene
syslog-Ereignisse, ungewöhnliche CloudTrail-Aktivität und Verhaltensmuster in Namen, die dein Pi-hole
bereits blockiert hat.
Kein SIEM. Kein Agent. Keine Magie. Nichts zu deployen – keine Datenbank, kein Daemon, kein Netzwerk, kein Konto. Installiere es, richte es auf ein Verzeichnis mit Logs, lies die Ausgabe. Es läuft auf deiner eigenen Maschine, über ruhende Logs, und deine Logs müssen niemals deine Maschine verlassen.
Status: stabil (
1.2.0). Die zehn Detektoren funktionieren und sind durch Tests abgedeckt; was 1.0 bedeutet sagt, welche Schnittstellen jetzt festgelegt sind und welche nicht. Mit umfangreicher KI-Unterstützung unter menschlicher Prüfung erstellt; die FAQ sagt wie, und das Evidenz-Register hält fest, was gemessen wurde und was nicht. Feedback ist willkommen.
Installieren · Handbuch · FAQ · Vertrag · Roadmap · Bekannte Probleme · Schemas · Vorarbeiten · Sicherheit
pipx install sigwood # or: pip install sigwood in a venv - see Installation
sigwood /var/log/ # point it at a directory
sigwood /opt/zeek/dns.log # or a single file
Das war's – keine Konfiguration erforderlich. Hier ist ein Beispiel dafür, was ein Lauf zutage fördert (illustrative Ausgabe, keine echten Netzwerkdaten):
dns - 1 finding · 1 high
domain names that stand apart from the rest, including machine-generated-looking
names of the sort malware uses for disposable command domains, and large batches
of related lookups
────────────────────────────────────────────────────────────────────────────────
groups (1)
names entropy score queries clients
high 16 2.10-1.85 418 1 k7x2p9qz3f.example
beacon - 2 findings · 2 medium
outbound connections that keep a regular rhythm
────────────────────────────────────────────────────────────────────────────────
medium 192.168.1.37 → 198.51.100.20:443/tcp period=3.0m rhythm=0.624 480 conns
medium 192.168.1.37 → 203.0.113.50:8443/tcp period=10.0m rhythm=0.606 144 conns
syslog - 1 finding · 1 medium
rare log patterns, and recorded reboots or administrative runs, so changes on a
machine do not disappear into routine logs
────────────────────────────────────────────────────────────────────────────────
privileged (1)
medium Accepted password for root from 198.51.100.20 port 51900 ssh2
-v explains why each finding surfaced
Lies von oben nach unten, das ist eine Geschichte: ein interner Host, der hoch-entropische Lookups unter einer
Wegwerf-Domain durchführt, der zwei externe IPs nach einem festen Zeitplan kontaktiert und eine Root-SSH-Anmeldung
von einer dieser selben IPs. Ein Befund bedeutet „ungewöhnlich für dein Netzwerk", nicht „bekanntlich bösartig" -
es ist ein Hinweis, dem man nachgehen sollte, kein Urteil. Füge -v hinzu, um die Belege hinter jedem Score und die
nächsten Schritte zu sehen, um ihm nachzugehen.
Du hast nur einen Pi-hole? Das ist für sich genommen ein vollständiges Setup:
sigwood digest /var/log/pihole/pihole.log # orient: what's in the log
sigwood /var/log/pihole/ # hunt: DNS clustering over your queries
sigwood dnsblock /var/log/pihole/ # bonus: behavior in names Pi-hole blocked
Die üblichen Aufrufe:
sigwood digest /var/log/messages # orient first - a fast, factual profile of a file
sigwood graph /opt/zeek # replay the flows as a self-contained HTML artifact
sigwood syslog /var/log # run a single detector
sigwood init # detection-driven setup, writes a config
sigwood hunt # run the curated default hunt
Keine Logs zur Hand? Das Repository enthält einen kleinen Generator für synthetische Korpora – einen kompromittierten Host, keine echten Netzwerkdaten –, sodass du zuerst beobachten kannst, wie es funktioniert:
git clone https://github.com/helixmap/sigwood
cd sigwood
python3 demo/gen_corpus.py # writes a synthetic corpus; no network calls
sigwood hunt --config=demo/sigwood.toml # beacons, a DGA burst, a bulk transfer out, and the syslog trail
Die erzeugten Logs liegen unter demo/corpus/ (von Git ignoriert); die vollständige Schritt-für-Schritt-Anleitung befindet sich in
demo/README.md. Hier ist ein
vollständiger Lauf gegen diesen Korpus, gefolgt von denselben Ergebnissen im HTML-Format:
...und dieselben Flows, wiedergegeben von sigwood graph, eine in sich geschlossene HTML-Datei: