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:
task
jest typem zadania (patrz poniżej).targetHost
jest identyfikatorem komputera, na którym ma zostać uruchomiony skrypt. Wymagany argument. Skrypt pobiera ten argument ze zdarzenia.responseEventIncidentArea
jest nazwą aplikacji, która uruchomiła skrypt (na przykład KUMA
). Ten parametr jest dodawany do nazwy tworzonego zadania.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 |
---|---|---|
|
|
Adres serwera administracyjnego Kaspersky Security Center. Parametr wymagany. |
|
|
Port połączenia z Serwerem administracyjnym. Parametr wymagany. |
|
|
Ścieżka do pliku certyfikatu umożliwiającego połączenie z Serwerem administracyjnym Kaspersky Security Center. Parametr jest domyślnie ustawiony na |
|
|
Nazwa konta użytkownika. Parametr wymagany. |
|
|
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 plik – getFile
Ustawienia zadania Uzyskaj plik
Parametr |
Typ |
Opis |
---|---|---|
|
|
Skrót MD5 pliku, który chcesz uzyskać. |
|
|
Skrót SHA256 pliku, który chcesz uzyskać. |
|
|
Ś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ń plik – deleteFile
Ustawienia zadania Usuń plik
Parametr |
Typ |
Opis |
---|---|---|
|
|
Skrót MD5 pliku, który chcesz usunąć. |
|
|
Skrót SHA256 pliku, który chcesz usunąć. |
|
|
Ścieżka do pliku, który chcesz usunąć. |
|
|
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 Kwarantanny – quarantineFile
Ustawienia zadania Przenieś plik do Kwarantanny
Parametr |
Typ |
Opis |
---|---|---|
|
|
Skrót MD5 pliku, który chcesz poddać kwarantannie. |
|
|
Skrót SHA256 pliku, który chcesz poddać kwarantannie. |
|
|
Ś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 IOC – iocScan
Ustawienia zadania Skanowanie IOC
Parametr |
Typ |
Opis |
---|---|---|
|
|
Ścieżka do archiwum ZIP zawierającego plik IOC, którego chcesz użyć do skanowania. |
|
|
W przypadku wykrycia oznak zagrożenia należy odizolować komputer od sieci, aby zapobiec jego rozprzestrzenianiu. |
|
|
Uruchom zadanie Skanowanie obszarów krytycznych po wykryciu oznak zagrożenia. |
|
|
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 proces – startProcess
Ustawienia zadania Rozpocznij proces
Parametr |
Typ |
Opis |
---|---|---|
|
|
Ścieżka do pliku wykonywalnego używanego do uruchomienia procesu. |
|
|
Dodatkowe argumenty wiersza poleceń służące do uruchomienia procesu. |
|
|
Ś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 proces – terminateProcess
Ustawienia zadania Zakończ proces
Parametr |
Typ |
Opis |
---|---|---|
|
|
Skrót MD5 pliku, którego proces chcesz zakończyć. |
|
|
Skrót SHA256 pliku, którego proces chcesz zakończyć. |
|
|
Ścieżka do pliku, który chcesz usunąć. |
|
|
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 |
---|---|---|
|
|
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 |
---|---|---|
|
|
Skrót MD5 pliku, którego uruchomieniu chcesz zapobiec. |
|
|
Ścieżka do pliku, którego uruchomieniu chcesz zapobiec. |
|
|
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 oprogramowania – onDemandScan
Ustawienia zadania Skanowanie w poszukiwaniu złośliwego oprogramowania
Parametr |
Typ |
Opis |
---|---|---|
|
|
Rozdzielona spacjami lista plików i folderów do celów skanowania niestandardowego. |
|
|
Tryb skanowania cyklicznego. |
|
|
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