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.
An Azure AD user account with the Cloud Application Administrator or Global Administrator role to create the App Registration.
The Microsoft Defender export connector periodically synchronizes 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 Defender always mirrors the current state of your feeds without manual intervention or stale indicators accumulating.
You must execute the following tasks to prepare your Microsoft Defender environment to implement the Maltiverse Microsoft Defender export connector.
You will be guided through the following sections for each task. Before proceeding, log in to your Entra ID console with a user who has at least Cloud Application Administrator permissions.
You will need additional authorization from an Azure administrator if you use a user with fewer privileges than a Cloud Application Administrator.
Follow the steps below to create the new app registration and add the required permission.
1. In the Azure Portal, select the Microsoft Entra ID service. If you cannot locate it in the main window, use the top search bar to find the service.
2. Select App registrations under the Manage section on the left navigation bar.
3. Click on New registration in the App registrations window.
4. Fill in the Register an application form following these guidelines:
5. You will be redirected to the application overview page. 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.
Now, you are ready to create a secret for your Maltiverse Defender Export App registration.
You must create a secret for your newly created app registration. Head to the left navigation bar from where you left off in the previous section and follow these steps.
1. Select Certificates & secrets under the Manage section in the left navigation bar.
2. Go to the Client secrets tab. Then, click on New client secret.
3. Fill in the Add a client secret form that popped up to the right.
4. Copy the Value from the newly created secret. Keep them at hand, they will be needed later to activate the integration in the Maltiverse Portal.
Now, you are ready to grant the required permissions to your Maltiverse Defender Export App registration.
The Maltiverse Defender Export app registration must have permission to use the Microsoft Defender API. Follow these steps from where you left off in the previous section.
1. Select API permissions under the Manage section in the left navigation bar.
2. Click the Add a permission button in the Configured permissions section.
3. The Requests API permissions form will pop up. Click the APIs my organization uses tab. Type WindowsDefenderATP in the search box. Click on the result.
4. The form will request the specific permissions.
5. Click the Grant admin consent for button to grant admin consent to the newly added permission. This is needed by the connector to manage IOCs.
You must ask for consent to an administrator user if the Grant admin consent for button is disabled.
Now, you are ready to configure the connector in the Maltiverse portal.
To configure the Microsoft Defender Export Connector, log in to the Maltiverse Portal and navigate to Threat Intel > Integrations > Microsoft Defender. Then, click Add Defender.
You will be prompted to fill out 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.