
Sequestrando serviços de driver válidos para carregar drivers arbitrários (assinados) abusando de links simbólicos nativos e caminhos NT
DriverJack é uma ferramenta projetada para carregar um driver vulnerável abusando de técnicas menos conhecidas do NTFS. Esses métodos contornam o registro de um Serviço de Driver no sistema sequestrando um serviço existente e também falsificam o caminho da imagem apresentado no evento de Carregamento do Driver. Para mascarar ainda mais a presença de um driver vulnerável, o ataque também abusa de uma técnica de bypass de Somente Leitura em Sistema de Arquivos Emulado para substituir o conteúdo de um arquivo de driver em uma ISO montada antes de carregá-lo.
DriverJack abusa da possibilidade de remapear arquivos montados em sistemas de arquivos emulados para páginas de leitura/escrita (RW) para sobrescrever seus conteúdos. Esse bypass de RO é implementado na IoCdfsLib.
Uma vez que a ISO é montada, o ataque prossegue selecionando um driver de serviço que possa ser iniciado ou parado, ou que possa ser acionado, exigindo privilégios administrativos a menos que esteja mal configurado.
Montagem da ISO e Seleção do Driver
Sequestro do Caminho do Driver
Esta técnica explora a capacidade de um instalador acessar diretamente o diretório C:\Windows\System32\drivers, permitindo que um link simbólico malicioso seja colocado lá. O link simbólico é processado pelo SO com precedência, levando ao carregamento do driver malicioso quando o serviço é reiniciado.
Passos Principais:
NtLoadDriver normaliza o Caminho NT do link simbólico.Desenvolvido em colaboração com jonasLyk do coletivo hacker Secret Club, este método envolve redirecionar o link simbólico NT \Device\BootDevice, parte do caminho a partir do qual um binário de driver é carregado. Isso permite ocultar um rootkit dentro do sistema.
Passos:
BootDevice.BootDevice para apontar para a ISO montada.BootDevice.Este método foi inspirado por técnicas usadas no projeto unDefender para desabilitar o serviço e driver do Windows Defender. O evento de Carregamento do Driver ainda mostrará o caminho real do driver sendo carregado, apontando para o ponto de montagem da ISO.
Embora amplamente conhecida, esta técnica raramente é usada devido ao potencial de instabilidade do sistema. Envolve alterar temporariamente a letra da unidade atribuída ao BootPartition, enganando o processo de carregamento do driver para acessar uma unidade diferente.
Quando combinada com o Abuso de Symlink NT, explicado anteriormente, esta técnica pode mascarar completamente o caminho do driver sendo carregado, contornando a detecção pelo SysMon e outras ferramentas de monitoramento.
DriverJack demonstra outra maneira não convencional de carregamento de driver vulnerável que aproveita sistemas de arquivos emulados CDFS e propriedades menos conhecidas de links simbólicos NTFS.
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.