This guide explains how to configure the Microsoft Defender for Endpoint export connector in Maltiverse. The integration pushes threat intelligence indicators (IoCs) from your Maltiverse feeds directly into Microsoft Defender, enabling automated blocking and alerting across your endpoints.
The Microsoft Defender export connector periodically synchronises Maltiverse feed indicators with your Microsoft Defender for Endpoint tenant. It supports IPs, hostnames (domains), URLs, and file hashes (MD5, SHA-1, SHA-256).
The connector uses a continuous rotation strategy to keep Defender in sync with your Maltiverse feeds:
This strategy ensures Microsoft Defender always mirrors the current state of your feeds without manual intervention or stale indicators accumulating.
To successfully complete the integration you need an Azure AD (Entra ID) application with the correct API permissions.
Follow the steps below to create the new app registration and add the required permission.
1. Go to Azure Portal > App registrations > New registration. When the form opens up, enter a name (e.g. 'Maltiverse Defender Export'), select Accounts in this organizational directory only, and click Register.
2. Once you create the App Registration, go to the Overview page and copy the Application (client) ID and Directory (tenant) ID. Keep them at hand, they will be needed later to activate the integration in the Maltiverse Portal.
3. Now, go to Certificates & secrets > Client secrets > New client secret. Create the client secret by giving it a description and choose an expiration period. Once you create the client secret, copy and save the Value immediately as it won't be shown again and it is needed to activate the integration in the Maltiverse Portal.
4. Go to API permissions > Add a permission > APIs my organization uses. Search for WindowsDefenderATP. Select Application permissions, then check Ti.ReadWrite.All and click Add permissions to finish.
5. While on the API permissions page, click Grant admin consent for [your tenant].
A Global Administrator must approve this permission. To configure the integration log in to the Maltiverse Portal and navigate to Threat Intel > Integrations > Microsoft Defender. Then, click Add Defender. You will be prompted to fill the integration form, fill its fields as follows:
| Field | Required | Description |
| Connection Name | Required | A descriptive name for this connection (3-120 characters). |
| Description | Optional | A free-text description (3-500 characters). Shown as a tooltip in the connections table. |
| Connection Status | Toggle | Enable or disable the connector. Disabled connectors will not run on schedule. |
| Azure Tenant ID | Required | The Directory (tenant) ID from your Azure AD app registration. |
| Client ID | Required | The Application (client) ID from your Azure AD app registration. |
| Client Secret | Required | The client secret value you created. Displayed as a password field for security. |
| API Base URL | Optional | Defaults to https://api.security.microsoft.com. Only change this if your tenant uses a different regional endpoint (e.g. for GCC or DoD environments). |
| Action | Required | The response action Defender takes when an indicator matches. Options: Alert, AlertAndBlock (default), Block, Allow. |
| Severity | Required | The severity assigned to alerts. Options: Auto (based on classification), High, Medium, Low, Informational. 'Auto' maps the Maltiverse classification to Defender severity automatically. |
| Feeds to Export | Required | Select one or more Maltiverse feeds whose indicators will be exported to Defender. |
Before saving a new integration, the form requires you to test it. Click Test Connection (enabled only when all required fields are filled). The test authenticates against Azure AD using the provided credentials.
When working with Microsoft Defender Endpoints, it is important to take into account the following information.
When creating a new integration, feeds tagged as EDR-compatible are automatically pre-selected as recommended defaults. These feeds contain indicator types (IPs, domains, URLs, file hashes) that are most relevant for endpoint detection and response. An informational banner is displayed above the feed selector explaining this pre-selection. You can freely add or remove feeds as needed.
Microsoft Defender for Endpoint has a hard limit of 15,000 active custom indicators per tenant. The connector provides real-time capacity monitoring to help you stay within safe operational limits.
How Capacity Is Calculated
When you create or edit a connection, the system queries the Microsoft Defender API to determine how many indicators are already in use in your tenant. This provides the real remaining capacity:
Available capacity = 15,000 (tenant limit) - indicators already in Defender.
The capacity bar shows: selected feed IoC count / available capacity.
Capacity Thresholds
The capacity bar uses color-coded thresholds to indicate capacity levels:
| Color | Threshold | Meaning |
| Green | Below 50% | Safe range. Plenty of capacity available. |
| Yellow | 50% - 89% | Approaching the limit. Consider reviewing feed selection. |
| Red | 90% or above | Critical. Saving is blocked at this level. |
Save Protection
If the selected feeds would consume 90% or more of the available Defender capacity, the Save button is automatically disabled. This prevents you from creating configurations that could saturate your Defender tenant. You must remove feeds until the capacity drops below 90% to proceed.
Why Saturating Defender Is Not Recommended
An informational alert is always displayed in the capacity section explaining that it is not recommended to saturate Microsoft Defender with indicators up to its maximum capacity. The reasons include:
Each selected feed chip displays the IoC count next to its name (e.g. '4,230 IoCs'). This count includes all indicator types: IPv4 addresses, hostnames, URLs, and file samples. This helps you quickly identify which feeds contribute most to the total and make informed decisions about which feeds to include.
The Manage Connections table displays all configured Microsoft Defender connections with the following columns.
Click the play button in the Actions column to trigger an immediate export. The status message will update to show the result, including how many indicators were found and exported per feed (shown by feed name).
Click the edit button to modify a connection. When you save changes that affect the configuration (feeds, credentials, action, severity), the execution state is automatically reset. This means the next run will perform a full upload of all indicators from the selected feeds, rather than just the hourly delta. Changes to name or description only do not trigger a reset.
Click the delete button to remove a connection. This stops future scheduled exports. Note that indicators already uploaded to Defender will expire naturally after their 24-hour TTL.
Maltiverse indicators are mapped to Defender indicator types as follows:
| Maltiverse Type | Defender Indicator Type |
| IPv4 address | IpAddress |
| Hostname / Domain | DomainName |
| URL | Url |
| Sample (MD5) | FileMd5 |
| Sample (SHA-1) | FileSha1 |
| Sample (SHA-256) | FileSha256 |
When Severity is set to 'Auto (based on classification)', the connector maps the Maltiverse classification to a Defender severity:
| Maltiverse Classification | Defender Severity |
| malicious | High |
| suspicious | Medium |
| neutral / whitelisted | Informational |
Microsoft Defender for Endpoint imposes the following limits on custom threat intelligence indicators:
| Limit | Value |
| Maximum active indicators | 15,000 per tenant (across all sources and applications). |
| Import batch size | Up to 500 indicators per API request. The connector uses batches of 100 for reliability. |
| Import rate limit | 30 requests per minute. |
| List rate limit | 100 requests per minute. |
| Indicator expiration | Hardcoded to 24 hours by the connector. Defender deletes expired indicators automatically. |
| Maltiverse safe threshold | 90% of available capacity. The connector blocks saving configurations that would exceed this threshold. |
The 15,000 indicator limit is shared across all sources. If other applications or manual entries are also using indicator slots, the actual available capacity for Maltiverse will be lower. The connector queries the real usage from the Defender API to provide accurate capacity information.
How Capacity Is Queried
The connector uses the Defender List Indicators API (GET /api/indicators) with OData pagination ($top=10000, $skip) to count all active custom indicators in the tenant. This API does not support a direct $count parameter, so the connector paginates through all results. The query typically completes in 1-2 API calls for tenants with up to 15,000 indicators.
Q: Can I change the schedule?
A: No. The schedule is fixed at every hour to ensure consistent IoC rotation with the 24-hour expiration. This combination guarantees that Defender always reflects the current state of your feeds.
Q: Can I change the expiration time?
A: No. The expiration is hardcoded to 1 day (24 hours). This is by design — it ensures that indicators removed from feeds are automatically cleaned up in Defender without manual intervention.
Q: What happens if I add a new feed to an existing connection?
A: When you save the connection, the execution state is reset. The next scheduled run will perform a full upload of all indicators from all selected feeds (including the new one).
Q: Does the connector delete indicators from Defender?
A: No. The connector only creates indicators. Removal happens passively through TTL expiration. When an indicator is no longer in the feed, it stops being re-uploaded and expires after 24 hours.
Q: What API Base URL should I use?
A: For most commercial tenants, use the default (https://api.security.microsoft.com). For GCC, GCC High, or DoD environments, use the appropriate regional endpoint provided by Microsoft.
Q: How are EDR-recommended feeds selected?
A: Feeds that have the 'package:edr' tag in Maltiverse are automatically pre-selected when creating a new connection. These feeds are curated for endpoint detection use cases. You can modify the selection at any time.
Q: Why is the Save button disabled?
A: The Save button is disabled when: (a) required fields are missing or invalid, or (b) the selected feeds would consume 90% or more of the available Defender capacity. For capacity issues, remove feeds until the usage drops below 90%.
Q: Why does capacity show different numbers for 'live' vs 'estimate'?
A: The 'estimate' mode uses the full 15,000 limit and only considers your selected feed IoC counts. The 'live' mode queries Microsoft Defender to see how many indicators are already in use (from all sources), and shows the actual remaining capacity. The live number is always more accurate because it accounts for indicators from other applications.
Q: What happens if other applications also upload indicators?
A: The 15,000 indicator limit is shared across all applications and manual entries in your Defender tenant. The connector's live capacity check accounts for this by querying the total number of active indicators regardless of source. This is why it is important not to saturate the indicator space.