
जिन लॉग्स के आपके पास पहले से हैं, उनके लिए लोकल-फ़र्स्ट थ्रेट हंटिंग: Zeek, Pi-hole, syslog या systemd journal, CloudTrail। हर रन प्रत्येक डिटेक्टर के पीछे की तकनीक का नाम बताता है। कोई एजेंट नहीं, कोई डेमॉन नहीं, कोई ब्लैक बॉक्स नहीं - grep और SIEM के बीच।

grep और SIEM के बीच
sigwood स्व-होस्टर्स के लिए एक लोकल-फ़र्स्ट, कमांड-लाइन थ्रेट-हंटिंग टूल है। इसे उन लॉग्स पर इंगित करें जो आपके पास पहले से हैं - Zeek, Pi-hole/dnsmasq, syslog, या CloudTrail - और यह उनमें क्या है इसकी प्रोफ़ाइल बनाता है, फिर उन पर कुछ डिटेक्टर चलाता है: बीकनिंग, संदिग्ध DNS, पोर्ट स्कैन, बल्क आउटबाउंड ट्रांसफ़र, अपरंपरागत TLS सेटअप, प्रमाणीकरण संरचना, दुर्लभ syslog इवेंट, असामान्य CloudTrail गतिविधि, और उन नामों में व्यवहारिक पैटर्न जिन्हें आपके Pi-hole ने पहले ही ब्लॉक कर दिया था।
SIEM नहीं। एजेंट नहीं। जादू नहीं। तैनात करने के लिए कुछ नहीं - कोई डेटाबेस नहीं, कोई डेमॉन नहीं, कोई नेटवर्क नहीं, कोई खाता नहीं। इसे इंस्टॉल करें, इसे लॉग्स की एक डायरेक्टरी पर इंगित करें, आउटपुट पढ़ें। यह आपके अपने बॉक्स पर, रेस्ट में पड़े लॉग्स पर चलता है, और आपके लॉग्स को कभी भी आपकी मशीन छोड़ने की ज़रूरत नहीं होती।
स्थिति: स्थिर (
1.2.0)। दसों डिटेक्टर काम करते हैं और टेस्ट द्वारा कवर किए गए हैं; 1.0 का क्या अर्थ है बताता है कि कौन-से इंटरफ़ेस अब तय हैं और कौन-से नहीं। मानवीय समीक्षा के अंतर्गत भारी AI सहायता से निर्मित; FAQ बताता है कैसे, और साक्ष्य बहीखाता दर्ज करता है कि क्या मापा गया है और क्या नहीं। प्रतिक्रिया का स्वागत है।
इंस्टॉल करें · मैनुअल · FAQ · अनुबंध · रोडमैप · ज्ञात समस्याएँ · स्कीमा · पूर्व कार्य · सुरक्षा
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
बस इतना ही - किसी कॉन्फ़िग की आवश्यकता नहीं। यहाँ वह प्रकार दिखाया गया है जो एक रन सामने लाता है (उदाहरणात्मक आउटपुट, वास्तविक नेटवर्क डेटा नहीं):
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
ऊपर से नीचे पढ़ें, यह एक कहानी है: एक आंतरिक होस्ट जो एक थ्रोअवे डोमेन के तहत उच्च-एन्ट्रॉपी लुकअप कर रहा है, एक निश्चित समय-सारणी पर दो बाहरी IPs को कॉल कर रहा है, और उन्हीं IPs में से एक से रूट SSH लॉगिन। एक फाइंडिंग का अर्थ है "आपके नेटवर्क के लिए असामान्य," न कि "ज्ञात-खराब" - यह देखने के लिए एक सुराग है, कोई फैसला नहीं। प्रत्येक स्कोर के पीछे के साक्ष्य और इसे ट्रैक करने के लिए अगले कदमों के लिए -v जोड़ें।
केवल एक Pi-hole है? वह अपने आप में एक पूर्ण सेटअप है:
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
सामान्य आमंत्रण:
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
लॉग्स हाथ में नहीं हैं? रिपॉज़िटरी में एक छोटा सिंथेटिक कॉर्पस जनरेटर शामिल है - एक समझौता किया गया होस्ट, कोई वास्तविक नेटवर्क डेटा नहीं - ताकि आप पहले इसे काम करते हुए देख सकें:
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
उत्पन्न लॉग demo/corpus/ के अंतर्गत रहते हैं (gitignored); पूरा walkthrough
demo/README.md में है। यहाँ उस corpus के विरुद्ध एक
पूरा रन दिया गया है, जिसके बाद वही findings HTML प्रारूप में हैं:
...और वही flows sigwood graph द्वारा फिर से चलाए गए, एक self-contained HTML फ़ाइल में:
हर जगह एक ही नाम: PyPI distribution, command, import package, और config
section सभी sigwood हैं। Python 3.11 से 3.14 तक आवश्यक है; 3.15 को install के समय अस्वीकार कर दिया जाता है
जब तक कि इसका dependency stack इसके लिए wheels नहीं भेजता।
अनुशंसित इंस्टॉल pipx है, जो sigwood को इसके अपने
पृथक environment में और आपके PATH पर रखता है (और आधुनिक distros पर सादे pip install द्वारा मिलने वाली
externally-managed-environment अस्वीकृति से बचाता है):