API para respuesta ante amenazas de EDR

Kaspersky Endpoint Security 12.9 para Windows presenta soporte con acciones de Respuesta ante amenazas de EDR (EDR responses) usando Kaspersky Security Center OpenAPI. Es decir, puede llamar a métodos de OpenAPI para automatizar la respuesta a amenazas de EDR usando Python. Puede llamar a estos métodos cuando se integran con soluciones SIEM. Kaspersky Unified Monitoring and Analysis Platform, la solución de Kaspersky SIEM, es compatible con la OpenAPI de Respuesta ante amenazas de EDR a partir de la versión 3.4.1. Para ver scripts de ejemplo, consulte la documentación de KUMA.

Para realizar acciones de Respuesta ante amenazas de EDR, debe crear una solicitud y enviarla mediante 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 ante 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. No se admiten otras consolas, incluidas las consolas de las soluciones Kaspersky Detection and Response.

Para la Respuesta ante amenazas de EDR, debe especificar parámetros de solicitud básicos; por ejemplo, en formato JSON:

Para configurar la Respuesta ante 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 el [Response][KUMA] <task type> - <Date> <Time> - <ID> en la consola de Kaspersky Security Center.

Conexión a Kaspersky Security Center OpenAPI

Como parte de EDR Threat Response, la aplicación crea tareas especiales en la consola de Kaspersky Security Center. La creación de estas tareas requiere 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 requerido.

kscPort

int

Puerto de conexión al Servidor de administración. Parámetro requerido.

kscCert

string

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

kscUser

string

Nombre de la cuenta de usuario. Parámetro requerido.

kscPassword

string

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

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 tanto, debe dedicar un usuario independiente que se utilizará solo para realizar 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

Busca el archivo que desea eliminar en 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;

};

Mover archivo a CuarentenaquarantineFile

Configuración de la tarea Mover archivo a 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 ZIP con un archivo de IOC que desee usar para el análisis.

isolateHost

boolean

Aísle el equipo de la red cuando se detecte un indicador de peligro 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 la 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 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;

};

Terminar procesoterminateProcess

Configuración de la tarea Terminar 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 de 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 equipos de la red – isolateHost

Configuración del aislamiento de equipos de la red

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

Configuración de prevención de ejecución

Parámetro

Tipo

Descripción

hash

string

Hash MD5 del archivo cuya ejecución desea evitar.

path

string

Ruta al archivo cuya ejecución desea evitar.

caseSensitive

boolean

Distinción de 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 antimalwareonDemandScan

Configuración de la tarea Análisis antimalware

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

Cobertura 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