API para respuesta a amenazas de EDR

Kaspersky Endpoint Security 12.9 para Windows es compatible con las acciones de respuesta a amenazas de EDR (EDR responses) utilizando Kaspersky Security Center OpenAPI. Es decir, puede llamar a métodos de OpenAPI para automatizar la respuesta a amenazas de EDR con Python. Puede llamar a estos métodos al realizar la integración con las soluciones SIEM. Kaspersky Unified Monitoring and Analysis Platform, la solución de Kaspersky SIEM, es compatible con OpenAPI de respuesta a amenazas de EDR a partir de la versión 3.4.1. Para ver ejemplos de scripts, consulte la documentación de KUMA.

Para realizar acciones de respuesta a amenazas de EDR, debe crear una solicitud y enviarla utilizando KSC Open API (AddIncident). Una vez que se procesa la solicitud, se crea una tarea especial en la consola de Kaspersky Security Center.

Para crear tareas al responder a amenazas de EDR, debe establecer una conexión en segundo plano entre el Servidor de administración y Kaspersky Security Center Web Console. El servicio de conexión en segundo plano está disponible en Kaspersky Security Center Windows 14.2 o posterior y en Kaspersky Security Center Linux 15.2. Otras consolas, incluidas las consolas de las soluciones de Kaspersky Detection and Response, no son compatibles.

Para la respuesta a amenazas de EDR, debe especificar los parámetros básicos de la solicitud, por ejemplo, en formato JSON:

Para configurar la respuesta a amenazas de EDR, debe especificar la configuración de la tarea en formato JSON en el parámetro "KLINCDT_BODY": json.dumps(data). Como resultado, la aplicación crea la [Response][KUMA] <task type> - <Date> <Time> - <ID> en la consola de Kaspersky Security Center.

Conexión a Kaspersky Security Center OpenAPI

Como parte de respuesta a amenazas de EDR, la aplicación crea tareas especiales en la consola de Kaspersky Security Center. Para crear estas tareas, es necesario establecer una conexión entre el equipo y Kaspersky Security Center. Para lograr esto, los parámetros de conexión de Kaspersky Security Center deben especificarse en la solicitud.

Parámetros de conexión de Kaspersky Security Center

Parámetro

Tipo

Descripción

kscHost

string

Dirección del servidor de administración de Kaspersky Security Center. Parámetro obligatorio.

kscPort

int

Puerto de la conexión del Servidor de administración Parámetro obligatorio.

kscCert

string

Ruta a un archivo de certificado para conectarse al Servidor de administración de Kaspersky Security Center. De manera predeterminada, el parámetro está establecido en False.

kscUser

string

Nombre de cuenta del usuario. Parámetro obligatorio.

kscPassword

string

Contraseña de la cuenta de usuario. Parámetro obligatorio.

Ejemplo

# 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})

Los datos de la cuenta de usuario no están protegidos, por lo tanto, debe especificar un usuario separado que se usará para realizar solo estas acciones.

Obtener archivogetFile

Configuración de la tarea Obtener archivo

Parámetro

Tipo

Descripción

md5hash

string

Hash MD5 del archivo que desea obtener.

sha256hash

string

Hash SHA256 del archivo que desea obtener.

path

string

Ruta al archivo que desea obtener.

Ejemplo

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;

};

Eliminar archivodeleteFile

Configuración de la tarea Eliminar archivo

Parámetro

Tipo

Descripción

md5hash

string

Hash MD5 del archivo que desea eliminar.

sha256hash

string

Hash SHA256 del archivo que desea eliminar.

path

string

Ruta al archivo que desea eliminar.

searchInSubfolders?

boolean

Busque el archivo que desea eliminar en las subcarpetas.

Ejemplo

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;

};

Poner archivo en cuarentenaquarantineFile

Configuración de la tarea Poner archivo en cuarentena

Parámetro

Tipo

Descripción

md5hash

string

Hash MD5 del archivo que desea poner en cuarentena.

sha256hash

string

Hash SHA256 del archivo que desea poner en cuarentena.

path

string

Ruta al archivo que desea poner en cuarentena.

Ejemplo

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;

};

Análisis de IOCiocScan

Configuración de la tarea Análisis de IOC

Parámetro

Tipo

Descripción

ioc

string

Ruta al archivo de almacenamiento Zip con archivos de IOC que desea usar para analizar.

isolateHost

boolean

Aísle el equipo de la red cuando se detecte un indicador de compromiso para evitar que la amenaza se propague.

scanCriticalAreas

boolean

Ejecute la tarea Análisis de áreas críticas cuando se detecte un indicador de compromiso.

quarantineObject

boolean

Elimine el objeto malicioso cuando se detecte un indicador de compromiso. Antes de eliminar el objeto, Kaspersky Endpoint Security crea una copia de seguridad en caso de que sea necesario restaurar el objeto más adelante. Kaspersky Endpoint Security mueve la copia de seguridad a Cuarentena.

Ejemplo

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;

};

Iniciar procesostartProcess

Configuración de la tarea Iniciar proceso

Parámetro

Tipo

Descripción

executablePath

string

Ruta al archivo ejecutable que se utiliza para iniciar el proceso.

arguments?

string

Argumentos de línea de comandos adicionales para iniciar el proceso.

workingFolder?

string

Ruta de acceso a la carpeta de trabajo del proceso.

Ejemplo

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;

};

Finalizar procesoterminateProcess

Configuración de la tarea Finalizar proceso

Parámetro

Tipo

Descripción

md5hash

string

Hash MD5 del archivo cuyo proceso desea finalizar.

sha256hash

string

Hash SHA256 del archivo cuyo proceso desea finalizar.

path

string

Ruta al archivo que desea eliminar.

caseSensitive

boolean

Distinción entre mayúsculas y minúsculas al buscar el archivo.

Ejemplo

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;

};

Aislamiento de la red del equipo – isolateHost

Configuración de aislamiento de la red del equipo

Parámetro

Tipo

Descripción

action

string

Hash MD5 del archivo que desea obtener.

Ejemplo

type isolateHost = {

task: 'isolateHost';

targetHost: string;

params: {

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

action: number;

};

responseEventIncidentArea: string;

};

Prevención de ejecución – preventExecution

Ajustes de prevención de ejecución

Parámetro

Tipo

Descripción

hash

string

Hash MD5 del archivo que desea evitar que se ejecute.

path

string

Ruta al archivo que desea evitar que se ejecute.

caseSensitive

boolean

Distinción entre mayúsculas y minúsculas al buscar el archivo.

Ejemplo

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;

};

Análisis de malwareonDemandScan

Configuración de la tarea Análisis de malware

Parámetro

Tipo

Descripción

path

string

Lista delimitada por espacios de archivos y carpetas para análisis personalizado.

recursive

boolean

Modo de análisis recursivo.

type

number

Alcance del análisis.

ScanObjectType = Enum("ScanObjectType",

[

("SystemMemory", 14),

("StartupObjectsAndRunningProcesses", 15),

("DiskBootSectors", 16),

("SystemBackupStorage", 17),

("Email", 18),

("Folder", 22),

("AllRemovableDrives", 23),

("AllNetworkDrives", 24),

("AllFixedDrives", 25)])

Ejemplo

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;

};

Inicio de página