API для реагирования на угрозы EDR

В Kaspersky Endpoint Security для Windows 12.9 добавлена поддержка действий по реагированию на угрозы EDR (EDR responses) с помощью Kaspersky Security Center OpenAPI. То есть вы можете вызывать методы OpenAPI для автоматизации реагирования на угрозы EDR с помощью Python. Вы можете вызывать эти методы при взаимодействии с SIEM-решениями. SIEM-решение от "Лаборатории Касперского" – Kaspersky Unified Monitoring and Analysis Platform – поддерживает OpenAPI для реагирования на угрозы EDR начиная с версии 3.4.1. В справке KUMA приведены примеры скриптов.

Для выполнения действий по реагированию на угрозы EDR вам нужно создать запрос и отправить его с помощью KSC Open API (AddIncident). После обработки запроса в консоли Kaspersky Security Center будет создана специальная задача.

Для создания задач при реагировании на угрозы EDR вам нужно установить фоновое соединение между Сервером администрирования и Kaspersky Security Center Web Console. Служба фонового соединения доступна в Kaspersky Security Center Windows 14.2 и выше и Kaspersky Security Center Linux 15.2. Другие консоли, включая консоли решений Detection and Response от "Лаборатории Касперского", не поддерживаются.

Для реагирования на угрозы EDR необходимо задать основные параметры запроса, например, с помощью JSON:

Для настройки параметров реагирования на угрозы EDR вам нужно в параметре "KLINCDT_BODY": json.dumps(data) задать параметры задачи в JSON. В результате в консоли Kaspersky Security Center приложение создает задачу [Response][KUMA] <task type> - <Date> <Time> - <ID>.

Подключение к Kaspersky Security Center OpenAPI

При реагировании на угрозы EDR приложение создает в консоли Kaspersky Security Center специальные задачи. Для создания этих задач нужно установить соединение между компьютером и Kaspersky Security Center. Для этого в запросе необходимо указать параметры подключения к Kaspersky Security Center.

Параметры подключения к Kaspersky Security Center

Параметр

Тип

Описание

kscHost

string

Адрес Сервера администрирования Kaspersky Security Center. Обязательный параметр.

kscPort

int

Порт подключения к Серверу администрирования. Обязательный параметр.

kscCert

string

Путь к файлу сертификата для подключения к Серверу администрирования Kaspersky Security Center. По умолчанию параметр имеет значение False.

kscUser

string

Имя учетной записи пользователя. Обязательный параметр.

kscPassword

string

Пароль учетной записи пользователя. Обязательный параметр.

Пример

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

Так как учетные данные пользователя не защищены, для работы со скриптами необходимо выделить отдельного пользователя, который выполняет только эти действия.

Получение файлаgetFile

Параметры задачи Получение файла

Параметр

Тип

Описание

md5hash

string

MD5-хеш файла, который вам нужно получить.

sha256hash

string

SHA256-хеш файла, который вам нужно получить.

path

string

Путь к файлу, который вам нужно получить.

Пример

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;

};

Удаление файлаdeleteFile

Параметры задачи Удаление файла

Параметр

Тип

Описание

md5hash

string

MD5-хеш файла, который вам нужно удалить.

sha256hash

string

SHA256-хеш файла, который вам нужно удалить.

path

string

Путь к файлу, который вам нужно удалить.

searchInSubfolders?

boolean

Поиск файла, который вам нужно удалить, в подпапках

Пример

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;

};

Помещение файла на карантинquarantineFile

Параметры задачи Помещение файла на карантин

Параметр

Тип

Описание

md5hash

string

MD5-хеш файла, который вам нужно поместить на карантин.

sha256hash

string

SHA256-хеш файла, который вам нужно поместить на карантин.

path

string

Путь к файлу, который вам нужно поместить на карантин.

Пример

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;

};

Поиск IOCiocScan

Параметры задачи Поиск IOC

Параметр

Тип

Описание

ioc

string

Путь к ZIP-архиву с IOC-файлом, по которому требуется выполнять поиск.

isolateHost

boolean

Изоляция компьютера от сети при обнаружении индикатора компрометации для предотвращения распространения угрозы.

scanCriticalAreas

boolean

Запуск задачи Проверка важных областей при обнаружении индикатора компрометации.

quarantineObject

boolean

Удаление вредоносного объекта при обнаружении индикатора компрометации. Перед удалением объекта Kaspersky Endpoint Security формирует его резервную копию на тот случай, если впоследствии понадобится восстановить объект. Kaspersky Endpoint Security помещает резервную копию на карантин.

Пример

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;

};

Запуск процессаstartProcess

Параметры задачи Запуск процесса

Параметр

Тип

Описание

executablePath

string

Путь к исполняемому файлу для запуска процесса.

arguments?

string

Дополнительные аргументы для запуска процесса.

workingFolder?

string

Путь к рабочей папке процесса.

Пример

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;

};

Завершение процессаterminateProcess

Параметры задачи Завершение процесса

Параметр

Тип

Описание

md5hash

string

MD5-хеш файла, процесс которого вам нужно завершить.

sha256hash

string

SHA256-хеш файла, процесс которого вам нужно завершить.

path

string

Путь к файлу, процесс которого вам нужно завершить.

caseSensitive

boolean

Режим учета регистра при поиске файла.

Пример

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;

};

Сетевая изоляция компьютера – isolateHost

Параметры Сетевой изоляции компьютера

Параметр

Тип

Описание

action

string

MD5-хеш файла, который вам нужно получить.

Пример

type isolateHost = {

task: 'isolateHost';

targetHost: string;

params: {

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

action: number;

};

responseEventIncidentArea: string;

};

Запрет запуска объектов – preventExecution

Параметры Запрета запуска объектов

Параметр

Тип

Описание

hash

string

MD5-хеш файла, запуск которого вы хотите запретить.

path

string

Путь к файлу, запуск которого вы хотите запретить.

caseSensitive

boolean

Режим учета регистра при поиске файла.

Пример

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;

};

Поиск вредоносного ПОonDemandScan

Параметры задачи Поиск вредоносного ПО

Параметр

Тип

Описание

path

string

Список файлов и папок для выборочной проверки через пробел

recursive

boolean

Режим рекурсивной проверки.

type

number

Область проверки.

ScanObjectType = Enum("ScanObjectType",

[

("SystemMemory", 14),

("StartupObjectsAndRunningProcesses", 15),

("DiskBootSectors", 16),

("SystemBackupStorage", 17),

("Email", 18),

("Folder", 22),

("AllRemovableDrives", 23),

("AllNetworkDrives", 24),

("AllFixedDrives", 25)])

Пример

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;

};

В начало