Attacker Infrastructure

API / Schema

Integrate with VulnCheck Attacker Infrastructure using the VulnCheck API and an easy to follow JSON schema.

VulnCheck Attacker Infrastructure is available to VulnCheck Community accounts through the vulncheck-attacker-infrastructure index. You can query it with filters, or download the whole index as a backup.

Query the index

Results are sorted by last_seen, most recent first.

curl --request GET \
    --url 'https://api.vulncheck.com/v3/index/vulncheck-attacker-infrastructure?classifications=c2:sliver' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer insert_token_here'

Query parameters

ParameterDescriptionExample
ipRecords for an IP addressip=3.145.168.65
hostnameRecords for a hostnamehostname=artex.dpdns.org
portRecords on a portport=443
asnRecords in an autonomous systemasn=AS16509
countryRecords in a country, by namecountry=Australia
country_codeRecords in a country, by ISO 3166-1 alpha-2 codecountry_code=US
classificationsRecords with a classification. Use the full classification, including the valueclassifications=c2:sliver
sourceRecords from one collection source: target-intel or canary-intelsource=canary-intel
dateRecords last seen on a date (YYYY-MM-DD)date=2026-11-09
pubStartDate / pubEndDateRecords last seen within a date range (YYYY-MM-DD)pubStartDate=2026-11-01&pubEndDate=2026-11-09
updatedAtStartDate / updatedAtEndDateRecords updated within a date range (YYYY-MM-DD)updatedAtStartDate=2026-11-09

Parameters can be combined. For example, ?source=canary-intel&port=443 returns canary-observed infrastructure on port 443.

Unrecognized query parameters are ignored, and the full index is returned. Check parameter names if a filtered query returns more results than expected.

Download the backup

The backup is a zip file containing newline-delimited JSON, one record per line. Use the backup to retrieve the full index.

curl --request GET \
    --url https://api.vulncheck.com/v3/backup/vulncheck-attacker-infrastructure \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer insert_token_here'

JSON Schema

FieldTypeDescription
ipstringIPv4 address. Absent on some Canary Intelligence records that only have a hostname
hostnamestringHostname, when one was observed
portintegerPort the infrastructure was observed on. Can be absent on Canary Intelligence records
asnstringAutonomous system number, such as AS16509 (Target Intelligence records)
countrystringCountry name (Target Intelligence records)
country_codestringISO 3166-1 alpha-2 country code (Target Intelligence records)
classificationsarray of stringsWhat the infrastructure is. See Classifications
sourcearray of stringsThe collection source that observed the record: target-intel or canary-intel
first_seenstring (RFC 3339 timestamp)When VulnCheck first observed the record
last_seenstring (RFC 3339 timestamp)When VulnCheck most recently observed the record
updated_atstring (RFC 3339 timestamp)When the record was last updated in the index

Example Attacker Infrastructure entries

Below is an example Target Intelligence record, a Sliver C2 server.

"data": [
  {
    "ip": "3.145.168.65",
    "port": 443,
    "asn": "AS16509",
    "country": "United States",
    "country_code": "US",
    "classifications": [
      "c2:sliver"
    ],
    "source": [
      "target-intel"
    ],
    "first_seen": "2026-11-02T22:01:30.89Z",
    "last_seen": "2026-11-09T22:05:06.504Z",
    "updated_at": "2026-11-10T12:40:17.817Z"
  }
]

Below is an example Canary Intelligence record, a hostname that an exploitation attempt against a VulnCheck canary called back to.

"data": [
  {
    "hostname": "visited-acre-encourages-vii.trycloudflare.com",
    "port": 443,
    "classifications": [
      "attacker-infrastructure"
    ],
    "source": [
      "canary-intel"
    ],
    "first_seen": "2026-11-10T01:51:35Z",
    "last_seen": "2026-11-10T20:25:04Z",
    "updated_at": "2026-11-10T20:25:23.15487516Z"
  }
]