Serveur d'impression

Serveur d'impression de contrôleur de domaine + Délégation Kerberos non contrainte = Forêt Active Directory pwned – Sécurité Active Directory – Serveur d’impression

Le 22 septembre 2019 - 5 minutes de lecture

À la DerbyCon 8 (2018), Will Schroeder (@ Harmj0y), Lee Christensen (@Tifkin_), Et Matt Nelson (@ enigma0x3), a parlé des risques imprévus de faire confiance à AD. Elles couvrent un certain nombre de méthodes de persistance et d’escalade de privilèges intéressantes, bien qu’une en particulier ait attiré mon attention.

Vue d'ensemble

Lee a découvert et présente un scénario dans lequel un compte avec une délégation non contrainte configurée (ce qui est assez courant) et le service Spooler exécuté sur un ordinateur, vous pouvez obtenir les informations d’identification de cet ordinateur envoyées au système avec une délégation non contrainte en tant qu’utilisateur.

Nous constatons qu'environ 90% des environnements examinés et dans lesquels nous travaillons ont une sorte de délégation Kerberos configurée et environ 75% ont une délégation non contrainte configurée. Dans ma présentation à Black Hat en 2015 (ainsi que dans les discussions suivantes) et dans un message ici, j'ai identifié et mis en évidence les problèmes de sécurité avec une délégation sans contrainte.

Voici une commande rapide PowerShell qui découvre les comptes avec délégation Kerberos (nécessite le module AD PowerShell):

Get-ADObject -filter (UserAccountControl -BAND 0x0080000) -OR (UserAccountControl -BAND 0x1000000) -OR (msDS-AllowedToDelegateTo-like '*') -prop Nom, ObjectClass, PrimaryGroupID, UserAccountControl,

L'attaque
L'attaquant découvre un système avec une délégation Kerberos sans contrainte et le compromet. Ensuite, l'attaquant envoie une requête «RpcRemoteFindFirstPrinterChangeNotification» au contrôleur de domaine et le contrôleur de domaine répond pour tester la communication avec le demandeur. Si le contrôleur de domaine exécute le service Spooler (Spooler), cela fonctionnera (et il est facile de tester pour trouver 1 contrôleur de domaine exécutant ce service).

Lee explique que le problème est que tout utilisateur authentifié peut se connecter à distance au serveur d’impression du contrôleur de domaine (service spouleur) et demander une mise à jour des nouveaux travaux d’impression et lui demander simplement d’envoyer la notification au système avec une délégation non contrainte. Il testera immédiatement cette connexion, exposant ainsi les informations d'identification du compte de l'ordinateur (car le spouleur d'impression appartient à SYSTEM). Lee note que Microsoft dit que cela est voulu par la conception et «ne corrigera pas».
Lee a posté un code PoC qu'il appelle SpoolSample sur Github.

Flux conceptuel:

  1. L'attaquant découvre et compromet un système avec une délégation Kerberos sans contrainte. Notez que si un attaquant compromet un contrôleur de domaine dans une forêt approuvée (avec une approbation bidirectionnelle), ceci peut être utilisé pour compromettre l'autre forêt.
  2. L'attaquant teste et découvre un contrôleur de domaine exécutant le service Spouleur d'impression.
  3. L’attaquant envoie la demande MS-RPRN RpcRemoteFindFirstPrinterChangeNotification (authentification Kerberos) au serveur d’impression du contrôleur de domaine.
  4. Le contrôleur de domaine envoie immédiatement une réponse au demandeur. Cette réponse implique que le contrôleur de domaine crée un ticket de service Kerberos (TGS) contenant le ticket d’authentification (TGT) du compte d’ordinateur du contrôleur de domaine, car Kerberos est impliqué et que le compte demandeur est configuré avec une délégation sans contrainte.
  5. L’attaquant a maintenant le compte d’ordinateur du contrôleur de domaine Kerberos TGT qui peut être utilisé pour emprunter l’identité du contrôleur de domaine.
  6. DCSync toutes les informations d'identification du compte (ou toute autre attaque impliquant des informations d'identification DA, le cas échéant).

Le flux d’authentification conceptuel est présenté dans le graphique.

Les «ingrédients» clés requis pour que cela fonctionne, comme mentionné dans leur exposé:

  1. Compte avec délégation Kerberos sans contrainte (un contrôleur de domaine dans une forêt approuvée utilisant une approbation bidirectionnelle, par exemple)
  2. Compromettre ce compte.
  3. Le contrôleur de domaine s'exécute en tant que serveur d'impression (le service Spouleur est en cours d'exécution).

Ce problème s'applique également à toutes les approbations de forêt.

Atténuation

Notez que cet article se concentre sur les contrôleurs de domaine, mais que tous les serveurs sont potentiellement exposés à cette attaque.
Atténuez ce problème spécifique en désactivant le service Spouleur d’impression sur tous les serveurs pour lesquels il n’est pas nécessaire de s’exécuter et assurez-vous qu’il n’y a pas de compte avec une délégation non contrainte configurée.

MISE À JOUR (12 février 2019)
Microsoft a publié des instructions supplémentaires concernant l’impact de ce problème sur plusieurs forêts.


https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/ADV190006

MISE À JOUR (21 mars 2019)
Microsoft a changé cela en CVE-2019-0683 et le corrigera. L'article de Microsoft 4490425 décrit les modifications apportées aux approbations pour se protéger contre ce problème.

Bonne conversation Will, Lee et Matt!

Vidéo expliquant le problème

Références

(Visité 16 236 fois, 5 visites aujourd'hui)

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.