
Interceptor est un pilote noyau axé sur la falsification des solutions EDR/AV dans l'espace noyau.
Auteur : @Cerbersec
Interceptor est un pilote noyau axé sur l'altération des solutions EDR/AV dans l'espace noyau en corrigeant les callbacks du noyau et en hookant les IRP. Interceptor a été développé dans le cadre d'un stage au sein de la Red Team de NVISO Security. Les articles de blog associés sont disponibles ici (kernel karnage).
En 2022, Kernel Karnage a été présenté au SANS Pen Test HackFest, ce qui a conduit à la publication publique de ce dépôt ainsi que des démos suivantes :
Prérequis :
Étapes de compilation :
git clone https://github.com/NVISO-ARES/Interceptor.gitLe pilote peut être installé sur des machines où l'application de la signature des pilotes (DSE) est désactivée ou qui sont en mode de signature de test. Pour une solution permettant de désactiver DSE, voir ici. Les autres options incluent la signature du pilote avec un certificat de signature de code valide.
Remarque : les machines avec Secure Boot ou l'Intégrité du code protégée par l'hyperviseur (HVCI) activée ne sont pas vulnérables
Le pilote peut être créé et démarré depuis une invite de commandes ou PowerShell (attention aux espaces) :
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>