Skip to main content

Doppel

This Integration is part of the Doppel Pack.#

Supported versions

Supported Cortex XSOAR versions: 6.10.0 and later.

Overview#

Doppel is a Modern Digital Risk Protection Solution, that detects the phishing and brand cyber attacks on the emerging channels. Doppel scans millions of channels online which includes, social media, domains, paid ads, dark web, emerging channels, etc. Doppel can identify the malicious content and cyber threats, and enables their customers to take down the digital risks proactively. The Cortex XSOAR pack for Doppel mirrors the alerts created by Doppel as Cortex XSOAR incidents. The pack also contains the commands to perform different operations on Doppel alerts.

Configure Doppel on Cortex XSOAR#

  1. Navigate to Settings & Info > Settings > Integrations > Instances.

  2. Search for Doppel.

  3. Click Add instance to create and configure a new integration instance.

    ParameterDescriptionRequired
    Doppel Tenant URLThe tenant URL of the Doppel.True
    API KeyAPI key to use for the connection.True
    Fetch incidentsFalse
    Incident typeFalse
    First fetch timestamp (<number> <time unit>, e.g., 12 hours, 7 days, 3 months, 1 year)False
    Fetch incidents timeout: The time limit in seconds for fetch incidents to run. Leave this empty to cancel the timeout limit.False
    Number of incidents for each fetch.: Due to API limitations, the maximum is 100.False
    Trust any certificate (not secure)False
    Use system proxy settingsFalse
    Incidents Fetch IntervalFalse
    Mirror DirectionChoose the direction to mirror the incident: Incoming (from Doppel to Cortex XSOAR), Outgoing (from Cortex XSOAR to Doppel), or Incoming and Outgoing (from/to Cortex XSOAR and Doppel).False
  4. Click Test to validate the URLs, token, and connection.

Commands#

You can execute these commands from the Cortex XSOAR CLI, as part of an automation, or in a playbook. After you successfully execute a command, a DBot message appears in the War Room with the command details.

doppel-get-alert#


Retrieves the alert details by ID or entity. Must include either ID or entity.

Base Command#

doppel-get-alert

Input#

Argument NameDescriptionRequired
idThe ID of the alert to retrieve details for.Optional
entityThe alerted entity to retrieve details for.Optional

Context Output#

PathTypeDescription
Doppel.Alert.idStringThe unique identifier of the alert (e.g., TET-1953421).
Doppel.Alert.entityStringThe URL or profile link related to the alert.
Doppel.Alert.brandStringThe brand associated with the alert.
Doppel.Alert.queue_stateStringThe current state of the alert in the queue.
Doppel.Alert.entity_stateStringThe current state of the alert entity (e.g., active, inactive).
Doppel.Alert.severityStringThe severity level of the alert (e.g., low, medium, high).
Doppel.Alert.productStringThe product category associated with the alert (e.g., social media).
Doppel.Alert.platformStringThe platform on which the alert was generated (e.g., Bluesky).
Doppel.Alert.sourceStringThe source from which the alert was generated (e.g., Analyst Upload).
Doppel.Alert.notesUnknownAdditional notes related to the alert, if any.
Doppel.Alert.created_atDateThe timestamp when the alert was created.
Doppel.Alert.doppel_linkStringThe link to the alert on the Doppel platform.
Doppel.Alert.entity_contentUnknownAdditional content related to the alert entity.
Doppel.Alert.audit_logs.timestampDateTimestamp when the audit log entry was created.
Doppel.Alert.audit_logs.typeStringThe type of audit log entry (e.g., alert_create).
Doppel.Alert.audit_logs.valueStringThe value of the audit log entry (e.g., needs_review).
Doppel.Alert.audit_logs.changed_byStringThe user who made the change, if available.
Doppel.Alert.audit_logs.metadataUnknownAdditional metadata related to the audit log.
Doppel.Alert.tagsUnknownTags associated with the alert.
Doppel.Alert.uploaded_byStringThe user or source who uploaded the alert (e.g., Doppel).

Command example#

!doppel-get-alert id="TST-31"

Context Example#

{
"Doppel": {
"Alert": {
"id": "TST-31",
"entity": "http://dummyrul.com",
"brand": "test_brand",
"queue_state": "doppel_review",
"entity_state": "active",
"severity": "medium",
"product": "domains",
"platform": "domains",
"source": "Analyst Upload",
"notes": null,
"created_at": "2024-11-27T06:51:50.357664",
"doppel_link": "https://app.doppel.com/alerts/TST-31222",
"entity_content": {
"root_domain": {
"domain": "dummyrul.com",
"registrar": null,
"ip_address": null,
"country_code": null,
"hosting_provider": null,
"contact_email": null
}
},
"audit_logs": [
{
"timestamp": "2024-11-27T06:51:50.357664",
"type": "alert_create",
"value": "needs_review",
"changed_by": "currentuser@doppel.com",
"metadata": {}
}
],
"tags": [],
"uploaded_by": "currentuser@doppel.com"
}
}
}

Human Readable Output#

Alert Details#

IDEntityBrandQueue StateEntity StateSeverityProductPlatformSourceCreated AtDoppel LinkUploaded By
TST-31http://dummyrul.comtest_branddoppel_reviewactivemediumdomainsdomainsAnalyst Upload2024-11-27T06:51:50.357664Doppel Linkcurrentuser@doppel.com

doppel-create-alert#


Creates an alert for a specified entity. This command requires the entity to be provided in the arguments.

Base Command#

doppel-create-alert

Input#

Argument NameDescriptionRequired
entityThe entity for which the alert should be created.Required

Context Output#

PathTypeDescription
Doppel.CreatedAlert.idStringThe unique ID of the alert.
Doppel.CreatedAlert.entityStringThe entity URL associated with the alert.
Doppel.CreatedAlert.doppel_linkStringThe link to view the alert in the Doppel platform.

Command example#

!doppel-create-alert entity="http://example.com"

Context Example#

{
"CreatedAlert": {
"id": "TST-1001",
"entity": "http://example.com",
"doppel_link": "https://app.doppel.com/alerts/TST-1001"
}
}

Human Readable Output#

Created Alert#

IDEntityDoppel Link
TST-1001http://example.comDoppel Link

doppel-update-alert#


Updates an alert in the Doppel platform. Either alert_id or entity must be specified.

Base Command#

doppel-update-alert

Input#

Argument NameDescriptionRequired
alert_idThe ID of the alert to update. Either alert_id or entity should be specified, not both.Optional
entityThe entity of the alert to update. Either alert_id or entity should be specified, not both.Optional
queue_stateStatus of which queue the alert is in. Possible values are: doppel_review, actioned, needs_confirmation, monitoring, taken_down, archived.Optional
entity_stateState of the alert. Possible values are: active, down, parked.Optional
commentA comment to add while updating the alert.Optional

Context Output#

PathTypeDescription
Doppel.UpdatedAlert.idStringUnique identifier for the alert (e.g., TET-1953421).
Doppel.UpdatedAlert.entityStringThe URL or identifier associated with the alert.
Doppel.UpdatedAlert.brandStringThe brand associated with the alert.
Doppel.UpdatedAlert.queue_stateStringThe current state of the alert in the queue.
Doppel.UpdatedAlert.entity_stateStringThe current state of the alert entity.
Doppel.UpdatedAlert.severityStringThe severity of the alert (e.g., Low, Medium, High).
Doppel.UpdatedAlert.productStringThe product category related to the alert.
Doppel.UpdatedAlert.platformStringThe platform associated with the alert (e.g., Bluesky).
Doppel.UpdatedAlert.sourceStringThe source of the alert (e.g., Analyst Upload).
Doppel.UpdatedAlert.notesUnknownAdditional notes regarding the alert.
Doppel.UpdatedAlert.created_atDateTimestamp when the alert was created.
Doppel.UpdatedAlert.doppel_linkStringURL link to the alert in Doppel Vision.
Doppel.UpdatedAlert.entity_contentUnknownContent details of the alert entity.
Doppel.UpdatedAlert.audit_logs.timestampDateTimestamp of the audit log entry.
Doppel.UpdatedAlert.audit_logs.typeStringThe type of audit log entry.
Doppel.UpdatedAlert.audit_logs.valueStringThe value associated with the audit log entry.
Doppel.UpdatedAlert.audit_logs.changed_byStringThe user who changed the alert, or null if system-generated.
Doppel.UpdatedAlert.audit_logs.metadataUnknownAdditional metadata related to the audit log entry.
Doppel.UpdatedAlert.tagsUnknownList of tags associated with the alert.
Doppel.UpdatedAlert.uploaded_byStringThe user or system that uploaded the alert (e.g., Doppel).

Command example#

!doppel-update-alert alert_id="TST-31" queue_state="actioned" entity_state="down" comment="Updated due to new findings"

Context Example#

{
"Doppel": {
"UpdatedAlert": {
"id": "TST-31",
"entity": "http://dummyrul.com",
"brand": "test_brand",
"queue_state": "actioned",
"entity_state": "down",
"severity": "medium",
"product": "domains",
"platform": "domains",
"source": "Analyst Upload",
"notes": null,
"created_at": "2024-11-27T06:51:50.357664",
"doppel_link": "https://app.doppel.com/alerts/TST-31222",
"entity_content": {
"root_domain": {
"domain": "dummyrul.com",
"registrar": null,
"ip_address": null,
"country_code": null,
"hosting_provider": null,
"contact_email": null
}
},
"audit_logs": [
{
"timestamp": "2024-11-27T06:51:50.357664",
"type": "alert_update",
"value": "actioned",
"changed_by": "currentuser@doppel.com",
"metadata": {}
}
],
"tags": [],
"uploaded_by": "currentuser@doppel.com"
}
}
}

Human Readable Output#

Updated Alert Details#

IDEntityBrandQueue StateEntity StateSeverityProductPlatformSourceCreated AtDoppel LinkUploaded By
TST-31http://dummyrul.comtest_brandactioneddownmediumdomainsdomainsAnalyst Upload2024-11-27T06:51:50.357664Doppel Linkcurrentuser@doppel.com

doppel-create-abuse-alert#


Create an alert for the provided value to abuse box. Will fail if the alert value is invalid or is protected.

Base Command#

doppel-create-abuse-alert

Input#

Argument NameDescriptionRequired
entityThe entity for which the abuse alert should be created.Required

Context Output#

PathTypeDescription
Doppel.AbuseAlert.messageStringMessage indicating the status of the submission process.

Command example#

!doppel-create-abuse-alert entity="http://malicious.com"

Context Example#

{
"Doppel": {
"AbuseAlert": {
"message": "Abuse alert created successfully"
}
}
}

Human Readable Output#

Abuse Alert Submission#

Message
Abuse alert created successfully

doppel-get-alerts#


Retrieves a list of alerts. The result can be filtered by provided parameters.

Base Command#

doppel-get-alerts

Input#

Argument NameDescriptionRequired
search_keyCurrently only supports search by URL.Optional
queue_stateNew queue status to update alert with (ID required). Possible values: actioned, needs_confirmation, doppel_review, monitoring, taken_down, archived.Optional
productProduct category the report belongs to. Possible values: domains, social_media, mobile_apps, ecommerce, crypto, emails, paid_adds.Optional
created_beforeFilter alerts created before a specific time. Use the ISO 8601 format, such as 2020-01-01T00:11:22Z. For durations, enter values like '12 hours' or '7 days'.Optional
created_afterFilter alerts created after a specific time. Use the ISO 8601 format, such as 2020-01-01T00:11:22Z. For durations, enter values like '12 hours' or '7 days'.Optional
sort_typeThe field to sort the reports by. Defaults to date_sourced. Possible values: date_sourced, date_last_actioned.Optional
sort_orderThe order to sort the reports by. Defaults to desc. Possible values: asc, desc.Optional
pagePage number for pagination; defaults to 0.Optional
tagsList of tags to filter alerts.Optional

Context Output#

PathTypeDescription
Doppel.GetAlerts.alerts.idStringThe unique ID of the alert.
Doppel.GetAlerts.alerts.entityStringThe entity associated with the alert.
Doppel.GetAlerts.alerts.brandStringThe brand related to the alert.
Doppel.GetAlerts.alerts.queue_stateStringThe queue state of the alert.
Doppel.GetAlerts.alerts.entity_stateStringThe current state of the entity (active/inactive).
Doppel.GetAlerts.alerts.severityStringThe severity of the alert.
Doppel.GetAlerts.alerts.productStringThe product related to the alert.
Doppel.GetAlerts.alerts.platformStringThe platform associated with the alert.
Doppel.GetAlerts.alerts.sourceStringThe source of the alert.
Doppel.GetAlerts.alerts.created_atDateThe timestamp when the alert was created.
Doppel.GetAlerts.alerts.doppel_linkStringThe link to the alert in the Doppel platform.
Doppel.GetAlerts.alerts.entity_content.root_domain.domainStringThe domain associated with the alert.
Doppel.GetAlerts.alerts.entity_content.root_domain.registrarStringThe registrar of the domain.
Doppel.GetAlerts.alerts.entity_content.root_domain.ip_addressStringThe IP address of the domain.
Doppel.GetAlerts.alerts.entity_content.root_domain.country_codeStringThe country code of the domain.
Doppel.GetAlerts.alerts.entity_content.root_domain.hosting_providerStringThe hosting provider for the domain.
Doppel.GetAlerts.alerts.entity_content.root_domain.contact_emailStringThe contact email of the domain.
Doppel.GetAlerts.alerts.entity_content.root_domain.mx_recordsUnknownThe MX records associated with the domain.
Doppel.GetAlerts.alerts.entity_content.root_domain.nameserversUnknownThe nameservers associated with the domain.
Doppel.GetAlerts.alerts.audit_logs.timestampDateThe timestamp of the audit log.
Doppel.GetAlerts.alerts.audit_logs.typeStringThe type of the audit log.
Doppel.GetAlerts.alerts.audit_logs.valueStringThe value associated with the audit log.
Doppel.GetAlerts.alerts.audit_logs.changed_byStringThe user or system that changed the status.
Doppel.GetAlerts.alerts.audit_logs.metadataUnknownAdditional metadata for the audit log.
Doppel.GetAlerts.alerts.tagsUnknownThe tags associated with the alert.
Doppel.GetAlerts.alerts.uploaded_byStringThe source or user who uploaded the alert.
Doppel.GetAlerts.metadata.countIntegerThe total count of alerts.
Doppel.GetAlerts.metadata.pageIntegerThe current page number in the results.
Doppel.GetAlerts.metadata.total_pagesIntegerThe total number of pages for the alerts.
Doppel.GetAlerts.metadata.page_sizeIntegerThe number of alerts per page.

Command example#

!doppel-get-alerts search_key="http://example.com" sort_order="desc" page="1"

Context Example#

{
"Doppel": {
"GetAlerts": {
"alerts": [
{
"id": "ALERT-12345",
"entity": "http://example.com",
"brand": "Test Brand",
"queue_state": "doppel_review",
"entity_state": "active",
"severity": "high",
"product": "domains",
"platform": "website",
"source": "Analyst Upload",
"created_at": "2024-11-27T10:20:30Z",
"doppel_link": "https://app.doppel.com/alerts/ALERT-12345",
"entity_content": {
"root_domain": {
"domain": "example.com",
"registrar": "Example Registrar",
"ip_address": "192.168.1.1",
"country_code": "US",
"hosting_provider": "Example Hosting",
"contact_email": "contact@example.com"
}
},
"audit_logs": [
{
"timestamp": "2024-11-27T10:21:00Z",
"type": "alert_create",
"value": "needs_review",
"changed_by": "analyst@example.com",
"metadata": {}
}
],
"tags": ["phishing", "malware"],
"uploaded_by": "analyst@example.com"
}
],
"metadata": {
"count": 1,
"page": 1,
"total_pages": 1,
"page_size": 50
}
}
}
}

Human Readable Output#

Alert Details#

IDEntityBrandQueue StateEntity StateSeverityProductPlatformSourceCreated AtDoppel LinkUploaded By
ALERT-12345http://example.comTest Branddoppel_reviewactivehighdomainswebsiteAnalyst Upload2024-11-27T10:20:30ZDoppel Linkanalyst@example.com

get-mapping-fields#


Returns the list of fields for an incident type.

Base Command#

get-mapping-fields

Input#

Argument NameDescriptionRequired

Context Output#

There is no context output for this command.

update-remote-system#


Pushes local changes to the remote system. If an XSOAR Incident is closed, created via Doppel Integration, then on Doppel Portal the Alert status will be updated to archived status.

Base Command#

update-remote-system

Input#

Argument NameDescriptionRequired

Context Output#

There is no context output for this command.

get-remote-data#


Get remote data from a remote incident. This method does not update the current incident, and should be used for debugging purposes.

Base Command#

get-remote-data

Input#

Argument NameDescriptionRequired
idThe ticket ID.Required
lastUpdateRetrieve entries that were created after lastUpdate.Required

Context Output#

There is no context output for this command.

get-modified-remote-data#


Gets the list of incidents that were modified since the last update time. Note that this method is here for debugging purposes. The get-modified-remote-data command is used as part of a Mirroring feature, which is available from version 6.1.

Base Command#

get-modified-remote-data

Input#

Argument NameDescriptionRequired
last_updateRetrieve entries that were created after lastUpdate.Optional

Context Output#

There is no context output for this command.

Incident Mirroring#

Mirroring In (Doppel โ†’ XSOAR)#

When incidents are mirrored into Cortex XSOAR from Doppel:

  1. Any changes in Doppel alerts (mirroring incoming fields) will be reflected in Cortex XSOAR incidents.

Supported Fields

The following fields are mirrored:

  1. Doppel Queue State โ€“ Indicates the queue where the alert is currently assigned.
  2. Doppel Entity State โ€“ Represents the status of the alert.
  3. Audit Log History โ€“ A record of all changes made to the alert.

Mirroring Out (XSOAR โ†’ Doppel)#

When incidents are mirrored out from Cortex XSOAR to Doppel. Currently, the Mirror-out feature updates the Doppel Alert queue to an archived state upon XSOAR incident closure. We intend to extend this capability in future releases to provide more comprehensive mirroring.

Supported Fields

The following fields are mirrored:

  1. Doppel Queue State โ€“ Indicates the queue where the alert is currently assigned.

Configuration Steps#

To enable incident mirroring between Cortex XSOAR incidents and Doppel alerts:

  1. Enable Fetching incidents in your instance configuration.

  2. In the Mirroring Direction integration parameter, select in which direction the incidents should be mirrored:

    OptionDescription
    NoneTurns off incident mirroring.
    IncomingAny changes in Doppel alerts (mirroring incoming fields) will be reflected in Cortex XSOAR incidents.
    OutgoingMirroring out will only update queue state in Doppel alerts (outgoing mirrored fields).
    Incoming And OutgoingChanges in Cortex XSOAR incidents and Doppel alerts will be reflected in both directions.

Newly fetched incidents will be mirrored in the chosen direction. However, this selection does not affect existing incidents.

Important Note: To ensure the mirroring works as expected, mappers are required, both for incoming and outgoing, to map the expected fields in Cortex XSOAR and Doppel.