Mirage Feed: daily honeypot threat intelligence from OffSeq
Name
mirage-feed - daily attacker indicators from the OffSeq Mirage honeypot fleet
Handshake-verified attacker IPs, exploited CVEs, payload URLs and tool fingerprints, rebuilt every day in the formats firewalls, SIEMs and threat-intel platforms already read. Free to use under CC BY 4.0, marked TLP:CLEAR.
Synopsis
curl -fsSL https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txtOne address per line, no comments. Paths are stable; contents change daily.
Status
Snapshot of 2026-10-22, built 2026-10-23 20:18 UTC.
1,566
of 8,250 source IPs seen in the last 24 hours are in the feed
Every address Mirage saw attacking in the last 24 hours counts as seen. Those in the feed have passed the listing rules. The gap is what the full feed holds.
| Last 24 h | In the feed | |
|---|---|---|
| Source IPs | 8,250 | 3,115 |
| IPv4, 30-day list | - | 10,369 |
| Networks (ASNs) | 747 | 393 |
| Countries | 102 | 74 |
| CVEs exploited | 9 | 10 |
| Payload and C2 URLs | 3 | 2 |
| Malware hashes | 0 | 2 |
| Credential pairs tried | 128,261 | - |
| Events | 2,067,948 | - |
| Research scanners excluded | - | 3,736 |
| Tool fingerprints | - | 200 |
Feed lists cover the last 7 days of activity (30 days for ipv4-30d.txt).
ATT&CK techniques
| Item | Share | IPs |
|---|---|---|
| T1110 Brute Force | 3,033 | |
| T1190 Exploit Public-Facing Application | 2,002 | |
| T1021.005 VNC | 738 | |
| T1595 Active Scanning | 487 | |
| T1046 Network Service Discovery | 444 | |
| T1210 Exploitation of Remote Services | 398 | |
| T1021.001 Remote Desktop Protocol | 395 | |
| T1078 Valid Accounts | 362 |
Services
| Item | Share | IPs |
|---|---|---|
| http | 1,875 | |
| vnc | 738 | |
| rdp | 395 | |
| mysql | 245 | |
| postgres | 224 | |
| mongodb | 194 | |
| smtp | 193 | |
| ftp | 186 |
Countries
| Item | Share | IPs |
|---|---|---|
| US United States | 1,229 | |
| BR Brazil | 300 | |
| DE Germany | 183 | |
| CN China | 172 | |
| SG Singapore | 164 | |
| IR Iran | 154 | |
| BE Belgium | 83 | |
| NL Netherlands | 83 |
Subscribe
Point your tool at a stable URL. Files are rebuilt every day; the paths never change.
| Use | URL |
|---|---|
| IPv4 blocklist, last 7 days | https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txt |
| IPv4 top 1,000, for small firewall tables | https://feeds.offseq.com/mirage-feed/latest/ipv4-top1k.txt |
| Payload and C2 URLs | https://feeds.offseq.com/mirage-feed/latest/urls-7d.txt |
| Malware SHA-256 | https://feeds.offseq.com/mirage-feed/latest/hashes-sha256-30d.txt |
| Full records, CSV | https://feeds.offseq.com/mirage-feed/latest/attackers-7d.csv |
| STIX 2.1 bundle | https://feeds.offseq.com/mirage-feed/latest/stix/mirage.json |
| MISP feed, add as a MISP Feed | https://feeds.offseq.com/mirage-feed/misp/ |
| Research scanners we excluded, IPv4 | https://feeds.offseq.com/mirage-feed/latest/known-scanners-ipv4.txt |
Plain lists hold one value per line with no comments, so they load as-is into pfBlockerNG, OPNsense aliases, FortiGate threat feeds and Palo Alto EDLs.
Files
| path and tools that read it | count | size | sha256 |
|---|---|---|---|
| latest/attackers-7d.csvsplunk, sentinel, elastic | 3,115 | 491.4 KiB | 2052725055ad |
| latest/attackers-ipv4-7d.csvopencti | 3,115 | 491.4 KiB | 2052725055ad |
| latest/crowdsec/mirage-7d.csvcrowdsec | 3,115 | 107.2 KiB | 8ccf1c2c6f08 |
| latest/cves-7d.csvsiem, vuln-mgmt | 10 | 813 B | 2fdc9fb664ea |
| latest/defender/defender-top500.csvdefender-for-endpoint | 500 | 122.3 KiB | 6b6b7e50734c |
| latest/domains-7d.txtdns-rpz, edl, siem | 0 | 0 B | e3b0c44298fc |
| latest/fingerprints.csvja4plus, zeek, suricata | 142 | 9.4 KiB | fe58088a1718 |
| latest/hashes-sha256-30d.txtedr, siem | 2 | 130 B | 633eea5a94b3 |
| latest/hassh.csvzeek, siem | 4 | 253 B | 857cf63f1578 |
| latest/ipset/mirage.ipsetipset, iptables | 3,115 | 92.4 KiB | f806663dd7a7 |
| latest/ipv4-1d.txtpfsense, opnsense, fortigate, palo-alto, crowdsec, ipset | 1,566 | 21.8 KiB | d44c6e87e170 |
| latest/ipv4-30d.txtpfsense, opnsense, fortigate, palo-alto, crowdsec, ipset | 10,369 | 144.1 KiB | 2e5e11510022 |
| latest/ipv4-7d-cidr32.txtaws-waf | 3,115 | 52.4 KiB | 926fa00d03c7 |
| latest/ipv4-7d.txtpfsense, opnsense, fortigate, palo-alto, crowdsec, ipset | 3,115 | 43.3 KiB | ce7a68e97f3c |
| latest/ipv4-top10k.txtpfsense, opnsense, fortigate, palo-alto, crowdsec, ipset | 3,115 | 43.3 KiB | ce7a68e97f3c |
| latest/ipv4-top1k.txtpfsense, opnsense, fortigate, palo-alto, crowdsec, ipset | 1,000 | 13.7 KiB | 58d2a3443a6a |
| latest/ipv6-7d.txtpfsense, opnsense, fortigate, palo-alto, crowdsec, ipset | 0 | 0 B | e3b0c44298fc |
| latest/known-scanners-ipv4.txtallowlist | 3,719 | 52.3 KiB | f6c41aff63f4 |
| latest/known-scanners-ipv6.txtallowlist | 17 | 333 B | 6a0d9c781341 |
| latest/mikrotik/mirage-7d.rscmikrotik | 3,115 | 476.0 KiB | 4f559e4e397f |
| latest/nft/mirage.nftnftables | 3,115 | 47.0 KiB | 325c7060e10a |
| latest/passwords-top100.txtpassword-policy | 100 | 1.0 KiB | b525cd1335fb |
| latest/paths-7d.txthunting | 495 | 10.4 KiB | e3115810ab67 |
| latest/records-7d.ndjson.gzelastic, splunk, jq | 3,119 | 78.5 KiB | 2adb512d5405 |
| latest/stix/mirage.jsonopencti, sentinel, misp, taxii-import | 13,419 | 6.9 MiB | 89a8a3121299 |
| latest/suricata/categories.txtsuricata | 1 | 42 B | 11f6626ca9d3 |
| latest/suricata/datasets/ips.lstsuricata | 3,115 | 43.3 KiB | ce7a68e97f3c |
| latest/suricata/datasets/paths.lstsuricata | 495 | 14.3 KiB | 86fd7fd69418 |
| latest/suricata/datasets/sha256.lstsuricata | 2 | 130 B | 633eea5a94b3 |
| latest/suricata/datasets/uas.lstsuricata | 64 | 5.7 KiB | d760b9bb74d4 |
| latest/suricata/mirage-iprep.listsuricata | 3,115 | 58.5 KiB | f0591aa562ec |
| latest/suricata/mirage.rulessuricata | 4 | 942 B | 121af2714861 |
| latest/urls-7d.txtproxy, edl, siem | 2 | 54 B | 6f215e06e888 |
| latest/user-agents-7d.txthunting | 64 | 4.2 KiB | 99a461e9579a |
| latest/zeek/mirage.intelzeek | 3,183 | 308.9 KiB | b711f683a2f4 |
| misp/187f5eda-df4c-5b15-b9b4-6766498e604d.jsonmisp | 3,197 | 716.1 KiB | b6d4783f1664 |
| misp/hashes.csvmisp | 3,197 | 218.5 KiB | 9768186525f7 |
| misp/manifest.jsonmisp | 1 | 293 B | 6fcd718268a5 |
| schema/record.schema.jsonjsonschema | 1 | 2.9 KiB | 91b242ca6014 |
| stats.jsonfeeds.offseq.com | 1 | 7.4 KiB | 82f772b272f9 |
Full checksums in SHA256SUMS. Index as JSON: feed.json. Mirrors: feeds.offseq.com/mirage-feed/, raw.githubusercontent.com/offseq/mirage-feed/data/.
Integration
pfSense / OPNsense
Firewall > Aliases > Add. Type URL Table (IPs), URL https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txt, refresh 1 day. Use the alias as the source of a block rule on WAN.
FortiGate
config system external-resource
edit "mirage-feed"
set type address
set resource "https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txt"
set refresh-rate 1440
next
endPalo Alto (EDL)
Objects > External Dynamic Lists > Add. Type IP List, source https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txt, repeat Daily. Firewalls with a 50k EDL budget should use ipv4-top1k.txt or ipv4-top10k.txt.
MikroTik RouterOS
/tool fetch url="https://feeds.offseq.com/mirage-feed/latest/mikrotik/mirage-7d.rsc" dst-path=mirage.rsc
/import file-name=mirage.rscEntries carry timeout=7d, so they expire on their own.
nftables / ipset
nftables:
curl --create-dirs -fsSLo /etc/nftables.d/mirage.nft https://feeds.offseq.com/mirage-feed/latest/nft/mirage.nft
nft -f /etc/nftables.d/mirage.nftipset with iptables, safe to re-run:
curl -fsSL https://feeds.offseq.com/mirage-feed/latest/ipset/mirage.ipset | ipset restore
iptables -C INPUT -m set --match-set mirage4 src -j DROP 2>/dev/null \
|| iptables -I INPUT -m set --match-set mirage4 src -j DROP
ip6tables -C INPUT -m set --match-set mirage6 src -j DROP 2>/dev/null \
|| ip6tables -I INPUT -m set --match-set mirage6 src -j DROPCrowdSec
curl -fsSL https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txt -o mirage.txt
cscli decisions import -i mirage.txt --format values --duration 48h --scope ip --reason mirage-feedSuricata and Zeek
Suricata IP reputation: latest/suricata/categories.txt and latest/suricata/mirage-iprep.list.
alert ip any any -> $HOME_NET any (msg:"Mirage feed: known attacker"; iprep:src,MirageAttacker,>,50; sid:1900001; rev:1;)Zeek Intel framework, with latest/zeek/mirage.intel saved locally:
redef Intel::read_files += { "/opt/mirage/mirage.intel" };MISP, OpenCTI, Sentinel, Defender, Splunk
- MISP: Sync Actions > Feeds > Add. Source format MISP Feed, URL
https://feeds.offseq.com/mirage-feed/misp/. - OpenCTI: Data > Ingestion > CSV feeds on
latest/attackers-ipv4-7d.csv, with the mapper in the repository underdocs/opencti-csv-mapper.json. Or importlatest/stix/mirage.jsonas a STIX bundle. - Microsoft Sentinel: send
latest/stix/mirage.jsonto the STIX objects upload API, wrapped as{"sourcesystem":"OffSeq Mirage","stixobjects":[...]}with at most 100 objects per request:jq -c '.objects as $o | range(0; $o | length; 100) | {sourcesystem: "OffSeq Mirage", stixobjects: $o[.:. + 100]}' mirage.json - Defender for Endpoint: Settings > Endpoints > Indicators > Import, with
latest/defender/defender-top500.csv. The import takes 500 indicators per batch, which is why the file stops at 500. - Splunk: add
latest/attackers-7d.csvas a lookup and match onsrc_ip.
How an IP gets listed
An address is published only when all of these hold:
- It completed a TCP handshake and sent application data. UDP-only and spoofable traffic never qualifies.
- At least 3 Mirage sensors in at least 2 networks saw it within 7 days. One-off hits stay out.
- It is not a known research scanner, CDN, public resolver, bogon or any range on the MISP warninglists.
- Its first sighting is at least 24 hours old.
Entries expire 7 days after the last observed activity; new activity renews them. Research scanners are excluded from the blocklists and published separately in known-scanners-ipv4.txt and known-scanners-ipv6.txt, so you can allowlist them.
Before every publish, the build is rejected if the list overlaps an allowlist, contains anything wider than a /32, or changes size by more than 30% from the previous day.
Most listed addresses are compromised devices or rented infrastructure. A listing means "this address attacked honeypots", not a judgement about whoever holds it.
Community feed and full feed
This feed is free and stays free. The full feed is part of OffSeq Mirage.
| Community | Full feed | |
|---|---|---|
| Cadence | Daily, 24 h delayed | Real time: API, webhook, TAXII |
| Attacker IPs | Multi-sensor, high confidence | Every source, incl. targeted single-sensor activity |
| Context per IP | ASN, country, tags | Ports, protocols, full session timeline |
| Payloads | URLs and hashes | Decoded payloads, shell transcripts, stage-2 captures |
| Credentials | Top 100 passwords, no usernames | Attempted credentials and captured hashes |
| Attribution | - | Actor clusters, campaigns, intent verdicts |
| History | 7 to 30 days | 365 days |
| Private sensors | - | Mirage honeypots on your own IP space, with alerts |
Verify a download
Every build ships SHA256SUMS and a minisign signature over it.
Download into the same paths as the feed, so the names match the checksum file:
curl -fsSLO https://feeds.offseq.com/mirage-feed/SHA256SUMS -O https://feeds.offseq.com/mirage-feed/SHA256SUMS.minisig
curl --create-dirs -fsSLo latest/ipv4-7d.txt https://feeds.offseq.com/mirage-feed/latest/ipv4-7d.txt
minisign -Vm SHA256SUMS -P RWQeu/vC+HeSo+5whq+ViPiKFUe35GOuuVll6WA6QKlFNirw7IzweToA
sha256sum -c --ignore-missing SHA256SUMS
On macOS, use shasum -a 256 -c in place of sha256sum -c.
Removal
If your address is listed and should not be, use the removal form or write to abuse@offseq.com. No GitHub account needed. Requests are handled within 72 hours. An address that resumes attacking is listed again.
A bug in a file format or an integration? Open an issue.
See also
privacy, github.com/offseq/mirage-feed, record.schema.json, OffSeq research, FIRST TLP 2.0