J'ai un ordinateur nommé ws24 (192.168.1.168) et un autre nommé srvPPassTest2.
J'ai écrit un programme fonctionnant sur ws24 qui est un "proxy RDP". Il accepte les connexions des clients RDP sur le port 7070 (configurable) et les transmet à srvPPassTest2. Je fais ce qui suit pour configurer les ordinateurs afin qu'ils utilisent le proxy :
- Je crée un certificat pour le Proxy avec la commande suivante :
./makecert -n "CN=ws24.pleasant.local" -pe -ss Root -sr localMachine -sky exchange -m 120 -r -a sha1 -eku 1.3.6.1.5.5.7.3.1
- Ensuite, je l'exporte avec la clé privée pour créer un .pfx que le Proxy utilisera.
- Je l'exporte également sans la clé privée et je l'importe dans le dossier Certificats (ordinateur local) - Autorités de certification racine de confiance/Certificat de srvPPassTest2.
- Je cours
Enable-WSManCredSSP -role client -DelegateComputer srvPPassTest2 Enable-WSManCredSSP -role client -DelegateComputer ws24 Enable-WSManCredSSP -role client -DelegateComputer 192.168.1.168
sur ws24. Je suis sûr qu'ils ne sont pas tous nécessaires mais ça ne marche pas encore alors j'essaie tout. - Sur ws24, j'effectue les modifications suivantes dans le registre :
- HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\Lsa\Security Paquets - ajouter tspkg
- HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders - ajouter credssp.dll
- Je cours
Enable-WSManCredSSP -role Server
sur srvPPassTest2.
Si vous obtenez des erreurs lors des appels WSManCredSSP, essayez d'abord d'appeler Enable-PSRemoting.
Voici ce qui se passe lorsque je lance le proxy rdp et que j'utilise le client RDP pour m'y connecter :
- Sur ws24, j'utilise le client RDP pour me connecter à 192.168.1.168:7070. L'utilisation d'une adresse IP au lieu d'un nom empêche le client de répondre que vous ne pouvez pas vous connecter.
- Le proxy reçoit et modifie (si nécessaire) le message ConnectionRequestPDU du protocole RDP pour s'assurer que les indicateurs SupportedProtocol sont définis sur ProtocolHybrid et ProtocolSSL. Cela garantit l'utilisation de CredSSP. Ce message est transmis à srvPPassTest2.
- Le proxy mitraille la poignée de main TLS.
- Le proxy reçoit le message NTLMNegotiate du client, en extrait quelques informations et en crée un nouveau pour le transmettre à la cible srvPPassTest2.
- Il en va de même pour le NTLMChallenge et le NTLMAuthentication.
- Le client et le serveur RDP continuent à fonctionner correctement à ce stade. Ils ne renvoient pas d'erreurs et ne présentent pas de comportement étrange.
- Les machines échangent les clés publiques des certificats, cryptées avec la clé de l'échange NTLM.
- Le client envoie un TSRequest avec un TSCredential. Le proxy le reçoit, vérifie les informations et en construit un avec des informations d'identification différentes pour l'envoyer à srvPPassTest2.
- Message de transfert du client, longueur 462
- Transfert du message de srvppasstest2, longueur 108
- Message de transfert du client, longueur 12
Puis j'obtiens une popup d'erreur du client rdp :
Une erreur d'authentification s'est produite (Code : 0x609)
Ordinateur distant : 192.1.168.1.168
Le seul résultat pertinent lorsque je recherche l'erreur 0x609 est le suivant aquí et j'ai suivi ces étapes. Une chose importante à noter : ce proxy fonctionnait il y a 3 mois. Puis srvPPassTest2 a été rétabli dans un état antérieur et maintenant le proxy ne fonctionne plus. Je ne peux pas rétablir l'état de srvPPassTest2 lorsqu'il fonctionnait, ce vm n'était pas le mien et le snapshot n'a pas été sauvegardé par l'informatique > :(
Où trouver des informations sur le code 0x609 ?
Quels sont les autres paramètres possibles, sur ws24, ou srvPPassTest2 que j'ai manqués ? Je pense que le certificat devrait probablement se trouver dans un dossier supplémentaire sur srvPPassTest2, mais je ne sais pas lequel.
Y a-t-il quelque chose que je puisse faire pour résoudre le problème ? Les échanges NTLM et TSCredential fonctionnent parfaitement.