Bypassando MFA com o ataque Pass-the-Cookie
A autenticação multifator (MFA) é uma excelente maneira de aumentar a segurança tanto local quanto na nuvem. Com o MFA ativado, quando um usuário faz login, ele deve fornecer não apenas seu ID de usuário e senha, mas também um segundo fator de autenticação, como um código enviado para o seu telefone. Esse processo reduz a superfície de ataque impedindo que adversários com credenciais de usuário roubadas façam login.
No entanto, a MFA não é uma panaceia para a cibersegurança. Em particular, os adversários podem utilizar o ataque Pass-the-Cookie para usar cookies do navegador para contornar a MFA e obter acesso a serviços na nuvem. Neste post, vamos explorar como esse ataque funciona e as melhores práticas de segurança para se defender contra ele.
Os cookies do navegador permitem que aplicações web armazenem informações de autenticação do usuário, para que ele possa permanecer conectado em vez de ter que fornecer seu nome de usuário e senha toda vez que navegar para uma nova página em um site. (Isso é semelhante à autenticação Kerberos ou NTLM, na qual um artefato é armazenado localmente no sistema do usuário e usado para autenticações futuras.)
Como funciona o ataque Pass the Cookie
Se o MFA estiver ativado, o usuário terá que fornecer uma prova adicional de sua identidade, como aceitar uma notificação push em seu dispositivo móvel. Uma vez que o usuário tenha passado pelo MFA, um cookie do navegador é criado e armazenado para a sua sessão web.
Embora os cookies simplifiquem a experiência do usuário, eles apresentam uma vulnerabilidade óbvia: Se alguém conseguisse extrair os cookies certos do navegador, poderia se autenticar como outro usuário em uma sessão de navegador web totalmente separada em outro sistema. Em resumo, poderiam usar o cookie para contornar a autenticação via MFA. (Isso é análogo ao ataque Pass the Hash em Active Directory.)
Como um adversário pode extrair cookies do navegador.
Vamos ver como um atacante poderia extrair cookies usando o exemplo do navegador Google Chrome. O Chrome armazena cookies na seguinte localização em um banco de dados SQLite:
%localappdata%GoogleChromeUser DataDefaultCookies
The cookies for a given user are encrypted using keys tied to that user via the Microsoft Data Protection API (DPAPI). To access the cookie database and decrypt the cookies, an adversary can use the following mimikatz command:
dpapi::chrome /in:"%localappdata%GoogleChromeUser DataDefaultCookies" /unprotect
Alternatively, they could execute the following from the command line:
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%googlechromeUSERDA~1defaultcookies /unprotect" exit
Usar qualquer uma dessas opções fornecerá os cookies do navegador:
Cenário de Ataque Pass-the-Cookie
Vamos entender como um ataque Pass-the-Cookie funcionaria em um cenário real.
Suponha que o usuário Tobias seja um administrador de TI. Uma das aplicações web que Tobias usa regularmente é o portal de gerenciamento Microsoft Azure. Como o MFA está ativado, quando Tobias faz login no Azure, ele precisa fornecer um código do aplicativo de autenticação em seu dispositivo móvel, conforme mostrado abaixo.
Então, contanto que ninguém roube o iPhone dele, as credenciais Azure dele devem estar seguras, certo? Não tão rápido. Suponha que Tobias tenha clicado em um e-mail de phishing ou que seu sistema tenha sido comprometido por algum outro meio, e agora um atacante é capaz de executar código no contexto do usuário de Tobias. Tobias NÃO é um administrador em seu laptop, então o dano deve ser contido, certo?
Vamos ver.
Passo 1. Extraia os Cookies.
Como vimos anteriormente, tudo o que temos de fazer para obter os cookies do navegador do Tobias é executar este comando quando estivermos a usar a sessão do Tobias:
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%googlechromeUSERDA~1defaultcookies /unprotect" exit
Neste caso, estamos preocupados com os cookies de autenticação do Azure, incluindo ESTSAUTH, ESTSAUTHPERSISTENT e ESTSAUTHLIGHT. Esses cookies estão disponíveis porque Tobias tem estado ativo no Azure recentemente:
Passo 2. Passe os Cookies.
Pode parecer que, como não conhecemos o ID de usuário ou a senha do Tobias e não temos acesso ao seu dispositivo móvel, não podemos fazer login em aplicativos web como o Azure como Tobias.
Mas, como temos os cookies dele, só precisamos passá-los para outra sessão para assumir a conta do Tobias. Isso é fácil de fazer: basta abrir o Chrome em outro servidor e usar a interface “Inspecionar” para inserir um cookie.
2.1. Primeiro, inspecionamos a sessão roubada:
2.2. Em seguida, navegamos até Application > Cookies. Como você pode ver, os cookies atuais não incluem o ESTSAUTH ou ESTSAUTHPERSISTENT:
2.3. Adicionamos o cookie ESTSAUTH ou, se disponível, o ESTSAUTHPERSISTENT. (Se o ESTSAUTHPERSISTENT estiver disponível, é preferível porque é gerado pela opção “Permanecer Conectado”.)
2.4. Atualizamos a página e agora estamos logados no Azure como Tobias — sem necessidade de MFA!
Mitigando Seu Risco
Os ataques Pass-the-Cookie são uma ameaça séria por várias razões. Primeiro, um ataque Pass-the-Cookie não requer direitos administrativos; todos os usuários têm acesso para ler e descriptografar seus próprios cookies do navegador, independentemente de terem direitos privilegiados em suas estações de trabalho. Segundo, o atacante não precisa conhecer o ID de usuário ou senha da conta comprometida, então esse ataque é possível com informações mínimas. Terceiro, até conseguimos completar ataques Pass-the-Cookie depois que o navegador havia sido fechado.
Uma maneira de minimizar o risco de roubo de cookies é limpar os cookies dos usuários com mais frequência. No entanto, isso obrigará os usuários a se reautenticarem toda vez que navegarem para um site, o que os frustrará e fará com que evitem fechar seus navegadores para não perderem seus cookies.
Uma estratégia melhor é implementar produtos de monitoramento de autenticação e detecção de ameaças destes. Netwrix Threat Manager pode detectar prontamente contas que estão sendo usadas de maneiras inesperadas para que você possa rapidamente encerrar atividades maliciosas.
FAQs
Compartilhar em
Ver ataques de cibersegurança relacionados
Abuso de Permissões de Aplicativos Entra ID – Como Funciona e Estratégias de Defesa
Modificação do AdminSDHolder – Como Funciona e Estratégias de Defesa
Ataque AS-REP Roasting - Como Funciona e Estratégias de Defesa
Ataque Hafnium - Como Funciona e Estratégias de Defesa
Ataques DCSync Explicados: Ameaça à Segurança do Active Directory
Ataque Pass the Hash
Entendendo ataques Golden Ticket
Ataque a Contas de Serviço Gerenciadas por Grupo
Ataque DCShadow – Como Funciona, Exemplos Reais e Estratégias de Defesa
Injeção de Prompt do ChatGPT: Entendendo Riscos, Exemplos e Prevenção
Ataque de Extração de Senha NTDS.dit
Ataque de Kerberoasting – Como Funciona e Estratégias de Defesa
Ataque Pass-the-Ticket Explicado: Riscos, Exemplos e Estratégias de Defesa
Ataque de Password Spraying
Ataque de Extração de Senha em Texto Simples
Vulnerabilidade Zerologon Explicada: Riscos, Explorações e Mitigação
Ataques de ransomware ao Active Directory
Desbloqueando o Active Directory com o Ataque Skeleton Key
Movimento Lateral: O que é, Como Funciona e Prevenções
Ataques Man-in-the-Middle (MITM): O que São & Como Preveni-los
Ataque Silver Ticket
4 ataques a contas de serviço e como se proteger contra eles
Por que o PowerShell é tão popular entre os atacantes?
Como Prevenir que Ataques de Malware Afetem o Seu Negócio
Comprometendo o SQL Server com PowerUpSQL
O que são ataques de Mousejacking e como se defender contra eles
Roubando Credenciais com um Provedor de Suporte de Segurança (SSP)
Ataques de Rainbow Table: Como Funcionam e Como se Defender Contra Eles
Um Olhar Abrangente sobre Ataques de Senha e Como Impedi-los
Reconhecimento LDAP
O que é Credential Stuffing?
Ataque Golden SAML