Mandiant Threat Intelligence
The Mandiant Threat Intelligence connector enables seamless integration of Mandiant's rich threat intelligence data into security workflows, providing timely and relevant information about emerging threats.
Mandiant Threat Intelligence provides comprehensive cyber threat intelligence that empowers security teams to understand the tactics, techniques, and procedures of adversaries. This connector enables seamless integration with Swimlane Turbine, allowing users to automate the retrieval of threat actor indicators, malware indicators, and detailed threat intelligence reports. By leveraging Mandiant's rich intelligence data, organizations can enhance their threat detection and response capabilities, ensuring a proactive security posture within the Swimlane ecosystem.
Prerequisites
To effectively utilize the Mandiant Threat Intelligence connector within Swimlane Turbine, ensure you have the following prerequisites:
- OAuth 2.0 client credentials for authentication with the following parameters:
- URL: Endpoint for the Mandiant Threat Intelligence API.
- API Key: Your unique identifier to authenticate with the Mandiant API.
- API Secret: A secret key paired with your API Key for enhanced security.
The Mandiant Threat Intelligence connector integrates with Swimlane Turbine to retrieve the indicators, threat actors, malware and report indicators.
Capabilities
This connector provides the following capabilities:
- Get Actor Indicators
- Get Indicator
- Get Indicator by Value and Type
- Get Malware Indicators
- Get Report Indicators
Asset Setup
This connector uses oAuth Authentication and requires the below parameters :
- Key ID
- Key Secret
Steps to generate keys for personal use (development and testing) from your Mandiant Advantage user account:
- Login in to Mandiant Advantage - https://advantage.mandiant.com
- Click the Settings menu
- From the APIv4 Access and Key section, click the Get Key ID and Secret button
- The Key ID and Key Secret are displayed, copy and paste these to a safe location
Notes
Configurations
Mandiant Oauth 2.0 Client Credentials
Authenticates Mandiant Threat Intelligence using oauth 2.0 client credentials
Configuration Parameters
Parameter | Description | Type | Required |
|---|---|---|---|
url | A URL to the target host. | string | Required |
client_id | API Key | string | Required |
client_secret | API Secret. | string | Required |
verify_ssl | Verify SSL certificate | boolean | Optional |
http_proxy | A proxy to route requests through. | string | Optional |
Actions
Get Actor Indicators
Retrieve a list of indicators for a specified Threat Actor from Mandiant Threat Intelligence, including associated UNC groups.
Endpoint
- URL: /v4/actor/{{id_or_name}}/indicators
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
path_parameters.id_or_name | string | Required | The id or name of the Threat Actor to return. |
Input Example
{"path_parameters":{"id_or_name":"threat-actor--0ac5c1db-8ad6-54b8-b4b9-c32fc738c54a"}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
id | string | Unique identifier |
indicator_count | object | Count value |
indicator_count.total | number | Output field: indicator_count.total |
indicator_count.hash | number | Output field: indicator_count.hash |
indicator_count.url | number | URL endpoint for the request |
indicator_count.fqdn | number | Output field: indicator_count.fqdn |
indicator_count.ipv4 | number | Output field: indicator_count.ipv4 |
indicator_count.email | number | Output field: indicator_count.email |
name | string | Name of the resource |
indicators | array | Output field: indicators |
indicators.first_seen | string | Output field: indicators.first_seen |
indicators.last_seen | string | Output field: indicators.last_seen |
indicators.mscore | number | Score value |
indicators.attributed_associations | array | Output field: indicators.attributed_associations |
indicators.attributed_associations.name | string | Name of the resource |
indicators.attributed_associations.id | string | Unique identifier |
indicators.attributed_associations.type | string | Type of the resource |
indicators.id | string | Unique identifier |
indicators.type | string | Type of the resource |
indicators.value | string | Value for the parameter |
Output Example
{"status_code":200,"response_headers":{},"reason":"OK","json_body":{"id":"threat-actor--0ac5c1db-8ad6-54b8-b4b9-c32fc738c54a","indicator_count":{"total":83,"hash":0,"url":0,"fqdn":14,"ipv4":69,"email":0},"name":"APT1","indicators":[{}]}}
Get Indicator
Retrieve a paginated list of indicators from Mandiant Threat Intelligence using defined parameters, including the start epoch.
Endpoint
- URL: /v4/indicator
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
parameters.limit | number | Optional | Defines the maximum number of results to return. Default 25 and maximum allowed 1000 |
parameters.offset | number | Optional | The number of items to skip before starting to collect the result set. If not specified, defaults to ZERO (0). The maximum amount of items that can be fetched using an offset and limit is 10,000. (The offset + limit must be <= 10,000) |
parameters.gte_mscore | number | Optional | Defines the minimum Indicator Confidence Score to return. |
parameters.exclude_osint | boolean | Optional | Defines if open source indicators should be returned. |
parameters.include_reports | boolean | Optional | Used to include related reports. |
parameters.report_limit | number | Optional | Defines the maximum number of reports in list. Default 25 and Maximum allowed 1000. |
parameters.include_campaigns | boolean | Optional | Used to include related campaigns |
parameters.start_epoch | number | Required | Defines the start time of the data to load in epoch format, based on an indicators last_updated value. The window must be less than 90 days. |
parameters.only_recent_days | number | Optional | Optionally defines the number of days of data to load relative to the specified start_epoch value and the indicators last_seen value. The default of 30 is recommended and will yield relevant indicators for most use cases. Minimum allowed 0 (last_seen will not be considered when setting to 0). Maximum allowed 365. |
parameters.end_epoch | number | Optional | Defines the end time of the data to load in epoch format, based on an indicators last_updated value. |
parameters.next | string | Optional | Used to get the next page of results. When using next no other parameters should be included in the request. NOTE:- The token returned is valid for 10 minutes. |
parameters.sort_by | string | Optional | The field on which sort needs to be performed. It can also be extended to support sort order by appending a ':' and sort order |
parameters.sort_order | string | Optional | Specify sort order - asc or desc |
Input Example
{"parameters":{"limit":25,"offset":0,"gte_mscore":80,"exclude_osint":true,"include_reports":true,"report_limit":1,"include_campaigns":true,"start_epoch":1700823637,"only_recent_days":15,"end_epoch":1653426342,"next":"","sort_by":"publish_date","sort_order":"desc"}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
indicators | array | Output field: indicators |
indicators.associated_hashes | array | Output field: indicators.associated_hashes |
indicators.associated_hashes.id | string | Unique identifier |
indicators.associated_hashes.type | string | Type of the resource |
indicators.associated_hashes.value | string | Value for the parameter |
indicators.attributed_associations | array | Output field: indicators.attributed_associations |
indicators.attributed_associations.id | string | Unique identifier |
indicators.attributed_associations.name | string | Name of the resource |
indicators.attributed_associations.type | string | Type of the resource |
indicators.first_seen | string | Output field: indicators.first_seen |
indicators.id | string | Unique identifier |
indicators.is_exclusive | boolean | Output field: indicators.is_exclusive |
indicators.is_publishable | boolean | Output field: indicators.is_publishable |
indicators.last_seen | string | Output field: indicators.last_seen |
indicators.last_updated | string | Output field: indicators.last_updated |
indicators.misp | object | Output field: indicators.misp |
indicators.misp.akamai | boolean | Output field: indicators.misp.akamai |
indicators.misp.alexa | boolean | Output field: indicators.misp.alexa |
indicators.misp.alexa_1M | boolean | Output field: indicators.misp.alexa_1M |
indicators.misp.amazon-aws | boolean | Output field: indicators.misp.amazon-aws |
indicators.misp.apple | boolean | Output field: indicators.misp.apple |
indicators.misp.automated-malware-analysis | boolean | Output field: indicators.misp.automated-malware-analysis |
indicators.misp.bank-website | boolean | Output field: indicators.misp.bank-website |
Output Example
{"indicators":[{"associated_hashes":[],"attributed_associations":[],"first_seen":"string","id":"12345678-1234-1234-1234-123456789abc","is_exclusive":true,"is_publishable":true,"last_seen":"string","last_updated":"string","misp":{},"mscore":123,"reports":[],"campaigns":[],"sources":[],"type":"string","value":"string"}],"next":"string"}
Get Indicator by value and Type
Retrieve a specific indicator object from Mandiant Threat Intelligence using its type and value.
Endpoint
- URL: /v4/indicator/{{indicator_type}}/{{indicator_value}}
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
path_parameters.indicator_type | string | Required | Parameters for the Get Indicator by value and Type action |
path_parameters.indicator_value | string | Required | Parameters for the Get Indicator by value and Type action |
Input Example
{"path_parameters":{"indicator_type":"ipv4","indicator_value":"39.52.41.194"}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
id | string | Unique identifier |
mscore | number | Score value |
type | string | Type of the resource |
value | string | Value for the parameter |
is_publishable | boolean | Output field: is_publishable |
sources | array | Output field: sources |
sources.first_seen | string | Output field: sources.first_seen |
sources.last_seen | string | Output field: sources.last_seen |
sources.osint | boolean | Output field: sources.osint |
sources.category | array | Output field: sources.category |
sources.category.file_name | string | Name of the resource |
sources.category.file | string | Output field: sources.category.file |
sources.source_name | string | Name of the resource |
misp | object | Output field: misp |
misp.akamai | boolean | Output field: misp.akamai |
misp.alexa | boolean | Output field: misp.alexa |
misp.amazon-aws | boolean | Output field: misp.amazon-aws |
misp.apple | boolean | Output field: misp.apple |
misp.automated-malware-analysis | boolean | Output field: misp.automated-malware-analysis |
misp.bank-website | boolean | Output field: misp.bank-website |
misp.captive-portals | boolean | Output field: misp.captive-portals |
misp.censys-scanning | boolean | Output field: misp.censys-scanning |
misp.check-host-net | boolean | Output field: misp.check-host-net |
Output Example
{"status_code":200,"response_headers":{"Date":"Thu, 20 Jun 2024 10:18:11 GMT","Content-Type":"application/json; charset=UTF-8","Transfer-Encoding":"chunked","Connection":"keep-alive","vary":"Origin","x-envoy-upstream-service-time":"12","via":"1.1 google","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"896b03695ee6445d-BOM","Content-Encoding":"gzip"},"reason":"OK","json_body":{"id":"ipv4--ad58d6ad-381e-5b21-9f31-36ef8404ea6f","mscore":50,"type":"ipv4","value":"39.52.41.194","is_publis...
Get Malware Indicators
Retrieve a list of indicators associated with a specified malware from Mandiant Threat Intelligence using either its ID or name.
Endpoint
- URL: /v4/malware/{{id_or_name}}/indicators
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
path_parameters.id_or_name | string | Required | The id or name of the Malware Family to return. |
Input Example
{"path_parameters":{"id_or_name":"malware--81f821d1-4ec9-534d-8dc7-53da47e5074a"}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
id | string | Unique identifier |
indicator_count | object | Count value |
indicator_count.total | number | Output field: indicator_count.total |
indicator_count.hash | number | Output field: indicator_count.hash |
indicator_count.url | number | URL endpoint for the request |
indicator_count.fqdn | number | Output field: indicator_count.fqdn |
indicator_count.ipv4 | number | Output field: indicator_count.ipv4 |
indicator_count.email | number | Output field: indicator_count.email |
name | string | Name of the resource |
indicators | array | Output field: indicators |
indicators.first_seen | string | Output field: indicators.first_seen |
indicators.last_seen | string | Output field: indicators.last_seen |
indicators.mscore | number | Score value |
indicators.attributed_associations | array | Output field: indicators.attributed_associations |
indicators.attributed_associations.name | string | Name of the resource |
indicators.attributed_associations.id | string | Unique identifier |
indicators.attributed_associations.type | string | Type of the resource |
indicators.id | string | Unique identifier |
indicators.type | string | Type of the resource |
indicators.value | string | Value for the parameter |
Output Example
{"status_code":200,"response_headers":{},"reason":"OK","json_body":{"id":"malware--81f821d1-4ec9-534d-8dc7-53da47e5074a","indicator_count":{"total":4,"hash":0,"url":0,"fqdn":4,"ipv4":0,"email":0},"name":"008S","indicators":[{}]}}
Get Report Indicators
Retrieve indicator objects and associated reports from Mandiant Threat Intelligence using the provided ID.
Endpoint
- URL: /v4/indicator/{{id}}/reports
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
path_parameters.id | string | Required | The id of the object to return. |
Input Example
{"path_parameters":{"id":"ipv4--98019aaa-43af-5869-b530-591a9a9d9fb3"}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
id | string | Unique identifier |
mscore | number | Score value |
type | string | Type of the resource |
value | string | Value for the parameter |
first_seen | string | Output field: first_seen |
last_seen | string | Output field: last_seen |
is_customer_releasable | boolean | Output field: is_customer_releasable |
reports | array | Output field: reports |
reports.id | string | Unique identifier |
reports.report_id | string | Unique identifier |
reports.type | string | Type of the resource |
reports.title | string | Output field: reports.title |
reports.published_date | string | Date value |
reports.audience | array | Output field: reports.audience |
next | string | Output field: next |
Output Example
{"status_code":200,"response_headers":{},"reason":"OK","json_body":{"id":"ipv4--98019aaa-43af-5869-b530-591a9a9d9fb3","mscore":100,"type":"ipv4","value":"190.31.53.131","first_seen":"2020-08-05T21:31:41Z","last_seen":"2021-01-10T06:52:11Z","is_customer_releasable":true,"reports":[{}],"next":"FGluY2x1ZGVfY29udGV4dF91dWlkDnF1ZXJ5V..."}}
Response Headers
Header | Description | Example |
|---|---|---|
CF-Cache-Status | HTTP response header: CF-Cache-Status | DYNAMIC |
CF-RAY | HTTP response header: CF-RAY | 84a85266a8349a8a-NAG |
Connection | HTTP response header: Connection | keep-alive |
Content-Encoding | HTTP response header: Content-Encoding | gzip |
Content-Type | The media type of the resource | application/json |
Date | The date and time at which the message was originated | Thu, 01 Jan 2024 00:00:00 GMT |
Server | Information about the software used by the origin server | cloudflare |
Set-Cookie | HTTP response header: Set-Cookie | __cf_bm=P5a9ERUKxqeSpUvakTfq2HEXEcyPzWcsIJmiLpYXsw4-1706099785-1-AcmmiM+V5EgsQBVdLpkOjCvYrFQnMgTrKNyM+4FpMV1SKdQZLlVd3KymzHAg6q1EZoYqq6X3x5b1QxlQNbynMQc=; path=/; expires=Wed, 24-Jan-24 13:06:25 GMT; domain=.mandiant.com; HttpOnly; Secure; SameSite=None |
Strict-Transport-Security | HTTP response header: Strict-Transport-Security | max-age=15724800; includeSubDomains |
Transfer-Encoding | HTTP response header: Transfer-Encoding | chunked |
vary | HTTP response header: vary | Origin |
via | HTTP response header: via | 1.1 google |
x-amzn-trace-id | HTTP response header: x-amzn-trace-id | 8706bdd97032bce4c21759f54ecfad69 |
x-envoy-upstream-service-time | HTTP response header: x-envoy-upstream-service-time | 12 |