Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes [email protected] OSSIR...

24
1 OSSIR – 13 juillet 2010 Aurélien Bordes [email protected] OSSIR – 13 juillet 2010 v2.0

Transcript of Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes [email protected] OSSIR...

Page 1: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

1OSSIR – 13 juillet 2010

Aurélien [email protected]

OSSIR – 13 juillet 2010v2.0

Page 2: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

2OSSIR – 13 juillet 2010

RDP (Remote Desktop Protocol)

• Solution d’accès distant via un déport :– de l’affichage graphique du serveur vers le client– des entrées du client vers le serveur

• Historique des versions :– 4.0 : Windows NT 4 Terminal Services– 5.0 : Windows 2000– 5.1 : Windows XP– 6.0 : Windows Vista– 6.1 : Windows 2008– 7.0 : Windows 7 / 2008R2

Page 3: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

3OSSIR – 13 juillet 2010

Extensions

• RDP permet également d’utiliser de nombreuses extensions :

• Multiparty Virtual Channel• Clipboard Virtual Channel • Audio Output Virtual Channel• Remote Programs Virtual Channel • Dynamic Channel Virtual Channel • File System Virtual Channel • Serial Port Virtual Channel • Print Virtual Channel • Smart Card Virtual Channel

• XPS Printing Virtual Channel • Plug and Play Devices Virtual Channel • Video Virtual Channel • Audio Input Virtual Channel • Composited Remoting V2

• Licensing• Session Selection• Graphics Device Interface (GDI) Acceleration• Desktop Composition • Remote Programs Virtual Channel • NSCode• RemoteFX Codec

Page 4: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

4OSSIR – 13 juillet 2010

Sécurité de RDP

• Standard RDP Security :– encryptionMethods :

• Null, 40 bits, 56 bits, 128 bits ou FIPS– encryptionLevel :

Level C ���� S S ���� CChoix

méthodeAlgo.

chiffrementKey Exch.

MAC

Low Chiffré Clair Max. client RC4 MD5/SHA1

Client Compatible

Chiffré Chiffré Max. client RC4 MD5/SHA1

High Chiffré Chiffré Max. serveur RC4 MD5/SHA1

Fips Chiffré Chiffré N/A 3DES SHA1

Page 5: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

5OSSIR – 13 juillet 2010

Sécurité de RDP

• Échanges des clefs :

Client Serveur

Aléa serveur / K

K{Aléa client}

ServerDecryptKeyServerEncryptKeyClientDecryptKeyClientEncryptKeyMACKey

MD5SHA1

FIPS(SHA1)

Aléas

MD5SHA1

FIPS(SHA1)

Aléas

ServerDecryptKeyServerEncryptKeyClientDecryptKeyClientEncryptKey

MACKey

Page 6: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

6OSSIR – 13 juillet 2010

Authentification dans RDP

• Le client s’authentifie après du serveur via ses credentials qu’il fournit (authentification classique Windows)

• L’authentification du serveur vis-à-vis du client n’a pas été initialement prise en compte :– Bugtraq (02/04/2003) : Microsoft Terminal

Services vulnerable to MITM-attacks

Page 7: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

7OSSIR – 13 juillet 2010

Scénario de détournement

Client Serveur

Attaquant

Page 8: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

8OSSIR – 13 juillet 2010

Premier essai…

• Utilisation d’un certificat pour transporter K (messages de type CERT_CHAIN_VERSION_2)

– Certificat dans :HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters\Certificate

– Clef privée associée dans L$HYDRAENCKEY

• Ce certificat est signé par une clef privée codée en dur (mstlsapi.dll) :

– SecuriTeam (02/06/2005) : Microsoft RDP Man in the Middle Vulnerability

Page 9: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

9OSSIR – 13 juillet 2010

Deuxième essai

• Il est possible d’utiliser un certificat issu d’une chaîne de certification en lieu et place du certificat auto-généré

• Recommandation : – Mettre à jour son client vers la dernière version– Imposer au client la validation du certificat

présenté parle serveur

Page 10: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

10OSSIR – 13 juillet 2010

Enhanced RDP Security

• Changement complet des méthodes :– d’authentification client/serveur– de chiffrement et d’intégrité des messages RDP

• Toutes les fonctions de sécurité sont déléguées à un SSP (Security Support Provider)

• Pour RDP, il est possible d’utiliser :– PROTOCOL_SSL : Schannel– PROTOCOL_HYBRID : CredSSP

Page 11: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

11OSSIR – 13 juillet 2010

Rôles d’un SSP(Security Support Provider)

• Authentification Client / Serveur• Chiffrement de messages (PRIVACY) :

– EncryptMessage– DecryptMessage

• Signature de messages (INTEGRITY) :– MakeSignature– VerifySignature

Page 12: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

12OSSIR – 13 juillet 2010

Échanges SSP

LSASS

Basesessions

Programmeclient

SSPI

SSPmsv1_0

LSASSBase (SAM)Base

sessions

Programmeserveur

SSPI

SSPmsv1_0

Protocole

Token

OK

Page 13: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

13OSSIR – 13 juillet 2010

Principaux SSP

• NTLM – protocoles LM et NTLM

• Kerberos• Negotiate (SPNego)

– GSS-API et SPNego– Négociation de NTLM ou Kerberos

• Schannel– SSL/TLS

• CredSSP– Utilisation de Schannel et SPNego

Page 14: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

14OSSIR – 13 juillet 2010

Modes d’utilisation

• Utilisation d’une Security-Enhanced ConnectionSequence

• Deux modes d’utilisation :– Negotiation-based : négociation de l’extension de

sécurité dans les messages RDP– Direct : utilisation de l’extension de sécurité avant

les messages RDP

Page 15: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

15OSSIR – 13 juillet 2010

Modes d’utilisation

NégociationRDP

NégociationSSP Messages RDP

NégociationRDP

NégociationSSP

Messages RDP

Negotiation-based security-enhanced connection sequence

Direct security-enhanced connection sequence

Page 16: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

16OSSIR – 13 juillet 2010

CredSSP

• CredSSP est un SSP (Security Service Provider) apparu avec Vista et 2008 (activé par défaut)

• CredSSP est également disponible sur XP depuis le SP3 (mais n’est pas activé par défaut)

• CredSSP est principalement utilisé par le service de connexion au bureau à distance (Terminal Services) afin de renforcer l’authentification client/serveur

Page 17: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

17OSSIR – 13 juillet 2010

CredSSP

• Implémente le mécanisme d’authentification NLA (Network Layer Authentication), dont le principe repose sur :– La mise en place d’une session TLS (Schannel)– L’authentification du client via SPNego– La validation de la clef présentée par le serveur

dans son certificat• Permet la transmission de credentials utilisateur (mot

de passe ou du code PIN) du client vers le serveur (protégés par TLS + SPNego)

Page 18: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

18OSSIR – 13 juillet 2010

Type de credentials

• Trois types de credentials peuvent être délégués :– Default credentials (ceux utilisés pour

l’authentification implicite de l’utilisateur courant)– Saved credentials (credentials sauvés)– Fresh credentials (credentials saisis)

Page 19: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

19OSSIR – 13 juillet 2010

Échanges CredSSP

Client Serveur

Mise en place de la session TLS Échanges

protégés par TLSAuthentification du client par SPNego

Échanges protégés par SPNegoValidation de la

clef présentée par le serveur

Envoi des credentialsutilisateur

Schannel

TLS{ TSRequest[Token SPNEGO] }

TLS{ TSRequest[Token SPNEGO] }

TLS {TSRequest[SPNEGO{ SubjectPublicKeyInfo }] }

TLS{ TSRequest[SPNEGO{ SubjectPublicKeyInfo+1 }] }

TLS{ TSRequest[SPNEGO{ TSCredentials }] }

Page 20: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

20OSSIR – 13 juillet 2010

Autorisation de la délégation

• La délégation doit préalablement être autorisée au travers d’une stratégie de groupe définissant les services et noms des serveurs accrédités

• Stratégie [ Ordinateur ] :Modèles d’administration

SystèmeDélégation d’informations d’identification

• Exemples :– TERMSRV/serveur-01.domaine.tld– */*

Page 21: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

21OSSIR – 13 juillet 2010

Serveur TS

Négo.RDP

Négo.SSP Messages RDP

Échanges RDP et CredSSP

LSASS

Basesessions

mstsc.exe

SSPI

CredSSP

LSASS

Basesessions

SSPI

CredSSPToken

TERMSRV/10.0.0.191

PoliciesCredentialsDelegation

TCP/3389

TERMSRV/10.0.0.191

Page 22: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

22OSSIR – 13 juillet 2010

Principe de récupération du blocTSCredentials

• Faire exécuter à un utilisateur un programme qui réalise une authentification via CredSSP du client vers lui-même :– La partie cliente est une authentification

CredSSP à destination d’un serveur autorisé pour la délégation

– La partie serveur est simulée :• mise en place de la session TLS• authentification SPNEGO du client• récupération des credentials

Page 23: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

23OSSIR – 13 juillet 2010

Fonctionnement

Mise en place de la session TLS

Authentification du client par SPNego

Validation de la clef présentée par le serveur

Envoi des credentials

Cre

dSS

P

Sch

anne

l(T

LS)

SP

Neg

o

Récupération d’un service/serveur autorisé et initialisation de CredSSP

Page 24: Aurélien Bordes - OSSIR · OSSIR – 13 juillet 2010 1 Aurélien Bordes aurelien26@free.fr OSSIR – 13 juillet 2010 v2.0

24OSSIR – 13 juillet 2010

Recommandation

• la délégation des credentials (default ou saved) doit être utilisée avec la plus grande parcimonie

• L'autorisation d'une seule délégation fait courir au client le risque de compromission de son mot de passe