Phant0m es una herramienta (todo un clásico antes en Powershell) que se dirige al servicio del Event Log y, al encontrar el proceso responsable de dicho servicio, detecta y elimina sus hilos. Por lo tanto, mientras que el servicio Event Log parece estar ejecutándose en el sistema (porque Phant0m no mató el proceso), en realidad no se ejecuta (porque Phant0m mató los hilos) y el sistema no recopila logs.
Phant0m utiliza dos opciones diferentes para detectar el ID de proceso del servicio del Event Log. El primero es detectar a través del SCM (Administrador de control de servicios) y el segundo es detectar a través de WMI (Instrumental de administración de Windows). Se puede elegir cualquiera de los dos métodos cambiando unas líneas en el archivo main.cpp. Por ejemplo, si queremos que el ID de proceso se detecte a través de SCM, debemos editarlo de la siguiente manera:
// 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.
También tenemos dos técnicas para matar los hilos:
Técnica-1
Cuando cada servicio se registra en una máquina que ejecuta Windows Vista o posterior, el Administrador de control de servicios (SCM) asigna una tag numérica única al servicio (en orden ascendente). Luego, en el momento de la creación del servicio, la tag se asigna al TEB del hilo principal del servicio. Esta tag luego se propagará a cada hilo creado por el principal.
Por ejemplo, si el hilo del servicio Foo crea un worker thread de RPC ese hilo tendrá la tag de servicio del servicio Foo. Entonces, en esta técnica, Phant0m detectará subprocesos del servicio Event Log con la API NtQueryInformationThread para obtener la dirección TEB del subproceso y leer la SubProcessTag del TEB. Luego matará los hilos relacionados con el servicio del Event Log.
El código para esta técnica se encuentra en el archivo technical_1.h.
Técnica-2
En esta técnica, Phant0m detecta los nombres de las DLL asociadas con los hilos. El servicio del Event Log 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 del Event Log de Windows y luego Phant0m mata el hilo.
El código para esta técnica se encuentra en el archivo technical_2.h.
Podemos seleccionar una u otra técnica también editando el fichero main.cpp.
// 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
Uso
Podemos utilizar Phant0m como un EXE independiente o como una DLL reflectiva. Lo único que tenemos que hacer es abrir el proyecto en Microsoft Visual Studio, realizar la configuración (seleccionar las técnicas de detección y eliminación) y compilar.
También podemos usar la versión Reflective DLL con Cobalt Strike, para la cual tenemos un archivo Aggressor Script (phant0m.cna) en el repositorio.
El método fork e inject se utilizó con bdllspawn en el tipo de ejecución de Aggressor Script (phant0m.cna) para Cobalt Strike.
Si queremos inyectar Phant0m en su proceso existente y ejecutarlo, podemos echar un ojo al proyecto (https://github.com/rxwx/cs-rdll-ipc-example) y hacerlo fácilmente. También podemos convertir el código a DLL y luego a Shellcode con Donut.
NOTA: El proyecto solo es compatible con la arquitectura x64.
Proyecto: https://github.com/hlldz/Phant0m
Comentarios
Publicar un comentario