
اصطياد التهديدات المحلي أولاً للسجلات التي لديك بالفعل: Zeek أو Pi-hole أو syslog أو سجل systemd أو CloudTrail. كل تشغيل يسمّي التقنية الكامنة وراء كل كاشف. لا وكيل، لا خادم خفي، لا صندوق أسود - بين grep ونظام SIEM.

بين grep و SIEM
sigwood أداة سطر أوامر محلية أولاً لاصطياد التهديدات، موجّهة إلى المستضيفين الذاتيين. وجّهها إلى
السجلات التي لديك بالفعل - Zeek أو Pi-hole/dnsmasq أو syslog أو CloudTrail - فتُحلّل
ما تحتويه، ثم تُشغّل عليها مجموعة من الكواشف: الإشارات الدورية (beaconing)، وDNS المشبوه، ومسح
المنافذ، وعمليات النقل الصادرة الكبيرة، وإعدادات TLS غير المألوفة، وبنية المصادقة، وأحداث
syslog النادرة، ونشاط CloudTrail غير المعتاد، والأنماط السلوكية في الأسماء التي حجبها Pi-hole
لديك مسبقاً.
ليست SIEM. ليست وكيلاً. ليست سحراً. لا شيء لتنشره - لا قاعدة بيانات، ولا خادم خفي (daemon)، ولا شبكة، ولا حساب. ثبّتها، ووجّهها إلى مجلد من السجلات، واقرأ المخرجات. تعمل على جهازك الخاص، على السجلات المخزّنة، ولا يلزم أن تغادر سجلاتك جهازك أبداً.
الحالة: مستقرة (
1.2.0). الكواشف العشرة تعمل ومغطّاة بالاختبارات؛ ماذا يعني 1.0 يوضّح أي الواجهات أصبحت ثابتة وأيها لم تعد كذلك. بُنيت بمساعدة كبيرة من الذكاء الاصطناعي تحت مراجعة بشرية؛ يوضّح قسم الأسئلة الشائعة كيف، وسجل الأدلة يوثّق ما جرى قياسه وما لم يجرِ. نرحّب بالملاحظات.
التثبيت · الدليل · الأسئلة الشائعة · العقد · خارطة الطريق · المشكلات المعروفة · المخططات · الأعمال السابقة · الأمان
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
اقرأ من الأعلى إلى الأسفل، فهذه قصة: مضيف داخلي يُجري استعلامات عالية العشوائية تحت نطاق واحد مؤقت، ويتصل بعنوانين IP خارجيين وفق جدول زمني ثابت، وتسجيل دخول 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/ (مُستثناة من git)؛ والدليل الكامل موجود في
demo/README.md. فيما يلي
تشغيل كامل على تلك المجموعة، يتبعه نفس النتائج بصيغة HTML:
...والتدفقات نفسها مُعاد عرضها بواسطة sigwood graph، في ملف HTML واحد مكتفٍ ذاتيًا:
اسم واحد في كل مكان: توزيعة PyPI، والأمر، وحزمة الاستيراد، وقسم الإعدادات
كلها sigwood. يتطلب Python 3.11 حتى 3.14؛ ويُرفض 3.15 وقت التثبيت
حتى تُصدر حزم اعتمادياته wheels له.
التثبيت الموصى به هو pipx، الذي يُبقي sigwood في بيئته
المعزولة الخاصة وعلى PATH لديك (ويتجنب رفض externally-managed-environment
الذي يواجهه pip install المجرد على التوزيعات الحديثة):
# Debian / Raspberry Pi OS / Ubuntu: sudo apt install pipx
# Fedora: sudo dnf install pipx
# macOS: brew install pipx
pipx ensurepath # once - then reopen your shell
pipx install sigwood
sigwood --help