Kerberos Double Hop Problem
Reading time: 6 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
Introducci贸n
El problema de "Double Hop" de Kerberos aparece cuando un atacante intenta usar Kerberos authentication across two hops, por ejemplo usando PowerShell/WinRM.
Cuando ocurre una authentication a trav茅s de Kerberos, las credentials no est谩n almacenadas en memoria. Por lo tanto, si ejecutas mimikatz no encontrar谩s credentials 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 credentials y el domain controller devuelve un TGT de Kerberos a User1.
- User1 usa el TGT para solicitar un service ticket para connect a Server1.
- User1 connects a Server1 y proporciona el service ticket.
- Server1 no tiene las credentials 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 unconstrained delegation est谩 habilitada en la PC, esto no suceder谩 ya que el Server obtendr谩 un TGT de cada usuario que acceda a 茅l. Adem谩s, si se utiliza la delegaci贸n no restringida, probablemente puedas comprometer el Domain Controller 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 Credential Security Support Provider. De Microsoft:
La autenticaci贸n CredSSP delega las credentials 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 credentials a ella, las credentials 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 la verificaci贸n del 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 supervisi贸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 zip de la versi贸n de OpenSSH al 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
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.