Skip to content
WhisperGraph
Skip navigation

Threat Feeds & Categories

Every threat-intel feed and category in the graph, with refresh cadence, verdict properties, and example queries.

Published Last updated

On this page (5)

Threat Feeds & Categories Documentation

WhisperGraph aggregates 164 intelligence feeds grouped into 33 categories, of which 140 carry isThreat. The rest are VPN, proxy, Tor, ad-tracking, reputation and popularity lists — useful signal, but not abuse reports, so filter on f.isThreat when you mean threat data only. The feeds are part of the graph itself: each feed is a FEED_SOURCE node, each category is a CATEGORY node, and every indicator that appears on a feed carries a LISTED_IN edge to it. On top of the raw listings, a reconciled verdict is written onto the indicator node, so a single anchored read tells you how bad an IP or hostname is with no extra hops.

Read coverage before band. Only known-clean — coverage: known-clean. In coverage, no malicious evidence. licenses the word "clean"; no-data — coverage: no-data. Not in coverage. This is not a verdict — nothing was looked at. means unknown, which is a different thing again; malicious-evidenced — coverage: malicious-evidenced. In coverage, with positive evidence of malice. and ambiguous — coverage: ambiguous. In coverage, and the evidence points both ways. mean there is evidence, whatever the band says. Full contract: Coverage — what we looked at.

This page covers how feed data enters the graph, the full catalog and its refresh cadence, the category taxonomy, and the queries to work with both. For a scored verdict with an inspectable evidence chain, use explain().

How feeds enter the graph

Feeds are collected by a companion collection service that pulls from public and commercial sources on each feed's own refresh schedule. Inside the graph, the threat-intelligence layer surfaces three ways:

  • LISTED_IN edges. An IPV4, IPV6, or HOSTNAME node connects to each FEED_SOURCE that lists it. The edge itself carries no queryable properties, so do not project r.weight or r.firstSeen off it. Per-feed weights and first/last-seen timestamps come from CALL explain(indicator), which returns them in sources[]; the feed's static weight is on the node as f.weight.
  • BELONGS_TO edges. A FEED_SOURCE connects to its CATEGORY (there is no IN_CATEGORY edge), so you can turn feed names into threat categories in one hop.
  • Verdict properties on nodes. Listed indicators carry raw threat properties (threatScore, threatLevel from NONE to CRITICAL, threatSources — a count of feeds, not their names — threatFirstSeen, threatLastSeen) plus a reconciled verdict: verdictScore, verdictLevel, verdictBlocking, and on IP nodes verdictAdvisory. Prefer the reconciled verdict* properties for triage decisions; they are the authoritative signal. A node can carry a threat listing and a whitelist marker at the same time: read the verdict as the verdict and treat the whitelist marker as context, not as an override.

Listed nodes also carry boolean posture flags derived from the categories of the feeds that list them: isThreat, isAnonymizer, isC2, isMalware, isPhishing, isSpam, isBruteforce, isScanner, isBlacklist, isTor, isProxy, isVpn, isWhitelist, isReputation, isBotnet, isDga, isStateActor, isExfilDestination, isOfacSanctioned, isScam and isEgressRisk, with egressClasses naming the kind of egress (tor-exit, for example). Flags like isTor and isAnonymizer matter for triage even when the score is moderate: a login from a Tor exit reads very differently than the same login from a residential IP.

Two mechanics to know before querying:

  • LISTED_IN and the feed-to-category BELONGS_TO step are computed at query time. Label or anchor one endpoint of each, and bound the feed list with WITH f LIMIT 10 before expanding to categories. See Best Practices.
  • Curated allowlists clamp the verdict surfaces (threatLevel, isThreat, verdictLevel) to INFO/false for well-known public DNS resolvers such as 1.1.1.1 and 8.8.8.8, which appear on aggressive blocklists for reasons that rarely matter to a defender. Such a node carries allowlisted: true. The raw threatScore is not clamped, so it keeps the feed evidence.
How does a feed listing become a verdict on the node?

Feed catalog

The live catalog holds 164 feeds.

This table is generated — every row, every column, straight from the FEED_SOURCE nodes, so it is the catalog rather than a copy of it. The Feed column is the human label (f.displayName). Anchor on the Query key column: it is the feed's stable slug, exposed as both f.id and f.name, so MATCH (f:FEED_SOURCE {id: "abuse-ch-feodo-tracker"}) and the name form both match, while the display name matches nothing. Each feed node also carries isThreat, isPopularity and category (the slug of its category), so you can filter the catalog without a hop. Weight is the feed's static score contribution (f.weight): one listing on a 0.5 feed is a lead, one on a 2.0 feed is a finding.

FeedQuery keyCategoryWeight
1Hosts Xtra1hosts-xtraAd/Tracking Blocklists0.5
Feodo Trackerabuse-ch-feodo-trackerC2 Servers2.0
MalwareBazaar Recentabuse-ch-malwarebazaarMalware Distribution1.5
MalwareBazaar Full (SHA256)abuse-ch-malwarebazaar-fullMalware Distribution1.5
MalwareBazaar Full (MD5)abuse-ch-malwarebazaar-md5Malware Distribution1.5
MalwareBazaar Full (SHA1)abuse-ch-malwarebazaar-sha1Malware Distribution1.5
ThreatFox Domainabuse-ch-threatfox-domainC2 Servers1.5
ThreatFox Domain (DNS resolved)abuse-ch-threatfox-domain-ipC2 Servers0.2
ThreatFox IP:Portabuse-ch-threatfox-ipC2 Servers1.5
ThreatFox URLabuse-ch-threatfox-urlC2 Servers1.5
URLhaus Recentabuse-ch-urlhausMalware Distribution1.5
DGA Feed (High Confidence)bambenek-dga-highMalicious Domains1.4
DGA Feed (High Confidence) (DNS resolved)bambenek-dga-high-ipMalicious Domains0.1
Binary Defense Banlistbinarydefense-banlistGeneral Blacklists1.2
Blocklist.de Allblocklist-de-allGeneral Blacklists1.0
Blocklist.de Mailblocklist-de-mailSpam0.8
Blocklist.de SSHblocklist-de-sshBrute Force1.0
blocklist-de-strongipsblocklist-de-strongipsBrute Force1.6
blocklist-net-uablocklist-net-uaGeneral Blacklists1.2
borestad-abuseipdb-s100-30dborestad-abuseipdb-s100-30dGeneral Blacklists1.4
botscout-30dbotscout-30dSpam0.7
Botvrij Hostnamesbotvrij-ioc-domainMalicious Domains1.3
Botvrij Hostnames (DNS resolved)botvrij-ioc-domain-ipMalicious Domains0.1
Botvrij Dst IPsbotvrij-ioc-dst-ipC2 Servers1.3
Botvrij URLsbotvrij-ioc-urlC2 Servers1.3
Brute Force BlockerbruteforceblockerBrute Force1.0
C2 Intel 30dc2intelfeedsC2 Servers1.5
c2intelfeeds-domain-90dayc2intelfeeds-domain-90dayC2 Servers1.5
c2intelfeeds-domain-90day (DNS resolved)c2intelfeeds-domain-90day-ipC2 Servers0.2
c2intelfeeds-ipport-90dayc2intelfeeds-ipport-90dayC2 Servers1.5
CERT.pl Domainscert-pl-domainsMalicious Domains1.3
CERT.pl Domains (DNS resolved)cert-pl-domains-ipMalicious Domains0.1
CINS Scorecins-scoreGeneral Blacklists1.0
CIRCL MISP OSINT Eventscircl-osintGeneral Blacklists1.0
circl-osint-misp-hashescircl-osint-misp-hashesMalware Distribution1.0
Cloudflare Radar Top 1Mcloudflare-radar-top1mPopularity/Trust-1.0
DNS RD Abusedataplane-dnsrdGeneral Blacklists0.8
SSH Client Attacksdataplane-sshclientBrute Force1.0
SSH Password Authdataplane-sshpwauthBrute Force1.0
dataplane-telnetlogindataplane-telnetloginBrute Force1.0
DShield Recommended Block Listdshield-blockGeneral Blacklists1.6
DShield Top Attacking IPsdshield-top20General Blacklists1.0
duggytuxy-datashield-criticalduggytuxy-datashield-criticalGeneral Blacklists1.5
durablenapkin-scamblocklistdurablenapkin-scamblocklistConsumer Scam0.8
durablenapkin-scamblocklist (DNS resolved)durablenapkin-scamblocklist-ipConsumer Scam0.1
ET Compromised IPsemerging-threats-compromisedGeneral Blacklists1.3
FireHOL Abusers 1dfirehol-abusers-1dGeneral Blacklists1.5
FireHOL Anonymousfirehol-anonymousProxies0.5
FireHOL Level 1firehol-level1General Blacklists1.8
FireHOL Level 2firehol-level2General Blacklists1.3
FireHOL Level 3firehol-level3General Blacklists0.8
FireHOL WebClientfirehol-webclientGeneral Blacklists1.0
GreenSnow BlacklistgreensnowGeneral Blacklists1.0
Hagezi Lighthagezi-dns-lightAd/Tracking Blocklists0.7
Hagezi Prohagezi-dns-proAd/Tracking Blocklists0.8
Hagezi DoHhagezi-dohEncrypted DNS Resolvers0.8
Hagezi DynDNShagezi-dyndnsReputation0.8
Hagezi DynDNS (DNS resolved)hagezi-dyndns-ipReputation0.1
Hagezi TIF Fullhagezi-tif-fullMalware Distribution1.5
Hagezi TIF Full (DNS resolved)hagezi-tif-full-ipMalware Distribution0.2
InterServer RBLinterserver-level1General Blacklists0.8
interserver-sigs-sha256interserver-sigs-sha256Malware Distribution1.0
interserver-sigs-shell-md5interserver-sigs-shell-md5Malware Distribution0.7
loldrivers-vulnerable-samplesloldrivers-vulnerable-samplesMalware Distribution1.6
MalShare Raw Hash List (MD5, SHA-1, SHA-256)malshare-getlistraw-md5Malware Distribution1.2
Maltrail Static Trails - Telekopye Scam Toolkitmaltrail-static-malicious-telekopyeConsumer Scam1.0
Maltrail Static Trails - Telekopye Scam Toolkit (DNS resolved)maltrail-static-malicious-telekopye-ipConsumer Scam0.1
maltrail-static-malware-apt-kimsukymaltrail-static-malware-apt-kimsukyC2 Servers1.8
maltrail-static-malware-apt-kimsuky (DNS resolved)maltrail-static-malware-apt-kimsuky-ipC2 Servers0.2
maltrail-static-malware-apt-lazarusmaltrail-static-malware-apt-lazarusC2 Servers1.8
maltrail-static-malware-apt-lazarus (DNS resolved)maltrail-static-malware-apt-lazarus-ipC2 Servers0.2
maltrail-static-malware-asyncratmaltrail-static-malware-asyncratC2 Servers1.5
maltrail-static-malware-asyncrat (DNS resolved)maltrail-static-malware-asyncrat-ipC2 Servers0.2
maltrail-static-malware-asyncrat-ipv4maltrail-static-malware-asyncrat-ipv4C2 Servers1.5
maltrail-static-malware-cobaltstrike-2maltrail-static-malware-cobaltstrike-2C2 Servers1.5
maltrail-static-malware-cobaltstrike-2 (DNS resolved)maltrail-static-malware-cobaltstrike-2-ipC2 Servers0.2
maltrail-static-malware-cobaltstrike-2-ipv4maltrail-static-malware-cobaltstrike-2-ipv4C2 Servers1.5
Maltrail Static Trails - Emotetmaltrail-static-malware-emotetMalware Distribution1.0
Maltrail Static Trails - Mass Scannermaltrail-static-mass-scannerGeneral Blacklists1.0
Maltrail Static Trails - Suspicious Dynamic Domainmaltrail-static-suspicious-dynamic-domainReputation0.9
Maltrail Static Trails - Suspicious Dynamic Domain (DNS resolved)maltrail-static-suspicious-dynamic-domain-ipReputation0.1
malware-filter phishing domainsmalware-filter-phishing-domainsPhishing1.3
malware-filter phishing domains (DNS resolved)malware-filter-phishing-domains-ipPhishing0.1
metamask-eth-phishing-detectmetamask-eth-phishing-detectPhishing1.4
metamask-eth-phishing-detect (DNS resolved)metamask-eth-phishing-detect-ipPhishing0.1
Bad Hosting ASNmnwb-bad-hosting-asnReputation0.8
Mullvad VPN Relaysmullvad-relaysVPNs1.2
NazgulCoder IPLists VPNnazgulcoder-iplists-vpnVPNs1.0
nordvpn-server-ipsnordvpn-server-ipsVPNs1.0
OFAC SDN Sanctioned Crypto Addresses (BTC/XBT)ofac-sdn-crypto-btcOFAC SDN Sanctions2.0
OFAC SDN Sanctioned Crypto Addresses (ETH)ofac-sdn-crypto-ethOFAC SDN Sanctions2.0
OFAC SDN Sanctioned Crypto Addresses (SOL)ofac-sdn-crypto-solOFAC SDN Sanctions2.0
OFAC SDN Sanctioned Crypto Addresses (TRX)ofac-sdn-crypto-trxOFAC SDN Sanctions2.0
OISD Bigoisd-bigAd/Tracking Blocklists0.8
OpenPhish FeedopenphishPhishing1.5
OTX Pulse IOCsotx-pulseGeneral Blacklists1.0
phishdestroy-destroylistphishdestroy-destroylistPhishing1.5
phishdestroy-destroylist (DNS resolved)phishdestroy-destroylist-ipPhishing0.2
Phishing Blocklist Extendedphishing-armyPhishing1.4
Phishing Blocklist Extended (DNS resolved)phishing-army-ipPhishing0.1
Phishing.Database ACTIVE Domainsphishing-database-domainsPhishing1.4
Phishing.Database ACTIVE Domains (DNS resolved)phishing-database-domains-ipPhishing0.1
Phishing.Database ACTIVE IPsphishing-database-ipsPhishing1.2
Phishing.Database ACTIVE URLsphishing-database-urlsPhishing1.4
phishtank-verified-onlinephishtank-verified-onlinePhishing1.6
Phishunt Feedphishunt-feedPhishing1.2
polkadot-js-phishingpolkadot-js-phishingPhishing1.2
polkadot-js-phishing (DNS resolved)polkadot-js-phishing-ipPhishing0.1
projecthoneypot-comment-spammers-30dprojecthoneypot-comment-spammers-30dSpam1.0
projecthoneypot-dictionary-attackers-30dprojecthoneypot-dictionary-attackers-30dBrute Force1.0
projecthoneypot-harvesters-30dprojecthoneypot-harvesters-30dSpam0.8
projecthoneypot-spammers-30dprojecthoneypot-spammers-30dSpam1.0
rfxn-lmd-hash-signaturesrfxn-lmd-hash-signaturesMalware Distribution1.0
malicious-domains aaromainmarcoux-malicious-aaGeneral Blacklists1.0
malicious-domains aa (DNS resolved)romainmarcoux-malicious-aa-ipGeneral Blacklists0.1
malicious-domains abromainmarcoux-malicious-abGeneral Blacklists1.0
malicious-domains ab (DNS resolved)romainmarcoux-malicious-ab-ipGeneral Blacklists0.1
sans-isc-research-scannerssans-isc-research-scannersGeneral Blacklists-0.5
sans-isc-top-attackerssans-isc-top-attackersGeneral Blacklists1.0
sblam-http-spammerssblam-http-spammersSpam0.8
ScamSniffer Scam Domain Blacklistscamsniffer-blacklistCrypto Scam1.0
ScamSniffer Scam Domain Blacklist (DNS resolved)scamsniffer-blacklist-ipCrypto Scam0.1
shadowwhisperer-ips-threatsshadowwhisperer-ips-threatsGeneral Blacklists0.9
shadowwhisperer-malware-domainsshadowwhisperer-malware-domainsMalware Distribution1.3
shadowwhisperer-malware-domains (DNS resolved)shadowwhisperer-malware-domains-ipMalware Distribution0.1
shadowwhisperer-scamshadowwhisperer-scamConsumer Scam0.9
shadowwhisperer-scam (DNS resolved)shadowwhisperer-scam-ipConsumer Scam0.1
sinking-yachts-phishingsinking-yachts-phishingPhishing1.2
sinking-yachts-phishing (DNS resolved)sinking-yachts-phishing-ipPhishing0.1
Spamhaus ASN-DROPspamhaus-asn-dropGeneral Blacklists1.8
Spamhaus DROPspamhaus-dropGeneral Blacklists2.0
Spur Astrill Snapshotspur-astrill-snapshotVPNs2.0
SSL Certificate SHA1 Blacklistsslbl-sha1-blacklistC2 Servers1.5
IPsumstamparm-ipsumGeneral Blacklists1.2
StevenBlack Hostsstevenblack-hostsAd/Tracking Blocklists0.8
StopForumSpam Listed IPs (7 day)stopforumspam-listed-ip-7dSpam0.5
macos-malware-kb MD5stuartjash-macos-malware-md5Malware Distribution1.2
macos-malware-kb SHA-1stuartjash-macos-malware-sha1Malware Distribution1.2
macos-malware-kb SHA-256stuartjash-macos-malware-sha256Malware Distribution1.2
team-cymru-fullbogons-ipv4team-cymru-fullbogons-ipv4General Blacklists1.5
team-cymru-fullbogons-ipv6team-cymru-fullbogons-ipv6General Blacklists1.5
threatview-domain-high-confidencethreatview-domain-high-confidenceMalware Distribution1.3
threatview-domain-high-confidence (DNS resolved)threatview-domain-high-confidence-ipMalware Distribution0.1
threatview-ip-high-confidencethreatview-ip-high-confidenceGeneral Blacklists0.8
Threatview MD5 Hash Allthreatview-md5-hash-allMalware Distribution1.0
Tor Exit Nodestor-exit-nodesTOR Network0.5
Tranco Top 1Mtranco-top1mPopularity/Trust-1.0
NPA 165 investment/gambling victim reports (historical, context)tw-165-investment-historicalReputation0.5
NPA 165 investment/gambling victim reports (historical, context) (DNS resolved)tw-165-investment-historical-ipReputation0.1
NPA 165 Suspended Fraud Domainstw-165-suspendedConsumer Scam1.3
NPA 165 Suspended Fraud Domains (DNS resolved)tw-165-suspended-ipConsumer Scam0.1
MODA One-Page E-commerce Fraud Sitestw-moda-ecommerce-fraudConsumer Scam1.3
MODA One-Page E-commerce Fraud Sites (DNS resolved)tw-moda-ecommerce-fraud-ipConsumer Scam0.1
TweetFeed monthly indicators (mixed)tweetfeed-monthGeneral Blacklists0.9
TweetFeed Year MD5tweetfeed-year-md5Malware Distribution0.8
TweetFeed Year SHA-256tweetfeed-year-sha256Malware Distribution0.8
usom-ipsusom-ipsPhishing1.2
usom-urlsusom-urlsPhishing1.3
usom-urls (DNS resolved)usom-urls-ipPhishing0.1
C2 Trackerviriback-c2C2 Servers1.6
voipblvoipblBrute Force1.2
windscribe-server-ipswindscribe-server-ipsVPNs1.0
x4bnet-lists-datacenterx4bnet-lists-datacenterProxies0.5
X4BNet VPN Listx4bnet-lists-vpnVPNs1.0

Rows measured live from MATCH (f:FEED_SOURCE) RETURN f, 2026-11-08.

The feed set evolves as sources are added or rebalanced. The first query on this page returns the current list, and GET /api/query/stats reports the live feedSourceCount and categoryCount (see the API Reference).

Refresh cadence

  • Per-feed refresh. Each source is re-fetched on its own schedule, from hourly to daily, depending on how often its publisher updates it.
  • Incremental sync into the graph. A new listing typically becomes queryable through its LISTED_IN edge within about an hour of the source publishing it. A hot C2 IP added to ThreatFox is usually reachable inside that window.

Listings carry first-seen and last-seen timestamps in explain()'s sources[], so you can tell a fresh listing from a stale one. Treat scores and listings as a live read rather than a fixed record, and re-read an indicator before you act on a verdict you fetched earlier.

Category taxonomy

Every feed belongs to one of 33 categories, and the categories fall into three groups. Threat categories mark confirmed or suspected badness. Anonymizer categories mark infrastructure that hides origin without being malicious in itself. Reference categories carry context data, including trust lists: a Tranco or Cloudflare Radar listing is a popularity signal, so a LISTED_IN edge alone does not mean an indicator is malicious. Check the category, or read the reconciled verdict, before escalating.

Two of the Reference categories are allow-lists — known-good and hash-allowlist. A LISTED_IN edge into either says the opposite of an accusation, and a pipeline that counts edges without reading the category will escalate on them.

The Query key column is the anchor here too. It is the category's stable slug, exposed as both c.id and c.name: MATCH (c:CATEGORY {id: "blacklists"}) matches, and {name: "General Blacklists"} matches nothing because that string is c.displayName. Not every category has a feed attached today; a category with no feeds still exists as a node, so MATCH (c:CATEGORY) lists more categories than a walk from FEED_SOURCE over BELONGS_TO reaches. The Group column is generated from the category's own isThreat / isAnonymizer flags, so it says what the engine says rather than what a writer remembered.

CategoryQuery keyGroupWhat it covers
Ad/Tracking Blocklistsad-trackingReferenceDomains used for ads and behavioural tracking
Anonymization InfrastructureanonymizerAnonymizerVPN exit nodes, proxies, anonymizing relays
Anonymous File Uploadanonymous-uploadReferenceAnonymous file-upload and sharing services
Attack SourcesattacksThreatIPs observed scanning or attacking
General BlacklistsblacklistsThreatCatch-all reputation lists from operators
Brute ForcebruteforceThreatSSH/RDP/credential brute-force sources
Bulk Cloud Storagebulk-storageReferenceBulk cloud-storage providers, sometimes abused for staging or exfiltration
C2 Serversc2ThreatConfirmed command-and-control infrastructure
Consumer Scamconsumer-scamThreatConsumer-facing scam sites and services
Crypto Scamcrypto-scamThreatCryptocurrency fraud, drainer and giveaway-scam infrastructure
Encrypted DNS Resolversencrypted-dnsReference
Exfiltration DestinationsexfiltrationReferenceEndpoints commonly used as data-exfiltration destinations
Known-good file hasheshash-allowlistReferenceAllow-list. Hashes of files known to be benign
Malicious InfrastructureinfrastructureThreatHosting providers and ASNs hosting badness
Known-Goodknown-goodReferenceAllow-list. Infrastructure vouched for as benign — a listing here is the opposite of an accusation
Malicious Domainsmalicious-domainsThreatDomains involved in malware or attack chains
Malware Distributionmalware-distributionThreatURLs/IPs serving malware payloads
OFAC SDN Sanctionsofac-sanctionsThreatOFAC Specially Designated Nationals: sanctioned crypto addresses (BTC/ETH/SOL/TRX)
Paste Sitespaste-sitesReferencePaste and text-sharing services, often used to host stolen data or IOCs
PhishingphishingThreatDomains and URLs used for credential theft
Popularity/TrustpopularityReferenceTop-N domain lists used for whitelisting and reputation
ProxiesproxiesAnonymizerHTTP/SOCKS proxy infrastructure
Reference DatareferenceReferencePublic infrastructure datasets (e.g. Bitcoin nodes)
ReputationreputationReferenceGeneral reputation aggregators
Scam / FraudscamThreatGeneral scam and fraud infrastructure
SpamspamThreatMail spam sources
State Actor & Sanctionsstate-actorThreatState-sponsored actor infrastructure and sanctions-related indicators
Threat IntelligencethreatThreatCurated threat-intel from intel providers
TOR NetworktorAnonymizerTor relays and exit nodes
Ad-hoc File Transfertransfer-servicesReferenceAd-hoc/anonymous file-transfer services, sometimes abused for malware delivery or exfiltration
UncategorizeduncategorizedReferenceFeeds not yet assigned a category
VPNsvpnsAnonymizerCommercial VPN egress IPs
Vulnerability & ExploitvulnerabilityReferenceHosts exposing known-vulnerable or actively exploited services

Rows measured live from MATCH (c:CATEGORY) RETURN c, 2026-11-08.

Use the category to scope a hunt: filter to C2 Servers plus Malware Distribution for confirmed-bad, or exclude the Reference group when counting threat evidence.

Querying feeds and verdicts

FEED_SOURCE and CATEGORY are small reference labels, so they are safe to scan without an anchor:

cypher · runnablegraph.whisper.securitySign in to run
// List the live feed catalog with its human label, category slug and weight
MATCH (f:FEED_SOURCE)
RETURN f.id AS feed, f.displayName AS label, f.category AS category, f.weight AS weight
ORDER BY f.id
LIMIT 50

For an indicator, read the listings and the reconciled verdict together in one anchored query:

cypher · runnablegraph.whisper.securitySign in to run
// Feeds listing this IP, plus its reconciled verdict and posture flags
MATCH (ip:IPV4 {name: "185.220.101.1"})
OPTIONAL MATCH (ip)-[:LISTED_IN]->(f:FEED_SOURCE)
RETURN ip.name AS ip, ip.verdictScore AS score, ip.verdictLevel AS level,
       ip.verdictBlocking AS blocking, ip.isTor AS isTor,
       collect(DISTINCT f.name) AS feeds
LIMIT 1

Several feeds naming the same indicator is a stronger signal than one. To turn the feed names into categories, pivot each feed through BELONGS_TO, bounding the feed list with WITH f LIMIT 10 between the two hops. The full recipe, along with batch enrichment patterns, is in Indicator Triage. For the scored reasoning behind a verdict, with the exact feeds, weights, and first/last-seen timestamps, call explain(). Labels, edges, and properties for the whole threat layer are in the Graph Schema.