AWS GuardDuty Plugin for Threat Exchange

AWS GuardDuty Plugin for Threat Exchange

This document explains how to configure the AWS GuardDuty plugin with the Threat Exchange module of the Netskope Cloud Exchange platform. This integration allows for the AWS GuardDuty plugin fetches SHA256 IoCs from AWS GuardDuty.


To complete this configuration, you need:

  • A Netskope Tenant (or multiple, for example, production and development/test instances).
  • A Netskope Threat prevention subscription for malicious file hash sharing.
  • A Netskope Cloud Exchange tenant with the Threat Exchange module already configured.
  • Access to your AWS Access Key ID (Public Key), AWS Secret Access Key (Private Key), AWS Session Token (Optional, only for temporary user), Region Name, and Detector ID (Unique Detector ID).
AWS GuardDuty Plugin Support


  1. Get your AWS GuardDuty credentials.
  2. Configure the AWS GuardDuty plugin.
  3. Configure sharing between Netskope and AWS GuardDuty.
  4. Validate the AWS GuardDuty Plugin.

Click play to watch a video.


Get your AWS GuardDuty Credentials

There are two options for entitling Cloud Exchange to pull IoC information from your GuardDuty service: using an access/secret key, or an AWS session token. AWS recommends the latter when Cloud Exchange is running in an AWS environment.

Get your AWS Access Key ID (Public Key)

  1. Log in to your AWS Console.
  2. Click on the top right corner; you will see a screen similar to this.
  3. Scroll down and you’ll see the Create access key button.
  4. Click Create access key. AWS will automatically create an access key and secret access key to use in Threat Exchange.
  5. Copy the Access and Secret access keys.


    The Secret access key will only be shown once, so store it in a safe location for later use

Get your AWS Session Token

Get your Detector ID

  1. Open the AWS GuardDuty console.
  2. Go to Settings.
  3. Copy the Detector ID for later use.

Configure the AWS GuardDuty Plugin for Threat Exchange

  1. In Cloud Exchange, go to Settings > Plugins.
  2. Search for and select the AWS GuardDuty plugin box to open the plugin creation page.
  3. Enter a configuration name.
  4. Enter the sync interval according to your needs.
  5. Enter an Aging criteria.
  6. Click Next.
  7. Enter your AWS Access key ID (Public key) and AWS Secret Access key (Public Key), OR the AWS Session Key Token, and then Region Name and Detector ID.
  8. Enter an Initial Range in days (to fetch findings from the last X days).
  9. Click Save.
  10. You’ll see the AWS GuardDuty plugin on the Threat Exchange > Plugins page.

Configure Sharing for Netskope and AWS GuardDuty

  1. Go to Threat Exchange and select Sharing. The Sharing page displays the existing relationships for each sharing configuration in grid view as shown below. The Sharing page also has inputs to configure new sharing from one plugin to another.
  2. Click Add Sharing Configuration, and in the Source Configuration dropdown list, select AWS GuardDuty.
  3. Select a Business Rule, and then select Netskope for the Destination Configuration. Sharing configurations are unidirectional. data obtained from one plugin is shared with another plugin.
  4. Select a Target. Each plugin will have a different target or destination for the IoC.
  5. For Add a File Hash List, enter a List Name, List Size, and Default File Hash. The List Name needs to exist in your Netskope UI at Settings > Policies > Profiles. For information about creating a File Profile for hashes, refer to Adding a File Profile
  6. Click Save.

Adding a new sharing configuration on the active source poll will share the existing IoCs of the source configuration to the destination configuration. Whenever a new sharing configuration is built, all the active IoCs will also be considered for sharing if they match the source/destination combination.


Plugins that do not have API for ingesting data cannot receive threat data. This is true of the installed plugin API Source, which provides a bucket associated with an API endpoint for remote 3rd-party systems to push data to. Once a Sharing policy has been added, it takes effect.

After a sharing configuration has been created, the sharing table will show the rule being invoked, the source system providing the potential IoC matches, the destination system that will receive matching IoC, and the target applicable to that rule. Multiple Sharing configurations can be made to support mapping certain IoC to multiple targets even on the system destination system.

Modify, Test, or Delete a Sharing Configuration

Each configuration supports 3 actions:

  • Edit the rule by clicking on the pencil icon.
  • Test the rule by clicking on the synchronization icon. This tests how many IoC will actually be sent to the destination system based on the timeframe and the rule.
  • Delete the rule by clicking on the garbage can icon.

Validate the AWS GuardDuty Plugin

Validate in Netskope Cloud Exchange

  1. Open Threat Exchange.
  2. Go to Threat IoCs.
  3. You’ll be able to see the page similar to this.
  4. Create a filter for GuardDuty.
  5. Select Source.
  6. Select Is equal.
  7. Enter GuardDuty in the text box.
  8. Click Apply Filter.
  9. Now the only IoCs shown will be those sourced from GuardDuty.
  10. Click the down carrot (v” button to explore matching IoC.
  11. Now you’ll see all the mapped fields that apply to each IoC, including tags that match to categories from GuardDuty, as well as from the original source (in this example, from BitDefender and from Private).

The comments field will include other data from GuardDuty associated with each filehash. Any or all of these can be used to create a filter for a business rule. For example, you could match on Comments contains any in eicar, and NOT share those IoCs used for testing.


Validate in AWS GuardDuty

Validate the number of Findings.

  1. Open the GuardDuty Console. You’ll see a screen similar to this.
  2. See the number of findings (showing 113 of 113).
  3. These findings should be able to match with the number of findings Cloud Exchange is retrieving.


    This may vary depending on initial sync. For that you can use a filter.

Share this Doc
In this topic ...