All integrations
Elastic

Speculus Threat Intelligence for Elastic

Bring the Speculus IP threat intelligence feed into your Elastic environment. This integration polls the Speculus TAXII 2.1 server, collects indicators in STIX 2.1 format, and maps them to the Elastic Common Schema (ECS) so they are ready for detection rules, alert enrichment, and threat hunting the moment they land.

Each indicator carries a risk score, observed activity, named attribution where known, and network context such as geolocation, ISP and ASN, cloud provider, residential proxy, scanner, and Tor classifications.

What you can do with it

How it works

The Elastic Agent polls the Speculus TAXII collection on a fixed interval. Each poll requests only the indicators that changed since the last one and pages through the results using the TAXII cursor. Every STIX object is then parsed by an ingest pipeline that maps its fields to ECS threat.indicator.*. Fields that have no ECS equivalent, including the Speculus x_speculus_* extension properties, are preserved under the ti_speculus_taxii.stix.* namespace so nothing is lost.

Requirements

Installation

  1. In Kibana, go to Management > Integrations and search for “Speculus Threat Intelligence”.
  2. Click Add Speculus Threat Intelligence.
  3. Paste your Speculus API key. It is stored as a secret and masked in the UI.
  4. Leave the remaining settings at their defaults unless Speculus has given you a different base URL or collection ID.
  5. Click Save and continue.

That’s it. The defaults poll the feed every 15 minutes and pull 30 days of history on first start.

Configuration reference

SettingDefaultDescription
Speculus TAXII Base URLhttps://feed.speculus.coChange only if Speculus provides a different host.
Collection IDspeculus-ioc-feedChange only if Speculus provides a different collection.
API KeynoneYour Speculus API key, sent as a Bearer token.
Interval15mTime between polls. Matches the feed refresh cadence.
Initial Interval720hHow far back to look on first start (30 days).
IOC Expiration Duration90dHow long indicators remain valid after their last seen timestamp.
Limit1000Max STIX objects per TAXII request.
Proxy URLnoneOptional. Connect through a proxy.
SSL ConfigurationnoneOptional. Custom TLS settings.

Verify it works

  1. In Kibana, open Discover and select the logs-ti_speculus_taxii.indicator-* data view.
  2. Documents should appear within 15 minutes, with threat.indicator.ip and threat.indicator.confidence populated.

Data reference

The integration ships a single data stream, indicator, written to logs-ti_speculus_taxii.indicator-*. The feed consists of IPv4 indicators, with IPv6 planned.

Fields we bring in

FieldDescription
threat.indicator.ipThe IP address.
threat.indicator.nameThe indicator name.
threat.indicator.descriptionObserved activity and context for the indicator.
threat.indicator.confidenceConfidence level derived from the Speculus risk score.
threat.indicator.first_seenWhen the indicator was first observed.
threat.indicator.last_seenWhen the indicator was last observed.
threat.indicator.geo.locationLatitude and longitude of the IP.
threat.indicator.geo.country_iso_codeCountry of the IP.
threat.indicator.as.numberASN of the IP.
threat.indicator.as.organization.nameOrganization or ISP behind the IP.
tagsActivity and attribution tags.
ti_speculus_taxii.stix.*Additional Speculus context, including cloud provider, residential proxy, scanner, and Tor classifications.

Confidence levels

The Speculus risk score of 0 to 100 maps to threat.indicator.confidence:

Speculus Risk ScoreConfidence
0None
1 to 25Low
26 to 49Medium
50 to 100High

Links

Questions? Email us at [email protected].

Frequently asked questions

Everything you need to know about running the Speculus feed in Elastic.

How fresh is the data?

The feed refreshes every 15 minutes and the integration polls on the same cadence. Each poll only fetches indicators that changed since the last one, so steady state runs stay lightweight.

What indicator types are in the feed?

IPv4 addresses today. IPv6 is planned.

How long do indicators stay active?

Indicators expire 90 days after their last seen timestamp by default. You can change this with the IOC Expiration Duration setting.

Where do the Speculus specific fields go?

Standard fields map to ECS threat.indicator.*. Everything else, including the x_speculus_* extension properties, is namespaced under ti_speculus_taxii.stix.*.

No data is showing up. What do I check?

Verify the API key is active, then confirm the base URL and collection ID are reachable. Check the Elastic Agent logs: a 401 or 403 means an invalid or expired key, a timeout points to network or proxy issues.

Some documents failed to ingest. How do I find out why?

Check the failure store for the data stream and look at error.message. The raw document is preserved in event.original if you need to inspect it.

I'm behind a proxy or need custom TLS. Is that supported?

Yes. Set Proxy URL and SSL Configuration in the integration settings.