
이미 보유한 로그를 활용한 로컬 우선 위협 헌팅: Zeek, Pi-hole, syslog 또는 systemd 저널, CloudTrail. 모든 실행은 각 탐지기 뒤에 있는 기법을 명시합니다. 에이전트 없음, 데몬 없음, 블랙박스 없음 - grep과 SIEM 사이.

grep과 SIEM 사이
**sigwood**는 셀프호스터를 위한 로컬 우선(local-first) 명령줄 위협 헌팅 도구입니다. 이미 가지고 있는
로그 - 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
위에서 아래로 읽으면 하나의 이야기입니다. 내부 호스트가 하나의 일회용 도메인 아래에서 고엔트로피 조회를 수행하고, 고정된 일정에 따라 두 개의 외부 IP로 호출하며, 그중 같은 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/ 아래에 위치하며(gitignore 처리됨), 전체 안내는
demo/README.md에 있습니다. 다음은 해당 코퍼스에 대한
전체 실행 결과이며, 이어서 동일한 발견 사항을 HTML 형식으로 보여줍니다:
...그리고 sigwood graph가 동일한 흐름을 재생한 결과로, 하나의 독립적인 HTML 파일입니다:
모든 곳에서 하나의 이름: PyPI 배포판, 명령어, 임포트 패키지, 그리고 설정
섹션이 모두 sigwood입니다. Python 3.11부터 3.14까지 필요하며, 3.15는 의존성 스택이
해당 버전용 휠을 제공할 때까지 설치 시점에 거부됩니다.
권장 설치 방법은 pipx이며, sigwood를 자체
격리된 환경에 유지하고 PATH에 추가합니다(또한 최신 배포판에서 순수 pip install이 마주치는
externally-managed-environment 거부를 우회합니다):
# 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
uv를 선호하시나요? uv tool install sigwood도 같은 역할을 하며,
일반 virtualenv도 잘 동작합니다. 선택적 추가 기능, 업그레이드, sudo pip 복구 방법, 디스크
사용량은 모두
매뉴얼에 있습니다.