API für EDR Threat Response

Kaspersky Endpoint Security 12.9 für Windows unterstützt jetzt Aktionen für EDR Threat Response (EDR responses) mithilfe der Kaspersky Security Center OpenAPI. Sie können also OpenAPI-Methoden verwenden, um die Reaktion auf EDR-Bedrohungen mithilfe von Python zu automatisieren. Sie können diese Methoden nutzen, wenn das Programm in SIEM-Lösungen integriert ist. Kaspersky Unified Monitoring and Analysis Platform ist die SIEM-Lösung von Kaspersky und unterstützt ab Version 3.4.1 die EDR Threat Response OpenAPI. Beispiele für Skripte finden Sie in der KUMA-Dokumentation.

Um Aktionen für EDR Threat Response auszuführen, müssen Sie eine Anfrage erstellen und diese mithilfe von KSC Open API (AddIncident) senden. Nachdem die Anfrage verarbeitet wurde, wird in der Kaspersky Security Center-Konsole eine spezielle Aufgabe erstellt.

Um bei der Reaktion auf EDR-Bedrohungen Aufgaben zu erstellen, müssen Sie eine Hintergrundverbindung zwischen dem Administrationsserver und Kaspersky Security Center Web Console herstellen. Der Dienst für die Hintergrundverbindung ist in Kaspersky Security Center Windows 14.2 oder höher und in Kaspersky Security Center Linux 15.2 verfügbar. Andere Konsolen werden nicht unterstützt, auch nicht die Konsolen von Kaspersky Detection and Response-Lösungen.

Für EDR Threat Response müssen Sie grundlegende Anfrageparameter angeben (beispielsweise im JSON-Format):

Um EDR Threat Response zu konfigurieren, müssen Sie die Aufgabeneinstellungen im JSON-Format im Parameter "KLINCDT_BODY": json.dumps(data) angeben. Daraufhin erstellt das Programm die Aufgabe [Response][KUMA] <task type> - <Date> <Time> - <ID> in der Kaspersky Security Center-Konsole.

Mit Kaspersky Security Center OpenAPI verbinden

Als Teil von EDR Threat Response erstellt das Programm spezielle Aufgaben in der Konsole von Kaspersky Security Center. Um diese Aufgaben zu erstellen, muss eine Verbindung zwischen dem Computer und Kaspersky Security Center hergestellt werden. Dazu müssen in der Anfrage Verbindungseinstellungen für Kaspersky Security Center angegeben werden.

Verbindungseinstellungen für Kaspersky Security Center

Einstellung

Typ

Beschreibung

kscHost

string

Adresse des Administrationsservers von Kaspersky Security Center. Erforderlicher Parameter.

kscPort

int

Port für die Verbindung zum Administrationsserver. Erforderlicher Parameter.

kscCert

string

Pfad einer Zertifikatsdatei für die Verbindung mit dem Kaspersky Security Center-Administrationsserver. Dieser Parameter hat standardmäßig den Wert False.

kscUser

string

Name des Benutzerkontos. Erforderlicher Parameter.

kscPassword

string

Kennwort des Benutzerkontos. Erforderlicher Parameter.

Beispiel

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

Die Daten des Benutzerkontos sind nicht geschützt. Daher müssen Sie einen separaten Benutzer festlegen, der nur für diese Aktionen verwendet wird.

Datei anforderngetFile

Einstellungen der Aufgabe Datei anfordern

Einstellung

Typ

Beschreibung

md5hash

string

MD5-Hash der Datei, die Sie abrufen möchten.

sha256hash

string

SHA256-Hash der Datei, die Sie abrufen möchten.

path

string

Pfad der Datei, die Sie abrufen möchten.

Beispiel

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;

};

Datei löschendeleteFile

Einstellungen der Aufgabe Datei löschen

Einstellung

Typ

Beschreibung

md5hash

string

MD5-Hash der Datei, die Sie löschen möchten.

sha256hash

string

SHA256-Hash der Datei, die Sie löschen möchten.

path

string

Pfad der Datei, die Sie löschen möchten.

searchInSubfolders?

boolean

In Unterordnern nach der Datei suchen, die Sie löschen möchten.

Beispiel

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;

};

Datei in Quarantäne verschiebenquarantineFile

Einstellungen der Aufgabe Datei in Quarantäne verschieben

Einstellung

Typ

Beschreibung

md5hash

string

MD5-Hash der Datei, die Sie in die Quarantäne verschieben möchten.

sha256hash

string

SHA256-Hash der Datei, die Sie in die Quarantäne verschieben möchten.

path

string

Pfad der Datei, die Sie in die Quarantäne verschieben möchten.

Beispiel

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-UntersuchungiocScan

Einstellungen der Aufgabe IOC-Untersuchung

Einstellung

Typ

Beschreibung

ioc

string

Pfad des zip-Archivs mit einer IOC-Datei, die Sie zur Untersuchung verwenden möchten.

isolateHost

boolean

Den Computer vom Netzwerk isolieren, wenn ein Kompromittierungsindikator erkannt wird. Dadurch wird die Ausbreitung der Bedrohung verhindert.

scanCriticalAreas

boolean

Aufgabe Untersuchung wichtiger Bereiche ausführen, wenn ein Kompromittierungsindikator gefunden wird.

quarantineObject

boolean

Das schädliche Objekt löschen, wenn ein Kompromittierungsindikator gefunden wird. Bevor das Objekts gelöscht wird, erstellt Kaspersky Endpoint Security eine Backup-Kopie für den Fall, dass das Objekt später wiederhergestellt werden muss. Kaspersky Endpoint Security verschiebt die Backup-Kopie in die Quarantäne.

Beispiel

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;

};

Prozess startenstartProcess

Einstellungen der Aufgabe Prozess starten

Einstellung

Typ

Beschreibung

executablePath

string

Pfad der ausführbaren Datei, die zum Starten des Prozesses verwendet wird.

arguments?

string

Zusätzliche Befehlszeilenargumente zum Starten des Prozesses.

workingFolder?

string

Pfad des Arbeitsordners des Prozesses.

Beispiel

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;

};

Prozess beendenterminateProcess

Einstellungen der Aufgabe Prozess beenden

Einstellung

Typ

Beschreibung

md5hash

string

MD5-Hash der Datei, deren Prozess Sie beenden möchten.

sha256hash

string

SHA256-Hash der Datei, deren Prozess Sie beenden möchten.

path

string

Pfad der Datei, die Sie löschen möchten.

caseSensitive

boolean

Bei der Suche nach der Datei wird die Groß-/Kleinschreibung beachtet.

Beispiel

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;

};

Netzwerkisolation des Computers – isolateHost

Einstellungen der Netzwerkisolation des Computers

Einstellung

Typ

Beschreibung

action

string

MD5-Hash der Datei, die Sie abrufen möchten.

Beispiel

type isolateHost = {

task: 'isolateHost';

targetHost: string;

params: {

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

action: number;

};

responseEventIncidentArea: string;

};

Ausführungsprävention – preventExecution

Einstellungen der Ausführungsprävention

Einstellung

Typ

Beschreibung

hash

string

MD5-Hash der Datei, deren Ausführung Sie verhindern möchten.

path

string

Pfad der Datei, deren Ausführung Sie verhindern möchten.

caseSensitive

boolean

Bei der Suche nach der Datei wird die Groß-/Kleinschreibung beachtet.

Beispiel

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;

};

Schadsoftware-UntersuchungonDemandScan

Einstellungen der Aufgabe Schadsoftware-Untersuchung

Einstellung

Typ

Beschreibung

path

string

Durch Leerzeichen getrennte Liste mit Dateien und Ordnern für die benutzerdefinierte Untersuchung.

recursive

boolean

Rekursiver Untersuchungsmodus.

type

number

Untersuchungsbereich.

ScanObjectType = Enum("ScanObjectType",

[

("SystemMemory", 14),

("StartupObjectsAndRunningProcesses", 15),

("DiskBootSectors", 16),

("SystemBackupStorage", 17),

("Email", 18),

("Folder", 22),

("AllRemovableDrives", 23),

("AllNetworkDrives", 24),

("AllFixedDrives", 25)])

Beispiel

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;

};

Nach oben