Netskope LogoNetskope Logo
  • Security Services
  • AI Services
  • Networking Services
  • Analytics Services
  • Integrations
  • getting-started.svgGetting Started
    • Support
    • Community
    • Netskope.com
    © 2026 All Rights Reserved. Netskope Inc.
    Home
    Netskope Cloud Exchange
    Threat Exchange Module
    Configure 3rd-party Threat Exchange Plugins
    Microsoft Defender for Endpoint Plugin for Threat Exchange

    Microsoft Defender for Endpoint Plugin for Threat Exchange

    Release Notes

    1.4.0
    Added

    • Added support for indicator retraction.
    • Added ‘Type of Threat data to pull’ and ‘Enable Polling’ configuration parameters.
    • Added support to bifurcate the URL by types (Domain, IPv4, IPv6 & URL).
    • Added resolution for error logs starting from CE v6.0.0.
    • Added support for storing access token in the storage.

    1.3.1
    Added

    • Added ‘Indicators with Generated Alert’ field in Configuration parameters.
    • Added ‘Generate Alert’ field in the sharing configuration.

    Removed

    • Removed actions ‘Alert’ and ‘Alert and Block’ from configuration and sharing configuration.

    1.3.0

    Added

    • Added support for different regions for Base URL.
    • Added support for fetching indicators on the basis of actions provided.
    • Added support for Tagging on the basis of indicator action.

    1.2.0

    Changed

    • Replaced beta API’s with stable API endpoints.

    1.1.0

    Added

    • Added push support.

    Changed

    • Changed deprecated apis.

    1.0.0

    Added

    • Initial release.

    This document explains how to configure the Microsoft Defender for Endpoint v1.4.0 plugin for the Threat Exchange module of the Netskope Cloud Exchange platform. This plugin is used to pull indicators of type URL, IPv4, IPv6, Domain, MD5 and SHA256 from the System > Settings > Endpoints > Indicators page of the Microsoft Defender for Endpoint platform. This plugin supports sharing indicators of type URL, IPv4, IPv6, Domain, MD5 and SHA256 to the System > Settings > Endpoints > Indicators page in the Microsoft Defender for Endpoint platform. This plugin also supports pull and push retraction of indicators from the Microsoft Defender for Endpoint platform.

    Prerequisites

    To complete this configuration, you need:

    • A Netskope tenant (or multiple, for example, production and development/test instances).
    • A File Profile on your Netskope tenant.
    • A URL List on your Netskope tenant.
    • A Destination Profile on your Netskope tenant.
    • A Private App on your Netskope tenant.
    • A DNS Profile on your Netskope tenant.
    • A Secure Web Gateway subscription for URL sharing.
    • A Netskope Cloud Exchange tenant with the the Tenant plugin and Threat Exchange plugin already configured.
    • A Microsoft Defender for Endpoint account.
    • Your Microsoft Azure Tenant ID, Client ID, and Client Secret.
    • A Microsoft Azure Application with the Ti.ReadWrite.All Permission. For more information, go to this article.
    • Connectivity to these hosts:
      • https://api.securitycenter.microsoft.com/api/indicators
      • https://securitycenter.windows.com
      • https://login.microsoftonline.com
      • https://portal.azure.com
    We have not tested the plugin end-to-end with base URLs api-gcc.securitycenter.microsoft.us and api-gov.securitycenter.microsoft.us since we don’t have a GCC tenant with us.
    Microsoft Defender for Endpoint Plugin Support

    This plugin is used to pull indicators of type URL, IPv4, IPv6, Domain, MD5 and SHA256 from the System > Settings > Endpoints > Indicators page of the Microsoft Defender for Endpoint platform. This plugin supports sharing indicators of type URL, IPv4, IPv6, Domain, MD5 and SHA256 to the System > Settings > Endpoints > Indicators page in the Microsoft Defender for Endpoint platform. This plugin also supports pull and push retraction of indicators from the Microsoft Defender for Endpoint platform.

    Fetched Indicator TypesShared Indicator Types
    URL, IPv4, IPv6, Domain, MD5 and SHA256URL, IPv4, IPv6, Domain, MD5 and SHA256
    Indicators of the type URL will be differentiated as IP, URL or Domain and then ingested to Microsoft Defender for Endpoint. In Cloud Exchange, some of the IPs or Domains will be stored as type URL. When sharing those IoCs, this plugin will differentiate IPs,Domains and URL and will share IPs as type IP and Domains or URLs or FQDNs as URL/Domains.
    IoC Retraction

    IoC Retraction (Pull): Indicators will be fetched from Microsoft Defender for Endpoint and in the subsequent pull cycles if some indicators are deleted on Microsoft Defender for Endpoint or not within the retraction interval range then they will be marked as Retraced in Cloud Exchange.

    IoC Retraction (Push): Retracted indicators present on Cloud Exchange will be deleted from Microsoft Defender for Endpoint during sharing.

    Retraction TypeSupported Retraction Type
    IoC Retraction (Pull)Yes
    IoC Retraction (Push)Yes
    Mappings
    Pull Mappings

    Here are the mappings for pulled IoCs.

    Netskope CTE FieldDefender API FieldDescription
    Indicator.valueindicatorValue
    Indicator.typeindicatorTypeUrl → URL; DomainName→ Domain; FileMd5 → MD5; FileSha256 → SHA256; IpAddress→IPv4/IPv6
    Indicator.firstSeencreationTimeDateTimeUtc
    Indicator.lastSeenlastUpdateTime
    Indicator.commentstitle + descriptionConcatenated as “<title> | <description>“
    Indicator.severityseverity
    Indicator.tagsactioncreates Defender_<action> tag; one tag per indicator.
    Severity Mappings for Pull
    Netskope SeverityDefender Severity
    LOWLow
    MEDIUMMedium
    HIGHHigh
    UNKNOWNAnything else
    Push Mappings

    Here are the mappings for shared IoCs.

    Netskope CTE FieldDefender API fieldDescription
    Indicator.valueindicatorValue
    Indicator.typeindicatorType
    URL → Url
    Domain → DomainName
    FQDN → DomainNameIPv4/IPv6 → IpAddressMD5 → FileMd5SHA256 → FileSha256
    Indicator.commentsdescriptionFormatted as ” Netskope-CTE | <source> | <comments>”
    Indicator.severityseverity
    action_dict.action (configured)actionMapped via action_conversion: unknown/alert/Alert → Audit; allow → Allowed; block → Block; AlertAndBlock → Block (and forces generateAlert=True).
    action_dict.generate_alertgenerateAlertIf action is Audit: forced True; otherwise uses configured Yes/No (boolean).
    Indicator.type/valuetype“Indicator <value> of type <indicatorType>” (uses resolved type).
    Severity Mapping for push
    Netskope SeverityDefender Severity
    LOWLow
    MEDIUMMedium
    HIGHHigh
    CRITICALHigh
    Permissions

    Microsoft Azure Application with the Ti.ReadWrite.All Permission. For more information, go here.

    API Details
    List of APIs used
    Netskope CTE FieldProofpoint API fieldType
    threatStatusthreatStatusString
    intervalintervalDatetime
    sinceSecondssinceSecondsInteger
    eventTypeseventTypesString
    Authentication

    This plugin uses the Python library to generate authentication tokens for .

    • Library: Microsoft Authentication Library for Python (msal)
    • Usage: Microsoft Authentication Library for Python (msal) to get authentication token for Microsoft Defender APIs.

    Create a new session with credentials

    scope = ["https://api.securitycenter.microsoft.com/.default"]
    authority = "https://login.microsoftonline.com/{tenantID}
    
    app = msal.ConfidentialClientApplication(
               client_id={clientID}, authority=authority, client_credential={clientSecret}, proxies=proxy
    )
    auth_json = app.acquire_token_for_client(scopes=scope)
    auth_token = auth_json.get("access_token", "")
    Pull Indicators

    API Endpoint: <Base URL>/api/indicators

    Method: GET

    Headers

    KeyValue
    AuthorizationBearer <auth_token>
    Content-Typeapplication/json
    Acceptapplication/json
    User-Agentnetskope-ce-6.1.0-cte-microsoft-defender-for-endpoint-v1.4.0

    Parameters

    KeyValue
    $filtercombining creationTimeDateTimeUtc+ge+<UTC timestamp> and optional actions: action+eq+'<Action>’ joined with or.
    e.g., creationTimeDateTimeUtc+ge+2025-02-05T00:00:00Z and (action+eq+’Alert’ or action+eq+’Audit’)

    Sample API Response

    {
      "@odata.context": "https://api.securitycenter.microsoft.com/api/$metadata#Indicators",
      "value": [
        {
          "id": "66407",
          "indicatorValue": "a40da157d2e56d26c01d8d57947779e1b403999ed32a1ac3553b46f501542e0d",
          "indicatorType": "FileSha256",
          "action": "Audit",
          "createdBy": "d45ccecf-7406-47f6-90e5-05f0b3f76094",
          "severity": "Informational",
          "category": 1,
          "application": null,
          "educateUrl": null,
          "bypassDurationHours": null,
          "title": "Indicator a40da157d2e56d26c01d8d57947779e1b403497e999a1ac3553b46f501542e0d of type FileSha256",
          "description": "Pull Test",
          "recommendedActions": null,
          "creationTimeDateTimeUtc": "2026-01-21T09:08:36.9319034Z",
          "expirationTime": null,
          "lastUpdateTime": "2026-01-21T09:08:36.9319034Z",
          "lastUpdatedBy": null,
          "rbacGroupNames": [],
          "rbacGroupIds": [],
          "notificationId": null,
          "notificationBody": null,
          "version": null,
          "mitreTechniques": [],
          "historicalDetection": false,
          "lookBackPeriod": null,
          "generateAlert": true,
          "additionalInfo": null,
          "createdByDisplayName": "Demo app",
          "externalId": null,
          "createdBySource": "PublicApi",
          "certificateInfo": null
        },
        {
          "id": "66408",
          "indicatorValue": "521e25b2d1bb9f8059dc7b0e86d05454bd599941e2a59620521ba1510be110e6",
          "indicatorType": "FileSha256",
          "action": "Audit",
          "createdBy": "d45ccecf-7406-47f6-90e5-05f999f76094",
          "severity": "Informational",
          "category": 1,
          "application": null,
          "educateUrl": null,
          "bypassDurationHours": null,
          "title": "Indicator 521e25b2d1bb9f8059dc7b0e86d05454bd565441e9999620521ba1510be110e6 of type FileSha256",
          "description": "Pull Test",
          "recommendedActions": null,
          "creationTimeDateTimeUtc": "2026-01-21T09:08:37.7747306Z",
          "expirationTime": null,
          "lastUpdateTime": "2026-01-21T09:08:37.7747306Z",
          "lastUpdatedBy": null,
          "rbacGroupNames": [],
          "rbacGroupIds": [],
          "notificationId": null,
          "notificationBody": null,
          "version": null,
          "mitreTechniques": [],
          "historicalDetection": false,
          "lookBackPeriod": null,
          "generateAlert": true,
          "additionalInfo": null,
          "createdByDisplayName": "Demo app",
          "externalId": null,
          "createdBySource": "PublicApi",
          "certificateInfo": null
        }
    ]
    }
    Push Indicators

    API endpoint: <Base URL>/api/indicators

    Method: POST

    Headers

    KeyValue
    AuthorizationBearer <auth_token>
    Content-Typeapplication/json
    Acceptapplication/json
    User-Agentnetskope-ce-6.1.0-cte-microsoft-defender-for-endpoint-v1.4.0

    Body

    {
            "indicatorValue": "malicious.example.com",
            "indicatorType": "DomainName",
            "action": "Block",
            "title": "Indicator malicious.example.com of type DomainName",
            "description": " Netskope-CTE | demo | Example domain IOC",
            "severity": "High",
            "generateAlert": true,
    }

    Sample API Response (Status Code: 201)

    {
      "@odata.context": "https://api.securitycenter.microsoft.com/api/$metadata#Indicators/$entity",
      "id": "67908",
      "indicatorValue": "malicious.example.com",
      "indicatorType": "DomainName",
      "action": "Block",
      "createdBy": "d45ccecf-7406-47f6-90e5-05f0b3f76094",
      "severity": "High",
      "category": null,
      "application": null,
      "educateUrl": null,
      "bypassDurationHours": null,
      "title": "Indicator malicious.example.com of type DomainName",
      "description": " Netskope-CTE | demo | Example domain IOC",
      "recommendedActions": null,
      "creationTimeDateTimeUtc": "2026-02-09T07:01:36.6399107Z",
      "expirationTime": null,
      "lastUpdateTime": "2026-02-09T07:01:36.6399107Z",
      "lastUpdatedBy": null,
      "rbacGroupNames": [],
      "rbacGroupIds": [],
      "notificationId": null,
      "notificationBody": null,
      "version": null,
      "mitreTechniques": [],
      "historicalDetection": false,
      "lookBackPeriod": null,
      "generateAlert": true,
      "additionalInfo": null,
      "createdByDisplayName": "Demo app",
      "externalId": null,
      "createdBySource": "PublicApi",
      "certificateInfo": null
    }
    Delete Indicators

    API endpoint: <Base URL>/api/indicators/{id}

    Method: DELETE

    Headers

    KeyValue
    AuthorizationBearer <auth_token>
    Content-Typeapplication/json
    Acceptapplication/json
    User-Agentnetskope-ce-6.1.0-cte-microsoft-defender-for-endpoint-v1.4.0

    Parameters

    KeyValue
    idID of the Indicator to delete on Defender platform
    Delete Indicators for retraction

    API endpoint: <Base URL>/api/indicators/BatchDelete

    Method: POST

    Headers

    KeyValue
    AuthorizationBearer <auth_token>
    Content-Typeapplication/json
    Acceptapplication/json
    User-Agentnetskope-ce-6.1.0-cte-microsoft-defender-for-endpoint-v1.4.0

    Body

    {
        "IndicatorIds": [
            "<Indicator ID>"
        ]
    }

    Sample API Response

    Status Code: 204 No Content
    Performance Matrix

    Here is the performance reading conducted by pulling and sharing 15K indicators from/to Microsoft Defender for Endpoint on a Large CE Stack with these specifications.

    DescriptionSpecification
    Stack detailsSize: Large
    RAM: 32 GB
    CPU: 16 Cores
    Indicator fetched from Microsoft Defender for Endpoint ~15K IOCs per minute
    Indicators shared with CrowdStrike~100 per minute
    For sharing of IoCs, Microsoft Defender has a rate limit of 100 IoCs per minute. Refer this documentation.
    User Agent

    netskope-ce-6.1.0-cte-microsoft-defender-for-endpoint-v1.4.0

    Workflow

    1. Get your Tenant ID, Application (Client) ID, and Client Secret from Microsoft Defender.
    2. Add API Permissions for Microsoft Defender.
    3. Configure the Microsoft Defender for Endpoint plugin.
    4. Configure a Business Rule for Microsoft Defender for Endpoint.
    5. Configure Sharing for Netskope and Microsoft Defender for Endpoint.
    6. Validate the Microsoft Defender for Endpoint Plugin.

    Watch a Video

    Click play to watch a video.

     

    Get your Tenant ID, Application (Client) ID and Client Secret from Microsoft Defender

    1. Go to https://entra.microsoft.com/ and log in with your credentials 

    2. Click App registrations.

    3. Click New Registration.

    4. Provide the name for the application and click Register.

    5. Copy the Application (Client ID), which is the Client (Application) ID in Netskope. Also copy the Directory (tenant) ID, which is tenant ID in Netskope. Click Certificates & Secrets.

    6. Click New client secret. Add a description and click Save.

    7. Copy the value; it is the Client Secret needed for the plugin configuration.

    Add API Permissions 

    1. In the left panel, click API permissions.

    2. Click Add a permission.

    3. Click APIs my organization uses, and then click WindowsDefenderATP.

    4. Click Application permissions.

    5. Select the Ti.ReadWrite.All permissions and click Add permission.

       Click Grant admin consent for Contoso.

      Click Yes.

    Configure the Microsoft Defender for Endpoint Plugin

    1. In Cloud Exchange, go to Settings > Plugin Store.

    2. Search for and select the Microsoft Defender for Endpoint v1.4.0 (CTE) plugin.

    3. Enter the Basic Information:

      • Configuration Name: Unique name for the configuration.
      • Sync Interval: Leave the default.
      • Aging Criteria: Expiry time of the plugin in days. (Default: 90)
      • Override Reputation: Set a value to override the reputation of indicators received from this configuration.
      • Tags Aggregate Strategy: Choose whether to append new tags to existing IoC(s) or overwrite them. These configuration parameters determine how tags are stored for indicators pulled for this configuration.
      • Enable SSL Validation: Enable SSL Certificate validation.
    4. Click Next and enter the Configuration Parameters:

      • Base URL: Base URL of the Microsoft Defender for Endpoint platform.
      • Tenant ID: Directory (Tenant) ID of the Microsoft Entra ID application.
      • Application ID: Application (Client) ID of the Microsoft Entra ID application.
      • Application Secret: Client Secret of the Microsoft Entra ID application.
      • IOC Source (Applicable only while sharing IoCs): The source where this indicator originated. This can be used for tracking where this indicator was defined. Limit 200 characters.
      • Type of Threat data to pull: Type of Threat data to pull. If no threat type is selected, all threat type indicators will be pulled.
      • Actions: Select the action(s) to filter the pulled indicators. If no action is selected, all indicators will be pulled regardless of their action.
      • Indicators with Generated Alert: Select whether to pull indicators based on their Generate Alert flag. Both pulls all indicators regardless of this flag.
      • Enable Polling: Enable/Disable polling data from Microsoft Defender for Endpoint. Disable if you only need to push indicators to Microsoft Defender for Endpoint.
      • Retraction Interval (in days): Specify the number of days for which IoC retraction should be run for Microsoft Defender for Endpoint indicators. This parameter is applicable only if IoC(s) Retraction is enabled in Threat Exchange Settings. Value must be between 1 and 365.
      • Initial Range (in days): Number of days to pull the data for the initial run.
    5. Click Save. 

    Configure a Threat Exchange Business Rule for Microsoft Defender for Endpoint

    To share indicators fetched from the Microsoft Defender for Endpoint to Netskope, and vice-versa, you need to have a business rule that will filter out the indicators that you want to share. To configure a business rule:

    1. In Threat Exchange, go to Business Rules and click Create New Rule.

    2. Add the filter according to your requirements in the rule, and then click Save.

      FQDN present in Cloud Exchange will be shared as URL/Domain in Microsoft Defender.

    Configure Sharing for Netskope and Microsoft Defender for Endpoint

    To share IoCs from the Netskope Cloud Exchange to the Microsoft Defender for Endpoint platform, and vice versa, follow these steps:

    1. In Threat Exchange, go to Sharing and click Add Sharing Configuration.

    2. Select the Source Configuration (Netskope CTE), the Business Rule, the Destination Configuration (Microsoft Defender for Endpoint), and Target(s). Enter these values:

      • Action: The action that is taken if the indicator is discovered in the organization.
      • Generate Alert: Generate alerts for the indicators. Note that for the action type Audit, the Generate Alert will be Yes by default, so even if you keep it as No with the action type Audit you will see the shared IoCs on Defender will have Generate alert as Yes.
      • Allow Existing Indicators to be deleted?: Whether or not to delete the existing indicator(s) from the Microsoft Defender for Endpoint platform to insert new indicator(s). If Yes is selected, the oldest indicator will be deleted when max capacity of 15000 active indicators per tenant is exceeded.
    3. Click Save.

    4. Follow these steps again, but vice-versa for sharing Microsoft Defender for Endpoint IoCs to Netskope. Select your Source Configuration as Microsoft Defender for Endpoint, a Business Rule, Destination Configuration (CTE Netskope Threat Exchange), and Target.

    5. When finished, click Save.

    Validate the Microsoft Defender for Endpoint Plugin

    Validate the Pull

    Pulled data will be listed in Threat Exchange at Threat IoCs. You can filter the IoCs pulled from the platform using the filter: sources.source,contains <plugin name>.

    To verify pulled logs in Cloud Exchange, go to Logging and search logs for the Microsoft Defender for Endpoint plugin.

    To verify the data available for pulling on Microsoft Defender for Endpoint, log in to Microsoft Defender and go to Settings > Endpoints > Indicators. You can verify URL indicators from IP Addresses and URLs/Domains page, and MD5 and SHA256 from the File Hashes page.

    Validate the Push

    Shared IoCs to Microsoft Defender for Endpoint can be verified at Logging in Cloud Exchange.

    Note

    • For sharing of IoCs, Microsoft Defender has a rate limit of 100 IoCs per minute. Refer to the documentation.
    • If the IoCs are not shared within expected time and you do not see any logs in CE related to sharing after the initial log for sharing start then it may be due to the rate limit of Microsoft Defender. You can manually check via the Microsoft Defender’s API, whether the rate limit is exhausted or not for sharing IOCs.

    To verify shared indicators on Microsoft Defender. Log in to Microsoft Defender and go to Settings > Endpoints > Indicators. 

    You can filter shared indicators by applying filter like “Created by: <app_name>”

    FQDN present in Cloud Exchange will be shared as URL/Domain in Microsoft Defender.

    Validate the Retraction

    For verifying the Retracted IoCs from Microsoft Defender, check the logs for IoC Retraction example: message Like “CTE Microsoft Defender for Endpoint” && message Like “retraction”. 

    The IoCs that are deleted on the Microsoft Defender or fall outside the retraction Interval will be marked as Retracted in Cloud Exchange as per the plugin configuration parameters. 

    To check the retracted IoCs in Cloud Exchange, go to Threat IoCs and search for “sources.source Like “CTE CrowdStrike” && sources.retracted Is equal true”. 

    Here’s the Destination Profile on the Netskope tenant before push retraction for CTE Netskope Threat Exchange executes:

    You can verify the deletion of IoC from Netskope tenant from the Retraction result filed under particular IoC. In the below image you can see the Retraction result is marked as CTE Netskope Threat Exchange: retracted that means it was deleted from the Netskope tenant.

    The sharing result will only be marked if the IoCs are pulled from the source plugin after creating the sharing configuration.

    Here’s the URL List on the Netskope tenant after push retraction for CTE Netskope Threat Exchange executes:

    This plugin also supports push retraction, which means IoCs pulled from 3rd-party platforms that were shared to Microsoft Defender platforms, and were marked as retracted in Cloud Exchange, will also get deleted from the Microsoft Defender platform. You can verify the same through the Retraction result field.
    This is an MD file present on Defender:

    Here the retraction result is CTE Microsoft Defender for Endpoint: retracted this means that particular IoC was deleted from Microsoft Defender platform as it was marked as retracted yes in Cloud Exchange.

    MD5 was deleted from the Defender platform:

    Troubleshooting the Microsoft Defender for Endpoint Plugin

    Unable to configure the plugin

    This may be due to one of these reasons:

    • Invalid configuration parameters. 
    • Insufficient permissions.
    • License Error: During configuration of plugin if you receive error message “Plugin: Microsoft Defender for Endpoint, Validation error occurred. Received status code: 403, Unauthorized request – No active license found”, it may indicate that you have selected an incorrect Base URL for the credentials used.

    What to do:

    1. Verify all Tenant ID, Application ID and  Application Secret are correct and have proper permissions. Follow the Configuration on Microsoft Defender section.
    2. Verify proper permissions are provided.
    Unable to share IOCs to Microsoft Defender for Endpoint. 

    This may be due to the max capacity of 15000 active indicators per tenant on Microsoft Defender for Endpoint.

    What to do:

    Check the total number of IoCs on your Microsoft Defender for Endpoint. If it is 15k then you can edit the sharing configuration with Allow Existing Indicators to be deleted? fieldas Yes. If Yes is selected, the oldest indicator will be deleted when max capacity of 15000 active indicators per tenant is exceeded.

    Error while upgrading the plugin

    While updating the plugin from version v1.3.0 to version v1.3.1 user will get an validation error while saving the plugin as follows:

    What to do:
    In this case the follow the steps to successfully enable the plugin:

    1. Select the skip option.
    2. Go to the configured Threat exchange plugin, click on the edit icon for the Microsoft Defender for Endpoint plugin, and remove the actions Alert and Alert And Block if selected previously. 
    3. Select the value for Indicators with Generated Alert field as per your requirement whether you want to pull all the indicators or the one with generated alerts yes or no.
    4. Save the plugin.
    5. Click on the enable icon and select Enable.
    In this Topic
    • Microsoft Defender for Endpoint Plugin for Threat Exchange