
Windows Event Log Killer

O Svchost é essencial na implementação dos chamados processos de serviço compartilhados, onde vários serviços podem compartilhar um processo para reduzir o consumo de recursos. Agrupar vários serviços em um único processo conserva recursos computacionais, e essa consideração foi de particular preocupação para os projetistas do NT porque criar processos no Windows leva mais tempo e consome mais memória do que em outros sistemas operacionais, por exemplo, na família Unix.1
Isso significa, resumidamente, que; Nos sistemas operacionais Windows, o svchost.exe gerencia os serviços e os serviços são executados como threads dentro do svchost.exe. O Phant0m tem como alvo o serviço de Log de Eventos e, encontrando o processo responsável por esse serviço, detecta e elimina as threads responsáveis pelo serviço de Log de Eventos. Assim, enquanto o serviço de Log de Eventos parece estar em execução no sistema (porque o Phant0m não matou o processo), ele na verdade não está em execução (porque o Phant0m matou as threads) e o sistema não coleta logs.

O Phant0m usa duas opções diferentes para detectar o ID do processo do serviço de Log de Eventos. A primeira é detectar via SCM (Service Control Manager) e a segunda é detectar via WMI (Windows Management Instrumentation). Com qual método você deseja que o Phant0m detecte o ID do processo do serviço de Log de Eventos, altere as seguintes linhas no arquivo main.cpp.
Por exemplo, se você quiser que o ID do processo seja detectado via SCM, edite da seguinte forma. (Não defina todos os valores ao mesmo tempo, defina apenas a técnica desejada.)
// 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 exemplo, se você quiser que as threads sejam eliminadas usando a Técnica-1, edite da seguinte forma. (Não defina todos os valores ao mesmo tempo, defina apenas a técnica desejada.)
// 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
O Phant0m usa duas opções diferentes para detectar e eliminar as threads do serviço de Log de Eventos.
Quando cada serviço é registrado em uma máquina com Windows Vista ou posterior, o Service Control Manager (SCM) atribui uma tag numérica única ao serviço (em ordem crescente). Em seguida, no momento da criação do serviço, a tag é atribuída ao TEB da thread principal do serviço. Essa tag será então propagada para todas as threads criadas pela thread principal do serviço. Por exemplo, se a thread do serviço Foo criar uma thread de trabalho RPC (nota: threads de trabalho RPC não usam o mecanismo de pool de threads, mais sobre isso depois), essa thread terá a Service Tag do serviço Foo.2
Portanto, nesta técnica, o Phant0m detecta as threads do serviço de Log de Eventos usando a API NtQueryInformationThread para obter o endereço TEB da thread e ler o SubProcessTag do TEB. Em seguida, ele elimina as threads relacionadas ao serviço de Log de Eventos. Os códigos para esta técnica estão no arquivo technique_1.h.
Nesta técnica, o Phant0m detecta os nomes das DLLs associadas às threads. O serviço de Log de Eventos do Windows usa wevtsvc.dll. O caminho completo é %WinDir%\System32\wevtsvc.dll. Se a thread estiver usando essa DLL, é a thread do serviço de Log de Eventos do Windows e então o Phant0m a elimina. Os códigos para esta técnica estão no arquivo technique_2.h.
Você pode usar o Phant0m tanto como um EXE independente quanto como uma DLL Reflexiva. Abra o projeto no Microsoft Visual Studio, faça as configurações (selecione as técnicas de detecção e eliminação) e compile. Você também pode usar a versão DLL Reflexiva com o Cobalt Strike; para isso, existe um arquivo Aggressor Script (phant0m.cna) no repositório.

O método fork e inject foi usado com bdllspawn no tipo de execução do Aggressor Script (phant0m.cna) para o Cobalt Strike. Se você quiser injetar o Phant0m em seu processo existente e executá-lo, pode revisar este projeto (https://github.com/rxwx/cs-rdll-ipc-example) e fazê-lo facilmente. Você também pode converter o código em DLL e depois em Shellcode com Donut.
NOTA: O projeto suporta apenas arquitetura x64.