Maltiverse Search Engine

Maltiverse Search Engine

The Maltiverse Search Engine is the way to explore the Maltiverse database of Indicators of Compromise (IoCs): IP addresses, hostnames, URLs, samples and e-mail addresses, each enriched with its classification, the sources that reported it, threat flags, location, network and date metadata. A query written in the Maltiverse Query Language (MQL), a Lucene-style syntax, filters that database on any field, and the result set can be sorted, limited in time, grouped by field values, exported, or turned into a Threat Intelligence Feed or an Alert.

There are two Search views, with the same tools over different data, depending on the plan your organization has:

  1. Intelligence Search: queries the global Maltiverse dataset, built from more than one hundred sources and the Maltiverse scoring engine.
  2. Platform Search: queries only the private IoCs that your organization uploaded or ingested; it adds bulk actions on the matching IoCs.

What you can do from a Search view:

  1. Write an MQL query with syntax highlighting and autocompletion, or let the AI Query Assistant write it from a plain-language description.
  2. Read the results with their classification, sources, status and highlights, page through them and open any indicator.
  3. Sort by relevance, creation time, modification time or visits and restrict the time window.
  4. Group the results by any exact-value field and pivot from a value back into the query.
  5. Save the query as a Threat Intelligence Feed, an Alert or a Scoring Rule.
  6. Export the results as JSON, CSV or STIX 2.
The following sections will go over this functionalities. First, start by understanding the query language to learn how to perform meaningful searches. 

Maltiverse Query Language (MQL)

MQL is the Lucene query-string syntax applied to the fields of the Maltiverse IoC index. A query is a list of clauses of the form field:value, combined with boolean operators and grouped with parentheses. The same language is used by the Search views, by the REST API /search endpoint, by Threat Intelligence Feeds and by Alerts, so a query that works in the Portal can be reused anywhere. The following sections will go over an in-depth explanation of the syntax of the search engine. You can find more fields information for search queries in the Field refence guide.

General Syntax

The following table contains the guidelines of the general syntax of the MQL: 

Construct

Syntax

Example

Field clause

field:value

type:ip

Exact phrase

field:"words with spaces"

blacklist.source:"URLhaus Abuse.ch"

AND

a AND b

type:ip AND classification:malicious

OR

a OR b

country_code:ES OR country_code:PT

NOT

NOT a  or  -a

is_cnc:true AND NOT country_code:US

Grouping

( … )

is_cnc:true AND (country_code:ES OR country_code:PT)

Wildcards

* any characters, ? one character

url:*santander*  as_name:AS4134*

Inclusive range

field:[a TO b]

score:[80 TO 100]

Exclusive range

field:{a TO b}

size:{0 TO 1000000}

Open range

field:[a TO *]

number_of_online_malicious_urls_allocated:[11 TO *]

Date range

field:[date TO date]

creation_time:[2026-09-01 TO 2026-09-30]

Date math

now, now-7d, now/d, now/M, now/y

modification_time:[now-7d TO now]

Field exists

_exists_:field

_exists_:nameserver

Fuzzy term

term~

blacklist.description:emotet~

Escaping

\ before a reserved character

url:\/login\?id=1

Notes Two clauses separated only by a space are combined with OR, which is the default operator of the query engine. type:ip classification:malicious returns every IP address plus every malicious indicator; type:ip AND classification:malicious returns malicious IP addresses. When AND and OR appear in the same query, group the OR alternatives in parentheses.

Indicator types and classification

The following table describes the syntax for types and classifications of the IoC within the dataset. 

Field

Values

Meaning

type

ip, hostname, url, sample, email

The kind of indicator. Leave it out to search every kind.

classification

malicious, suspicious, neutral, whitelist

The Maltiverse verdict for the indicator, derived from its reports and the scoring engine.

score

0 to 100

The numeric threat score.

blacklist.labels

malicious-activity, anomalous-activity, benign, attacker, botnet, malware, cryptominer, anonymization, phishing, compromised, reconnaissance, tor, proxy, vpn, hosting, sinkhole, cdn, iot

Normalised labels attached to each report. Use them to find a kind of activity regardless of how the source described it, for example compromised legitimate sites: blacklist.labels:compromised.

tag

free text, for example c2, phishing, dga, spam

Tags attached to the indicator.

Threat Flags

Boolean flags summarize what an indicator does. They are the most reliable way to express a threat. A flag is set by the scoring engine from every report, whereas descriptions vary from source to source. Each flag exists only on some indicator types; be careful when combining a flag with a type that does not carry it, the search engine will match nothing on those cases.
Notes Each flag exists only on some indicator types; be careful when combining a flag with a type that does not carry it, the search engine will match nothing on those cases.

Flag

Meaning

Indicator types

is_cnc

Command and control infrastructure

ip, hostname, url

is_distributing_malware

Distributes malware

ip, hostname, url, sample

is_phishing

Phishing page or host

hostname, url

is_storing_phishing

Hosts phishing pages or kits

hostname

is_known_attacker

Reported attacker (brute force, exploitation, abuse)

ip

is_known_scanner

Reported scanner or reconnaissance source

ip

is_mining_pool

Crypto-mining pool

ip, hostname

is_iot_threat

Activity against Internet of Things targets

ip, hostname, url

is_tor_node

Tor node

ip, hostname

is_open_proxy

Open proxy

ip, hostname

is_vpn_node

VPN node

ip, hostname

is_sinkhole

Sinkhole

ip

is_hosting

Hosting provider address

ip

is_cdn

Content delivery network address

ip

is_alive

Currently online: the hostname resolves, the URL is reachable

hostname, url

Date and time 

Three dates describe an indicator's life in Maltiverse: creation_time (added), modification_time (last changed, typically because a source reported it again) and last_online_time. The following table describes the date and time syntax you can use during a search: 

Request

Clause

Today

creation_time:[now/d TO now]

Last 24 hours

modification_time:[now-24h TO now]

Last 7 days

modification_time:[now-7d TO now]

Last 30 days

creation_time:[now-30d TO now]

This year

creation_time:[now/y TO now]

A calendar period

creation_time:[2026-09-01 TO 2026-09-30]

Sources

blacklist.source holds the name of the feed or vendor that reported an indicator. Names are matched word by word, so use the exact name and quote it when it contains spaces; a partial name such as StopForumSpam does not match "StopForumSpam.com". Frequent sources in the Intelligence dataset include:

ThreatFox Abuse.ch

URLhaus Abuse.ch

MalwareBazaar Abuse.ch

Cyber Threat Alliance

Cyber Threat Coalition

Maltiverse

Maltiverse Threat Observatory

Maltiverse Research Team

Hybrid-Analysis

Triage

VM-Ray

Maltrail

AbuseIPDB

IPWhois.io

Cisco Umbrella

Blocklist.de (and Blocklist.de SSH, Mail, Apache)

Blocklist.net.ua

HoneyDB

Emerging Threats

CIArmy

Barracuda

StopForumSpam.com

FireHOL

OpenPhish

Phishtank

Google Safebrowsing

Antiphishing.com.ar

Abuseat.org

Sblam

Cleantalk.org

Myip.ms

Botscout

Alienvault Ip Reputation Database

GPF DNS Blocklist

TorProject.org

MalwarePatrol

SANS Internet Storm Center

Alexa

Tranco



Query examples

The following table provides a list of useful examples that you can use to start drilling data and get use to the Maltiverse Query Language.

Goal

Query

Malicious command and control servers in Spain

is_cnc:true AND country_code:ES AND classification:malicious

Command and control servers in Spain or Portugal

is_cnc:true AND (country_code:ES OR country_code:PT)

Malicious IPs related to Cobalt Strike

type:ip AND classification:malicious AND blacklist.description:"Cobalt Strike"

Malicious IPs in AS4134 that distribute malware

type:ip AND classification:malicious AND as_name:AS4134* AND is_distributing_malware:true

Hostnames distributing malware under .ru

type:hostname AND is_distributing_malware:true AND tld:ru

Phishing URLs impersonating PayPal

type:url AND is_phishing:true AND (url:*paypal* OR blacklist.description:*PayPal*)

Phishing URLs reported by OpenPhish today

type:url AND is_phishing:true AND blacklist.source:"OpenPhish" AND creation_time:[now/d TO now]

Hostnames that store phishing pages

type:hostname AND is_storing_phishing:true

Known scanners located in China

is_known_scanner:true AND country_code:CN

Known attackers reported by CIArmy

is_known_attacker:true AND blacklist.source:"CIArmy"

Tor exit nodes that are also known attackers

type:ip AND is_tor_node:true AND is_known_attacker:true

Open proxies in the United States

is_open_proxy:true AND country_code:US

Mining pools that are still alive

is_mining_pool:true AND is_alive:true

Sinkhole IP addresses

type:ip AND is_sinkhole:true

Samples of the Emotet malware

type:sample AND blacklist.description:"Emotet"

Ransomware samples added in the last 30 days

type:sample AND blacklist.description:*ransomware* AND creation_time:[now-30d TO now]

Indicators attributed to Lazarus Group

blacklist.description:"Lazarus Group"

Indicators tagged with ATT&CK technique T1204.002

blacklist.external_references.external_id:T1204.002

Compromised legitimate websites

type:hostname AND blacklist.labels:compromised

Newly registered domains classified as malicious

type:hostname AND classification:malicious AND domain_creation_time:[now-30d TO now]

Malicious hostnames using Cloudflare name servers

type:hostname AND classification:malicious AND nameserver:*cloudflare*

Malicious IPs with more than 10 blacklisted domains resolving to them

type:ip AND classification:malicious AND number_of_blacklisted_domains_resolving:[11 TO *]

Everything reported by Emerging Threats in the last 24 hours

blacklist.source:"Emerging Threats" AND modification_time:[now-24h TO now]

Whitelisted IPs in Spain

type:ip AND classification:whitelist AND country_code:ES

Run a query

To filter IoCs in the Maltiverse Portal, you need to:

1. Head to the left navigation menu and select Search.

Notes For Platform plan users, if you select Platform Search, you will only filter the IoCs your organization has uploaded.

2. Type your query in the search field using the MQL syntax.

Notes If you are not certain about what to write, you can use the autocomplete feature of the search engine as seen in the image above.

3. Click Search or press Enter on your keyboard to run your search. You will see the list of filtered IoCs that match your query.

Each result shows:

  1. Type icon: IP address, hostname, URL, sample or e-mail. The icon's tooltip names the type.
  2. Status: hostnames and URLs show Online or Offline (the is_alive flag: the hostname resolves, or the URL is reachable).
  3. Classification: three squares under the icon. Three red squares mean malicious, two amber suspicious, one green neutral, three navy whitelist. You can hover the mouse over the icon to show the classification. 
  4. Indicator: the IP, hostname, URL, file name (or SHA-256) or e-mail address, linking to the indicator's detail page. Private IoCs link to their page under Platform.
  5. Dates: when the indicator was created and last modified, as relative times; the exact timestamp is in the tooltip.
  6. Blacklist entries: one line per report, description - source (for example Command & Control - Cyber Threat Alliance), each linking to the indicator.
  7. Highlights: the fields that matched the query, with the matching text marked.
  8. Country flag for IP addresses and hostnames; visits for samples and e-mail addresses.

4. You could also sort the data in the search by using the Sort button at the top of the search field. 

The default order is creation time, newest first; the button shows the field in use (Sort ctime) and an arrow for the direction. Changing the order runs the query again from the first page. You can sort by: 

  1. Score: Relevance of each result to the query, best first. The summary then shows the best score ("Query score (N points)")
  2. Ctime DESC / Ctime ASC: Creation time, newest or oldest first. Ctime DESC is the default.
  3. Mtime DESC / Mtime ASC: Modification time, most recently changed or least recently changed first.
  4. Visits DESC / Visits ASC: Visits to the indicator page, most or least visited first.

5. Additionally, you could also use the Time Filter to narrow down the results to a time window without writing a date clause. You can choose from Creation time or Modification time (the default), and a preset: last year, last month, last week, last day or last hour. Each click runs the query again.
6. You can export the data of the results of your search, by clicking on the Export button.

You can export int he following formats: 

  1. Format: json (one object per indicator, with the fields you tick in Filter fields), csv (semicolon-separated, nested data such as the blacklist entries joined with | and ,) or stix2 (a STIX 2 bundle produced by the API, saved as JSON).
  2. Limit: signed-in users export up to 100 indicators per export; Enterprise accounts have full export capability over the result set; anonymous visitors export the 10 indicators of the current page.
  3. The file is named after the date and time of the export, for example 2026-10-07_15:30:12_search.json.

Aggregate queries

This feature helps you drill down into data by starting from a general search and then refining it by using query fields at your disposal. You can first run a broad query to capture a wide range of IoCs, then aggregate results by fields such as country_code, domain_keyword, or state. Based on the results, you can also apply additional filters using logical operators (AND/OR) to narrow or expand your focus, turning a high-level overview into a precise, targeted investigation.

To aggregate queries, you need to:

1. Run a simple search that filters a high number of IoC, for example, type:ip. Then, click on Aggregate.


2. Select the fields you want to aggregate, you can select multiple fields at a time. Once you select the fields, simply close the Aggregate Query modal.

Notes If a selected field does not have any associated IoCs, it will be deselected automatically.

4. Once you have aggregated the fields, you will see a tab for each of the aggregations.


5. Go into the aggregation tabs, you will see the results are organized by the numbers IoCs included on each result (number of IoCs on the right).

Idea
Seeing which values dominate a specific field queries can be extremely useful to determine which TTP IDs, software designations, or malware family codes are most dominant. This helps you identify trending threats or frequently seen indicators across your entire dataset.

6. From here you can:

  • Click AND add to query (1) to add an AND condition to your original query, further restricting the results to only IoCs that match both your current criteria and the chosen value.
  • Click OR add to query (2) to add an OR condition to your original query, broadening the results to any IoCs that match your current criteria or the chosen value.

7. Clicking any of those options opens a new window with the new search results that include both the initial query and the aggregation.

Saving a Query

You can save a query so Maltiverse keeps evaluating it. Click Save query under the editor (the button is enabled once the editor has a query).
You can save your query as:
  1. Treat Feed: A custom Threat Intelligence Feed with the indicators that match the query, kept up to date by Maltiverse. The feed is listed under Intelligence > Feeds and can be distributed through the connectors, the TAXII server or the API.
  2. Alert: An e-mail alert: you are notified whenever a new indicator matches the query. Feed and Alert can be selected together to get both from the same query.
  3. Scoring Rule (Administrators only): A scoring rule that re-evaluates the matching indicators on a schedule (none, hourly, daily or a custom cron expression) and applies the configured actions, for example changing their classification.

AI Query Assistant

The AI Query Assistant writes the MQL query from a description in plain language, in any language. It knows the fields of the index, which flags apply to which indicator types, the exact source names and the date syntax, and every query it returns is validated against the index before you see it. The query is a proposal: review it, edit it in the editor if needed, then run it.

1. Click AI Query under the search field to open The AI Query Assistant modal.

2. Now simply type your request, for example: malicious ips and hostnames located in the USA. Then, click Generate Query to generate the query in the correct syntax.


3. Once the query has been generated, click on Use this query  to run the search.

4. You will see the filtered search using the generated query.

Usage recommendations

  1. Name the kind of indicator when it matters: IP addresses, hostnames (or domains), URLs, samples. Without it, the assistant searches every kind.
  2. Name the threat with everyday words: command and control, phishing, malware distribution, scanners, brute force, Tor, proxies, VPN, mining, sinkhole, IoT. The assistant maps them to the right flags.
  3. Add where (a country or a city), who reported it (a source name), what (a malware family, a threat actor, a tool) and when (today, the last 24 hours, this week, this month, this year).
  4. A single criterion is a complete request: "indicators in Colombia" becomes country_code:CO. The assistant does not add a classification or a type you did not ask for.
  5. Ask in your language. The explanation comes back in the language of the request.
Notes The AI Query Assistant only matches data that follows the MQL, for example if a request combines a flag with a type that cannot carry it, for example online IP addresses, the assistant drops the flag and says so in the explanation.
Platform Search (Platform plan) offers the same editor, assistant, sorting, time filter, aggregations, export and save-as tools over the private IoCs of your organization: the indicators uploaded through Upload IoC or ingested by your connectors. Results link to the private indicator pages under Platform, and feeds saved from here are built on the private dataset.
Two bulk actions can be performed in the Platform search to modify every private IoC that matches the query in the editor:
  1. Delete by query (trash icon) shows how many IoCs match and deletes them after confirmation. There is no rollback.
  2. Update classification by query (pencil icon) applies a new classification, malicious, suspicious, neutral or whitelist, to every matching IoC.
Run the query first before performing any of the actions and read the count in the dialog before confirming.

Field reference guide

Use any of these fields to filter and refine your queries. Here you can find the expected field formats and usage examples. Keep in mind that you can also rely on the autocomplete feature.

Common to every indicator

Field

Type

Notes

type, classification, score, tag

keyword / number

See 4.2.

creation_time, modification_time

date

When the indicator entered Maltiverse and when it last changed. The Time filter and the result timeline use them.

last_online_time

date

Last time the indicator was seen online.

visits

number

Times the indicator page was visited.

blacklist.description

text

Free text of each report: malware family, campaign, actor, technique.

blacklist.source

text

Feed or vendor that reported the indicator. Use the exact name, in quotes when it has spaces (4.6).

blacklist.labels

text

Normalised labels of the report (4.2).

blacklist.first_seen, blacklist.last_seen

date

First and last time the source saw the indicator.

blacklist.count

number

Times the source reported it.

blacklist.external_references.external_id, …source_name, …url, …description

keyword / text

External references of a report, such as MITRE ATT&CK technique IDs (external_id:T1204.002, source_name:mitre-attack).

IP addresses

Field

Type

Notes

ip_addr

ip

The address; ranges and CIDR work: ip_addr:[10.0.0.0 TO 10.0.0.255], ip_addr:"192.0.2.0/24".

ip_version

number

4 or 6.

country_code, city, state, postal_code, location

keyword / text / geo

Geolocation of the address. country_code is ISO 3166-1 alpha-2.

as_name, as_number, asn_cidr, asn_country_code, asn_registry, asn_date

text / keyword / date

Autonomous system data. as_name is text (as_name:*Cloudflare*); as_number is the AS number as a keyword.

cidr, address, registrant_name, registrant_organization, whois_server

text

WHOIS data of the network.

number_of_online_malicious_urls_allocated, number_of_offline_malicious_urls_allocated, number_of_domains_resolving, number_of_blacklisted_domains_resolving, number_of_whitelisted_domains_resolving

number

Counters that relate the address to the URLs and domains hosted on it; use numeric ranges.

Hostnames

Field

Type

Notes

hostname, domain, tld

text / keyword

The host, its registrable domain and its top-level domain without the dot (tld:ru).

resolved_ip.ip_addr, resolved_ip.timestamp, last_resolved_ip

ip / date

Resolution history and the last resolved address.

country_code, city, as_name, as_number

keyword / text

Inherited from the resolved address.

nameserver, dnssec, dns_request

text / keyword

DNS data; dnssec is signed or unsigned.

domain_creation_time, domain_update_time, domain_expiration_time

date

Registration dates (newly registered domains: domain_creation_time:[now-30d TO now]).

registrant_name, registrant_organization, whois_server

text

WHOIS data of the domain.

domain_lenght, domain_consonants, entropy

number

Lexical features used to spot generated domains.

URLs

Field

Type

Notes

url

text

The full URL, analysed into words (url:*paypal*).

urlchecksum

keyword

SHA-256 of the URL, the identifier of its detail page.

hostname, domain, tld

text / keyword

The host part of the URL.

Samples

Field

Type

Notes

sha256, sha1, md5, sha512

text

File hashes.

filename, filetype, size

text / number

File name, type and size in bytes.

antivirus.name, antivirus.description

keyword

Antivirus engine and its detection name.

av_ratio

number

Share of engines that detect the sample.

contacted_host, dns_request, http_traffic.*, network_suricata_alerts.*

text / keyword

Network behaviour observed in the sandbox: contacted hosts, DNS requests, HTTP traffic and IDS alerts (category, description, sid).

process_list.*, extracted_files.*, mutex

text / keyword

Host behaviour observed in the sandbox: processes, dropped files and mutexes.

Emails

Field

Type

Notes

email, email_address

keyword / text

The address.

Troubleshooting

The following table presents some common cases you might encounter while drilling down the data with the search engine. 

Symptom

Cause and fix

Far more results than expected

Clauses separated by spaces are combined with OR. Write AND between clauses and group OR alternatives in parentheses.

No results for a flag

The flag may not exist on the type you asked for: is_alive is tracked for hostnames and URLs, is_sinkhole for IP addresses.

No results for a source

Use the exact source name, quoted when it has spaces. Check the names with autocompletion or an aggregation on blacklist.source.keyword.

No results for a location on URLs or samples

country_code, city and as_name exist on IP addresses and hostnames only. Search the hostname of the URL instead.

A wildcard does not match

Wildcards apply to one word of an analysed text field. Use the word itself (url:*wordpress*) rather than a path fragment with punctuation.

A query with a literal date returns nothing

Dates are UTC; use ISO formats or date math. "This year" is creation_time:[now/y TO now].

Search is disabled

The query failed validation or the editor is empty. The message under the editor says which limit was hit.

The assistant answers with an explanation instead of a query

The request needs a field the index does not have (ports, protocols, CVEs, personal data). 

"Reached limit of N requests in the last 24 hours"

The daily API quota is exhausted. The footer bar shows the consumption and the reset time; Enterprise plans have higher quotas.

A colleague does not see my results

Share the page address, it carries the query, page, sort and time filter.