
Interceptor ist ein Kernel-Treiber, der sich auf die Manipulation von EDR/AV-Lösungen im Kernel-Bereich konzentriert.
Autor: @Cerbersec
Interceptor ist ein Kernel-Treiber, der sich darauf konzentriert, EDR/AV-Lösungen im Kernelspace zu manipulieren, indem Kernel-Callbacks gepatcht und IRPs gehookt werden. Interceptor wurde im Rahmen eines Praktikums beim Red Team von NVISO Security entwickelt. Die zugehörigen Blogbeiträge finden Sie hier (kernel karnage).
Im Jahr 2022 wurde Kernel Karnage auf dem SANS Pen Test HackFest präsentiert, was zur Veröffentlichung dieses Repositorys sowie der folgenden Demos führte:
Anforderungen:
Build-Schritte:
git clone https://github.com/NVISO-ARES/Interceptor.gitDer Treiber kann auf Rechnern installiert werden, auf denen die Treibersignatur-Erzwingung (DSE) deaktiviert ist oder die sich im Testsignierungsmodus befinden. Eine Lösung zum Deaktivieren von DSE finden Sie hier. Alternativen umfassen das Signieren des Treibers mit einem gültigen Code-Signaturzertifikat.
Hinweis: Rechner mit aktiviertem Secure Boot oder aktivierter Hypervisor-Protected Code Integrity (HVCI) sind nicht anfällig
Der Treiber kann über eine Eingabeaufforderung oder PowerShell erstellt und gestartet werden (auf die Leerzeichen achten):
sc create Interceptor type= kernel binPath= C:\Path\To\Driver\Interceptor.sys
sc start Interceptor
sc stop Interceptor
sc delete Interceptor
Usage: InterceptorCLI.exe <option> <parameter> <values>
Options:
-list <parameter>
vendors List all supported EDR vendors and their modules
modules List all loaded drivers
hooked List all hooked drivers
callbacks List all registered callbacks
-hook <parameter>
index <values> Hook driver(s) by index
name <device name> Hook driver by name (\Device\Name)
-unhook <parameter>
index <values> Unhook driver(s) by index
all Unhook all drivers
-patch <parameter>
vendor <name> Patch all modules associated with vendor
module <names> Patch all callbacks associated with module(s)
process <values> Patch process callback(s) by index
thread <values> Patch thread callback(s) by index
image <values> Patch image callback(s) by index
registry <values> Patch registry callback(s) by index
objectprocess <values> Patch object process callback(s) by index
objectthread <values> Patch object thread callback(s) by index
-restore <parameter>
vendor <name> Restore all modules associated with vendor
module <names> Restore all callbacks associated with module(s)
process <values> Restore process callback(s) by index
thread <values> Restore thread callback(s) by index
image <values> Restore image callback(s) by index
registry <values> Restore registry callback(s) by index
objectprocess <values> Restore object process callback(s) by index
objectthread <values> Restore object thread callback(s) by index
all Restore all callbacks
Values: space separated. see -list <modules | hooked | callbacks>
Name: case sensitive. see -list <vendors>