
Interceptor is a kernel driver focused on tampering with EDR/AV solutions in kernel space
Autor: @Cerbersec
Interceptor es un driver de kernel centrado en alterar soluciones EDR/AV en espacio de kernel mediante el parcheo de callbacks del kernel y el enganchado (hooking) de IRPs. Interceptor fue creado como parte de unas prácticas en el Red Team de NVISO Security. Las publicaciones de blog asociadas pueden encontrarse aquí (kernel karnage).
En 2022, Kernel Karnage se presentó en SANS Pen Test HackFest, lo que motivó la publicación pública de este repositorio, así como de las siguientes demos:
Requisitos:
Pasos de compilación:
git clone https://github.com/NVISO-ARES/Interceptor.gitEl driver puede instalarse en máquinas que tengan deshabilitada la aplicación de firma de controladores (Driver Signature Enforcement o DSE) o que estén en modo de firma de prueba. Para una solución para deshabilitar DSE ver aquí. Las opciones alternativas incluyen firmar el driver con un certificado de firma de código válido.
Nota: Las máquinas con Secure Boot o Hypervisor-Protected Code Integrity (HVCI) habilitado no son vulnerables
El driver puede crearse e iniciarse desde un símbolo del sistema o PowerShell (cuidado con los espacios):
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>