Abusing Terminal Server SSO to pwn more boxesStphane Sigmen
for HackerSpace
IntroductionAvec l'arriv de Windows Vista et de Windows 2008, Microsoft a dcid d'inclure la fonctionnalit d'authentification unique (Single Sign-On) au service Terminal Serveur. Bien que cette nouveaut simplifie la vie d'un utilisateur en lui vitant de saisir nouveau son mot de passe lors d'une connexion un bureau distant, nous verrons qu'elle peut aussi simplifier la vie d'un hacker / pen-tester.
Objectifs Section 1
D'o vient l'ide ? Qu'est-ce que le service Terminal Serveur? Nouvelle fonctionnalit Single Sign-On
Description Pr-requis Configuration Dmo (Utilisation normale)
D'o vient l'ide ?
Mandat client : Rdiger l'architecture d'une ferme de serveurs Remote Desktop sous Windows 2008 R2 incluant :
Session Broker Remoteapps Scurit par certificats Single Sign-On
D'o vient l'ide ?
Questions que je me suis poses lors des tests d'intgration :
Est-ce possible de combiner la fonctionnalit SSO une attaque Pass-The-Hash ?
Aprs recherches #1 NON
Est-ce possible d'injecter un Usager/Hash dans la SAM locale d'un de mes postes et d'utiliser celui-ci avec SSO pour se connecter un serveur possdant les mmes crdentials?
Aprs recherches #2 NON
Donc, comment profiter de la fonctionnalit SSO pour tendre notre contrle en situation de pentest ?
C'est ce que nous allons voir au cours de la prsentation.
Service Terminal Serveur
Service Windows permettant aux usagers de se connecter une session Windows distance et d'obtenir un bureau comme s'ils taient branchs localement. Deux modes de fonctionnement :
Administratif limite de 2 sessions concurrentes (gratuit)
Habituellement activ sur les serveurs par les administrateurs
Applicatif limite de sessions selon le nombre de licences achet ($$$)
Permet la redirection des ressources locales du poste client:
Clipboard, Disque, Imprimantes, Audio
Protocol de communication : Remote Desktop Protocol (RDP)
Version actuelle pour windows 2008 R2 : RDP version 7 Port de communication : TCP 3389
Service Terminal Serveur
Maintenant inclut dans toutes les distributions Windows:
Clients : 2000 Workstation / XP / Vista / 7 Serveurs : 2000 Serveur / 2003 / 2008 / 2008 R2
A partir de Windows 2008,
Ajout des fonctionnalits de scurit suivantes :
Authentification NLA (Network Level Authentication) Communication encrypte SSL / TLS 1.0
Sous Windows 2008 R2, le service Terminal Serveur est renomm par Remote Desktop Services Peu importe le nom, pour Nmap a reste 3389/tcp open microsoft-rdp
Single Sign-On
Authentification unique (Single Sign-on)
Mthode permettant un utilisateur de procder une seule authentification pour accder plusieurs applications / systmes informatiques.
A partir de Windows Vista/2008, Microsoft a ajout un nouveau Package d'authentification afin de permettre le SSO.
Le nouveau package appel CredSSP se prsente sous forme de Security Support Provider (SSP)
CredSSP
Pr-requis SSO serveurs
Systmes d'exploitation
Windows Vista / 7 Windows 2008 / 2008 R2
Remote Desktop doit tre activ et configur pour accepter des connexions distantes Paramtres de la connexion RDP-tcp du service:
Security Layer : Negotiate ou SSL (TLS 1.0) Logon Settings : Always prompt for password check box is not selected En passant ce sont les configurations par dfaut :)
Activation SSO serveurs
Aucune activation ncessaire si le serveur rpond aux pr-requis Par dfaut, si un serveur 2008 ou un poste Vista / 7 coute sur le port TCP 3389, il est accessible avec authentification SSO
Pr-requis SSO clients
Systme d'exploitation
Windows XP SP3 (avec activation CredSSP) Windows Vista / 7 Windows 2008 / 2008 R2
Client Microsoft Remote Desktop Connection
Support du protocol RDP >= 6.1 Support NLA (Network Level Authentication) Client par dfaut de Windows Vista / 7 / 2008
Activation SSO clients
Pour les postes d'un domaine Windows Activation par GPO (Group Policy Object) Computer Configuration->Administrative Templates->Credentials Delegation
Allow Delegating Default Credentials Allow Delegating Default Credentials with NTLMonly
Activation SSO clients
Activation partir du registre Windows
HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation
AllowDefaultCredentials REG_DWORD=1 ConcatenateDefaults_AllowDefault REG_DWORD=1 AllowDefCredentialsWhenNTLMOnly REG_DWORD=1 ConcatenateDefaults_AllowDefNTLMOnly REG_DWORD=1
HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefaultCre dentials
1
REG_SZ = TERMSRV/*
HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefCredent ialsWhenNTLMOnly
1
REG_SZ = TERMSRV/*
Schma labo
2
1
DEMO 1 Utilisation SSO contexte normal
Objectifs Section 2
Contexte d'exploitation Mthode gnrale d'exploitation tapes d'exploitation de la DEMO Details Unlock Session DEMO (version Hackespace) SSO vs Password Hash Impacts Moyens de dfense Questions ?
Contexte d'exploitation
Mot de passe admin complexe > 14 caractres Pass-The-Hash impossible Accs une ressource restreinte par un ACL Tcp 3389 seulement
DMZ Segments rseau interne isols par un firewall
Segment de gestion Segment de serveurs hbergeant donnes nominatives / confidentielles Rseau partenaire
Serveur avec Host based Firewall (Defaut de Windows 2008 R2)
Poste compromis avec session verrouill, sans activit depuis longtemps Trop impatient pour attendre le rsultat du keylogger (fin de semaine, vacance des ftes :)
Mthode d'exploitation
Recon Recon Recon Recon Recon .. Intrusion en rgle dans le rseau Recon Recon Recon Recon Recon ... User Session Piggybacking
Compromettre le poste d'un usager cibl
Avec session ouverte
Obtenir les droits administrateur local Activer SSO Obtenir une session interactive (ex.VNC) Utilser mstsc.exe pour se connecter TS avec les credentials de l'usager.
Pwnage du serveur cible !!!
Scnario Demo
Usager Supertech
Admin du domaine interne TARGET Admin du serveur de la DMZ XSS Java Signed Applet Bypass UAC (pour criture dans registre et injection de code) Activation Remote Desktop SSO Unlock Session utilisateur Obtenir session interactive avec VNC Connexion au serveur avec Credential de l'usager compromis Supertech Transfert d'un payload meterpreter (en mode copy&paste)
Vecteur d'intrusion par social-engineering
Setup poste Victim01
Takeover du serveur isol
THE END pas vraiment !
Schma labo
1
3 2
Details Unlock Session
Utilisation de mimikatz.exe
Outils de manipulation des processus Windows l'aide d'injection DLL et d'injection de code en memoire. Klock.dll : dll permettant la manipulation des bureaux windows http://blog.gentilkiwi.com/mimikatz
Winlogon vs lockscreen
DEMO 2 Exploitation SSO version Hackerspace
SSO vs Password hash
Une question reste en suspens :
Pourquoi est-ce impossible de combiner SSO avec Pass-The-Hash ou injection de hash dans SAM?
Lors de l'utilisation du client RDP, le package d'authentification Credssp n'utilise pas la cache des mots de passe hash stock dans LSA mais plutt sa propre version du mot de passe obtenu lors de l'authentification. Donc si CredSSP n'utilise pas de Hash pour l'authenfication, qu'est-ce qu'il utilise? Credssp conserve et utilise le mot de passe en mmoire ... EN CLAIR!!!
DEMO Exploitation rapide Rcupration des mots de passe en mmoire (en clair)
Contraintes
Le mot de passe rside en mmoire seulement si une session est ouverte.
Il faut compromettre un poste ayant une session ouverte par l'usager cibl.
Ncessite un accs administrateur pour l'injection dans lsass.exe
Impacts
CredSSP est activ par dfaut sur tous les postes Vista / Windows 7
Le SSP wdigest est aussi activ par dfaut sur les postes XP et conserve aussi le mot de passe en clair en mmoire
Mot de passe en clair disponible en mmoire sur tous les postes dans leur configuration par dfaut
Contient aussi les mots de passe des comptes utiliss avec RunAs
Compromettre un serveur Terminal Serveur en mode applicatif permet d'obtenir un maximum de mot de passe en un seul dump (20 users = minimum 20 passwords) Un usager compromis par Social-Engineering ou virus (pourquoi pas) = haute probabilit de leaker son mot de passe en clair.
Dfenses
Sur les postes, dsactiver Credssp et wdigest en les supprimant de la liste des SSP charger au dmarrage.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\SecurityProviders
FERMER sa session utilisateur au lieu de la verrouiller
Questions?
RfrencesEnable RDC Client Single Sign-On for Remote Desktop Services http://technet.microsoft.com/en-us/library/cc742808.aspx How to enable Single Sign-On for my Terminal Server connections http://blogs.msdn.com/b/rds/archive/2007/04/19/how-to-enable-single-sign-on-for-my-terminal-serverconnections.aspx XP Clients, CredSSP, SSO, Connection Broker and other animals http://blogs.technet.com/b/mrsnrub/archive/2010/12/16/xp-clients-credssp-sso-connection-broker-and-otheranimals.aspx Book - Windows Internals, Fifth Edition http://www.microsoft.com/learning/en/us/book.aspx?id=12069&locale=en-us Metasploit http:/www.metasploit.com/ Mimikatz http://blog.gentilkiwi.com/mimikatz
Top Related