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):
task ist der Aufgabentyp (siehe unten).targetHost ist die ID des Computers, auf dem das Skript ausgeführt werden soll. Obligatorisches Argument. Das Skript ruft dieses Argument aus dem Ereignis ab.responseEventIncidentArea ist der Name des Programms, das das Skript ausgeführt hat (z. B. KUMA). Dieser Parameter wird dem Namen der erstellten Aufgabe hinzugefügt.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 |
|---|---|---|
|
|
Adresse des Administrationsservers von Kaspersky Security Center. Erforderlicher Parameter. |
|
|
Port für die Verbindung zum Administrationsserver. Erforderlicher Parameter. |
|
|
Pfad einer Zertifikatsdatei für die Verbindung mit dem Kaspersky Security Center-Administrationsserver. Dieser Parameter hat standardmäßig den Wert |
|
|
Name des Benutzerkontos. Erforderlicher Parameter. |
|
|
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 anfordern – getFile
Einstellungen der Aufgabe Datei anfordern
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
MD5-Hash der Datei, die Sie abrufen möchten. |
|
|
SHA256-Hash der Datei, die Sie abrufen möchten. |
|
|
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öschen – deleteFile
Einstellungen der Aufgabe Datei löschen
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
MD5-Hash der Datei, die Sie löschen möchten. |
|
|
SHA256-Hash der Datei, die Sie löschen möchten. |
|
|
Pfad der Datei, die Sie löschen möchten. |
|
|
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 verschieben – quarantineFile
Einstellungen der Aufgabe Datei in Quarantäne verschieben
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
MD5-Hash der Datei, die Sie in die Quarantäne verschieben möchten. |
|
|
SHA256-Hash der Datei, die Sie in die Quarantäne verschieben möchten. |
|
|
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-Untersuchung – iocScan
Einstellungen der Aufgabe IOC-Untersuchung
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
Pfad des zip-Archivs mit einer IOC-Datei, die Sie zur Untersuchung verwenden möchten. |
|
|
Den Computer vom Netzwerk isolieren, wenn ein Kompromittierungsindikator erkannt wird. Dadurch wird die Ausbreitung der Bedrohung verhindert. |
|
|
Aufgabe Untersuchung wichtiger Bereiche ausführen, wenn ein Kompromittierungsindikator gefunden wird. |
|
|
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 starten – startProcess
Einstellungen der Aufgabe Prozess starten
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
Pfad der ausführbaren Datei, die zum Starten des Prozesses verwendet wird. |
|
|
Zusätzliche Befehlszeilenargumente zum Starten des Prozesses. |
|
|
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 beenden – terminateProcess
Einstellungen der Aufgabe Prozess beenden
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
MD5-Hash der Datei, deren Prozess Sie beenden möchten. |
|
|
SHA256-Hash der Datei, deren Prozess Sie beenden möchten. |
|
|
Pfad der Datei, die Sie löschen möchten. |
|
|
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 |
|---|---|---|
|
|
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 |
|---|---|---|
|
|
MD5-Hash der Datei, deren Ausführung Sie verhindern möchten. |
|
|
Pfad der Datei, deren Ausführung Sie verhindern möchten. |
|
|
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-Untersuchung – onDemandScan
Einstellungen der Aufgabe Schadsoftware-Untersuchung
Einstellung |
Typ |
Beschreibung |
|---|---|---|
|
|
Durch Leerzeichen getrennte Liste mit Dateien und Ordnern für die benutzerdefinierte Untersuchung. |
|
|
Rekursiver Untersuchungsmodus. |
|
|
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