
Interceptor é um driver de kernel focado em adulterar soluções EDR/AV no espaço do kernel.
Autor: @Cerbersec
O Interceptor é um driver de kernel focado em adulterar soluções de EDR/AV no espaço do kernel, aplicando patches em callbacks do kernel e realizando hooking de IRPs. O Interceptor foi criado como parte de um estágio na equipe Red Team da NVISO Security. Os posts de blog associados podem ser encontrados aqui (kernel karnage).
Em 2022, o Kernel Karnage foi apresentado no SANS Pen Test HackFest, o que motivou a divulgação pública deste repositório, bem como as seguintes demonstrações:
Pré-requisitos:
Etapas de compilação:
git clone https://github.com/NVISO-ARES/Interceptor.gitO driver pode ser instalado em máquinas que tenham o Driver Signature Enforcement (DSE) desabilitado ou que estejam em modo de test signing. Para uma solução que desabilite o DSE, veja aqui. Alternativas incluem assinar o driver com um certificado de assinatura de código válido.
Nota: Máquinas com Secure Boot ou Hypervisor-Protected Code Integrity (HVCI) habilitados não são vulneráveis
O driver pode ser criado e iniciado a partir de um prompt de comando ou PowerShell (cuidado com os espaços):
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>