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 :
task
est le type de la tâche (voir ci-dessous).targetHost
est l'identifiant de l'ordinateur sur lequel le script doit être exécuté. Argument requis. Le script obtient cet argument à partir de l'événement.responseEventIncidentArea
est le nom de l'application qui a exécuté le script (par exemple, KUMA
). Ce paramètre s'ajoute au nom de la tâche créée.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 |
---|---|---|
|
|
Adresse du Serveur d'administration de Kaspersky Security Center. Paramètre obligatoire. |
|
|
Port de connexion au Serveur d'administration. Paramètre obligatoire. |
|
|
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 |
|
|
Nom du compte utilisateur. Paramètre obligatoire. |
|
|
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 fichier – getFile
Paramètres de la tâche Obtention du fichier
Paramètre |
Type |
Description |
---|---|---|
|
|
Hachage MD5 du fichier que vous souhaitez obtenir. |
|
|
Hachage SHA256 du fichier que vous souhaitez obtenir. |
|
|
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 fichier – deleteFile
Paramètres de la tâche Supprimer le fichier
Paramètre |
Type |
Description |
---|---|---|
|
|
Hachage MD5 du fichier que vous souhaitez supprimer. |
|
|
Hachage SHA256 du fichier que vous souhaitez supprimer. |
|
|
Chemin d'accès au fichier que vous souhaitez supprimer. |
|
|
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 Quarantaine – quarantineFile
Paramètres de la tâche Placer le fichier en Quarantaine
Paramètre |
Type |
Description |
---|---|---|
|
|
Hachage MD5 du fichier que vous souhaitez mettre en quarantaine. |
|
|
Hachage SHA256 du fichier que vous souhaitez mettre en quarantaine. |
|
|
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 IOC – iocScan
Paramètres de la tâche Analyse IOC
Paramètre |
Type |
Description |
---|---|---|
|
|
Chemin d'accès à l'archive ZIP contenant le fichier IOC que vous souhaitez utiliser pour effectuer l'analyse. |
|
|
Isolez l'ordinateur du réseau lorsqu'un indicateur de compromission est détecté pour empêcher la menace de se propager. |
|
|
Exécutez la tâche Analyse des zones critiques lorsqu'un indicateur de compromission est détecté. |
|
|
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 processus – startProcess
Paramètres de la tâche Démarrez le processus
Paramètre |
Type |
Description |
---|---|---|
|
|
Chemin d'accès au fichier exécutable utilisé pour lancer le processus. |
|
|
Arguments de ligne de commande supplémentaires pour le lancement du processus. |
|
|
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 processus – terminateProcess
Paramètres de la tâche Fin du processus
Paramètre |
Type |
Description |
---|---|---|
|
|
Hachage MD5 du fichier dont vous souhaitez arrêter le processus. |
|
|
Hachage SHA256 du fichier dont vous souhaitez arrêter le processus. |
|
|
Chemin d'accès au fichier que vous souhaitez supprimer. |
|
|
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 |
---|---|---|
|
|
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 |
---|---|---|
|
|
Hachage MD5 du fichier dont vous souhaitez empêcher l'exécution. |
|
|
Chemin d'accès au fichier dont vous souhaitez empêcher l'exécution. |
|
|
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 malveillants – onDemandScan
Paramètres de la tâche Analyse des logiciels malveillants
Paramètre |
Type |
Description |
---|---|---|
|
|
Liste de fichiers et de dossiers séparés par des espaces pour l'analyse personnalisée. |
|
|
Mode d'analyse récursif. |
|
|
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