API pour la réponse aux menaces EDR

Kaspersky Endpoint Security 12.9 for Windows prend désormais en charge les actions de réponse aux menaces EDR (EDR responses) à l'aide de Kaspersky Security Center OpenAPI. Autrement dit, vous pouvez appeler des méthodes OpenAPI pour automatiser la réponse aux menaces EDR à l'aide de Python. Vous pouvez appeler ces méthodes lorsqu'elles sont intégrées à des solutions SIEM. Kaspersky Unified Monitoring and Analysis Platform, la solution de Kaspersky SIEM, prend en charge la réponse aux menaces EDR OpenAPI à partir de la version 3.4.1. Vous trouverez des exemples de scripts dans la documentation de KUMA.

Pour exécuter les actions de réponse aux menaces EDR, vous devez créer une demande et l'envoyer à l'aide de KSC Open API (AddIncident). Une fois que la demande est traitée, la tâche spéciale est créée dans la console de Kaspersky Security Center.

Pour créer des tâches en réponse aux menaces EDR, vous devez établir une connexion en arrière-plan entre le Serveur d'administration et Kaspersky Security Center Web Console. Le service de connexion en arrière-plan est disponible dans Kaspersky Security Center Windows 14.2 ou toute version ultérieure et dans Kaspersky Security Center Linux 15.2. Les autres consoles, y compris les consoles des solutions Kaspersky Detection and Response, ne sont pas prises en charge.

Pour la réponse aux menaces EDR, vous devez préciser des paramètres de requête de base, par exemple, au format JSON :

Pour configurer la réponse aux menaces EDR, vous devez préciser les paramètres de la tâche au format JSON dans le paramètre "KLINCDT_BODY": json.dumps(data). Par conséquent, l'application crée le [Response][KUMA] <task type> - <Date> <Time> - <ID> dans la console de Kaspersky Security Center.

Connexion à Kaspersky Security Center OpenAPI

Dans le cadre de la réponse aux menaces EDR, l'application crée des tâches spéciales dans la console de Kaspersky Security Center. La création de ces tâches requiert l'établissement d'une connexion entre l'ordinateur et Kaspersky Security Center. Pour ce faire, les paramètres de connexion à Kaspersky Security Center doivent être précisés dans la requête.

Paramètres de connexion à Kaspersky Security Center

Paramètre

Type

Description

kscHost

string

Adresse du Serveur d'administration de Kaspersky Security Center. Paramètre obligatoire.

kscPort

int

Port de connexion au Serveur d'administration. Paramètre obligatoire.

kscCert

string

Chemin d'accès au fichier de certificat de connexion au Serveur d'administration de Kaspersky Security Center. Par défaut, le paramètre est défini sur False.

kscUser

string

Nom du compte utilisateur. Paramètre obligatoire.

kscPassword

string

Mot de passe du compte utilisateur. Paramètre obligatoire.

Exemple

# KSC connection info

# reads Environment variables by default, change with corresponding values

# KSC host, string, required

kscHost = "kscHost"

# KSC port, required, default is "13299"

kscPort = "13299"

# KSC certificate file path, default is False

kscCert = False

# KSC user, string, required

kscUser = "kscUser"

# KSC password, string, required

kscPassword = "kscPassword"

server_url = 'https://' + kscHost + ':' + str(kscPort)

    server = KlAkAdmServer.Create(

        server_url, kscUser, kscPassword, verify=kscCert)

    params = validate(args)

    data = {"targetHost": <MyHost>,

            "task": task,

            "params": params,

            "responseEventIncident": True,

            "responseEventIncidentArea":"Kuma"}

    oHostGroup = KlAkHostGroup(server)

    incdnt = oHostGroup.AddIncident({"KLINCDT_SEVERITY": 2,

                                     "KLINCDT_ADDED": paramDateTime(datetime.datetime.now()),

                                     "KLINCDT_BODY": json.dumps(data),

                                     "KLHST_WKS_HOSTNAME":  args.targetHost}).RetVal()

    oHostGroup.UpdateIncident(incdnt, {"KLINCDT_IS_HANDLED": False,

                                       "KLHST_WKS_HOSTNAME":  args.targetHost})

Les données du compte utilisateur ne sont pas protégées, vous devez donc dédier un utilisateur distinct qui sera utilisé pour effectuer uniquement ces actions.

Obtention du fichiergetFile

Paramètres de la tâche Obtention du fichier

Paramètre

Type

Description

md5hash

string

Hachage MD5 du fichier que vous souhaitez obtenir.

sha256hash

string

Hachage SHA256 du fichier que vous souhaitez obtenir.

path

string

Chemin d'accès au fichier que vous souhaitez obtenir.

Exemple

type getFile = {

task: 'getFile';

targetHost: string;

params: {

// an empty string or a valid md5 hash of the file

md5hash: string;

// an empty string or a valid sha256 hash of the file

sha256hash: string;

// the path to the file

path: string;

};

responseEventIncidentArea: string;

};

Supprimer le fichierdeleteFile

Paramètres de la tâche Supprimer le fichier

Paramètre

Type

Description

md5hash

string

Hachage MD5 du fichier que vous souhaitez supprimer.

sha256hash

string

Hachage SHA256 du fichier que vous souhaitez supprimer.

path

string

Chemin d'accès au fichier que vous souhaitez supprimer.

searchInSubfolders?

boolean

Recherchez le fichier que vous souhaitez supprimer dans les sous-dossiers.

Exemple

type deleteFile = {

task: 'deleteFile';

targetHost: string;

params: {

// an empty string or a valid md5 hash of the file

md5hash: string;

// an empty string or a valid sha256 hash of the file

sha256hash: string;

// the path to the file

path: string;

// recursive search for a file (subfolder), optional

searchInSubfolders?: boolean;

};

responseEventIncidentArea: string;

};

Placer le fichier en QuarantainequarantineFile

Paramètres de la tâche Placer le fichier en Quarantaine

Paramètre

Type

Description

md5hash

string

Hachage MD5 du fichier que vous souhaitez mettre en quarantaine.

sha256hash

string

Hachage SHA256 du fichier que vous souhaitez mettre en quarantaine.

path

string

Chemin d'accès au fichier que vous souhaitez mettre en quarantaine.

Exemple

type quarantineFile = {

task: 'quarantineFile';

targetHost: string;

params: {

// an empty string or a valid md5 hash of the file

md5hash: string;

// an empty string or a valid sha256 hash of the file

sha256hash: string;

// the path to the file

path: string;

};

responseEventIncidentArea: string;

};

Analyse IOCiocScan

Paramètres de la tâche Analyse IOC

Paramètre

Type

Description

ioc

string

Chemin d'accès à l'archive ZIP contenant le fichier IOC que vous souhaitez utiliser pour effectuer l'analyse.

isolateHost

boolean

Isolez l'ordinateur du réseau lorsqu'un indicateur de compromission est détecté pour empêcher la menace de se propager.

scanCriticalAreas

boolean

Exécutez la tâche Analyse des zones critiques lorsqu'un indicateur de compromission est détecté.

quarantineObject

boolean

Supprimez l'objet malveillant dès que l'indicateur de compromission est détecté. Avant de supprimer l'objet, Kaspersky Endpoint Security crée une copie de sauvegarde au cas où l'objet devrait être restauré ultérieurement. Kaspersky Endpoint Security déplace la copie de sauvegarde dans la Quarantaine.

Exemple

type iocScan = {

task: 'iocScan';

targetHost: string;

params: {

// the path to the zip archive with ioc files in base64 encoding

ioc: string;

// isolation of the computer from the network

isolateHost: boolean;

// critical areas scan

scanCriticalAreas: boolean;

// quarantine the file

quarantineObject: boolean;

};

responseEventIncidentArea: string;

};

Démarrez le processusstartProcess

Paramètres de la tâche Démarrez le processus

Paramètre

Type

Description

executablePath

string

Chemin d'accès au fichier exécutable utilisé pour lancer le processus.

arguments?

string

Arguments de ligne de commande supplémentaires pour le lancement du processus.

workingFolder?

string

Chemin d'accès au dossier de travail du processus.

Exemple

type startProcess = {

task: 'startProcess';

targetHost: string;

params: {

// the path to the file

executablePath: string;

// command line arguments, optional

arguments?: string;

// a working folder, optional

workingFolder?: string;

};

responseEventIncidentArea: string;

};

Fin du processusterminateProcess

Paramètres de la tâche Fin du processus

Paramètre

Type

Description

md5hash

string

Hachage MD5 du fichier dont vous souhaitez arrêter le processus.

sha256hash

string

Hachage SHA256 du fichier dont vous souhaitez arrêter le processus.

path

string

Chemin d'accès au fichier que vous souhaitez supprimer.

caseSensitive

boolean

Le respect de la casse lors de la recherche du fichier.

Exemple

type terminateProcess = {

task: 'terminateProcess';

targetHost: string;

params: {

// an empty string or a valid md5 hash of the file

md5hash: string;

// an empty string or a valid sha256 hash of the file

sha256hash: string;

// the path to the file

path: string;

// case sensitive of the file name

caseSensitive: boolean;

};

responseEventIncidentArea: string;

};

Isolement du réseau pour l'ordinateur – isolateHost

Paramètres d'isolement du réseau pour l'ordinateur

Paramètre

Type

Description

action

string

Hachage MD5 du fichier que vous souhaitez obtenir.

Exemple

type isolateHost = {

task: 'isolateHost';

targetHost: string;

params: {

// 0 - turning off network isolation, 1 - turning on network isolation

action: number;

};

responseEventIncidentArea: string;

};

Prévention de l'exécution – preventExecution

Paramètres de Prévention de l'exécution

Paramètre

Type

Description

hash

string

Hachage MD5 du fichier dont vous souhaitez empêcher l'exécution.

path

string

Chemin d'accès au fichier dont vous souhaitez empêcher l'exécution.

caseSensitive

boolean

Le respect de la casse lors de la recherche du fichier.

Exemple

type preventExecution = {

task: 'preventExecution';

targetHost: string;

params: {

// a valid md5 hash of the file

hash: string;

// the path to the file

path: string;

// case sensitive of the file name

caseSensitive: boolean;

};

responseEventIncidentArea: string;

};

Analyse des logiciels malveillantsonDemandScan

Paramètres de la tâche Analyse des logiciels malveillants

Paramètre

Type

Description

path

string

Liste de fichiers et de dossiers séparés par des espaces pour l'analyse personnalisée.

recursive

boolean

Mode d'analyse récursif.

type

number

Zone d'analyse.

ScanObjectType = Enum("ScanObjectType",

[

("SystemMemory", 14),

("StartupObjectsAndRunningProcesses", 15),

("DiskBootSectors", 16),

("SystemBackupStorage", 17),

("Email", 18),

("Folder", 22),

("AllRemovableDrives", 23),

("AllNetworkDrives", 24),

("AllFixedDrives", 25)])

Exemple

type onDemandScan = {

task: 'onDemandScan';

targetHost: string;

// please note, this is an array

// array of scan object

params: [{

// enabling the scan object

enabled: boolean;

// an empty string or the path to the folder to scan

path: string;

// recursive scan mode

recursive: boolean;

// ID scan object

type: number;

}];

responseEventIncidentArea: string;

};

Haut de page