One request, from an alert to an answer
# what do you know about this domain?
IOC=doosan-job.com
shard=$(printf %s "$IOC" | sha256sum | cut -c1-2)
curl -s https://trilwu.github.io/apttrail/by-indicator/$shard.json | jq --arg v "$IOC" '.[$v]'
{
"type": "domain",
"groups": ["CLEAVER"],
"attack_ids": ["G0003"],
"first_seen": "2015-03-18",
"references": ["http://www.cylance.com/assets/Cleaver/Cylance_Operation_Cleaver_Report.pdf"]
}The actor, its ATT&CK id, the date it appeared upstream, and the write-up it came from — from one 178 KB fetch, with no key and no account. Try it in the browser.
What you get that a blocklist does not
- Attribution
- 97 ATT&CK sets resolved from 124 of 339 upstream groups, and the id travels into every export format — so a hit in Suricata or MISP still says whose.
- Provenance
- 171,565 of 171,566 indicators name the report that published them. Not a reference list at the bottom of a page — the specific write-up behind that specific value.
- History
- 2015 → 2026 157,786 carry an exact first-seen date, recovered from history upstream had discarded. Filter on age instead of blocking a domain last used in 2016.
- No friction
- Static files on stable URLs. No account, no key, no rate limit, rebuilt hourly. Look-ups run in your browser, so nothing you paste is sent anywhere.
Into your tooling
- MISP
add the URL as a feed; one event per actor - STIX 2.1
intrusion-set objects, merges with ATT&CK - Suricata
~4,100 dataset-backed rules, validated in CI - Sigma
one rule per group, attack.gXXXX tagged - Flat lists
one value per line, for a blocklist - JSON / CSV
per actor, with dates and sources
The ATT&CK id survives the trip: metadata:apt_group SOFACY,
mitre_group_id G0007; in Suricata, a misp-galaxy:mitre-intrusion-set
tag in MISP, an external_references entry in STIX.
Setup for each tool.
Start here
# every domain APT28 has been seen using curl -sL https://trilwu.github.io/apttrail/by-group/G0007-domain.txt # one actor, full detail: dates, sources, ATT&CK curl -sL https://trilwu.github.io/apttrail/by-group/G0007.json # what exists, with counts curl -sL https://trilwu.github.io/apttrail/index.json
Also: Atom feed of new indicators, graph.json, and per-group ATT&CK Navigator layers.