Problema de Doble Salto de Kerberos
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Introducci贸n
El problema de "Doble Salto" de Kerberos aparece cuando un atacante intenta usar la autenticaci贸n Kerberos a trav茅s de dos saltos, por ejemplo usando PowerShell/WinRM.
Cuando ocurre una autenticaci贸n a trav茅s de Kerberos, las credenciales no est谩n almacenadas en memoria. Por lo tanto, si ejecutas mimikatz no encontrar谩s credenciales del usuario en la m谩quina, incluso si est谩 ejecutando procesos.
Esto se debe a que al conectarse con Kerberos, estos son los pasos:
- User1 proporciona credenciales y el controlador de dominio devuelve un TGT de Kerberos a User1.
- User1 usa el TGT para solicitar un ticket de servicio para conectarse a Server1.
- User1 se conecta a Server1 y proporciona el ticket de servicio.
- Server1 no tiene las credenciales de User1 almacenadas o el TGT de User1. Por lo tanto, cuando User1 desde Server1 intenta iniciar sesi贸n en un segundo servidor, no puede autenticarse.
Delegaci贸n No Restringida
Si la delegaci贸n no restringida est谩 habilitada en la PC, esto no suceder谩 ya que el Servidor obtendr谩 un TGT de cada usuario que acceda a 茅l. Adem谩s, si se utiliza la delegaci贸n no restringida, probablemente puedas comprometer el Controlador de Dominio desde 茅l.
M谩s informaci贸n en la p谩gina de delegaci贸n no restringida.
CredSSP
Otra forma de evitar este problema, que es notablemente insegura, es el Proveedor de Soporte de Seguridad de Credenciales. De Microsoft:
La autenticaci贸n CredSSP delega las credenciales del usuario desde la computadora local a una computadora remota. Esta pr谩ctica aumenta el riesgo de seguridad de la operaci贸n remota. Si la computadora remota es comprometida, cuando se pasan las credenciales a ella, las credenciales pueden ser utilizadas para controlar la sesi贸n de red.
Se recomienda encarecidamente que CredSSP est茅 deshabilitado en sistemas de producci贸n, redes sensibles y entornos similares debido a preocupaciones de seguridad. Para determinar si CredSSP est谩 habilitado, se puede ejecutar el comando Get-WSManCredSSP
. Este comando permite verificar el estado de CredSSP e incluso puede ser ejecutado de forma remota, siempre que WinRM est茅 habilitado.
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
Get-WSManCredSSP
}
Soluciones alternativas
Invocar Comando
Para abordar el problema del doble salto, se presenta un m茅todo que involucra un Invoke-Command
anidado. Esto no resuelve el problema directamente, pero ofrece una soluci贸n alternativa sin necesidad de configuraciones especiales. El enfoque permite ejecutar un comando (hostname
) en un servidor secundario a trav茅s de un comando de PowerShell ejecutado desde una m谩quina atacante inicial o a trav茅s de una PS-Session previamente establecida con el primer servidor. As铆 es como se hace:
$cred = Get-Credential ta\redsuit
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
}
Alternativamente, se sugiere establecer una PS-Session con el primer servidor y ejecutar el Invoke-Command
usando $cred
para centralizar tareas.
Registrar la Configuraci贸n de PSSession
Una soluci贸n para el problema del doble salto implica usar Register-PSSessionConfiguration
con Enter-PSSession
. Este m茅todo requiere un enfoque diferente al de evil-winrm
y permite una sesi贸n que no sufre de la limitaci贸n del doble salto.
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
Restart-Service WinRM
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
klist
PortForwarding
Para los administradores locales en un objetivo intermedio, el reenv铆o de puertos permite que las solicitudes se env铆en a un servidor final. Usando netsh
, se puede agregar una regla para el reenv铆o de puertos, junto con una regla de firewall de Windows para permitir el puerto reenviado.
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
winrs.exe
winrs.exe
se puede utilizar para reenviar solicitudes de WinRM, potencialmente como una opci贸n menos detectable si la monitorizaci贸n de PowerShell es una preocupaci贸n. El comando a continuaci贸n demuestra su uso:
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
OpenSSH
Instalar OpenSSH en el primer servidor permite una soluci贸n para el problema de doble salto, particularmente 煤til para escenarios de jump box. Este m茅todo requiere la instalaci贸n y configuraci贸n de OpenSSH para Windows a trav茅s de la CLI. Cuando se configura para la Autenticaci贸n por Contrase帽a, esto permite que el servidor intermedio obtenga un TGT en nombre del usuario.
Pasos de Instalaci贸n de OpenSSH
- Descargue y mueva el 煤ltimo archivo zip de OpenSSH a el servidor objetivo.
- Descomprima y ejecute el script
Install-sshd.ps1
. - Agregue una regla de firewall para abrir el puerto 22 y verifique que los servicios SSH est茅n en funcionamiento.
Para resolver errores de Connection reset
, es posible que sea necesario actualizar los permisos para permitir que todos tengan acceso de lectura y ejecuci贸n en el directorio de OpenSSH.
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
Referencias
- https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20
- https://posts.slayerlabs.com/double-hop/
- https://learn.microsoft.com/en-gb/archive/blogs/sergey_babkins_blog/another-solution-to-multi-hop-powershell-remoting
- https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.