Vous êtes sur la page 1sur 31

Abusing Terminal Server SSO to pwn more boxes

Stphane Sigmen

for HackerSpace

Introduction
Avec 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

REG_SZ = TERMSRV/*

HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefCredent ialsWhenNTLMOnly

REG_SZ = TERMSRV/*

Schma labo

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

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?

Rfrences
Enable 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