O WebView2 também fornece funcionalidade integrada para extrair cookies.
WebView2-Cookie-Stealer: atacando com aplicativos WebView2
WebView2-Cookie-Stealer , De acordo com a Microsoft, “o controle Microsoft Edge WebView2 permite incorporar tecnologias da Web (HTML, CSS e JavaScript) em seus aplicativos nativos”. Essencialmente, a tecnologia WebView2 pode ser usada para criar um executável que pode se comunicar com aplicativos da Web de maneira semelhante a um navegador. Isso visa melhorar os aplicativos de desktop e fornecer a eles recursos adicionais para interação com aplicativos da web. A imagem abaixo é um exemplo do WebView2 sendo usado em um aplicativo legítimo do Microsoft Office.
A principal vantagem de usar o WebView2 para invasores é a funcionalidade avançada que ele oferece ao phishing de credenciais e sessões. Neste post discuto e mostro como os invasores podem criar aplicativos WebView2 e usá-los para diversos fins. Meu código usa uma versão modificada do repositório WebView2 Samples da Microsoft. A pesquisa foi difícil e demorada, pois tive que ler muita documentação e fazer muita depuração para entender o funcionamento interno do WebView2.
Injetando JavaScript
Usando uma função WebView2 integrada, o JavaScript pode ser facilmente injetado em qualquer site. Isso significa que você pode carregar um site de destino e injetar JavaScript malicioso (por exemplo, keylogger).
Exemplo de keylogger JavaScript
No exemplo abaixo, uso um aplicativo WebView2 personalizado que carrega login.microsoftonline.com
com um keylogger JavaScript injetado.
Ignorar 2FA
O WebView2 também fornece funcionalidade integrada para extrair cookies. Isso permite que um invasor extraia cookies depois que o usuário se autenticar no site legítimo . Esta técnica elimina a necessidade de ter que girar o Evilginx2 ou Modlishka, mas a desvantagem óbvia é que o usuário deve executar o binário e autenticar.
Exemplo de exfiltração de cookies
A imagem abaixo mostra como os cookies são extraídos no formato base64 depois que o usuário passa para https://mrd0x.com
.
Roubando cookies do Chrome
O WebView2 pode ser usado para roubar todos os cookies disponíveis para o usuário atual. Isso foi testado com sucesso no Chrome.
O WebView2 permite iniciar com uma pasta de dados do usuário (UDF) existente em vez de criar uma nova. A UDF contém todas as senhas, sessões, favoritos etc. A UDF do Chrome está localizada em C:\Users\<username>\AppData\Local\Google\Chrome\User Data
. Podemos simplesmente dizer ao WebView2 para iniciar a instância usando este perfil e, ao iniciar, extrair todos os cookies e transferi-los para o servidor do invasor.
Pequena captura
O único problema é que o WebView2 procura uma pasta chamada EBWebView
em vez de User Data
(não sei por quê). Faça uma cópia da User Data
pasta e renomeie-a para EBWebView
.
Extraindo todos os cookies
A imagem abaixo mostra como consegui carregar meu Chrome UDF e extrair todos os cookies. Essa funcionalidade não é implementada no código carregado no meu repositório do GitHub, mas é trivial de implementar e o README do GitHub explica o que precisa ser modificado para que essa funcionalidade funcione.
Demonstração do aplicativo
Carreguei o código para um aplicativo O365 WebView2 que é carregado www.office.com/login
na execução e, após a autenticação do usuário com êxito, os cookies codificados em base64 www.office.com
são enviados ao invasor por meio de uma solicitação HTTP GET.
Repositório do Github
O código foi carregado no meu Github. Sinta-se à vontade para usá-lo em seus futuros compromissos ou modificá-lo conforme necessário. O README explica tudo caso você queira modificá-lo para um caso de uso diferente.
Pensamentos finais
Esta técnica tem seus prós e contras. A compensação clara é que um binário deve ser executado na máquina host e o usuário deve inserir as credenciais no aplicativo. Pode-se perguntar, se um aplicativo precisa ser executado, por que não simplesmente executar o shellcode e obter acesso remoto? Claro que você pode. Mas, dependendo da necessidade de alguém, eles podem exigir algo além do acesso remoto, por exemplo, executar JavaScript em um site de destino.
Você pode estender a funcionalidade para o aplicativo WebView2 existente para também obter acesso remoto. Mas atualmente o binário utiliza apenas a funcionalidade legítima fornecida pela Microsoft. Isso provavelmente tornará mais difícil ser sinalizado por soluções de segurança.
Comentários
Postar um comentário