Products

Target Intelligence

You give us a CVE. We tell you every vulnerable host on the internet right now.

VulnCheck Target Intelligence is a continuously updated index of internet-facing hosts confirmed to be running vulnerable software. Unlike traditional internet scanners that surface potentially vulnerable hosts, Target Intelligence applies fingerprinting and version detection techniques to identify hosts with a high degree of confidence, then maps those findings directly to CVEs.

This makes Target Intelligence useful as a stage 1 triage tool: before an attacker gets there, you can answer the question "which hosts on the internet are actually on the target list for this CVE right now?"

Base URL

https://api.vulncheck.com/v3/index/target-intel

Authentication

All requests require a bearer token in the Authorization header.

Authorization: Bearer <your_api_token>

Query Parameters

Parameters can be combined. All parameters are optional, but at least one should be provided for meaningful results.

ParameterTypeDescription
cidrstringCIDR range for subnet lookups. Use /32 for a single host (e.g., 203.0.113.42/32)
hostnamestringHostname derived from DNS lookup at time of scan. Matched as a substring. Comma-delimited for multiple hostnames
domainstringDomain to match against the end of the host's DNS hostname. Comma-delimited for multiple domains. See Domain vs. Hostname
cvestringCVE ID to retrieve all confirmed vulnerable hosts (e.g., CVE-2024-21887)
vendorstringSoftware vendor name
productstringSoftware product name
versionstringSoftware version string
cpestringFull CPE string
asnstringAutonomous System Number (e.g., AS15169)
countrystringCountry name (e.g., United States, Germany)
country_codestringISO 3166-1 alpha-2 country code (e.g., US, DE)
protocolstringApplication protocol observed on the port (e.g., http, ssh, modbus)
transportstringTransport protocol: tcp or udp
portintegerTCP port number
contains_cvebooleanWhen true, returns only hosts where a CVE is associated with the fingerprinted service
confirmedbooleanWhen true, returns only hosts with at least one high-confidence (rule-authored or exact-version) CVE match. When false, returns only hosts whose CVE matches are all unconfirmed
classificationsstringComma-separated list of classification values to filter by. Valid values: c2, scanner, proxy, attack-infrastructure, honeypot, mcp, cdn, sector, canary-attacker
limitintegerMaximum number of results to return per page

Note on vendor, product, and version: These parameters work in any combination. Querying by vendor alone or version alone is supported but may return broad results. Combining two or more produces more targeted output.

Domain vs. Hostname

hostname and domain both search the reverse-DNS hostname observed at scan time. They differ only in where the value has to appear.

hostname matches the value anywhere in the hostname. hostname=test.com returns mail.test.com, and also test.com.example.net.

domain matches the value at the end of the hostname. domain=test.com returns mail.test.com but not test.com.example.net. Every domain result is therefore also a hostname result; domain is the stricter of the two.

Both parameters accept a comma-delimited list of values, which are OR'd together: domain=test.com,example.org.

Note on hostname coverage: only about a quarter of observed host-port records carry a hostname at all, so both parameters see the same limited slice of the index. A host with no reverse DNS cannot be found by either one, whatever its certificate says or whose network it sits in.

Note on what domain does not search: domain does not match the TLS certificate identity (metadata.cert_common_name, cert_subject_dn, cert_issuer_dn), and it does not match as_domain, the domain of the organization operating the host's Autonomous System. Those values are returned on each record but are not searchable. To find hosts by network operator, use asn.

Note on label boundaries: the suffix match is not aligned to a dot, so domain=test.com also matches a hostname ending in mytest.com.


Response Schema

Each result represents a single observed host-port-service tuple. Results are returned as a JSON array.

Top-Level Fields

FieldTypeAlways PresentDescription
ipstringYesIPv4 address of the observed host
hostnamestringYesHostname from DNS lookup at scan time (may be empty)
portintegerYesTCP port on which the service was observed
timestampstringYesISO 8601 timestamp of when the observation was made
date_addedstringYesISO 8601 timestamp of when the record was added to the index
protocolstringYesApplication protocol observed on the port (e.g., http, ssh, modbus)
transportstringYesTransport protocol: tcp or udp
cpearrayYesCPE strings derived from fingerprinting
cvearray|nullConditionalCVE IDs associated with this host's fingerprint. null when no CVE match
cve_confirmedarrayConditionalPer-CVE confidence for the CVEs above — each entry is {cve_id, confirmed}. This is the field the confirmed parameter filters on
vendorarrayYesVendor names derived from fingerprinting
productarrayYesProduct names derived from fingerprinting
versionarrayYesVersion strings derived from fingerprinting
fingerprintsarrayYesPer-fingerprint detail objects — see below
contains_cvebooleanYestrue when the fingerprinted service has an associated CVE
summaryobjectYesPre-computed rollup of the CVE/fingerprint data above — see below
asnstringConditionalAutonomous System Number (e.g., AS64500). Omitted when not available
as_namestringConditionalAutonomous System name. Omitted when not available
as_domainstringConditionalAutonomous System domain. Omitted when not available
countrystringConditionalCountry name. Omitted when not available
country_codestringConditionalISO 3166-1 alpha-2 country code. Omitted when not available
classificationsarrayConditionalClassification tags applied to this host (e.g., c2, honeypot, proxy). Omitted when none apply
metadataobjectConditionalAdditional metadata. Omitted when not available

fingerprints Array

Each element describes a single fingerprint match for the host-port.

FieldTypeDescription
cpestringCPE string for this fingerprint
vendorstringVendor name
productstringProduct name
versionstringProduct version
deprecatedbooleantrue when a newer fingerprint on the same host has superseded this CPE (e.g. after a rule renames its canonical CPE). The product identification is stale, not absent
cvesarrayCVEs attributed to this specific fingerprint's CPE — each entry is {cve_id, confirmed}. Omitted when this fingerprint has no CVE matches
Additional fieldsstringVariable. May include detected service banner and other enrichment attributes depending on what the fingerprint captured

summary Object

A pre-computed rollup of the CVE/fingerprint data on the record, so you don't have to count array lengths yourself.

FieldTypeDescription
cve_countintegerTotal number of distinct CVEs matched across all fingerprints
confirmed_countintegerNumber of those CVEs that are high-confidence (rule-authored or exact-version) matches
fingerprint_countintegerNumber of fingerprints in the fingerprints array
contains_cvebooleantrue when at least one CVE is associated with the host — mirrors the top-level contains_cve field

Essential Product-Centric API Questions & Filters

QuestionAPI Call Example (Using Query Parameters)
Which internet-facing systems are vulnerable to a given CVE?https://api.vulncheck.com/v3/index/target-intel?cve=CVE-2021-36260
Which internet-facing systems are using a given vendor and product?https://api.vulncheck.com/v3/index/target-intel?vendor=ivanti&product=connect+secure
Which internet-facing systems are using a given vendor, product, and specific version?https://api.vulncheck.com/v3/index/target-intel?vendor=ivanti&product=connect+secure&version=22.7.2.5367
Which internet-facing systems match a specific CPE string?https://api.vulncheck.com/v3/index/target-intel?cpe=cpe:2.3:o:qnap:qts:-:*:*:*:*:*:*:*
Filter by Country of origin?https://api.vulncheck.com/v3/index/target-intel?country_code=US
Filter by ASN?https://api.vulncheck.com/v3/index/target-intel?asn=AS7018
Filter by Port?https://api.vulncheck.com/v3/index/target-intel?port=443
Filter by IP range (CIDR notation)?https://api.vulncheck.com/v3/index/target-intel?cidr=99.97.87.190/32

Classification API Questions

QuestionAPI Call Example (Using Query Parameters)
Classifications support both type-level and type:product-level filteringUse classifications=<type> for broad filtering or classifications=<type>:<product> for a specific framework (e.g., classifications=c2:cobalt-strike).
Where are all the C2 on the internet?https://api.vulncheck.com/v3/index/target-intel?classifications=c2
Where are all the Cobalt Strike C2 Servers?https://api.vulncheck.com/v3/index/target-intel?classifications=cobalt-strike
Where are all the honeypots on the internet?https://api.vulncheck.com/v3/index/target-intel?classifications=honeypot
Where are all the Canary attackers on the internet?https://api.vulncheck.com/v3/index/target-intel?classifications=canary-attacker
Where are all the proxies on the internet?https://api.vulncheck.com/v3/index/target-intel?classifications=proxy
Where are all the identified attack infrastructure assets on the internet?https://api.vulncheck.com/v3/index/target-intel?classifications=attack-infrastructure
Where are all the known scanners on the internet?https://api.vulncheck.com/v3/index/target-intel?classifications=scanner
Where are all the government, healthcare, education, & energy assets?https://api.vulncheck.com/v3/index/target-intel?classifications=sector

Asset-Centric Queries

QuestionAPI Call Example (Using Query Parameters)
What do you have for IPv4 a.b.c.d?https://api.vulncheck.com/v3/index/target-intel?cidr=99.97.87.190
What do you have for IPv6 y:y:y:y:y:y:x.x.x.x?https://api.vulncheck.com/v3/index/target-intel?cidr=2001:4860:4860::8888 (supported, no ipv6 data yet)
What do you have for hostname?https://api.vulncheck.com/v3/index/target-intel?hostname=test.com
What do you have for hosts under an organization's domain?https://api.vulncheck.com/v3/index/target-intel?domain=test.com

Example Requests

Look up a single IP using CIDR notation

curl -H "Authorization: Bearer <token>" \
  "https://api.vulncheck.com/v3/index/target-intel?cidr=203.0.113.42/32"

Find all hosts confirmed vulnerable to a specific CVE

curl -H "Authorization: Bearer <token>" \
  "https://api.vulncheck.com/v3/index/target-intel?cve=CVE-2024-21887"

Find all hosts running a specific product

curl -H "Authorization: Bearer <token>" \
  "https://api.vulncheck.com/v3/index/target-intel?vendor=ivanti&product=connect+secure"

Filter CVE results by country

curl -H "Authorization: Bearer <token>" \
  "https://api.vulncheck.com/v3/index/target-intel?cve=CVE-2024-21887&country_code=US"

Find hosts whose hostname ends in a domain

curl -H "Authorization: Bearer <token>" \
  "https://api.vulncheck.com/v3/index/target-intel?domain=test.com&contains_cve=true"

Example Response

{
  "data": [
    {
      "ip": "203.0.113.42",
      "hostname": "vpn.example.com",
      "port": 443,
      "timestamp": "2025-01-15T08:42:11Z",
      "date_added": "2025-01-15T08:42:11Z",
      "protocol": "http",
      "transport": "tcp",
      "cpe": ["cpe:2.3:a:ivanti:connect_secure:22.3.0:*:*:*:*:*:*:*"],
      "cve": ["CVE-2024-21887", "CVE-2023-46805"],
      "cve_confirmed": [
        { "cve_id": "CVE-2024-21887", "confirmed": true },
        { "cve_id": "CVE-2023-46805", "confirmed": true }
      ],
      "vendor": ["Ivanti"],
      "product": ["Connect Secure"],
      "version": ["22.3.0"],
      "fingerprints": [
        {
          "cpe": "cpe:2.3:a:ivanti:connect_secure:22.3.0:*:*:*:*:*:*:*",
          "vendor": "Ivanti",
          "product": "Connect Secure",
          "version": "22.3.0",
          "deprecated": false,
          "cves": [
            { "cve_id": "CVE-2024-21887", "confirmed": true },
            { "cve_id": "CVE-2023-46805", "confirmed": true }
          ]
        }
      ],
      "contains_cve": true,
      "summary": {
        "cve_count": 2,
        "confirmed_count": 2,
        "fingerprint_count": 1,
        "contains_cve": true
      },
      "asn": "AS64500",
      "as_name": "Example ISP",
      "as_domain": "example.com",
      "country": "United States",
      "country_code": "US",
      "classifications": ["c2:cobalt-strike"]
    }
  ]
}

When no CVE is associated with a fingerprinted service, the cve field is null (not an empty array) and contains_cve is false:

{
  "ip": "198.51.100.7",
  "hostname": "",
  "port": 80,
  "timestamp": "2025-01-15T09:10:00Z",
  "date_added": "2025-01-15T09:10:00Z",
  "protocol": "http",
  "transport": "tcp",
  "cpe": ["cpe:2.3:a:apache:tomcat:10.1.0:*:*:*:*:*:*:*"],
  "cve": null,
  "vendor": ["Apache"],
  "product": ["Tomcat"],
  "version": ["10.1.0"],
  "fingerprints": [
    {
      "cpe": "cpe:2.3:a:apache:tomcat:10.1.0:*:*:*:*:*:*:*",
      "vendor": "Apache",
      "product": "Tomcat",
      "version": "10.1.0"
    }
  ],
  "contains_cve": false,
  "summary": {
    "cve_count": 0,
    "confirmed_count": 0,
    "fingerprint_count": 1,
    "contains_cve": false
  },
  "asn": "AS64501",
  "country": "Germany",
  "country_code": "DE"
}

Data Freshness

Target Intelligence maintains a rolling window of scan data. The index is continuously updated as new scan results arrive. Older observations are expired on a rolling basis to keep the dataset current and operationally relevant.

The unique key per record is the combination of IP + port + fingerprint/service information. If a host is re-scanned, its record is updated with the latest observation.


What This API Is and Is Not

Target Intelligence is:

  • A confirmed exploitation target queue for known-vulnerable internet-facing hosts
  • A pre-loss triage tool for understanding exposure at the moment a CVE is disclosed
  • A source of high-confidence, CVE-mapped host data with version-level fingerprinting

Target Intelligence is not:

  • An Attack Surface Management (ASM) tool it does not take a seed domain and enumerate assets
  • A complete inventory of all internet-facing assets for a given organization
  • A replacement for internal asset discovery

To look up hosts associated with an organization, query by ASN, CIDR range, or a list of known IPs.