
Interceptor is a kernel driver focused on tampering with EDR/AV solutions in kernel space
Автор: @Cerbersec
Interceptor — это драйвер ядра, нацеленный на вмешательство в работу EDR/AV-решений в пространстве ядра путём патча колбэков ядра и перехвата IRP. Interceptor был создан в рамках стажировки в Red Team компании NVISO Security. Соответствующие статьи в блоге можно найти здесь (kernel karnage).
В 2022 году Kernel Karnage был представлен на SANS Pen Test HackFest, что послужило поводом для публикации этого репозитория, а также следующих демонстраций:
Требования:
Шаги сборки:
git clone https://github.com/NVISO-ARES/Interceptor.gitДрайвер может быть установлен на машины, на которых отключено принудительное подтверждение подписи драйверов (DSE) или включён режим тестовой подписи. Решение для отключения DSE см. здесь. Альтернативные варианты включают подпись драйвера действительным сертификатом подписи кода.
Примечание: машины с включённым Secure Boot или защищённой целостностью кода под управлением гипервизора (HVCI) не уязвимы
Драйвер можно создать и запустить из командной строки или PowerShell (обратите внимание на пробелы):
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>