
Windows Event Log Killer

Svchost es esencial en la implementación de los llamados procesos de servicio compartidos, donde varios servicios pueden compartir un proceso para reducir el consumo de recursos. Agrupar múltiples servicios en un solo proceso conserva recursos informáticos, y esta consideración fue de particular preocupación para los diseñadores de NT porque crear procesos de Windows lleva más tiempo y consume más memoria que en otros sistemas operativos, por ejemplo, en la familia Unix.1
Esto significa brevemente que; en los sistemas operativos Windows, svchost.exe gestiona los servicios y los servicios en realidad se ejecutan como hilos dentro de svchost.exe. Phant0m apunta al servicio de Registro de eventos y, al encontrar el proceso responsable de dicho servicio, detecta y mata los hilos responsables del servicio de Registro de eventos. De esta manera, aunque el servicio de Registro de eventos parece estar ejecutándose en el sistema (porque Phant0m no mata el proceso), en realidad no se ejecuta (porque Phant0m mata los hilos) y el sistema no recopila registros.

Phant0m utiliza dos opciones diferentes para detectar el ID del proceso del servicio de Registro de eventos. La primera es detectarlo mediante el SCM (Administrador de control de servicios) y la segunda mediante WMI (Instrumental de administración de Windows). Para elegir con qué método desea que Phant0m detecte el ID del proceso del servicio de Registro de eventos, modifique las siguientes líneas en el archivo main.cpp.
Por ejemplo, si desea que el ID del proceso se detecte mediante SCM, debe editarlo de la siguiente manera. (No establezca todos los valores al mismo tiempo, establezca solo la técnica que desee).
// PID detection techniques configuration section.
#define PID_FROM_SCM 1 // If you set it to 1, the PID of the Event Log service is obtained from the Service Manager.
#define PID_FROM_WMI 0 // If you set it to 1, the PID of the Event Log service is obtained from the WMI.
Por ejemplo, si desea que los hilos se eliminen usando la Técnica-1, debe editarlo de la siguiente manera. (No establezca todos los valores al mismo tiempo, establezca solo la técnica que desee).
// TID detection and kill techniques configuration section.
#define KILL_WITH_T1 1 // If you set it to 1, Technique-1 will be use. For more information; https://github.com/hlldz/Phant0m
#define KILL_WITH_T2 0 // If you set it to 1, Technique-2 will be use. For more information; https://github.com/hlldz/Phant0m
Phant0m utiliza dos opciones diferentes para detectar y matar los hilos del servicio de Registro de eventos.
Cuando cada servicio se registra en una máquina que ejecuta Windows Vista o posterior, el Administrador de control de servicios (SCM) asigna una etiqueta numérica única al servicio (en orden ascendente). Luego, en el momento de la creación del servicio, la etiqueta se asigna al TEB del hilo principal del servicio. Esta etiqueta se propagará a cada hilo creado por el hilo principal del servicio. Por ejemplo, si el hilo del servicio Foo crea un hilo de trabajo RPC (nota: los hilos de trabajo RPC no usan el mecanismo de grupo de hilos, más sobre eso después), ese hilo tendrá la Etiqueta de servicio del servicio Foo.2
Por lo tanto, en esta técnica, Phant0m detecta los hilos del servicio de Registro de eventos utilizando la API NtQueryInformationThread para obtener la dirección TEB del hilo y leer el SubProcessTag del TEB. Luego mata los hilos relacionados con el servicio de Registro de eventos. Los códigos para esta técnica están en el archivo technique_1.h.
En esta técnica, Phant0m detecta los nombres de las DLL asociadas a los hilos. El servicio de Registro de eventos de Windows utiliza wevtsvc.dll. La ruta completa es %WinDir%\System32\wevtsvc.dll. Si el hilo está usando esa DLL, es el hilo del servicio de Registro de eventos de Windows y entonces Phant0m mata el hilo. Los códigos para esta técnica están en el archivo technique_2.h.
Puede usar Phant0m tanto como un EXE independiente como una DLL reflectante. Abra el proyecto en Microsoft Visual Studio, realice las configuraciones (seleccione las técnicas de detección y eliminación) y compile. También puede usar la versión de DLL reflectante con Cobalt Strike; para ello, hay un archivo Aggressor Script (phant0m.cna) en el repositorio.

En el tipo de ejecución del Aggressor Script (phant0m.cna) para Cobalt Strike se utilizó el método fork e inyección con bdllspawn. Si desea inyectar Phant0m en su proceso existente y ejecutarlo, puede revisar este proyecto (https://github.com/rxwx/cs-rdll-ipc-example) y hacerlo fácilmente. También puede convertir el código a DLL y luego a Shellcode con Donut.
NOTA: El proyecto solo soporta arquitectura x64.