DriverJack é uma ferramenta projetada para carregar um driver vulnerável, abusando de técnicas NTFS menos conhecidas. Esse método ignora o registro de um Driver Service no sistema sequestrando um serviço existente e também falsificando o caminho da imagem apresentado no evento Driver Load. Para mascarar ainda mais a presença de um driver vulnerável, o ataque também abusa de um desvio somente leitura do sistema de arquivos emulado para trocar o conteúdo de um arquivo de driver em um ISO montado antes de carregá-lo.
DriverJack abusa da possibilidade de remapear arquivos montados em sistemas de arquivos emulados para páginas RW para substituir seu conteúdo. Este bypass RO é implementado em IoCdfsLib .
Uma vez montado o ISO, o ataque prossegue selecionando um driver de serviço que pode ser iniciado ou interrompido, ou um que pode ser acionado, exigindo privilégios administrativos, a menos que seja configurado incorretamente.
Montagem ISO e seleção de driver
Sequestrando o caminho do driver
Esta técnica explora a capacidade de um instalador acessar diretamente o diretório C:WindowsSystem32drivers
, permitindo que um link simbólico malicioso seja colocado lá. O link simbólico é processado pelo SO com precedência, fazendo com que o driver malicioso seja carregado quando o serviço for reiniciado.
Etapas principais:
NtLoadDriver
normaliza o caminho NT do link simbólico. Desenvolvido em colaboração com jonasLyk do coletivo de hackers Secret Club, esse método envolve o redirecionamento do link simbólico DeviceBootDevice
NT, 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 o ISO montado.BootDevice
.Este método foi inspirado nas técnicas usadas no projeto unDefender para desabilitar o serviço e driver do Windows Defender. O evento Load Driver ainda mostrará o caminho real do driver que está sendo carregado, apontando para o ponto de montagem ISO.
Embora amplamente conhecida, esta técnica raramente é utilizada 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 NT Symlink Abuse, explicado anteriormente, esta técnica pode mascarar completamente o caminho do driver que está sendo carregado, ignorando 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 de CDFS e propriedades de link simbólico NTFS menos conhecidas.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.