dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Vervet 提供 Zeek 與 Suricata 日誌的網路威脅偵測。具可解釋的主機風險評分,附證據鏈與 MITRE ATT&CK 對應。讀取您的日誌,絕不觸碰您的網路。
AI 翻譯
Network threat hunting for Zeek and Suricata logs. Explainable per-host risk scoring with evidence chains and MITRE ATT&CK mapping. Reads your logs, never touches your network.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Vervet reads your Zeek and Suricata logs and tells you which hosts are compromised and why.
Website
·
Live demo檢視完整 README ↗Point Vervet at a directory of Zeek and Suricata logs and it surfaces the threats hiding in them: C2 beacons phoning home on a fixed interval, DNS tunneling and DGA domains, data exfiltration, lateral movement, and long-lived connections that shouldn't exist. Every flagged host gets a transparent risk score with the evidence chain that produced it and the MITRE ATT&CK techniques it maps to, so an analyst sees not just what fired but why. It runs as a single container on your own hardware. No cloud, no telemetry, no live tap required, and it never touches your network, it only reads logs you already collect.
Vervet is for blue teams, SOC analysts, and MSSPs who run Zeek or Suricata and want the analyst layer that hunts the logs for them, the way RITA and AC-Hunter do for beaconing, but UI-first, MITRE-mapped, and speaking both sensors.
Vervet is a self-hosted network threat hunting platform for Zeek and Suricata logs. It parses existing log files into a common event model, runs deterministic detection engines for beaconing, DNS abuse, DGA domains, fast-flux, lateral movement, long connections, and Suricata alerts, then rolls findings into per-host risk scores with evidence chains and MITRE ATT&CK mappings.
It serves a FastAPI backend and React UI from one container, supports demo data for evaluation, accepts batch directory ingestion, and exposes REST endpoints for cases, reports, rules, exports, live ingest, and integrations with TheHive, Wazuh, and MISP.
Demo mode loads a realistic sample environment so the dashboard shows scored, explained threats immediately:
git clone https://github.com/lidless-labs/vervet.git
cd vervet
docker compose up -d --build
curl http://localhost:8000/health
Expected output:
{"status":"healthy"}
The container serves the API and the web UI on the same port and seeds the demo data on startup. Stop it with docker compose down.
# Point it at your Zeek/Suricata log directory instead of the demo data
docker compose run --rm -e VERVET_DEMO_MODE=false \
-v /var/log/zeek:/logs:ro vervet
Then upload or ingest logs from the UI, or via the REST API:
# Zeek conn/dns/http/ssl logs and Suricata eve.json are all accepted
curl -X POST http://localhost:8000/api/v1/ingest/directory \
-H "X-API-Key: $VERVET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"path": "/logs"}'
# Backend (FastAPI) on :8000
pip install -r requirements.txt
VERVET_DEMO_MODE=true uvicorn api.main:app --host 0.0.0.0 --port 8000
# Frontend (Vite dev server) on :5174, in another terminal
npm install && npm run dev
make dev starts both at once. See the Makefile for individual targets.
To run the backend tests, install the test dependencies:
pip install -r requirements-test.txt
python -m pytest -q
requirements-test.txt includes the existing backend requirements and the
pinned evidence-record schema validator. Docker installs requirements.txt.
| Detection | What it finds | Maps to |
|---|---|---|
| Beaconing / C2 | Periodic callbacks by interval regularity, jitter, and data-size consistency | T1071, T1571 |
| DNS tunneling | High-entropy subdomains and oversized TXT/NULL records used as a covert channel | T1071.004, T1048 |
| DGA domains | Algorithmically generated domains via n-gram and lexical analysis | T1568.002 |
| Fast-flux | Domains rotating through many IPs to hide infrastructure | T1568 |
| Lateral movement | Internal-to-internal connection patterns that suggest pivoting | T1021 |
| Long connections | Unusually persistent flows by duration, protocol, and direction | T1071, T1572 |
| Suricata alerts | Severity-weighted IDS alerts folded into the same per-host score | varies |
Each detection contributes to a unified per-host risk score (0-100) with a full reasoning chain. Scoring is deterministic and explainable, not a black box: you can read exactly which signals raised a host's score and by how much.
Zeek logs (conn/dns/http/ssl/x509/notice) Suricata eve.json
\ /
+--> unified parsers -------------+
|
detection engines (beacon, DNS threat,
lateral movement, long-conn, Suricata)
|
unified threat engine -> per-host score
+ MITRE ATT&CK mapping + evidence chain
|
web UI + REST API <---+---> case management / IOC export
(TheHive / Wazuh / MISP)
Logs are parsed into a common connection/event model, run through each detection engine, and aggregated by the unified threat engine into per-host scores with MITRE mappings and evidence chains. Findings can be promoted to cases, exported as IOCs, and pushed to TheHive, correlated against Wazuh, or enriched from MISP.
Note on persistence (current limitation): the OSS edition keeps its analysis index in memory. It is built for log-batch hunting and triage sessions, not yet as a long-running system of record. Restarting clears loaded logs and analysis (cases, hunt notes, and trends are file-backed). A durable store is the top roadmap item, see below.
Initial endpoints exist for exporting cases to TheHive, correlating IOCs against Wazuh alerts, and enriching IOCs from MISP. Configure via environment variables (THEHIVE_URL/THEHIVE_API_KEY, WAZUH_URL/WAZUH_API_KEY, MISP_URL/MISP_API_KEY) and drive from /api/v1/integrations/*.
VERVET_API_KEY to require a key on every request. Without it, the server runs in open dev mode and says so loudly at startup.VERVET_LOG_ROOT to restrict directory ingestion to a single tree, so the API can't be coaxed into reading arbitrary paths.VERVET_RATE_LIMIT_*) to protect public deployments.Apache-2.0. See LICENSE.