В 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:
task
– тип задачи (см. ниже).targetHost
– идентификатор компьютера, на котором нужно запустить скрипт. Обязательный аргумент. Скрипт получает этот аргумент из события.responseEventIncidentArea
– название приложения, которое инициировало запуск скрипта (например, KUMA
). Этот параметр будет добавлен в название создаваемой задачи.Для настройки параметров реагирования на угрозы 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
Параметр |
Тип |
Описание |
---|---|---|
|
|
Адрес Сервера администрирования Kaspersky Security Center. Обязательный параметр. |
|
|
Порт подключения к Серверу администрирования. Обязательный параметр. |
|
|
Путь к файлу сертификата для подключения к Серверу администрирования Kaspersky Security Center. По умолчанию параметр имеет значение |
|
|
Имя учетной записи пользователя. Обязательный параметр. |
|
|
Пароль учетной записи пользователя. Обязательный параметр. |
Пример
# 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
Параметры задачи Получение файла
Параметр |
Тип |
Описание |
---|---|---|
|
|
MD5-хеш файла, который вам нужно получить. |
|
|
SHA256-хеш файла, который вам нужно получить. |
|
|
Путь к файлу, который вам нужно получить. |
Пример
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
Параметры задачи Удаление файла
Параметр |
Тип |
Описание |
---|---|---|
|
|
MD5-хеш файла, который вам нужно удалить. |
|
|
SHA256-хеш файла, который вам нужно удалить. |
|
|
Путь к файлу, который вам нужно удалить. |
|
|
Поиск файла, который вам нужно удалить, в подпапках |
Пример
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
Параметры задачи Помещение файла на карантин
Параметр |
Тип |
Описание |
---|---|---|
|
|
MD5-хеш файла, который вам нужно поместить на карантин. |
|
|
SHA256-хеш файла, который вам нужно поместить на карантин. |
|
|
Путь к файлу, который вам нужно поместить на карантин. |
Пример
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;
};
Поиск IOC – iocScan
Параметры задачи Поиск IOC
Параметр |
Тип |
Описание |
---|---|---|
|
|
Путь к ZIP-архиву с IOC-файлом, по которому требуется выполнять поиск. |
|
|
Изоляция компьютера от сети при обнаружении индикатора компрометации для предотвращения распространения угрозы. |
|
|
Запуск задачи Проверка важных областей при обнаружении индикатора компрометации. |
|
|
Удаление вредоносного объекта при обнаружении индикатора компрометации. Перед удалением объекта 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
Параметры задачи Запуск процесса
Параметр |
Тип |
Описание |
---|---|---|
|
|
Путь к исполняемому файлу для запуска процесса. |
|
|
Дополнительные аргументы для запуска процесса. |
|
|
Путь к рабочей папке процесса. |
Пример
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
Параметры задачи Завершение процесса
Параметр |
Тип |
Описание |
---|---|---|
|
|
MD5-хеш файла, процесс которого вам нужно завершить. |
|
|
SHA256-хеш файла, процесс которого вам нужно завершить. |
|
|
Путь к файлу, процесс которого вам нужно завершить. |
|
|
Режим учета регистра при поиске файла. |
Пример
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
Параметры Сетевой изоляции компьютера
Параметр |
Тип |
Описание |
---|---|---|
|
|
MD5-хеш файла, который вам нужно получить. |
Пример
type isolateHost = {
task: 'isolateHost';
targetHost: string;
params: {
// 0 - turning off network isolation, 1 - turning on network isolation
action: number;
};
responseEventIncidentArea: string;
};
Запрет запуска объектов – preventExecution
Параметры Запрета запуска объектов
Параметр |
Тип |
Описание |
---|---|---|
|
|
MD5-хеш файла, запуск которого вы хотите запретить. |
|
|
Путь к файлу, запуск которого вы хотите запретить. |
|
|
Режим учета регистра при поиске файла. |
Пример
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
Параметры задачи Поиск вредоносного ПО
Параметр |
Тип |
Описание |
---|---|---|
|
|
Список файлов и папок для выборочной проверки через пробел |
|
|
Режим рекурсивной проверки. |
|
|
Область проверки. |
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;
};
В начало