
Caça a ameaças local-first para os logs que você já possui: Zeek, Pi-hole, syslog ou o journal do systemd, CloudTrail. Cada execução nomeia a técnica por trás de cada detector. Sem agente, sem daemon, sem caixa-preta - entre o grep e um SIEM.

entre o grep e um SIEM
sigwood é uma ferramenta de linha de comando de caça a ameaças, local-first, para quem
hospeda os próprios serviços. Aponte-a para logs que você já tem - Zeek, Pi-hole/dnsmasq,
syslog ou CloudTrail - e ela faz o perfil do que há neles e, em seguida, executa uma série de
detectores sobre eles: beaconing, DNS suspeito, varreduras de porta, transferências de saída em
massa, configurações de TLS fora do padrão, estrutura de autenticação, eventos de syslog raros,
atividade incomum no CloudTrail e padrões comportamentais em nomes que seu Pi-hole já bloqueou.
Não é um SIEM. Não é um agente. Não é mágica. Nada para implantar - sem banco de dados, sem daemon, sem rede, sem conta. Instale, aponte para um diretório de logs, leia a saída. Ele roda na sua própria máquina, sobre logs em repouso, e seus logs nunca precisam sair da sua máquina.
Status: estável (
1.2.0). Os dez detectores funcionam e são cobertos por testes; o que significa 1.0 diz quais interfaces agora estão fixas e quais não estão. Construído com ampla assistência de IA sob revisão humana; o FAQ explica como, e o registro de evidências registra o que foi e o que não foi medido. Feedback é bem-vindo.
Instalar · Manual · FAQ · Contrato · Roadmap · Problemas conhecidos · Esquemas · Trabalhos anteriores · Segurança
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
É isso — nenhuma configuração necessária. Aqui está o tipo de coisa que uma execução revela (saída ilustrativa, não dados reais de rede):
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
Leia de cima para baixo, isso é uma história: um host interno fazendo consultas de alta entropia sob um domínio descartável, chamando dois IPs externos em um horário fixo, e um login SSH de root a partir de um desses mesmos IPs. Um achado significa "incomum para sua rede", não "conhecido como malicioso" - é uma pista para investigar, não um veredito. Adicione -v para ver as evidências por trás de cada pontuação e os próximos passos para investigar.
Só tem um Pi-hole? Isso já é uma configuração completa por si só:
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
As invocações habituais:
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
Sem logs à mão? O repositório inclui um pequeno gerador de corpus sintético - um host comprometido, sem dados de rede reais - para que você possa vê-lo funcionar primeiro:
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
Os logs gerados ficam em demo/corpus/ (ignorado pelo git); o passo a passo completo está em
demo/README.md. A seguir, uma
execução completa contra esse corpus, seguida das mesmas descobertas em formato HTML:
...e os mesmos fluxos reproduzidos por sigwood graph, um único arquivo HTML autocontido:
Um único nome em todos os lugares: a distribuição PyPI, o comando, o pacote de importação e a seção
de configuração são todos sigwood. Requer Python 3.11 até 3.14; a 3.15 é recusada no momento da instalação
até que sua pilha de dependências forneça wheels para ela.