Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Movimiento lateral hacia la nube con Pass-the-PRT

Movimiento lateral hacia la nube con Pass-the-PRT

May 13, 2023

Los atacantes utilizan una variedad de tácticas para propagarse lateralmente a través de máquinas Windows locales, incluyendo Pass-the-Ticket, Pass-the-Hash, Overpass-the-Hash y ataques de Golden Tickets. Pero técnicas similares también son efectivas para moverse lateralmente desde una estación de trabajo comprometida hacia recursos en la nube conectados, eludiendo medidas de autenticación fuertes como MFA.

Este artículo explica cómo los atacantes pueden realizar un movimiento lateral hacia la nube con un ataque llamado Pass-the-PRT.

¿Qué es un PRT?

Un primary refresh token (PRT) es similar a un ticket otorgante de tickets de Kerberos (TGT) — ambos se utilizan para proporcionar inicio de sesión único (SSO). Pero mientras que un TGT es para sistemas Windows, un PRT te permite iniciar sesión en un dispositivo Windows 10 y luego acceder a recursos de Azure y Microsoft 365 sin tener que volver a autenticarte. El dispositivo Windows 10 debe estar unido a Azure o ser híbrido unido a Azure.

Aquí tienes un resumen de cómo funciona este proceso: Cuando inicias sesión, tu dispositivo con Windows 10 se comunicará con el Proveedor de Autenticación en la Nube de Windows 10. Su complemento de Azure AD validará tus credenciales y devolverá un PRT y una clave de sesión. Tu dispositivo volverá a cifrar la clave de sesión con su Módulo de Plataforma Segura (TPM) y luego almacenará tanto la clave como el PRT en LSASS. Luego, cuando intentes iniciar sesión en un sitio web utilizando un navegador que soporte SSO para Azure (ya sea Edge o Chrome con la extensión de Windows 10), el Proveedor de Autenticación en la Nube creará una cookie PRT para el navegador y usará esa cookie para obtener tokens de Azure AD. Azure AD validará la cookie PRT y te permitirá el acceso.

(If you want to go deeper, check out the Microsoft documentation, Jairo Cadena’s summary of PRT and SSO, this article on PRT by Dirk-jan Mollema, and the ROADtoken and RequestAADRefreshToken projects on GitHub.)

Para ver si tienes un PRT, ejecuta este comando:

      Dsregcmd.exe /status
      

En la sección del estado de SSO, verifique AzureAdPrt; si está configurado en YES, tiene un PRT.

Image

Si está configurado en NO, utilice el comando a continuación para verificar si su dispositivo está unido a Azure AD, ya que eso es necesario para que se emitan los PRTs.

Image

Realizando un ataque Pass-the-PRT

Si un adversario logra obtener el PRT y la clave de sesión de un usuario, pueden crear cookies de PRT que les otorgan acceso a recursos web como ese usuario, eludiendo cualquier requisito de acceso condicional existente. Un PRT es válido por 14 días, por lo que tienen acceso durante hasta 2 semanas a menos que la cuenta esté deshabilitada.

Veamos detalladamente cómo podemos llevar a cabo tal ataque.

Prerrequisito: Hemos comprometido un dispositivo Windows 10 que tiene un PRT emitido y tenemos privilegios de administrador local en esa máquina.

Resumen de los pasos:

  1. Extraiga el PRT de LSASS y guárdelo para más tarde.
  2. Extraiga la clave de sesión.
  3. Descifra la clave de sesión y úsala con una DPAPI masterkey. Hemos aprendido sobre eso en el ataque Pass-the-Cookie y utilizaremos el mismo enfoque.
  4. Usando la clave de sesión desencriptada para obtener la clave derivada y el contexto. Esto es necesario para crear nuestra cookie PRT. La clave derivada es la que se utiliza para firmar el JWT de la cookie.
  5. Desde cualquier sistema, utilice el PRT, la clave derivada y el contexto para crear una nueva cookie PRT.
  6. Importe la cookie en nuestra sesión del navegador Chrome. Ahora estaremos autenticados en los sitios web como el usuario, sin necesidad de conocer su contraseña o tener que manejar ningún aviso de MFA.

Profundicemos en cada paso.

Paso 1. Extraiga el PRT de LSASS.

Para ver los datos de PRT de la máquina que hemos comprometido, utilizamos el siguiente comando en Mimikatz release 2.2.0 20200807 o posterior:

      Privilege::debug
Sekurlsa::cloudap
      

Aquí está el resultado. Copiaremos la parte etiquetada como PRT y la guardaremos para más tarde.

Image

Si no ves ningún dato de PRT, verifica si el dispositivo está unido a Azure AD ejecutando el comando dsregcmd /status como se mostró anteriormente. Si AzureAdPrt está configurado en YES, verifica qué versión de Windows 10 está ejecutando la máquina; en nuestro laboratorio, necesitamos actualizar al menos a la versión 1909 para que el ataque funcionara.

Image

Paso 2. Extraiga la clave de prueba de posesión.

Ahora extraeremos la clave de sesión o “ProofOfPosessionKey”, que se resalta a continuación. Esta está cifrada y necesitaremos usar nuestras masterkeys de DPAPI para descifrarla.

Image

Paso 3. Descifrar la clave de sesión.

Ahora elevaremos nuestros privilegios a SYSTEM y ejecutaremos bajo el contexto del ordenador para poder usar la DPAPI masterkey para descifrar la clave de sesión:

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

Ahora copiaremos dos valores. El primero es el valor de Context:

Image

Y el segundo es el valor de la Clave Derivada:

Image

Paso 4. Generar cookies PRT.

Podemos realizar el resto de este ataque desde cualquier estación de trabajo. Para generar cookies PRT, simplemente ejecutamos el siguiente comando:

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

La salida incluirá una cookie PRT firmada después de Firma con clave. Copie ese texto.

Image

Paso 5. Inyecte la cookie PRT en una sesión del navegador.

Inicie Google Chrome en modo incógnito y navegue a https://login.microsoftonline.com. Cuando se le solicite sus datos de inicio de sesión, haga clic derecho en cualquier lugar de la página y luego elija Inspeccionar para abrir las herramientas de desarrollo para Chrome.

Vaya a la pestaña de Aplicación, haga doble clic en Cookies, y haga clic en login.microsoftonline.com. En el panel de la derecha, en la barra de acciones superior, haga clic en el círculo con una barra diagonal para eliminar todas las cookies existentes.

Luego haga doble clic en una fila vacía de la tabla y agregue la siguiente nueva cookie:

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

      

Deje los demás campos en sus valores predeterminados.

Image

Actualice la página y asegúrese de que la cookie no haya desaparecido. Si lo hizo, puede que haya cometido un error y tenga que pasar por el proceso nuevamente.

Navegue a https://login.microsoftonline.com de nuevo y debería iniciar sesión automáticamente como el usuario comprometido:

Image

Protección contra ataques Pass-the-PRT

Los ataques Pass-the-PRT son difíciles de detectar porque abusan de los procesos legítimos de SSO. Una estrategia útil es utilizar software de protección de endpoints que pueda detectar el uso de Mimikatz, que se ejecuta en la primera etapa del ataque.

Sin embargo, la prevención es incluso mejor que la detección. Recuerde que Pass-the-PRT es una técnica de movimiento lateral; para realizarla, el intruso necesita haber obtenido acceso previamente a una máquina. Con una herramienta como Netwrix Active Directory Security Solution, puede prevenir que los malhechores obtengan ese punto de apoyo en su entorno en primer lugar.

Además, este ataque requiere derechos administrativos locales. Utilizando software de Endpoint Management como Netwrix Endpoint Policy Manager, usted elimina estos potentes derechos de los usuarios sin perjudicar su productividad. Además, puede evitar que los ordenadores ejecuten software malicioso e incluso asegurar la configuración de sus navegadores.

Compartir en

Aprende más

Acerca del autor

Un hombre con una chaqueta azul y camisa a cuadros sonre para la cmara

Jeff Warren

Director de Producto

Jeff Warren supervisa el portafolio de productos de Netwrix, aportando más de una década de experiencia en gestión y desarrollo de productos enfocados en la seguridad. Antes de unirse a Netwrix, Jeff lideró la organización de productos en Stealthbits Technologies, donde utilizó su experiencia como ingeniero de software para desarrollar soluciones de seguridad innovadoras y escalables para empresas. Con un enfoque práctico y un talento para resolver desafíos de seguridad complejos, Jeff se centra en construir soluciones prácticas que funcionen. Tiene un BS en Sistemas de Información de la Universidad de Delaware.