Connect CTI Forecast to your tools
Every guide uses your API key (shown in My account) in place of YOUR_KEY. URLs that contain the key give access to your account: do not publish them.
OpenCTI, Microsoft Sentinel, MISP · TAXII 2.1 PRO
The recommended method: your tool polls CTI Forecast on its own, continuously. In every case: server address https://ctiforecast.com/taxii2/, any username, password = your API key.
- OpenCTI: enable the TAXII2 connector with
TAXII2_DISCOVERY_URL=https://ctiforecast.com/taxii2/,TAXII2_USERNAME=client,TAXII2_PASSWORD=YOUR_KEY,TAXII2_V21=trueandTAXII2_COLLECTIONS=*.*to fetch everything (formatroot.collection). Check the exact variable names in the documentation for your OpenCTI version. - Microsoft Sentinel: Content hub → Threat Intelligence solution → Threat Intelligence - TAXII connector. API root:
https://ctiforecast.com/taxii2/api/, collection ID (see below), usernameclient, password = your API key, polling frequency: hourly. - MISP: use the misp-taxii tool or a STIX 2.1 import module with the same settings.
| Collection | ID |
|---|---|
| Malicious IPs | 77653c02-ccd7-55e5-8db8-85d421cfba7c |
| Malicious domains and URLs | 6d85c187-7ce5-561a-9cb0-d820a89fd099 |
| Malicious files | 60ef1a80-e85a-56e8-84b6-f6e51e8d3fb6 |
| Vulnerabilities | 00ae1b11-d2b2-550f-91d2-39efc6c29dd7 |
pfSense and OPNsense · block malicious IPs
- Firewall → Aliases, URLs tab on pfSense. On OPNsense: Firewall → Aliases, then +.
- Type: URL Table (IPs). Name:
CTI_FORECAST_IP. - URL:
https://ctiforecast.com/v1/blocklist.txt?type=ip&days=30&key=YOUR_KEY - Update frequency: 1 day.
- Create a Block firewall rule on the WAN interface (and outbound on LAN) with
CTI_FORECAST_IPas source or destination.
With pfBlockerNG, add the same URL under IP → IPv4, format Auto.
Wazuh · alert when a known IP shows up in your logs
Wazuh matches logs against CDB lists in key:value format. This script downloads the list and converts it. Run it daily with cron on the manager:
#!/bin/sh # /usr/local/bin/cti-forecast-wazuh.sh curl -fsS "https://ctiforecast.com/v1/blocklist.txt?type=ip&days=30&key=YOUR_KEY" \ | grep -v '^#' | sed 's/$/:cti-forecast/' > /var/ossec/etc/lists/cti-forecast-ip.tmp \ && mv /var/ossec/etc/lists/cti-forecast-ip.tmp /var/ossec/etc/lists/cti-forecast-ip \ && chown wazuh:wazuh /var/ossec/etc/lists/cti-forecast-ip \ && systemctl restart wazuh-manager
Declare the list in /var/ossec/etc/ossec.conf, inside the <ruleset> section:
<list>etc/lists/cti-forecast-ip</list>
Then add a rule to /var/ossec/etc/rules/local_rules.xml:
<group name="cti_forecast,">
<rule id="100900" level="10">
<if_group>web|sshd|firewall</if_group>
<list field="srcip" lookup="address_match_key">etc/lists/cti-forecast-ip</list>
<description>CTI Forecast: known malicious IP ($(srcip))</description>
</rule>
</group>
MISP · add CTI Forecast as a feed
- Sync Actions → Feeds → Add Feed.
- Source format: Freetext Parsed Feed. Input source: Network.
- URL:
https://ctiforecast.com/v1/blocklist.txt?type=sha256&days=7&key=YOUR_KEY - Create one feed per type (sha256, ip, domain…) so MISP files each value under the right attribute.
- Enable the feed and caching, then Fetch and store all feed data.
OpenCTI and Microsoft Sentinel · STIX 2.1 file import PRO
Download a STIX bundle, with source articles as external references:
curl -H "X-API-Key: YOUR_KEY" -o cti-forecast.json \ "https://ctiforecast.com/v1/stix?type=sha256,ip,domain&min_confidence=70&limit=1000"
OpenCTI: Data → Import → upload the file. STIX identifiers are stable, so re-importing the file daily updates existing indicators instead of creating duplicates.
Microsoft Sentinel: Threat intelligence → Import → from a file, STIX format.
Splunk · lookup table
Every day (cron), replace the lookup with today's list:
{ echo "ioc"; curl -fsS "https://ctiforecast.com/v1/blocklist.txt?type=ip&key=YOUR_KEY" | grep -v '^#'; } \
> $SPLUNK_HOME/etc/apps/search/lookups/cti_forecast_ip.csv
Then, in a search: | lookup cti_forecast_ip.csv ioc AS src_ip OUTPUT ioc AS cti_match | where isnotnull(cti_match)
Another tool?
The JSON API works with anything that can make an HTTP request: Elastic, QRadar, TheHive, Python scripts or n8n.