Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Centro de recursosBlog
Movimento Lateral para a Nuvem com Pass-the-PRT

Movimento Lateral para a Nuvem com Pass-the-PRT

May 13, 2023

Os atacantes utilizam uma variedade de táticas para se espalhar lateralmente em máquinas Windows locais, incluindo Pass-the-Ticket, Pass-the-Hash, Overpass-the-Hash e ataques de Golden Tickets. Mas técnicas semelhantes também são eficazes para mover-se lateralmente de uma estação de trabalho comprometida para recursos conectados na nuvem, contornando medidas de autenticação robustas como MFA.

Este artigo explica como os atacantes podem realizar movimentos laterais para a nuvem com um ataque chamado Pass-the-PRT.

O que é um PRT?

Um primary refresh token (PRT) é semelhante a um ticket-granting ticket (TGT) do Kerberos — ambos são usados para fornecer single sign-on (SSO). Mas enquanto um TGT é para sistemas Windows, um PRT permite que você faça login em um dispositivo Windows 10 e, em seguida, acesse recursos do Azure e Microsoft 365 sem ter que se autenticar novamente. O dispositivo Windows 10 deve estar associado ao Azure ou híbrido associado ao Azure.

Aqui está uma visão geral de como esse processo funciona: Quando você faz login, seu dispositivo Windows 10 se comunicará com o Windows 10 Cloud Authentication Provider. Seu plug-in Azure AD validará suas credenciais e retornará um PRT e uma chave de sessão. Seu dispositivo irá recriptografar a chave de sessão com seu Trusted Platform Module (TPM) e, em seguida, armazenar tanto a chave quanto o PRT no LSASS. Então, quando você tentar fazer login em um site usando um navegador que suporte SSO para Azure (seja Edge ou Chrome com a extensão do Windows 10), o Cloud Authentication Provider criará um cookie PRT para o navegador e usará esse cookie para obter tokens do Azure AD. O Azure AD validará o cookie PRT e permitirá seu acesso.

(Se você quiser se aprofundar, confira a Microsoft documentation, o summary of PRT and SSO de Jairo Cadena, este article on PRT por Dirk-jan Mollema, e os projetos ROADtoken e RequestAADRefreshToken no GitHub.)

Para verificar se você possui um PRT, execute este comando:

      Dsregcmd.exe /status
      

Na seção Estado do SSO, verifique AzureAdPrt; se estiver configurado para SIM, você possui um PRT.

Image

Se estiver configurado como NÃO, utilize o comando abaixo para verificar se o seu dispositivo está vinculado ao Azure AD, pois isso é necessário para que os PRTs sejam emitidos.

Image

Realizando um ataque Pass-the-PRT

Se um adversário conseguir obter o PRT e a chave de sessão de um usuário, ele pode criar cookies PRT que lhe dão acesso a recursos da web como esse usuário, contornando quaisquer requisitos de acesso condicional existentes. Um PRT é válido por 14 dias, então eles têm acesso por até 2 semanas, a menos que a conta seja desativada.

Vamos detalhar exatamente como podemos realizar tal ataque.

Pré-requisito: Comprometemos um dispositivo Windows 10 que possui um PRT emitido para ele, e temos privilégios de administrador local nessa máquina.

Visão geral dos passos:

  1. Extraia o PRT do LSASS e salve-o para uso posterior.
  2. Extraia a chave de sessão.
  3. Descriptografe a chave de sessão e use-a utilizando uma DPAPI masterkey. Aprendemos sobre isso no ataque Pass-the-Cookie e utilizaremos a mesma abordagem.
  4. Usando a Chave de Sessão descriptografada para obter a chave derivada e o contexto. Isso é necessário para criar nosso cookie PRT. A chave derivada é o que é usada para assinar o JWT para o cookie.
  5. De qualquer sistema, use o PRT, a chave derivada e o contexto para criar um novo cookie PRT.
  6. Importe o cookie para a nossa sessão do navegador Chrome. Agora estaremos autenticados nos sites como o usuário — sem nunca saber a senha dele ou ter que lidar com qualquer prompt de MFA.

Vamos mergulhar mais fundo em cada etapa.

Passo 1. Extraia o PRT do LSASS.

To see PRT data for the machine we have compromised, we use the following command in Mimikatz release 2.2.0 20200807 or later:

      Privilege::debug
Sekurlsa::cloudap
      

Aqui está o resultado. Vamos copiar a parte identificada como PRT e guardar para mais tarde.

Image

Se você não visualizar nenhum dado de PRT, verifique se o dispositivo está associado ao Azure AD executando o comando dsregcmd /status conforme mostrado anteriormente. Se AzureAdPrt estiver definido como YES, verifique qual versão do Windows 10 a máquina está executando; em nosso laboratório, precisamos atualizar para pelo menos a versão 1909 para que o ataque funcionasse.

Image

Passo 2. Extraia a chave de prova de posse.

Agora vamos extrair a chave de sessão ou “ProofOfPosessionKey”, que está destacada abaixo. Esta está criptografada e precisaremos usar nossas masterkeys DPAPI para descriptografá-la.

Image

Etapa 3. Descriptografe a chave de sessão.

Agora vamos elevar nossos privilégios para SYSTEM e executar sob o contexto do computador para podermos usar a chave-mestra DPAPI para descriptografar a chave de sessão:

      Token::elevate
Dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
      
Image

Agora vamos copiar dois valores. O primeiro é o valor do Contexto:

Image

E o segundo é o valor da Chave Derivada:

Image

Passo 4. Gerar cookies PRT.

Podemos realizar o resto deste ataque de qualquer estação de trabalho. Para gerar cookies PRT, basta executar o seguinte comando:

      Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT]
      

A saída incluirá um cookie PRT assinado após Assinatura com chave. Copie esse texto.

Image

Passo 5. Injete o cookie PRT em uma sessão do navegador.

Inicie o Google Chrome no modo anônimo e navegue até https://login.microsoftonline.com. Quando for solicitado seus dados de login, clique com o botão direito em qualquer lugar da página e escolha Inspecionar para abrir as ferramentas de desenvolvedor do Chrome.

Vá para a aba Aplicativos, dê um duplo clique em Cookies, e clique em login.microsoftonline.com. No painel à direita, na barra de ações superior, clique no círculo com uma barra diagonal para limpar todos os cookies existentes.

Em seguida, dê um duplo clique em uma linha vazia da tabela e adicione o seguinte novo cookie:

      Name: x-ms-RefreshTokenCredential
Value: [Paste your output from above]
HttpOnly: Set to True (checked)

      

Deixe os outros campos com seus valores padrão.

Image

Atualize a página e certifique-se de que o cookie não desapareceu. Se desapareceu, pode ter cometido um erro e terá que passar pelo processo novamente.

Navegue até https://login.microsoftonline.com novamente e você deverá ser automaticamente conectado como o usuário comprometido:

Image

Protegendo contra ataques Pass-the-PRT

Os ataques Pass-the-PRT são difíceis de detectar porque abusam de processos legítimos de SSO. Uma estratégia útil é usar software de proteção de endpoint que pode detectar o uso do Mimikatz, que é executado na primeira fase do ataque.

No entanto, a prevenção é ainda melhor do que a detecção. Lembre-se de que Pass-the-PRT é uma técnica de movimento lateral; para realizá-la, o intruso precisa já ter obtido acesso a uma máquina. Com uma ferramenta como a Netwrix Active Directory Security Solution, você pode impedir que malfeitores obtenham esse ponto de apoio no seu ambiente inicialmente.

Além disso, este ataque requer direitos administrativos locais. Utilizando software de Endpoint Management como Netwrix Endpoint Policy Manager, você remove esses poderosos direitos dos usuários sem prejudicar a produtividade deles. Além disso, você pode impedir que os computadores executem software malicioso e até mesmo proteger as configurações do navegador.

Compartilhar em

Saiba Mais

Sobre o autor

Um homem com um casaco azul e camisa xadrez sorri para a cmera

Jeff Warren

Diretor de Produto

Jeff Warren supervisiona o portfólio de produtos da Netwrix, trazendo mais de uma década de experiência em gestão e desenvolvimento de produtos focados em segurança. Antes de se juntar à Netwrix, Jeff liderou a organização de produtos na Stealthbits Technologies, onde utilizou sua experiência como engenheiro de software para desenvolver soluções de segurança inovadoras em escala empresarial. Com uma abordagem prática e um talento para resolver desafios de segurança complexos, Jeff está focado em construir soluções práticas que funcionam. Ele possui um BS em Sistemas de Informação pela Universidade de Delaware.