Ce document explique comment configurer le plugin ExtraHop Reveal(x) 360 v1.0.1 avec le module Risk Exchange de la plateforme Netskope Cloud Exchange. Utilisez ce plugin pour récupérer des charges de travail en nuage (périphérique) à partir des détections de la plateforme ExtraHop Reveal(x) 360. Il ne permet pas d'effectuer des actions sur les charges de travail en nuage (périphérique) dans ExtraHop Reveal(x) 360.
Calcul du score de normalisation de Netskope = (100 - Score de risque de détection actuel d'ExtraHop) x 10.
Conditions préalables
Pour compléter cette configuration, vous avez besoin de :
- Un locataire Netskope (ou plusieurs, par exemple des instances de production et de développement/test).
- Un locataire Netskope Cloud Exchange avec le plugin Tenant et le plugin Risk Exchange déjà configurés.
- Votre URL de base, votre ID client et votre secret client pour ExtraHop.
- Une licence ExtraHop donnant accès aux services de détection et de périphériques. Consultez ce document pour plus de détails : FAQ sur les licences.
- Connectivité avec l'hôte suivant : https://extrahop-bd.api.cloud.extrahop.com
Prise en charge du plugin ExtraHop Reveal(x) 360
Ce plugin est utilisé pour récupérer des charges de travail en nuage (périphérique) à partir des détections de la plateforme ExtraHop Reveal(x) 360. Il ne permet pas d'effectuer des actions sur les charges de travail en nuage (périphérique) dans ExtraHop Reveal(x) 360.
| Type de données extraites | Actions |
|---|---|
| Périphériques | Aucune action |
Mises en correspondance
Les cartographies sont utilisées pour visualiser le périphérique tiré et leurs détails respectifs. Les champs mappés lors de la configuration du plugin sont visibles sur la page Enregistrements une fois les données extraites. Voici les mappings suggérés qui devraient être utilisés lors de la configuration du plugin.
Pull Mapping pour périphérique
| Champ du plugin | Type de données attendu | Nom de champ suggéré | Stratégie globale suggérée |
|---|---|---|---|
| ID de détection | Number | ID de détection | Unique |
| Titre de la détection | String | Titre de la détection | Overwrite |
| Score de risque de détection | Number | Score de risque de détection | Overwrite |
| Score normalisé de Netskope | Number | Score normalisé de Netskope | Overwrite |
| Type de détection | String | Type de détection | Overwrite |
| Role | String | Role | Overwrite |
| Est externe | String | Est externe | Overwrite |
| Noms d'utilisateurs | List | Noms d'utilisateurs | Overwrite |
| Hostname | String | Hostname | Overwrite |
| État de la détection | String | État de la détection | Overwrite |
| URL | String | URL | Overwrite |
| périphérique ID | Number | périphérique ID | Unique |
| VPC ID | String | VPC ID | Overwrite |
| Default Name | String | Default Name | Overwrite |
| ID de sous-réseau | String | ID de sous-réseau | Overwrite |
| DHCP Name | String | DHCP Name | Overwrite |
| ID VLAN | Number | ID VLAN | Overwrite |
| Vendor | String | Vendor | Overwrite |
| Adresse MAC | String | Adresse MAC | Overwrite |
| DNS Name | String | DNS Name | Overwrite |
| Adresse IPv4 | String | Adresse IPv4 | Overwrite |
| Adresse IPv6 | String | Adresse IPv6 | Overwrite |
| Type personnalisé | String | Type personnalisé | Overwrite |
| Nom personnalisé | String | Nom personnalisé | Overwrite |
| Display Name | String | Display Name | Overwrite |
| Critique | String | Critique | Overwrite |
| ID de découverte | String | ID de découverte | Overwrite |
| ExtraHop ID | String | ExtraHop ID | Overwrite |
| Nom de l'instance cloud | String | Nom de l'instance cloud | Overwrite |
| Type d’instance cloud | String | Type d’instance cloud | Overwrite |
| ID d’instance cloud | String | ID d’instance cloud | Overwrite |
| Compte cloud | String | Compte cloud | Overwrite |
| Nom NetBIOS | String | Nom NetBIOS | Overwrite |
| classe périphérique | String | classe périphérique | Overwrite |
| Analysis | String | Analysis | Overwrite |
| Niveau d’analyse | String | Niveau d’analyse | Overwrite |
Calcul de la note normalisée
Calcul du score de normalisation de Netskope = (100 - Score de risque de détection actuel d'ExtraHop) x 10.
Permissions
L'utilisateur doit disposer de ces autorisations minimales :
- Accès au système : Lecture seule complète.
- Accès au module NDR : Pas d'accès.
- Accès au module NPM : Pas d'accès.
- Accès aux paquets et aux clés de session : Pas d'accès.
Détails de l'API
Liste des API utilisées
| Point final de l'API | Méthode | Cas d'utilisation |
|---|---|---|
| /oauth2/token | PUBLIER | Récupérer le jeton d'authentification |
| /api/v1/detections/search | PUBLIER | Détections d'extraction |
| /api/v1/devices/search | PUBLIER | Recherche d'un périphérique |
Récupérer le jeton d'authentification
API Endpoint: /oauth2/token
Method: PUBLIER
Headers
| Clé | Value |
|---|---|
| Authorization | Basic <Client ID>:{Client Secret> |
| Content-Type | application/x-www-form-urlencoded |
| User-Agent | Netskope-ce-6.0.0-cre-extrahop-reveal(x)-360-v1.0.1 |
Params
| Clé | Value |
|---|---|
| grant_type | client_credentials |
Sample API Response
{
"access_token": "eyJraWQiOiJkbndoem42RUNpaW9mSDRSTWdVV0FlZ1lhRHMrVlRDeDhXN1dJZnpVYjZjPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIyYTFsN2ZkaGRxdHR1YzlpcXBzamd1bHNpcSIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiY2NwXC9kZXRlY3Rpb25fYWNjZXNzX2xldmVsLmZ1bGwgY2NwXC9ucG1fYWNjZXNzX2xldmVsLm5vbmUgY2NwXC9wYWNrZXRzX2xldmVsLm5vbmUgY2NwXC93cml0ZV9sZXZlbC5mdWxsX3JlYWRvbmx5IiwiYXV0aF90aW1lIjoxNjk3OTgzNzAxLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtd2VzdC0yLmFtYXpvbmF3cy5jb21cL3VzLXdlc3QtMl85YU9FMWltMXIiLCJleHAiOjE2OTc5ODQzMDEsImlhdCI6MTY5Nzk4MzcwMSwidmVyc2lvbiI6MiwianRpIjoiNTllMjc0ZGItMTYxMS00MDRjLTk1NzgtZWJiNDQwZmE5ZTU3IiwiY2xpZW50X2lkIjoiMmExbDdmZGhkcXR0dWM5aXFwc2pndWxzaXEifQ.pw-cbQTSVC1HlRdl_v63s3wbHnqsDNfVJ1Ln9H0GsJvHENKG5borLHIPTsquhov6rEmmzzs6NxMhX5VFY0dH0XWgmrV5BFN4Q5vASQ2lZVY_1NjEqYsJAcVLrzmxy7TqMN_L7kuoX5ijN_mAezxwfnj4hQfrd1ojUVt7_wzSUIVpZy6dDARs1EdrrFAZw70zXW7vTUlzhkiqMthAwD2TaoxOcewHFlC3lgvIjz_DoEYUB09qsP0EJ4oQNaCxetJjPkddN2DqVXEnAi5Jvz6fILbT-wFWua-AEBvk-GXGMXBUKCYs4g-ZvnWnSpcfsMAJZTTOO-05qpbnYE-K3N7qOQ",
"expires_in": 600,
"token_type": "Bearer"
}
Détections d'objets trouvés
API endpoint: /api/v1/detections/search
Method: PUBLIER
Headers
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | Netskope-ce-6.0.0-cre-extrahop-reveal(x)-360-v1.0.1 |
Parameters
| Clé | Value |
|---|---|
| limit | 10000 |
| offset | 0 |
| mod_time | 1725987480001 |
| sort | {"direction" : "asc", "field" : "mod_time"} |
Sample API Response
[{
“id”: 12884903439,
“start_time”: 1725987480001,
“update_time”: 1725991200000,
“end_time”: 1725987570000,
“title”: “LDAP Invalid Credentials Error”,
“description”: “[jump\\.i\\.rx\\.tours](https://extrahop-bd.cloud.extrahop.com#/metrics/devices/fa60fb84b3594c9bb8262f88e90a2c8b.0ea3bf8493e10000/overview?from=1725987480&interval_type=DT&until=1725987570) received an unusually high number of LDAP errors for invalid credentials. This behavior indicates that the user is repeatedly trying to authenticate, or bind, with a wrong distinguished name (DN) or password, an expired password, or credentials for a locked account. Confirm if [jump\\.i\\.rx\\.tours](https://extrahop-bd.cloud.extrahop.com#/metrics/devices/fa60fb84b3594c9bb8262f88e90a2c8b.0ea3bf8493e10000/overview?from=1725987480&interval_type=DT&until=1725987570) is compromised and attempting a brute force attack.”,
“risk_score”: 60,
“type”: “ldap_invalid_credentials_error”,
“recommended_factors”: [
“critical_asset”,
“top_offender”
],
“recommended”: true,
“categories”: [
“sec.lateral”,
“perf.auth”,
“perf”,
“sec”,
“sec.attack”
],
“properties”: {},
“participants”: [
{
“role”: “offender”,
“scanner_service”: null,
“endpoint”: null,
“external”: false,
“object_id”: 12884901938,
“object_type”: “device”,
“id”: 6897
},
{
“role”: “victim”,
“scanner_service”: null,
“endpoint”: null,
“external”: false,
“object_id”: 12884901891,
“object_type”: “device”,
“object_value”: “10.1.1.10”,
“id”: 2258
}
],
“ticket_id”: null,
“assignee”: null,
“status”: null,
“resolution”: null,
“mitre_tactics”: [
{
“id”: “TA0006”,
“name”: “Credential Access”,
“url”: “https://attack.mitre.org/tactics/TA0006”
},
{
“id”: “TA0040”,
“name”: “Impact”,
“url”: “https://attack.mitre.org/tactics/TA0040”
}
],
“mitre_techniques”: [
{
“id”: “T1110”,
“name”: “Brute Force”,
“url”: “https://attack.mitre.org/techniques/T1110”,
“legacy_ids”: [
“T1110”
]
},
{
“id”: “T1531”,
“name”: “Account Access Removal”,
“url”: “https://attack.mitre.org/techniques/T1531”,
“legacy_ids”: [
“T1531”
]
}
],
“appliance_id”: 3,
“is_user_created”: false,
“mod_time”: 1725991298714,
“create_time”: 1725987562417,
“url”: “https://extrahop-bd.cloud.extrahop.com/extrahop/#/detections/detail/12884903439/?from=1725986580&until=1725988470&interval_type=DT”
}
]
Recherche d'un périphérique
API endpoint: /api/v1/devices/search
Method: PUBLIER
Headers
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | Netskope-ce-6.0.0-cre-extrahop-reveal(x)-360-v1.0.1 |
Payload
| Clé | Value | |
|---|---|---|
| filter | champ | id |
| operand | [12884901926] | |
| operator | in | |
| limit | 10000 | |
| offset | 0 | |
Sample API Response
[{
“vpc_id”: “vpc-0788ce1ab062ee642”,
“cdp_name”: “”,
“custom_model”: null,
“analysis_level”: 1,
“custom_make”: null,
“default_name”: “périphérique 0e257a0641670000”,
“mod_time”: 1726707648876,
“subnet_id”: “subnet-0aada065085d74814”,
“dhcp_name”: “ip-10-1-100-248”,
“custom_criticality”: null,
“vlanid”: 0,
« discover_time » : 1713979140000,
« vendor » : null,
« macaddr » : « 0E:25:7A:06:41:67 »,
« dns_name » : « »,
« user_mod_time » : 1713979265453,
« ipaddr4 » : null,
« ipaddr6 » : null,
« custom_type » : « file_server »,
« custom_name » : « ftp1.i.rx.tours »,
« cloud_account » : « 423411706765 »,
« auto_role » : « other »,
« role » : « file_server »,
« display_name » : « ftp1.i.rx.tours »,
« last_seen_time » : 1724960970000,
« on_watchlist » : false,
« critical » : false,
« discovery_id » : « 0e257a0641670000 »,
« node_id » : 3,
« extrahop_id » : « 0e257a0641670000 »,
« cloud_instance_name » : null,
« cloud_instance_description » : null,
« cloud_instance_type » : null,
« cloud_instance_id » : « i-099c43de3a51df856 »,
« model_override » : null,
« model » : null,
“netbios_name”: “”,
“device_class”: “node”,
“is_l3”: false,
“parent_id”: null,
“description”: “Service FTP”,
“id”: 12884901926,
“analysis”: “advanced”
}
]
Matrice de performance
Ces relevés de performances sont effectués sur une pile CE de grande taille avec ces spécifications de VM en tirant 500k enregistrements de périphériques du plugin ExtraHop.
| Description | Specifications |
|---|---|
| Détails de la pile |
Taille : Grande |
| Temps nécessaire pour stocker les enregistrements périphériques tirés avec les scores de risque | ~ 19 minutes |
Agent utilisateur
Netskope-ce-6.0.0-cre-extrahop-reveal(x)-360-v1.0.1
Workflow
- Obtenez votre URL de base, votre ID client et votre secret client sur ExtraHop.
- Configurez le plugin ExtraHop.
- Ajoutez une règle de gestion pour ExtraHop.
- Ajouter une action pour ExtraHop.
- Validez le plugin ExtraHop.
Regardez une vidéo
Cliquer sur « play » pour regarder une vidéo.
Obtenez votre URL de base, votre identifiant de client et votre secret de client.
- Connectez-vous à votre plateforme ExtraHop.
- Allez sur System Settings > Administration > API Access.

- Cliquez sur Create Credentials, saisissez un nom et sélectionnez les autorisations minimales pour les informations d'identification.

- Cliquez sur Save, copiez le point de terminaison de l'API et supprimez le oath2/token. Il s'agit de l'URL de base du plugin. Copiez également l'identifiant et le secret. Le secret ne peut pas être consulté ou récupéré ultérieurement. Ils sont nécessaires pour configurer le plugin.
Configurer le plugin ExtraHop
- Dans Cloud Exchange, allez sur Settings > Plugin Store. Recherchez et sélectionnez le plugin ExtraHop v1.0.1 (CRE).

- Saisissez les informations de base :
- Configuration Name: Saisissez un nom pour la configuration.
- Sync Interval: Intervalle de récupération des données de cette source de plugin.

- Cliquez sur Next et entrez les paramètres de configuration :
- Base URL: URL de base de l'API ExtraHop Reveal(x) 360. L'URL de base ne doit pas inclure /oauth/token.
- Client ID: ID client de l'API ExtraHop Reveal(x) 360.
- Client Secret: Secret du client API ExtraHop Reveal(x) 360.
- Initial Range (in days): Nombre de jours pour extraire les données pour l'exécution initiale.

- Cliquez sur Next et sélectionnez l'entité dans la liste déroulante Entité.
Les champs d'entité peuvent être créés à partir de la page de l'éditeur de schéma ou en cliquant sur l'option + Add Field dans la liste déroulante des champs.
Fournissez la cartographie du terrain. Pour connaître les correspondances proposées, reportez-vous à la section Correspondances.
- Cliquez sur Save.

Ajouter une règle de gestion de l'échange de risques pour ExtraHop
Utilisez les règles de gestion pour filtrer le périphérique.
- Dans Risk Exchange, allez à Business Rules et cliquez sur Create New Rule.
- Saisissez un nom de règle, sélectionnez une entité et définissez le filtre selon vos besoins pour effectuer les actions. Une fois terminé, cliquez sur Save.

Ajoutez une action d'échange de risque pour ExtraHop
ExtraHop ne prend en charge que l'action "Pas d'action".
No Action
Cette action n'effectuera aucune action. Vous pouvez utiliser cette action pour générer des alertes UBA dans Ticket Orchestrator.
- Dans Risk Exchange, allez à Actions et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration et une action (pas d'action).
- Cliquez sur Save.

Notes
- Vous pouvez effectuer d'autres actions sur le périphérique tiré d'ExtraHop sur le locataire Netskope, pour effectuer les actions liées au périphérique sur Netskope.
- Si l'option Require Approval est activée lors de la configuration de l'action, assurez-vous de fournir l'approbation à partir de la page Action Log montrée ci-dessus en sélectionnant les entrées d'approbation en attente et en sélectionnant le bouton de coche d'approbation.
- Générer une alerte doit être activé lors de la création de l'action pour générer des alertes dans Ticket Orchestrator > Alerts, et le module Ticket Orchestrator doit être activé.
Validez le plugin ExtraHop
Valider dans Cloud Exchange
Pour valider les enregistrements du périphérique tirés d'ExtraHop, allez sur Logging et recherchez les journaux tirés du plugin ExtraHop de Risk Exchange.
Example: message Like “[CRE ExtraHop]”

Pour vérifier les données extraites, allez sur Records, sélectionnez le type d'entité que vous avez utilisé lors de la configuration du plugin ExtraHop. Vérifiez les dossiers tirés au sort.

Valider dans ExtraHop
Nous extrayons les charges de travail en nuage (périphérique) de la page Détections de la plateforme ExtraHop Reveal(x) 360.

Nous pouvons valider les détails de n'importe quel périphérique en cliquant sur l'un des périphériques, puis en cliquant sur Go to Device Overview.

Dépannage du plugin ExtraHop
Réception d'une erreur dans le plugin workflow
CRE ExtraHop Reveal(x) 360 [configuration_name] : Une erreur de client invalide s'est produite, vérifiez l'ID client et le secret fournis dans les paramètres de configuration lors de la génération du jeton d'authentification pour authentifier les informations d'identification.
What to do: Vérifiez l'identifiant client et le secret pour ExtraHop. Pour plus d'informations, consultez la configuration d'ExtraHop.
périphérique ne sont pas extraits d'ExtraHop
Si aucune donnée pour le périphérique n'est tirée, cela peut être dû à l'une ou l'autre des causes suivantes :
- Aucun périphérique n'est disponible sur la plateforme pour tirer
- La cartographie n'est pas ajoutée dans le plugin
What to do:
- Allez sur ExtraHop et vérifiez si le périphérique est disponible sur la page Détections.
- Modifiez la configuration du plugin et vérifiez la page Entity Source, il devrait y avoir des champs mappés afin d'obtenir la même chose.

