Interfejs API dla usługi reagowania na zagrożenia EDR

W Kaspersky Endpoint Security 12.9 for Windows wprowadzono obsługę działań reagowania na zagrożenia EDR (EDR responses) za pomocą Kaspersky Security Center OpenAPI. Oznacza to, że można wywołać metody OpenAPI w celu zautomatyzowania reakcji na zagrożenie EDR przy użyciu języka Python. Metody te można wywołać po ich zintegrowaniu z rozwiązaniami SIEM. Kaspersky Unified Monitoring and Analysis Platform to rozwiązanie SIEM firmy Kaspersky, które obsługuje interfejs OpenAPI reagowania na zagrożenia EDR od wersji 3.4.1. Przykładowe skrypty można znaleźć w dokumentacji KUMA.

Aby wykonać działania w ramach reagowania na zagrożenia EDR, należy utworzyć żądanie i wysłać je za pomocą interfejsu KSC Open API (AddIncident). Po przetworzeniu żądania w konsoli Kaspersky Security Center tworzone jest specjalne zadanie.

Aby tworzyć zadania podczas reagowania na zagrożenia EDR, należy nawiązać połączenie w tle między Serwerem administracyjnym a Kaspersky Security Center Web Console. Usługa połączenia w tle jest dostępna w Kaspersky Security Center dla systemu Windows w wersji 14.2 lub nowszej oraz w Kaspersky Security Center Linux 15.2. Inne konsole, w tym konsole rozwiązań Kaspersky Detection and Response, nie są obsługiwane.

W przypadku odpowiedzi na zagrożenia EDR konieczne jest określenie podstawowych parametrów żądania, na przykład w formacie JSON:

Aby skonfigurować usługę rozpoznawania zagrożeń EDR, należy określić ustawienia zadania w formacie JSON w parametrze "KLINCDT_BODY": json.dumps(data). W rezultacie aplikacja tworzy [Response][KUMA] <task type> - <Date> <Time> - <ID> w konsoli Kaspersky Security Center.

Łączenie z OpenAPI Kaspersky Security Center

Aplikacja tworzy specjalne zadania w konsoli Kaspersky Security Center w ramach reakcji na zagrożenia EDR. Utworzenie tych zadań wymaga nawiązania połączenia między komputerem a Kaspersky Security Center. W tym celu należy określić w żądaniu parametry połączenia Kaspersky Security Center.

Parametry połączenia Kaspersky Security Center

Parametr

Typ

Opis

kscHost

string

Adres serwera administracyjnego Kaspersky Security Center. Parametr wymagany.

kscPort

int

Port połączenia z Serwerem administracyjnym. Parametr wymagany.

kscCert

string

Ścieżka do pliku certyfikatu umożliwiającego połączenie z Serwerem administracyjnym Kaspersky Security Center. Parametr jest domyślnie ustawiony na False.

kscUser

string

Nazwa konta użytkownika. Parametr wymagany.

kscPassword

string

Hasło do konta użytkownika. Parametr wymagany.

Na przykład

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

Dane konta użytkownika nie są chronione, dlatego należy utworzyć osobne konto użytkownika, które będzie używane wyłącznie do wykonywania tych czynności.

Uzyskaj plikgetFile

Ustawienia zadania Uzyskaj plik

Parametr

Typ

Opis

md5hash

string

Skrót MD5 pliku, który chcesz uzyskać.

sha256hash

string

Skrót SHA256 pliku, który chcesz uzyskać.

path

string

Ścieżka do pliku, który chcesz uzyskać.

Na przykład

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;

};

Usuń plikdeleteFile

Ustawienia zadania Usuń plik

Parametr

Typ

Opis

md5hash

string

Skrót MD5 pliku, który chcesz usunąć.

sha256hash

string

Skrót SHA256 pliku, który chcesz usunąć.

path

string

Ścieżka do pliku, który chcesz usunąć.

searchInSubfolders?

boolean

Znajdź w podfolderach plik, który chcesz usunąć.

Na przykład

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;

};

Przenieś plik do KwarantannyquarantineFile

Ustawienia zadania Przenieś plik do Kwarantanny

Parametr

Typ

Opis

md5hash

string

Skrót MD5 pliku, który chcesz poddać kwarantannie.

sha256hash

string

Skrót SHA256 pliku, który chcesz poddać kwarantannie.

path

string

Ścieżka do pliku, który chcesz poddać kwarantannie.

Na przykład

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;

};

Skanowanie IOCiocScan

Ustawienia zadania Skanowanie IOC

Parametr

Typ

Opis

ioc

string

Ścieżka do archiwum ZIP zawierającego plik IOC, którego chcesz użyć do skanowania.

isolateHost

boolean

W przypadku wykrycia oznak zagrożenia należy odizolować komputer od sieci, aby zapobiec jego rozprzestrzenianiu.

scanCriticalAreas

boolean

Uruchom zadanie Skanowanie obszarów krytycznych po wykryciu oznak zagrożenia.

quarantineObject

boolean

Usuń szkodliwy obiekt po wykryciu oznak zagrożenia. Przed usunięciem obiektu Kaspersky Endpoint Security utworzy kopię zapasową w przypadku, gdy obiekt musi zostać przywrócony w późniejszym czasie. Kaspersky Endpoint Security przeniesie kopię zapasową do Kwarantanny.

Na przykład

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;

};

Rozpocznij processtartProcess

Ustawienia zadania Rozpocznij proces

Parametr

Typ

Opis

executablePath

string

Ścieżka do pliku wykonywalnego używanego do uruchomienia procesu.

arguments?

string

Dodatkowe argumenty wiersza poleceń służące do uruchomienia procesu.

workingFolder?

string

Ścieżka do folderu roboczego procesu.

Na przykład

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;

};

Zakończ procesterminateProcess

Ustawienia zadania Zakończ proces

Parametr

Typ

Opis

md5hash

string

Skrót MD5 pliku, którego proces chcesz zakończyć.

sha256hash

string

Skrót SHA256 pliku, którego proces chcesz zakończyć.

path

string

Ścieżka do pliku, który chcesz usunąć.

caseSensitive

boolean

Rozróżnianie wielkości liter podczas wyszukiwania pliku.

Na przykład

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;

};

Izolacja sieci komputerowej — isolateHost

Ustawienia izolacji sieci komputerowej

Parametr

Typ

Opis

action

string

Skrót MD5 pliku, który chcesz uzyskać.

Na przykład

type isolateHost = {

task: 'isolateHost';

targetHost: string;

params: {

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

action: number;

};

responseEventIncidentArea: string;

};

Zapobieganie wykonywaniu — preventExecution

Ustawienia zapobiegania wykonywania

Parametr

Typ

Opis

hash

string

Skrót MD5 pliku, którego uruchomieniu chcesz zapobiec.

path

string

Ścieżka do pliku, którego uruchomieniu chcesz zapobiec.

caseSensitive

boolean

Rozróżnianie wielkości liter podczas wyszukiwania pliku.

Na przykład

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;

};

Skanowanie w poszukiwaniu złośliwego oprogramowaniaonDemandScan

Ustawienia zadania Skanowanie w poszukiwaniu złośliwego oprogramowania

Parametr

Typ

Opis

path

string

Rozdzielona spacjami lista plików i folderów do celów skanowania niestandardowego.

recursive

boolean

Tryb skanowania cyklicznego.

type

number

Obszar skanowania.

ScanObjectType = Enum("ScanObjectType",

[

("SystemMemory", 14),

("StartupObjectsAndRunningProcesses", 15),

("DiskBootSectors", 16),

("SystemBackupStorage", 17),

("Email", 18),

("Folder", 22),

("AllRemovableDrives", 23),

("AllNetworkDrives", 24),

("AllFixedDrives", 25)])

Na przykład

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;

};

Przejdź do góry