Kerberos Double Hop Problem
Introduction
Le problème du "double saut" Kerberos survient lorsqu'un attaquant tente d'utiliser l'authentification Kerberos à travers deux sauts, par exemple en utilisant PowerShell/WinRM.
Lorsqu'une authentification se produit via Kerberos, les informations d'identification ne sont pas mises en cache en mémoire. Par conséquent, si vous exécutez mimikatz, vous ne trouverez pas les informations d'identification de l'utilisateur sur la machine même s'il exécute des processus.
Cela est dû au fait que lors de la connexion avec Kerberos, les étapes suivantes sont suivies :
L'utilisateur fournit des informations d'identification et le contrôleur de domaine renvoie un TGT Kerberos à l'utilisateur.
L'utilisateur utilise le TGT pour demander un ticket de service pour se connecter au Serveur1.
L'utilisateur se connecte au Serveur1 et fournit le ticket de service.
Le Serveur1 n'a pas les informations d'identification de l'utilisateur en cache ni le TGT de l'utilisateur. Par conséquent, lorsque l'utilisateur de Serveur1 tente de se connecter à un deuxième serveur, il ne peut pas s'authentifier.
Délégation non contrainte
Si la délégation non contrainte est activée sur le PC, cela ne se produira pas car le Serveur obtiendra un TGT de chaque utilisateur y accédant. De plus, si la délégation non contrainte est utilisée, vous pouvez probablement compromettre le contrôleur de domaine à partir de là. Plus d'informations sur la page de la délégation non contrainte.
CredSSP
Une autre façon d'éviter ce problème, qui est notablement peu sécurisée, est le Fournisseur de prise en charge de la sécurité des informations d'identification. Selon Microsoft :
L'authentification CredSSP délègue les informations d'identification de l'utilisateur de l'ordinateur local à un ordinateur distant. Cette pratique augmente le risque de sécurité de l'opération à distance. Si l'ordinateur distant est compromis, lorsque les informations d'identification lui sont transmises, les informations d'identification peuvent être utilisées pour contrôler la session réseau.
Il est fortement recommandé de désactiver CredSSP sur les systèmes de production, les réseaux sensibles et des environnements similaires en raison de problèmes de sécurité. Pour déterminer si CredSSP est activé, la commande Get-WSManCredSSP
peut être exécutée. Cette commande permet de vérifier l'état de CredSSP et peut même être exécutée à distance, à condition que WinRM soit activé.
Solutions
Appeler la commande
Pour résoudre le problème du double saut, une méthode impliquant un Invoke-Command
imbriqué est présentée. Cela ne résout pas le problème directement mais offre une solution de contournement sans nécessiter de configurations spéciales. Cette approche permet d'exécuter une commande (hostname
) sur un serveur secondaire via une commande PowerShell exécutée à partir d'une machine d'attaque initiale ou via une session PS précédemment établie avec le premier serveur. Voici comment procéder :
Enregistrement de la configuration de la session PSSession
Une solution pour contourner le problème du double saut implique l'utilisation de Register-PSSessionConfiguration
avec Enter-PSSession
. Cette méthode nécessite une approche différente de celle d'evil-winrm
et permet une session qui ne souffre pas de la limitation du double saut.
PortForwarding
Pour les administrateurs locaux sur une cible intermédiaire, le port forwarding permet d'envoyer des requêtes vers un serveur final. En utilisant netsh
, une règle peut être ajoutée pour le port forwarding, ainsi qu'une règle de pare-feu Windows pour autoriser le port redirigé.
winrs.exe
winrs.exe
peut être utilisé pour transmettre des demandes WinRM, potentiellement comme une option moins détectable si la surveillance de PowerShell est une préoccupation. La commande ci-dessous démontre son utilisation:
OpenSSH
L'installation d'OpenSSH sur le premier serveur permet de contourner le problème du double saut, particulièrement utile pour les scénarios de boîte de saut. Cette méthode nécessite l'installation en ligne de commande et la configuration d'OpenSSH pour Windows. Lorsqu'il est configuré pour l'authentification par mot de passe, cela permet au serveur intermédiaire d'obtenir un TGT au nom de l'utilisateur.
Étapes d'installation d'OpenSSH
Téléchargez et déplacez le dernier fichier zip de la version d'OpenSSH sur le serveur cible.
Décompressez et exécutez le script
Install-sshd.ps1
.Ajoutez une règle de pare-feu pour ouvrir le port 22 et vérifiez que les services SSH sont en cours d'exécution.
Pour résoudre les erreurs de Réinitialisation de la connexion
, les autorisations peuvent nécessiter une mise à jour pour permettre à tout le monde d'avoir un accès en lecture et en exécution sur le répertoire OpenSSH.
Références
Last updated