-
Notifications
You must be signed in to change notification settings - Fork 1
threat intel
It is not a threat feed, and sloth does not have one. Until you replace the lists,
THREAT_DOMAINandTHREAT_IPdetect nothing — they are a working pipeline with no data in it. Do not present sloth's threat-intel matching as a detection capability in a deployment, tender or compliance document without saying which feed you loaded.
Summary: Sloth ships with embedded synthetic IOC lists in
src/threat_intel.c. They exist so the alerts pipeline can be exercised
in tests and so an operator has a template to extend. Swap them for your
own feed before production.
Sources: src/threat_intel.c, src/alerts.c
(rule_threat_domain, rule_threat_ip), src/views/help.c,
docs/views/alerts.md, docs/views/dns.md,
docs/views/connections.md, issue #96.
Last updated: 2026-09-23 (#96 — synthetic status labelled in code, UI and docs).
-
bad_domains[]— 6 sentinel names:malware.testing.com,phishing.testing.com,drive-by.testing.com,c2.example-bad.com,evilcorp.example,badactor.test. -
bad_ips[]— 4 addresses from the RFC 5737 documentation prefixes:192.0.2.66,192.0.2.99,198.51.100.7,203.0.113.13.
These are placeholders, and in practice they match nothing — which is the point. Production deployments swap them for a real feed.
One caveat worth stating rather than glossing: only evilcorp.example
and badactor.test sit under RFC 2606 reserved TLDs. The other four
are under testing.com / example-bad.com, which are ordinary
registrable .com names picked to look obviously fake. The IP entries
are genuinely non-routable by RFC 5737. So the domain list is
implausible, not impossible, and a host that really resolved
malware.testing.com would raise a CRIT that means nothing.
Three surfaces say so, and they are kept in sync deliberately:
| Surface | What it says |
|---|---|
Alert row (Alerts view, JSONL, --report) |
the detail line reads (demo IOC …), not (IOC …) — pinned by tests/test_alerts.c
|
Help view [?], "Embedded data" section |
Threat intel: SYNTHETIC DEMO LIST — pinned by tests/test_help.c
|
src/threat_intel.c / .h header comments |
full statement, including why no feed ships |
A docs-only disclosure was judged insufficient in #96: the operator reads the TUI, not the wiki.
Sloth cannot fetch one. Retrieving a feed over the network is a network
write, which MISSION.md §2 forbids — the passive
guarantee is the product. A future runtime loader that reads a file the
operator fetched out-of-band would be in scope; the fetch itself never
is.
-
Domains: suffix-aware, case-insensitive.
evilcorp.examplematches bothevilcorp.exampleand*.evilcorp.example, but notnotevilcorp.example. -
IPs: exact match against the remote IP of an outbound connection
observed via
src/platform/linux_tcpdiag.c.
- DNS qname hit →
ALERT_THREAT_DOMAINCRIT. - TLS SNI hit → same
THREAT_DOMAIN(SNI is a qname analogue). - HTTP
Host:hit → sameTHREAT_DOMAIN. - Connection remote IP hit →
ALERT_THREAT_IPCRIT.
Each alert carries match_ip + match_port so pcap-export can
write the matching packets to --pcap-dir.
Edit bad_domains[] and bad_ips[] in src/threat_intel.c. No file
loader today — the lists are baked at build time. Keeping them in code
makes the binary self-contained (no /etc dep) and makes the suffix
matcher trivially testable.
If you need runtime-loaded feeds, that's a new feature — wire it in
src/threat_intel.c and keep the existing matchers' signatures so
alerts doesn't need to change.
- alerts — the engine that consumes IOC matches.
- ja3-fingerprinting — complementary fingerprint-based detection.
- pcap-export — packet capture for matching connections.
Mirrored from docs/wiki/ on main by .github/scripts/wiki_sync.sh. Edit there, not here — hand edits to this wiki are overwritten on the next push.
Read this first — the complete reference
- what-sloth-does
- how-wifi-works
- monitor-mode
- where-exploits-happen
- wifi-sigint-techniques
- cli-reference
- wifi-state-of-the-art
Start here
Engines
WiFi SIGINT
- wifi-sigint
- non-ip-sensors
- mac-randomisation
- evil-twin-reproducer
- btm-abuse
- action-frames
- research-corpus
- captive-portal
- fragattacks
- tool-fingerprints
- enterprise-rogue
- ipv6-ndp
- smb-snoop
- kerberos-snoop
- ldap-snoop
- bgp-snoop
- ssh-snoop
- rdp-snoop
- snmp-snoop
- mqtt-snoop
UI and infrastructure
- ip-palette
- platform-vtable
- version-checkin
- manifest-format
- pcap-export
- jsonl-schema
- data-socket-exposure
- sqlite-schema
- ring-buffers
Factory infrastructure
Reference
Source material
Maintenance