This document explains how to configure the CrowdStrike v1.3.1 plugin with the User Risk Exchange module of the Netskope Cloud Exchange platform. This integration fetches Host IDs and their risk scores from CrowdStrike’s platform to Cloud Exchange, and performs a Put RTR Script action on the host machine based on the Host scores.
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).
- A Netskope Cloud Exchange instance with the Netskope Tenant and Risk Exchange module already configured.
- Your CrowdStrike instance credentials (Client ID, Client Secret) for API Token.
- A CrowdStrike Real-Time Response Administrator role for Put RTR Script action.
- For each platform (Windows, Mac), there should be a response policy with Real Time Response (High-Risk Commands) enabled.
- Connectivité à l’hôte suivant : https://api.crowdstrike.com
Compatibility
Netskope CE: v4.2.0, v5.0.1
Matrice de performance
Here is the performance matrix conducted on a Large CE Stack with below-mentioned specifications by pulling 500K hosts and their risky scores.
| Taille de la pile |
|
| No. of Records | 500K hosts |
| Temps nécessaire pour ingérer les enregistrements avec les scores. | ~20 minutes |
Champ d'application du plugin
Ce plugin récupère les hôtes et leurs scores ZTA respectifs à partir du locataire CrowdStrike, et prend également en charge l'action Put RTR Script sur les hôtes.
Support du plugin CrowdStrike
| Type de données extraites | Hôtes |
| Type of Action Supported | Put RTR Script No Action |
Mises en correspondance
Cartographie des tractions
| Champs CrowdStrike | Champs CE de Netskope |
|---|---|
| resources | id |
| overall | score |
Cartographie des scores
| Les scores de CrowdStrike | Netskope CE URE Scores |
|---|---|
| NA | Aucun |
| critical | 1-250 |
| high | 251-500 |
| medium | 501-750 |
| low | 751-1000 |
Score Calculation for this plugin is normalized using the following formula:
Calcul du score URE > Score global de l'évaluation de l'hôte par CrowdStrike * 10
Correspondance entre la partition et le fichier (pour le script RTR d'Action Put)
| Score | Fichier |
|---|---|
| Moins de 260 | crwd_zta_1_25.txt |
| 260 to 510 | crwd_zta_26_50.txt |
| 510 à 760 | crwd_zta_51_75.txt |
| 760 à 1000 | crwd_zta_76_100.txt |
Permissions
Permissions sur les champs d'application de l'API
Refer to the Get Client ID and Client Secret section for obtaining and providing API scopes permissions.
| Champ d'application | Read | Write |
|---|---|---|
| Hôtes | Oui | Non |
| Réponse en temps réel (admin) | – | Oui |
| Réponse en temps réel | Oui | Non |
| Évaluation de la confiance zéro | Oui | – |
Politique de réponse Permissions
Refer to Add Permission for Response Policy (RTR script Permission) section for obtaining and providing Response Policy permissions.
| Catégorie | Type | Permission | Statut |
|---|---|---|---|
| Réponse en temps réel | Scripts personnalisés | Scénarios du faucon | Activer |
| Réponse en temps réel | Commandes à haut risque | put | Activer |
Remarque : les autorisations relatives à la politique de réponse ne sont nécessaires que si vous souhaitez utiliser l'action Put RTR Script.
Détails de l'API
Liste des API utilisées
| Détail de l'API | Méthode | Endpoint | Champ d'application de l'API |
|---|---|---|---|
| Obtenir un jeton d'authentification | PUBLIER | /oauth2/token | Aucun |
| Recherche d'enregistrements | OBTENIR | /périphérique/queries/périphérique-scroll/v1 | Hôtes (Lire) |
| Récupérer les scores | OBTENIR | /zero-trust-assessment/entities/assessments/v1 | Évaluation de la confiance zéro (Lire) |
| Get a session ID | PUBLIER | /real-time-response/entities/sessions/v1 | Réponse en temps réel (Read) |
| Vérifier l'existence du script | OBTENIR | /real-time-response/queries/scripts/v1 | Réponse en temps réel (Read) |
| Create score files removal script on the RTR cloud | PUBLIER | /real-time-response/entities/scripts/v1 | Réponse en temps réel admin (écriture) |
| Obtenir un nom de plate-forme | PUBLIER | /devices/entities/devices/v2 | Hôtes (Lire) |
| Changer de répertoire | PUBLIER | /real-time-response/entities/admin-command/v1 | Réponse en temps réel admin (écriture) |
| Supprimer un fichier d'un périphérique | PUBLIER | /real-time-response/entities/admin-command/v1 | Réponse en temps réel admin (écriture) |
| Obtenir l'état d'une commande | OBTENIR | /real-time-response/entities/admin-command/v1 | Réponse en temps réel admin (écriture) |
| Mettre un dossier sur un périphérique | PUBLIER | /real-time-response/entities/admin-command/v1 | Réponse en temps réel admin (écriture) |
| Supprimer la session | DELETE | /real-time-response/entities/sessions/v1 | Réponse en temps réel (Read) |
Obtenir un jeton d'authentification
API endpoint:
/oauth2/token
Method: PUBLIER
Parameter:
| Clé | Value |
|---|---|
| grant_type | client_credentials |
| client_id | <Client ID> |
| client_secret | <Client Secret> |
Sample API Response:
{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InB1YmxpYzphNDdiNTc2MS0zYzk3LTQwMmItOTgzNi0wNmNhODI0NTViOTMiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOltdLCJjbGllbnRfaWQiOiJlZTA5YTc3MjAwNzc0MzYwOTlhYTM5N2M2MTJlYTQzYiIsImV4cCI6MTcwMzI0MDQzOSwiZXh0Ijp7InN1Yl90eXBlIjoiY2xpZW50In0sImlhdCI6MTcwMzIzODYzOSwiaXNzIjoiaHR0cHM6Ly9hcGkuY3Jvd2RzdHJpa2UuY29tLyIsImp0aSI6ImQ5ZTlmZWI4LTM0ODAtNDM2NC1hYzI2LTBhZjgzNDdlOWY2OSIsIm5iZiI6MTcwMzIzODYzOSwic2NwIjpbXSwic3ViIjoiZWUwOWE3NzIwMDc3NDM2MDk5YWEzOTdjNjEyZWE0M2IiLCJzdWJfdHlwZSI6ImNsaWVudCJ9.a8oiNJivyV1AJKoICvr1IH5r4kMsWZ2xds7Qb_JRB6sD1JcbGqAkFq_wgw5-EAB-hHiRB-coF2Yy_PeP-8IvjWQVIjlDJrRmRQ-s-NmAkm8XaG9GojFZvaT-sufiBxKEDmpdntABNkEG1fcbVvd7tVW-vi36PFPoc3p1t4sbaMhf9_Kts8iAHsv6BudVyFsPhPAreGc2OXUFT39ZvuDTN5BxOFiPT_9_gadXt-7N*************************************************************************************",
"expires_in": 1799,
"token_type": "bearer"
}
Recherche d'enregistrements
API endpoint:
/devices/queries/devices-scroll/v1
Method: OBTENIR
Parameters:
| Clé | Value |
|---|---|
| limit | 5000 |
| offset | “” |
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Sample API Response:
{
"meta": {
"query_time": 0.025422559,
"pagination": {
"offset": 1,
"limit": 1,
"total": 21
},
"powered_by": "device-api",
"trace_id": "5f1a1eeb-9d8b-4412-8523-0fc933a0bf6f"
},
"resources": [
"89b9743fcb6b4ccaa09600ac5204bac4"
],
"errors": []
}
Recherche de notes
API endpoint:
/zero-trust-assessment/entities/assessments/v1
Method: OBTENIR
Parameters:
| Clé | Value |
|---|---|
| ids | [<Host Ids>] |
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
{
"meta": {
"query_time": 0.003210238,
"trace_id": "ba076fd9-7340-49f3-a9a2-41b6f2eb94d9"
},
"errors": [],
"resources": [
{
"aid": "e039334e8b0e4747bdfc7a29406ec8e1",
"cid": "c17f3a80ded0418eb107db3d26a27983",
"system_serial_number": "FVHX2HEDJ1WK",
"event_platform": "Mac",
"product_type_desc": "Workstation",
"modified_time": "2024-05-01T08:42:07Z",
"sensor_file_status": "confirmed",
"assessment": {
"sensor_config": 66,
"os": 72,
"overall": 68,
"version": "3.8.1"
},
"assessment_items": {
"os_signals": [
{
"signal_id": "mac_os_version",
"signal_name": "macOS Version",
"group_name": "macOS",
"criteria": "macOS version is ≥11.0",
"meets_criteria": "yes"
}
],
"sensor_signals": [
{
"signal_id": "ml_cloud_antimalware_detection_mac",
"signal_name": "Cloud ML - Cloud Anti-malware - Detection for macOS",
"group_name": "Prevention",
"criteria": "Cloud ML - Cloud Anti-malware Detection: set to Aggressive or higher",
"meets_criteria": "yes"
},
]
}
}
]
}
Put a File on the Cloud
API endpoint:
/real-time-response/entities/put-files/v1
Method: PUBLIER
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Data:
{
"description": "file representing a ZTA score of 1_25",
"name": "crwd_zta_1_25.txt",
"comments_for_audit_log": "uploade file representing a ZTA score of 1_25 for Netskope ZTA-RTR integration"
}
Sample API Response:
{
"meta": {
"query_time": 0.536670425,
"writes": {
"resources_affected": 1
},
"powered_by": "empower-api",
"trace_id": "d4bddc66-83fd-4875-9016-a17899fd83ba"
}
}
Obtenir un identifiant de session
API Endpoint:
real-time-response/entities/sessions/v1
Method: PUBLIER
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
| Content-Type | application/json |
Data:
| Clé | Value |
|---|---|
| device_id | <Device ID><ID de l’appareil> |
| origin | Netskope |
| queue_offline | Vrai |
Sample API Response:
{
"meta": {
"query_time": 0.315515137,
"powered_by": "empower-api",
"trace_id": "0483a37f-896b-4bb3-bf1e-8f8b3618a2e2"
},
"resources": [
{
"session_id": "a26ad68e-1272-482b-95b5-78ee27344d80",
"scripts": [
{
"command": "cat",
"description": "Read a file from disk and display as ASCII",
"examples": "cat foo.txt\r\ncat -n foo.txt\r\ncat -t foo.txt\r\ncat -t -n foo.txt",
"internal_only": false,
"runnable": true,
"sub_commands": [],
"args": [
{
"id": 582,
"created_at": "2019-07-03T18:52:15Z",
"updated_at": "2019-07-03T18:52:15Z",
"script_id": 527,
"arg_type": "arg",
"data_type": "string",
"requires_value": false,
"arg_name": "Path",
"description": "path to cat",
"default_value": "",
"required": true,
"sequence": 1,
"options": null,
"encoding": "",
"command_level": "non-destructive"
},
{
"command": "getsid",
"description": "Enumerate local users and Security Identifiers (SID)",
"examples": "getsid\r\n List all users and associated SIDs\r\ngetsid foo\r\n List users and associated SIDs matching substring \"foo\"",
"internal_only": false,
"runnable": true,
"sub_commands": [],
"args": [
{
"id": 661,
"created_at": "2020-04-02T03:31:02Z",
"updated_at": "2020-04-02T03:31:02Z",
"script_id": 557,
"arg_type": "arg",
"data_type": "string",
"requires_value": false,
"arg_name": "UserName",
"description": "Partial or full username to filter results",
"default_value": "",
"required": false,
"sequence": 1,
"options": null,
"encoding": "",
"command_level": "non-destructive"
}
]
},
{
"command": "ls",
"description": "Display the contents of the specified path",
"examples": "ls\r\nls -l\r\nls -L\r\nls -t\r\nls -l -@\r\nls -R\r\nls -l -R\r\nls -l -t -R -L",
"internal_only": false,
"runnable": true,
"sub_commands": [],
"args": [
{
"id": 576,
"created_at": "2019-07-03T18:51:13Z",
"updated_at": "2019-07-03T18:51:13Z",
"script_id": 526,
"arg_type": "arg",
"data_type": "string",
"requires_value": false,
"arg_name": "Path",
"description": "Path ",
"default_value": ".",
"required": false,
"sequence": 1,
"options": null,
"encoding": "",
"command_level": "non-destructive"
} ]
},
{
"command": "mount",
"description": "List or mount filesystem volumes",
"examples": "Executable by all RTR roles:\r\nmount\r\nExecutable by privileged RTR users only:\r\nmount -t=nfs \"host:/exports/filesystem\" \"/mnt/filesystem\"\r\n Mount the NFS filesystem located at \"/exports/filesystem\" on \"host\" to the local destination \"/mnt/filesystem\"\r\nmount -t=smbfs \"//user:password@host/filesystem\" \"/mnt/mountpoint\"\r\n Mount the SMB \"/filesystem\" on \"host\" as \"user\" with \"password\" to \"/mnt/mountpoint\"\r\nmount -t=smbfs -o=nobrowse \"//user:password@host/filesystem\" \"/mnt/mountpoint\"\r\n Mount the SMB \"/filesystem\" with option \"nobrowse\" on \"host\" as \"user\" with \"password\" to \"/mnt/mountpoint\"",
"internal_only": false,
"runnable": true,
"sub_commands": [],
"args": []
},
{
"command": "netstat",
"description": "Display routing information or network connections",
"examples": "netstat\r\nnetstat -nr",
"internal_only": false,
"runnable": true,
"sub_commands": [],
"args": [
{
"id": 973,
"created_at": "2023-11-20T23:23:37Z",
"updated_at": "2023-11-20T23:23:37Z",
"script_id": 539,
"arg_type": "flag",
"data_type": "string",
"requires_value": false,
"arg_name": "n",
"description": "Flag to show network addresses as numbers",
"default_value": "",
"required": false,
"sequence": 2,
"options": null,
"encoding": "",
"command_level": "non-destructive"
}
]
},
{
"command": "users",
"description": "Get details about local users",
"examples": "users\r\n List details about all local users\r\nusers foo\r\n List details about local user \"foo\"",
"internal_only": false,
"runnable": true,
"sub_commands": [],
"args": [
{
"id": 679,
"created_at": "2020-04-02T03:31:12Z",
"updated_at": "2020-04-02T03:31:12Z",
"script_id": 565,
"arg_type": "arg",
"data_type": "string",
"requires_value": false,
"arg_name": "UserName",
"description": "Username to filter results",
"default_value": "",
"required": false,
"sequence": 1,
"options": null,
"encoding": "",
"command_level": "non-destructive"
}
]
}
],
"existing_aid_sessions": 1,
"created_at": "2023-12-22T15:47:24.904481922Z",
"offline_queued": true
}
],
"errors": null
}
Vérifier l'existence du script
API endpoint: /réponse-réen-temps/requêtes/scripts/v1
Method: ALLEZ
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Parameters:
| Clé | Value |
|---|---|
| filter | nom : ' '<Script name> |
API Response:
{
"meta": {
"query_time": 0.025087906,
"pagination": {
"offset": 0,
"limit": 100,
"total": 1
},
"powered_by": "empower-api",
"trace_id": "0e9ccedb-58c9-44a9-842c-620977f096b1"
},
"resources": [
"bab3f0ff134311efb74642cd23408b64_ee09a7720077436099aa397c612ea43b"
]
}
Créer un script de suppression des fichiers de score sur RTR Cloud
API Endpoint: /real-time-response/entities/scripts/v1
Method: POST
Headers:
| Key | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Data:
| Clé | Value |
|---|---|
| name | Nom du script |
| permission_type | public |
| description | Description du fichier. |
Files
Téléchargez le fichier de script.
Pour les scripts python, ajoutez ceci dans le paramètre files pour les requêtes
[
(
"file",
(
"<File>",
file,
"application/octet-stream",
),
)
]
API Response:
{
"meta": {
"query_time": 0.947792627,
"writes": {
"resources_affected": 1
},
"powered_by": "empower-api",
"trace_id": "eed1850a-0c07-488a-b36d-a70d5e904d71"
}
}
Obtenir un nom de plate-forme
API endpoint:
/devices/entities/devices/v2
Method: OBTENIR
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Parameters:
| Clé | Value |
|---|---|
| Ids | [<Host ID>] |
Sample API Response:
{
"meta": {
"query_time": 0.001626152,
"powered_by": "device-api",
"trace_id": "8adcbd8a-40cd-4086-8e5d-5d3962fb1073"
},
"resources": [
{
"device_id": "d2abab7b4c6a4d9998b298b19bbda31f",
"cid": "c17f3a80ded0418eb107db3d26a27983",
"agent_load_flags": "0",
"agent_local_time": "2023-12-22T11:19:53.929Z",
"agent_version": "7.05.17603.0",
"bios_manufacturer": "Apple Inc.",
"bios_version": "515.0.0.0.0",
"config_id_base": "65994753",
"config_id_build": "17603",
"config_id_platform": "4",
"cpu_signature": "526057",
"external_ip": "117.217.127.213",
"mac_address": "dc-a9-04-99-43-aa",
"hostname": "ITs-MacBook-Pro.local",
"first_seen": "2023-12-18T08:46:57Z",
"last_login_timestamp": "2023-12-21T08:00:38Z",
"last_login_user": "it",
"last_login_uid": "501",
"last_login_user_sid": "S-1-5-21-1276927669-3124867281-3856135234-2002",
"last_seen": "2023-12-22T11:46:27Z",
"local_ip": "172.20.10.87",
"major_version": "22",
"minor_version": "6",
"os_version": "Ventura (13)",
"os_build": "22G120",
"platform_id": "1",
"platform_name": "Mac",
"policies": [
{
"policy_type": "prevention",
"policy_id": "e17fdf411592409794d748e907da9967",
"applied": true,
"settings_hash": "528b286b",
"assigned_date": "2023-12-18T08:48:02.464865254Z",
"applied_date": "2023-12-18T08:48:08.608666735Z",
"rule_groups": []
}
],
"reduced_functionality_mode": "yes",
"device_policies": {
"prevention": {
"policy_type": "prevention",
"policy_id": "e17fdf411592409794d748e907da9967",
"applied": true,
"settings_hash": "528b286b",
"assigned_date": "2023-12-18T08:48:02.464865254Z",
"applied_date": "2023-12-18T08:48:08.608666735Z",
"rule_groups": []
},
"sensor_update": {
"policy_type": "sensor-update",
"policy_id": "766825ba2e2847f8a9134f7f48f44214",
"applied": true,
"settings_hash": "tagged|3;101",
"assigned_date": "2023-12-18T09:00:47.465877148Z",
"applied_date": "2023-12-18T09:03:49.721523878Z",
"uninstall_protection": "ENABLED"
},
"device_control": {
"policy_type": "device-control",
"policy_id": "6e4a89125c4343f3ab42cbf2fa482702",
"applied": true,
"assigned_date": "2023-12-18T08:48:02.464932037Z",
"applied_date": "2023-12-18T08:49:48.770860727Z"
},
"global_config": {
"policy_type": "globalconfig",
"policy_id": "e2289d74264744f38e62d1146b13189d",
"applied": true,
"settings_hash": "1fda691c",
"assigned_date": "2023-12-22T11:20:01.358167731Z",
"applied_date": "2023-12-22T11:21:05.552056147Z"
},
"remote_response": {
"policy_type": "remote-response",
"policy_id": "70d43a45f67149e8b54c8d80ac00df10",
"applied": true,
"settings_hash": "797eb425",
"assigned_date": "2023-12-18T08:48:02.464926863Z",
"applied_date": "2023-12-18T08:48:08.689092082Z"
},
"firewall": {
"policy_type": "firewall",
"policy_id": "b1a5ff10a3c44f66a47c7f08f2e372e5",
"applied": true,
"assigned_date": "2023-12-18T08:48:02.464940776Z",
"applied_date": "2023-12-18T08:48:08.752377285Z",
"rule_set_id": "b1a5ff10a3c44f66a47c7f08f2e372e5"
}
},
"groups": [],
"group_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"product_type_desc": "Workstation",
"provision_status": "Provisioned",
"serial_number": "C02V10FEHV2T",
"status": "normal",
"system_manufacturer": "Apple Inc.",
"system_product_name": "MacBookPro14,2",
"tags": [],
"modified_timestamp": "2023-12-22T11:46:35Z",
"meta": {
"version": "110",
"version_string": "6:10864108136"
},
"kernel_version": "22.6.0",
"chassis_type": "9",
"chassis_type_desc": "Laptop"
}
],
"errors": null
}
Change Directory
API Endpoint:
/real-time-response/entities/admin-command/v1
Method: PUBLIER
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Data:
| Clé | Value |
|---|---|
| base_command | cd |
| command_string | cd "/Library/Application Support/Netskope/STAgent" ou cd "C:\Program Files (x86)\Netskope\STAgent" |
| persist | Vrai |
| session_id | 30b171e9-26ca-4856-b00e-10d5c4be765e |
Sample API Response:
{
"meta": {
"query_time": 0.052249291,
"powered_by": "empower-api",
"trace_id": "ebb0457c-1000-4607-99c5-85fd2c2aae91"
},
"resources": [
{
"session_id": "30b171e9-26ca-4856-b00e-10d5c4be765e",
"cloud_request_id": "399d6ed9-e2c5-4e72-8618-97515f69dc72",
"queued_command_offline": false
}
],
"errors": null
}
Remove File from a Device
API Endpoint:
/real-time-response/entities/admin-command/v1
Method: PUBLIER
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Data:
| Clé | Value |
|---|---|
| base_command | rm |
| command_string | rm crwd_zta_1_25.txt |
| persist | Vrai |
| session_id | 30b171e9-26ca-4856-b00e-10d5c4be765e |
Sample API Response:
{
"meta": {
"query_time": 0.052249291,
"powered_by": "empower-api",
"trace_id": "ebb0457c-1000-4607-99c5-85fd2c2aae91"
},
"resources": [
{
"session_id": "30b171e9-26ca-4856-b00e-10d5c4be765e",
"cloud_request_id": "399d6ed9-e2c5-4e72-8618-97515f69dc72",
"queued_command_offline": false
}
],
"errors": null
}
Placez le dossier sur un périphérique
API Endpoint:
/real-time-response/entities/admin-command/v1
Method: PUBLIER
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Data:
| Clé | Value |
|---|---|
| base_command | put |
| command_string | put crwd_zta_1_25.txt |
| persist | Vrai |
| session_id | <Session ID> |
Sample API Response:
{
"meta": {
"query_time": 0.052249291,
"powered_by": "empower-api",
"trace_id": "ebb0457c-1000-4607-99c5-85fd2c2aae91"
},
"resources": [
{
"session_id": "30b171e9-26ca-4856-b00e-10d5c4be765e",
"cloud_request_id": "399d6ed9-e2c5-4e72-8618-97515f69dc72",
"queued_command_offline": false
}
],
"errors": null
}
Get Command Status
API endpoint:
/real-time-response/entities/admin-command/v1
Method: OBTENIR
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
Parameters:
| Clé | Value |
|---|---|
| cloud_request_id | 399d6ed9-e2c5-4e72-8618-97515f69dc72 |
| sequence_id | 0 |
Sample API Response:
{
"meta": {
"query_time": 0.30452861,
"powered_by": "empower-api",
"trace_id": "f2fbc47d-a6e5-4ddf-9bb0-778fd7b32017"
},
"resources": [
{
"session_id": "30b171e9-26ca-4856-b00e-10d5c4be765e",
"task_id": "399d6ed9-e2c5-4e72-8618-97515f69dc72",
"complete": true,
"stdout": "",
"stderr": "/Library/Application Support/Netskope/STAgent does not exist\n",
"base_command": "cd"
}
],
"errors": []
}
Supprimer une session
API Endpoint:
/real-time-response/entities/sessions/v1
Method: DELETE
Headers:
| Clé | Value |
|---|---|
| Authorization | Bearer <Bearer Token> |
| User-Agent | netskope-ce-5.0.1-ure-crowdstrike/1.3.1 |
| Content-Type | application/json |
Parameter:
| Clé | Value |
|---|---|
| session_id | 30b171e9-26ca-4856-b00e-10d5c4be765e |
Sample API Response:
Status code: 204
Agent utilisateur
The user agent added for this plugin is in the following format: <vendor>-<integration name>/<version>. For example:
netskope-ce-5.0.1-ure-crowdstrike/1.3.1
Workflow
- Obtenez votre ID client et votre secret client CrowdStrike.
- Add permissions for your Response Policy (RTR script permission).
- Configurez le plugin CrowdStrike pour l'échange de risques entre utilisateurs.
- Configurez une règle de gestion pour le plugin CrowdStrike.
- Configurez les actions pour le plugin CrowdStrike.
- Validez le plugin CrowdStrike.
Cliquer sur « play » pour regarder une vidéo.
Obtenez votre identifiant et votre secret client sur CrowdStrike
- Connectez-vous à votre plateforme CrowdStrike et accédez au menu : Icône > Assistance et ressources > Clients API et clés.

- Cliquez sur Ajouter New client API.

- Ajoutez les champs d'application suivants pour utiliser le plugin CrowdStrike URE :
Champ d'application Read Write Hôtes Oui Non Réponse en temps réel (admin) – Oui Réponse en temps réel Oui Non Évaluation de la confiance zéro Oui – - Copiez l'identifiant et le secret du client.
Ajouter une autorisation pour votre politique de réponse (autorisation de script RTR)
- Log in to the Falcon CrowdStrike UI.
- Cliquez sur le bouton de menu en haut à gauche. Accédez à Configuration et gestion de l'hôte > Stratégies de réponse.


- For Windows, go to the policy that is to be used and click Edit Policy in the right corner of the policy.
- Enable these permissions:
Response Policy Permissions
Catégorie Type Permission Statut Réponse en temps réel Commandes à haut risque put Activer Refer to this screenshot.

You can also go directly to your Host from the Host setup and Management > Host management. Click on your hostname and scroll down to Real Time Response Policy from the left pop-up menu.
Configurer le plugin CrowdStrike
- Dans Cloud Exchange, accédez à Paramètres > Plugins. Recherchez et sélectionnez la case du plugin CrowdStrike v1.3.1 (URE) .

- Ajoutez un nom de configuration, un intervalle de synchronisation et activez l'option Utiliser le proxy du système si vous utilisez un proxy pour configurer le plugin.

- Cliquez sur Suivant et saisissez l’URL de base, l’ID du client, le secret client et le score maximal (le score maximal est le paramètre de configuration par lequel le plugin réceptionnait les scores des hôtes inférieurs ou égaux à une valeur donnée).

- Cliquez sur Suivant et définissez la plage de scores sur la page Select la plage. .

- Une fois terminé, cliquez sur Enregistrer

Create a User Risk Exchange Business Rule for CrowdStrike
- Accédez au module Risk Exchange > User Risk Exchange > Règles métier et cliquez sur Créer New règle.

- Saisissez le nom de la règle et configurez une requête pour les règles métier en fonction de vos besoins, puis cliquez sur Enregistrer.

Configurer les actions d'échange de risques des utilisateurs de Netskope pour CrowdStrike
Ce plugin CrowdStrike prend en charge les deux types d'action suivants :
- Pas d'action : Aucune action ne sera effectuée pour cette action. Les utilisateurs peuvent générer des alertes UBA dans le CTO en utilisant cette action et en activant le bouton bascule "générer des alertes".
- Mettre un script RTR : L'action Put RTR Script placera un fichier sur l'hôte en fonction de leur score respectif.
Score to File Mapping
| Score | Fichier |
|---|---|
| Moins de 260 | crwd_zta_1_25.txt |
| 260 to 510 | crwd_zta_26_50.txt |
| 510 à 760 | crwd_zta_51_75.txt |
| 760 à 1000 | crwd_zta_76_100.txt |
Steps to configure the Action:
- Accédez à User Risk Exchange > Actions et cliquez sur Ajouter une configuration d'action.

- Select la règle de gestion, la configuration (plugin) et l'action requises dans leurs listes déroulantes respectives.

- Cliquez sur le bouton Enregistrer.
Valider le plugin CrowdStrike
Valider dans Cloud Exchange
- Va sur User Risk Exchange > Hosts. Vous pourrez voir tous les animateurs et leurs scores tirés.

- Accédez à la page d'enregistrement pour vérifier que l'hôte et ses scores respectifs ont bien été enregistrés.

- Accédez à la page de journalisation pour vérifier l'action effectuée pour un hôte Mac si l'action est effectuée sur une machine Mac.

- Accédez à la page de journalisation pour vérifier l'action effectuée pour un hôte Windows si l'action est effectuée sur une machine Windows.

- Lorsqu’un utilisateur correspond à l’une des règles métier configurées, l’action configurée est effectuée sur l’utilisateur. Cela se voit dans Risk Exchange > Action Logs.

Valider dans CrowdStrike
- Connectez-vous à la plateforme CrowdStrike. Cliquez sur l’option du menu en haut à gauche, puis cliquez sur Host Setup and management > Host Management.

- You’ll see the number of hosts that are pulled from the platform as shown in this image.

Si vous souhaitez valider l’action put RTR Script et vérifier le fichier ajouté sur la machine hôte, suivez les étapes ci-dessous pour l’action Put RTR script ainsi que ses étapes de validation:
Step 1: Check Host Existence
Lorsque l'action est déclenchée, le plugin vérifie d'abord si l'hôte avec l'ID d'hôte donné existe sur la plateforme CrowdStrike.
Step 2: Evaluate Host Presence
- Si l'hôte n'existe pas, le plugin n'effectue aucune action supplémentaire et émet un avertissement.
- Si l'hôte existe, le plugin procède aux opérations suivantes.
Step 3: Create Score Files on RTR Cloud
Le plugin crée un fichier pour chaque plage de score de risque dans le cloud RTR.
Par exemple, si le score est entre 1 et 25, le fichier est nommé crwd_zta_1_25.txt.
Si un fichier portant le même nom existe déjà, l’API n’en créera pas un New .
Step 4: Establish Host Session
Une fois les fichiers nécessaires créés, le plugin initie une session avec l’hôte en utilisant l’identifiant hôte.
Step 5: Retrieve Host OS
Le plugin récupère les informations du système d’exploitation (OS) pour l’hôte concerné.
Step 6: Change Directory Based on OS
- En fonction du système d'exploitation de l'hôte, le plugin envoie un appel API pour modifier le répertoire à l'emplacement approprié.
- For Mac: cd "/Bibliothèque/Application Support/Netskope/STAgent"
- For Windows: cd "/Program Files (x86)/Netskope/STAgent"
- Le plugin attend jusqu'à 5 minutes l'exécution de la commande. Si le délai est plus long, une erreur de dépassement de délai est signalée. Ce délai s'applique aux commandes des étapes 6, 7 et 8.
Step 7: Check if the script for removal of file for OS is present on RTR Cloud
- Afin de supprimer les fichiers existants sur la machine hôte, le plugin doit vérifier si le script à supprimer existe déjà sur le nuage RTR ou non.
- Comme l'action Put RTR Script prend en charge Windows et macOS, les fichiers Windows Score File Removal Script et Mac Score File Removal Script doivent être présents sur le nuage RTR.
Step 8: Create script if it does not exist on the RTR cloud
Si le script correspondant au système d'exploitation n'existe pas sur le cloud RTR, créez-en un.
Step 9: Remove existing files from host machine
Exécutez le script correspondant au système d'exploitation de la machine hôte afin de supprimer les fichiers existants.
Step 10: Upload New Score File
- Après avoir supprimé les anciens fichiers de score, le plugin exécute une commande "put" pour télécharger le fichier de score New.
- Si le score existant était de 12 (nécessitant crwd_zta_1_25.txt), et que le score passe à 48, le fichier New (crwd_zta_26_50.txt) est téléchargé.
Step 11: Delete Host Session
Après avoir effectué toutes les étapes, le plugin supprime la session créée avec l'hôte afin de libérer des ressources et d'assurer un nettoyage adéquat.
Steps to Validate action on CrowdStrike
- Sur CrowdStrike, allez à Configuration et gestion de l'hôte > Gestion de l'hôte.
- Recherchez votre hôte à l'aide de votre nom d'hôte ou de votre ID d'hôte. Cliquez sur le nom d'hôte.
- From the left popup menu, click on the settings icon > Connect to Host.

Pour vérifier le fichier ajouté sur l'hôte, allez sur le chemin ci-dessous après vous être connecté à l'hôte et vérifiez le fichier de score créé.
- Pour les machines WINDOWS : C:\NProgram Files (x86)\NNetskope\NSTAgent

- Pour un ordinateur MAC : /Bibliothèque/Application Support/Netskope/STAgent

Dépannage
Impossible d'extraire l'hôte de la plateforme CrowdStrike
Si aucun ID d'hôte n'est extrait de la plateforme CrowdStrike, vérifiez les journaux dans CE Loggings. Il peut s'agir de l'un ou l'autre des éléments suivants.
- Une erreur est survenue lors du retrait des hôtes de la plate-forme.
- Aucun hôte n'est disponible sur la plateforme CrowdStrike.
What to do: Si vous avez reçu une erreur lors de l'extraction des IOC, vérifiez le message d'erreur et suivez les étapes ci-dessous.
Réception d'une erreur 500 : Le serveur est peut-être en panne, attendez un peu et vérifiez plus tard.
Receiving 403 error: The plugin configuration parameter does not have sufficient permissions or the credentials no longer exist. Verify the permission for the Client ID and Secret.
S'il n'y a pas d'erreur dans les journaux, il se peut que les hôtes ne soient pas disponibles sur la plate-forme à tirer. Vérifiez l'hôte disponible sur CrowdStrike et confirmez-le.
Impossible de récupérer les scores d'un hôte tiré au sort
Si vous n'êtes pas en mesure d'obtenir des scores pour tous les hôtes ou certains d'entre eux à partir de la plateforme, cela peut être dû à la valeur du score maximum fournie dans la configuration du plugin.
What to do: Consultez la page des paramètres de configuration du plugin. Augmentez la valeur du score maximum dans la configuration du plugin. Le plugin extrait les scores de l'hôte dont la valeur est inférieure ou égale à la valeur mentionnée dans le champ Score maximum.

Unable to perform Action on Host
Si vous n'êtes pas en mesure d'effectuer une action sur RTR Script, cela peut être dû à l'une des raisons suivantes.
- L'autorisation donnée pour l'action n'est pas suffisante.
- Réception d'une erreur lors de l'exécution d'une action.
What to do: Vérifiez le problème et suivez les options en conséquence.
L'autorisation donnée pour l'action n'est pas suffisante. Vérifiez si l'autorisation de script RTR est fournie.
Receiving error while performing an action.
Si la machine hôte est hors service ou n'existe pas, le plugin ne pourra pas exécuter avec succès l'action de mise en place du script RTR. Vérifiez que l'hôte est accessible.
Si l'hôte est Linux, l'action ne sera pas exécutée car Linux n'est pas un système d'exploitation pris en charge.
If too many actions are performed on a host, you might run into 425 error, which will add the action to the queue. You should wait for a while before retrying to perform the action.

