O Kaspersky Endpoint Security 12.9 for Windows apresenta compatibilidade com Ações de Resposta a ameaças do EDR (EDR responses) usando a OpenAPI do Kaspersky Security Center. Ou seja, você pode chamar os métodos OpenAPI para automatizar a resposta a ameaças do EDR usando o Python. Você pode chamar esses métodos quando integrado com soluções SIEM. A Kaspersky Unified Monitoring and Analysis Platform, a solução SIEM da Kaspersky, é compatível com a OpenAPI de Resposta a ameaças do EDR a partir da versão 3.4.1. Para scripts de exemplo, consulte a documentação do KUMA.
Para executar ações de resposta a ameaças EDR, é preciso criar uma solicitação e enviá-la usando KSC Open API (AddIncident
). Após o processamento da solicitação, uma tarefa especial será criada no console do Kaspersky Security Center.
Para criar tarefas ao responder a ameaças EDR, é necessário estabelecer uma conexão em segundo plano entre o Servidor de Administração e o Kaspersky Security Center Web Console. O serviço de conexão em segundo plano está disponível no Kaspersky Security Center Windows 14.2 ou posterior e no Kaspersky Security Center Linux 15.2. Outros consoles, incluindo consoles das soluções Detection and Response da Kaspersky, não são compatíveis.
Para a resposta a ameaças EDR, é necessário especificar parâmetros básicos de solicitação, por exemplo, no formato JSON:
task
é o tipo da tarefa (veja abaixo).targetHost
é o ID do computador no qual o script deve ser executado. Argumento necessário. O script obtém esse argumento do evento.responseEventIncidentArea
é o nome do aplicativo que executou o script (por exemplo, KUMA
). Este parâmetro é adicionado ao nome da tarefa criada.Para configurar a resposta a ameaças EDR, é preciso especificar as configurações da tarefa no formato JSON no parâmetro "KLINCDT_BODY": json.dumps(data)
. Como resultado, o aplicativo cria o [Response][KUMA] <task type> - <Date> <Time> - <ID>
no console do Kaspersky Security Center .
Conectar-se à OpenAPI do Kaspersky Security Center
Como parte da resposta a ameaças EDR, o aplicativo cria tarefas especiais no console do Kaspersky Security Center . A criação de tarefas requer o estabelecimento de uma conexão entre o computador e o Kaspersky Security Center. Para conseguir isso, os parâmetros de conexão do Kaspersky Security Center devem ser especificados na solicitação.
Parâmetros de conexão do Kaspersky Security Center
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Endereço do Servidor de Administração do Kaspersky Security Center. Parâmetro obrigatório. |
|
|
Porta da conexão do Servidor de Administração Parâmetro obrigatório. |
|
|
Caminho para um arquivo de certificado para conexão ao Servidor de Administração do Kaspersky Security Center. Por padrão, o parâmetro é definido como |
|
|
Nome da conta do usuário. Parâmetro obrigatório. |
|
|
Senha da conta de usuário. Parâmetro obrigatório. |
Exemplo
# 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})
Os dados da conta do usuário não são protegidos, portanto, é necessário dedicar um usuário separado que será usado para executar somente essas ações.
Obter o arquivo – getFile
Configurações da tarefa Obter o arquivo
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Hash MD5 do arquivo que o usuário deseja obter. |
|
|
Hash SHA256 do arquivo que o usuário deseja obter. |
|
|
Caminho para o arquivo que o usuário deseja obter. |
Exemplo
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;
};
Excluir arquivo – deleteFile
Configurações da tarefa Excluir arquivo
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Hash MD5 do arquivo que o usuário deseja excluir. |
|
|
Hash SHA256 do arquivo que o usuário deseja excluir. |
|
|
Caminho para o arquivo que o usuário deseja excluir. |
|
|
Pesquise o arquivo que deseja excluir nas subpastas. |
Exemplo
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 arquivo para a Quarentena – quarantineFile
Configurações da tarefa Mover arquivo para a Quarentena
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Hash MD5 do arquivo que o usuário deseja colocar em quarentena. |
|
|
Hash SHA256 do arquivo que o usuário deseja colocar em quarentena. |
|
|
Caminho para o arquivo que o usuário deseja colocar em quarentena. |
Exemplo
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;
};
Verificação de IOC – iocScan
Configurações da tarefa Verificação de IOC
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Caminho para o arquivo comprimido Zip com arquivos IOC que você deseja usar para verificação. |
|
|
Isole o computador da rede quando um indicador de comprometimento for detectado para impedir que a ameaça se espalhe. |
|
|
Execute a tarefa Verificação de áreas críticas quando um indicador de comprometimento for detectado. |
|
|
Exclua o objeto malicioso quando um indicador de comprometimento for detectado. Antes de excluir o objeto, o Kaspersky Endpoint Security cria uma cópia de backup, caso o objeto precise ser restaurado posteriormente. O Kaspersky Endpoint Security move a cópia de backup para a quarentena. |
Exemplo
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 processo – startProcess
Configurações da tarefa Iniciar processo
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Caminho para o arquivo executável usado para iniciar o processo. |
|
|
Argumentos de linha de comando adicionais para iniciar o processo. |
|
|
Caminho para a pasta de trabalho do processo. |
Exemplo
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;
};
Encerrar processo – terminateProcess
Configurações da tarefa Encerrar processo
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Hash MD5 do arquivo cujo processo o usuário deseja encerrar. |
|
|
Hash SHA256 do arquivo cujo processo o usuário deseja encerrar. |
|
|
Caminho para o arquivo que o usuário deseja excluir. |
|
|
Diferenciação entre maiúsculas e minúsculas ao procurar o arquivo. |
Exemplo
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;
};
Isolamento de rede do computador – isolateHost
Configurações de isolamento de rede do computador
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Hash MD5 do arquivo que o usuário deseja obter. |
Exemplo
type isolateHost = {
task: 'isolateHost';
targetHost: string;
params: {
// 0 - turning off network isolation, 1 - turning on network isolation
action: number;
};
responseEventIncidentArea: string;
};
Prevenção de execução – preventExecution
Configurações de prevenção de execução
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Hash MD5 do arquivo do qual o usuário deseja impedir a execução. |
|
|
Caminho para o arquivo do qual o usuário deseja impedir a execução. |
|
|
Diferenciação entre maiúsculas e minúsculas ao procurar o arquivo. |
Exemplo
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;
};
Verificação de malware – onDemandScan
Configurações da tarefa Verificação de malware
Parâmetro |
Tipo |
Descrição |
---|---|---|
|
|
Lista delimitada por espaços de arquivos e pastas para Verificação personalizada. |
|
|
Modo de Verificação recursiva. |
|
|
Escopo da verificação. |
ScanObjectType = Enum("ScanObjectType", [ ("SystemMemory", 14), ("StartupObjectsAndRunningProcesses", 15), ("DiskBootSectors", 16), ("SystemBackupStorage", 17), ("Email", 18), ("Folder", 22), ("AllRemovableDrives", 23), ("AllNetworkDrives", 24), ("AllFixedDrives", 25)]) |
Exemplo
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;
};
Início da página