
Локальный поиск угроз по уже имеющимся у вас логам: 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. Не агент. Не магия. Ничего разворачивать не нужно — ни базы данных, ни демона, ни сети, ни аккаунта. Установите, укажите на каталог с логами, прочитайте вывод. Он работает на вашей собственной машине, по логам в состоянии покоя, и вашим логам никогда не нужно покидать вашу машину.
Статус: стабильный (
1.2.0). Десять детекторов работают и покрыты тестами; что означает 1.0 объясняет, какие интерфейсы теперь зафиксированы, а какие нет. Создано при активной помощи ИИ под человеческим контролем; 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
Читайте сверху вниз — это история: внутренний хост, выполняющий высокоэнтропийные запросы под одним
одноразовым доменом, обращающийся к двум внешним IP-адресам по фиксированному расписанию, и root-вход по SSH
с одного из этих же IP-адресов. Находка означает «необычно для вашей сети», а не «известно-вредоносное» —
это зацепка для изучения, а не приговор. Добавьте -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) всего стека зависимостей.