CVE-2024-7479 Verificação de assinatura inadequada na instalação do driver do TeamViewer
Autor: Marcos Accossatto
Apenas para fins de demonstração. O exploit completo funciona em versão vulnerável do TeamViewer para Windows.
Introdução
Este PoC de exploit é uma implementação em Python do PoC de Pedro Gabaldon para CVE-2024-7479.
Este script contém todas as classes para lidar com o protocolo IPC para a exploração.
Para a exploração final, o driver dbutil_2_3.sys e o executável compilado do projeto BYOVDKit devem estar presentes no mesmo diretório local que este script.
Este script foi testado contra o TeamViewer 15.57.5.
Etapas de exploração do script
Este script executará as seguintes etapas para explorar a vulnerabilidade:
- Abrir um socket contra 127.0.0.1 e porta 5939.
- Executar BYOVDKit.exe com a seguinte linha de comando para testar se o driver já está instalado:
BYOVDKit.exe 1 token 4
- Montar a 1ª requisição IPC via função getClientAuth e enviá-la ao servidor.
- Obter o response_challenge da resposta do servidor via função getServerChallengeFromResponse
- Concatenar response_challenge e um valor "secret", calcular seu hash MD5 e então usá-lo para montar a 2ª requisição IPC via função getClientAuth.
- Enviar a 2ª requisição para completar a autenticação.
- Obter o PID do processo python, localizar e extrair a versão do arquivo executável TeamViewer.exe, montar a 3ª requisição IPC via função getControlRequest e enviá-la ao servidor.
- Ler pacotes IPC do servidor até que a configuração de sincronização esteja completa (21 pacotes é normal)
- Copiar o arquivo TeamViewerVPN.cat do diretório x64 do TeamViewer para o diretório do script.
- Copiar o arquivo TeamViewerVPN.inf do diretório x64 do TeamViewer para o diretório do script e renomear como um arquivo .inf aleatório.
- Renomear o arquivo dbutil_2_3.sys do diretório do script para TeamViewerVPN.sys.
- Montar a 3ª requisição IPC via função getInstallDriverRequest e enviá-la ao servidor.
- Aguardar até que o usuário clique no botão Instalar este software de driver mesmo assim para completar a instalação do driver e pressione ENTER
- Excluir todos os arquivos copiados/criados/renomeados (TeamViewerVPN.cat, TeamViewerVPN.sys e arquivo .inf aleatório)
- Executar BYOVDKit.exe com a seguinte linha de comando para iniciar um cmd como sistema:
BYOVDKit.exe 1 token 4
Uso
- Executar cmd.exe como um usuário comum.
- Usar whoami para verificar o nome de usuário.
- Executar o script com python CVE-2024-7479_PoC.py.
- Quando o aviso de instalação do driver aparecer, clique na mensagem Instalar este software de driver mesmo assim para instalar o driver.
- Volte à janela cmd e pressione ENTER para continuar a execução do script.
- Usar whoami para verificar se o nome de usuário é nt authority\system.

Referências
Esperamos que seja útil, se tiver alguma dúvida, pode nos contactar em [email protected]
Aproveite!