Windows Lateral Movement

Pass the Hash (PtH)

Pass the Hash with Mimikatz (Windows)

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" >> c:\tmp\mimikatz_output.txt
  • /user- El nombre de usuario que queremos suplantar.

  • /rc4 o /NTLM- Hash NTLM de la contraseña del usuario.

  • /domain- Dominio al que pertenece el usuario a suplantar. En el caso de una cuenta de usuario local, podemos utilizar el nombre del equipo, localhost o un punto (.).

  • /run- El programa que queremos ejecutar con el contexto del usuario (si no se especifica, ejecutará cmd.exe).

Pass the Hash from Windows Using Mimikatz:

c:\tools> mimikatz.exe privilege::debug "sekurlsa::pth /user:julio /rc4:64F12CDDAA88057E06A81B54E73B949B /domain:testing.local /run:cmd.exe" exit
user    : julio
domain  : testing.local
program : cmd.exe
impers. : no
NTLM    : 64F12CDDAA88057E06A81B54E73B949B
  |  PID  8404
  |  TID  4268
  |  LSA Process was already R/W
  |  LUID 0 ; 5218172 (00000000:004f9f7c)
  \_ msv1_0   - data copy @ 0000028FC91AB510 : OK !
  \_ kerberos - data copy @ 0000028FC964F288
   \_ des_cbc_md4       -> null
   \_ des_cbc_md4       OK
   \_ des_cbc_md4       OK
   \_ des_cbc_md4       OK
   \_ des_cbc_md4       OK
   \_ des_cbc_md4       OK
   \_ des_cbc_md4       OK
   \_ *Password replace @ 0000028FC9673AE8 (32) -> null

Pass the Hash with PowerShell Invoke-TheHash (Windows)

Otra herramienta que podemos utilizar para realizar ataques Pass the Hash en Windows es Invoke-TheHasharrow-up-right

  • Target- Nombre de host o dirección IP del objetivo.

  • Username- Nombre de usuario a utilizar para la autenticación.

  • Domain- Dominio que se utilizará para la autenticación. Este parámetro no es necesario con cuentas locales ni cuando se utiliza @dominio después del nombre de usuario.

  • Hash- Hash de contraseña NTLM para autenticación. Esta función aceptará el formato LM:NTLM o NTLM.

  • Command- Comando que se ejecutará en el destino. Si no se especifica un comando, la función comprobará si el nombre de usuario y el hash tienen acceso a WMI en el destino.

Pass the Hash with Impacket (Linux)

Pass the Hash with Impacket PsExec

Pass the Hash with CrackMapExec (Linux)

Pass the Hash with CrackMapExec

CrackMapExec - Command Execution

Pass the Hash with evil-winrm (Linux)

Pass the Hash with evil-winrm

Pass the Hash with RDP (Linux)

Enable Restricted Admin Mode to Allow PtH

Pass the Hash Using RDP

Los límites de UAC pasan el hash para las cuentas locales

El UAC (Control de cuentas de usuario) limita la capacidad de los usuarios locales para realizar operaciones de administración remota. Cuando la clave de registro HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicyse establece en 0, significa que la cuenta de administrador local integrada (RID-500, "Administrador") es la única cuenta local a la que se le permite realizar tareas de administración remota. Si se establece en 1, también se permite a los demás administradores locales.

Pass-the-Hash Is Dead: Long Live LocalAccountTokenFilterPolicyarrow-up-right .

Pass the Ticket (PtT) from Windows

Otro método para moverse lateralmente en un entorno de Active Directory se denomina Pass the Ticket (PtT) attackarrow-up-right. En este ataque, utilizamos un ticket de Kerberos robado para movernos lateralmente en lugar de un hash de contraseña NTLM.

Kerberos Protocol Refresher

El sistema de autenticación Kerberos se basa en tickets. La idea central detrás de Kerberos no es dar una contraseña de cuenta a cada servicio que se utiliza. En cambio, Kerberos conserva todos los tickets en el sistema local y presenta a cada servicio solo el ticket específico para ese servicio, lo que evita que un ticket se utilice para otro propósito.

  • El TGT - Ticket Granting Ticketes el primer ticket obtenido en un sistema Kerberos. El TGT permite al cliente obtener tickets Kerberos adicionales o TGS.

  • Los usuarios los TGS - Ticket Granting Servicesolicitan cuando quieren utilizar un servicio. Estos tickets permiten que los servicios verifiquen la identidad del usuario.

Cuando un usuario solicita un ticket TGT, debe autenticarse en el controlador de dominio cifrando la marca de tiempo actual con el hash de su contraseña. Una vez que el controlador de dominio valida la identidad del usuario (porque el dominio conoce el hash de la contraseña del usuario, lo que significa que puede descifrar la marca de tiempo), envía al usuario un TGT para futuras solicitudes. Una vez que el usuario tiene su ticket, no tiene que demostrar quién es con su contraseña.

Si el usuario desea conectarse a una base de datos MSSQL, solicitará un Ticket Granting Service (TGS) al Centro de Distribución de Claves (KDC), presentando su Ticket Granting Ticket (TGT). Luego entregará el TGS al servidor de base de datos MSSQL para su autenticación.

Pass the Ticket (PtT) Attack

Necesitamos un ticket Kerberos válido para realizar una operación Pass the Ticket (PtT). Puede ser:

  • Ticket de servicio (TGS - Ticket Granting Service) para permitir el acceso a un recurso en particular.

  • Ticket Granting Ticket (TGT), que utilizamos para solicitar tickets de servicio para acceder a cualquier recurso para el cual el usuario tenga privilegios.

Harvesting Kerberos Tickets from Windows

Mimikatz - Export Tickets

Rubeus - Export Tickets

Pass the Key or OverPass the Hash

La técnica tradicional Pass the Hash (PtH)implica reutilizar un hash de contraseña NTLM que no toca Kerberos. El enfoque Pass the Keyor OverPass the Hashconvierte un hash/clave (rc4_hmac, aes256_cts_hmac_sha1, etc.) para un usuario unido a un dominio en un hash completo Ticket-Granting-Ticket (TGT). Esta técnica fue desarrollada por Benjamin Delpy y Skip Duckwall en su presentación Abusing Microsoft Kerberos - Sorry you guys don't get it .arrow-up-right Will Schroederarrow-up-right también adaptó su proyecto para crear la herramienta Rubeus .arrow-up-right

Para falsificar nuestros tickets, necesitamos tener el hash del usuario; podemos usar Mimikatz para volcar todas las claves de cifrado Kerberos de los usuarios mediante el módulo sekurlsa::ekeys. Este módulo enumerará todos los tipos de claves presentes para el paquete Kerberos.

Mimikatz - Extract Kerberos Keys

Mimikatz - Pass the Key or OverPass the Hash

Esto creará una nueva cmd.exeventana que podemos usar para solicitar acceso a cualquier servicio que queramos en el contexto del usuario objetivo.

Para falsificar un ticket usando Rubeus, podemos usar el módulo asktgtcon el nombre de usuario, el dominio y el hash que puede ser /rc4, /aes128, /aes256o /des. En el siguiente ejemplo, usamos el hash aes256 de la información que recopilamos usando Mimikatz sekurlsa::ekeys.

Rubeus - Pass the Key or OverPass the Hash

Pass the Ticket (PtT)

Rubeus Pass the Ticket

Rubeus - Pass the Ticket

Convert .kirbi to Base64 Format

Pass the Ticket - Base64 Format

Por último, también podemos realizar el ataque Pass the Ticket utilizando el módulo Mimikatz kerberos::ptty el archivo .kirbi que contiene el ticket que queremos importar.

Mimikatz - Pass the Ticket

Pass The Ticket with PowerShell Remoting (Windows)

PowerShell Remotingarrow-up-right nos permite ejecutar scripts o comandos en un equipo remoto. Los administradores suelen utilizar PowerShell Remoting para administrar equipos remotos en la red. Al habilitar PowerShell Remoting se crean escuchas HTTP y HTTPS. La escucha se ejecuta en el puerto estándar TCP/5985 para HTTP y TCP/5986 para HTTPS.

Mimikatz - PowerShell Remoting with Pass the Ticket

Mimikatz - Pass the Ticket for Lateral Movement.

Rubeus - PowerShell Remoting with Pass the Ticket

Rubeus tiene la opción createnetonly, que crea un proceso de sacrificio/sesión de inicio de sesión ( Tipo de inicio de sesión 9arrow-up-right ). El proceso está oculto de forma predeterminada, pero podemos especificar el indicador /showpara mostrar el proceso y el resultado es el equivalente a runas /netonly. Esto evita el borrado de los TGT existentes para la sesión de inicio de sesión actual.

Create a Sacrificial Process with Rubeus

El comando anterior abrirá una nueva ventana cmd. Desde esa ventana, podemos ejecutar Rubeus para solicitar un nuevo TGT con la opción /pttde importar el ticket a nuestra sesión actual y conectarnos al controlador de dominio mediante PowerShell Remoting.

Rubeus - Pass the Ticket for Lateral Movement

Pass the Ticket (PtT) from Linux

En la mayoría de los casos, las máquinas Linux almacenan los tickets Kerberos como ccache filesarrow-up-right en el /tmpdirectorio. De forma predeterminada, la ubicación del ticket Kerberos se almacena en la variable de entorno KRB5CCNAME. Esta variable puede identificar si se están utilizando tickets Kerberos o si se ha cambiado la ubicación predeterminada para almacenar tickets Kerberos. Estos ccache filesarrow-up-right están protegidos por permisos de lectura y escritura, pero un usuario con privilegios elevados o privilegios de root podría acceder fácilmente a estos tickets.

Identifying Linux and Active Directory Integration

PS - Check if Linux Machine is Domain Joined

Finding Kerberos Tickets in Linux

Finding Keytab Files

Using Find to Search for Files with Keytab in the Name

Identifying Keytab Files in Cronjobs

Finding ccache Files

Reviewing Environment Variables for ccache Files.

Searching for ccache Files in /tmp

Abusing KeyTab Files

Listing keytab File Information

Impersonating a User with a keytab

Connecting to SMB Share as Carlos

Extracting Keytab Hashes with KeyTabExtract

  • Crackeando el hash NT :

obtenemos la contraseña en texto plano

Log in as Carlos

Carlos tiene un cronjob que utiliza un archivo keytab llamado svc_workstations.kt. Podemos repetir el proceso, descifrar la contraseña e iniciar sesión como svc_workstations.

Abusing Keytab ccache

Looking for ccache Files

Identifying Group Membership with the id Command

Importing the ccache File into our Current Session

Using Linux Attack Tools with Kerberos

Host File Modified

Proxychains Configuration File

Download Chisel to our Attack Host

Execute chisel from MS01

Setting the KRB5CCNAME Environment Variable

Impacket

Using Impacket with proxychains and Kerberos Authentication

Evil-Winrm

Kerberos Configuration File for INLANEFREIGHT.HTB

Using Evil-WinRM with Kerberos

Miscellaneous

Impacket Ticket Converter

Importing Converted Ticket into Windows Session with Rubeus

Linikatz

Linikatzarrow-up-right es una herramienta creada por el equipo de seguridad de Cisco para explotar credenciales en máquinas Linux cuando existe una integración con Active Directory. En otras palabras, Linikatz trae un principio similar a Mimikatzlos entornos UNIX.

Last updated