Druckerdienst auf AD DC + Kerberos Unconstrained Delegation = PWN

Will Schroeder, Lee Christensen und Matt Nelson haben auf der Derbycon 2018 eine neue Variante eines bereits bekannten Angriffs auf Active Directory Infrastrukturen präsentiert.  Die Zusammenfassung von Sean Metcalf auf Englisch findet man hier: https://adsecurity.org/?p=4056.

Kurz gefasst: Wenn ein Angreifer einen Host mit «Kerberos Unconstrained Delegation» übernehmen kann und auf dem Domain Controller der Druckerdienst erreichbar ist, dann kann er den Domain Dontroller übernehmen.

Vorbedingungen

Damit der Angriff funktioniert, müssen die folgenden Bedingungen erfüllt sein:

  1. Der Angreifer muss auf einem Host mit «unconstrained delegation» Systemrechte erlangen.
  2. Auf dem Domain Controller muss der Druckerdienst (spooler) laufen und erreichbar sein.

Ablauf

  1. Der Angreifer gelangt auf einem beliebigen Host mit «unconstrained delegation» innerhalb der AD Infrastruktur an Systemrechte.
  2. Er fordert mit einem beliebigen AD-User beim Druckerdienst auf dem Domain Controller Updates über neue Druckaufträge an.
  3. Der Druckerdienst (spooler) prüft sofort die Verbindung und meldet sich dafür auf dem kompromittierten Host mit «unconstrained delegation» an.  Weil es sich um «unconstrained delegation» handelt und weil der Spooler mit Systemrechten läuft, ist im Kerberos Ticket dieser Anmeldung das Ticket-Granting-Ticket (TGT) des DC-Benutzers SYSTEM enthalten.
  4. Das Kerberos Ticket mit dem enthaltenen TGT von SYSTEM auf dem Domain Controller wird auf dem dem kompromittieren Host zwischengespeichert. Der Angreifer kann es dort mit seinen Systemrechten auslesen.
  5. Der Angreifer nimmt das TGT und meldet sich damit mit Systemrechten auf dem Domain Controller an. Game over.

Gegenmassnahmen

  1. Grundsätzlich nie «unconstrained delegation» konfigurieren. Wenn delegation notwendig ist, dann soll die delegation nur an bestimmte Dienste erlaubt werden («constrained delegation»).
  2. Kritische Accounts sollten als «sensitiv und nicht delegierbar» markiert werden.
  3. Unnötige Dienste auf allen Systemen, insbesondere auf dem Domain Controller, entfernen. Viel Glück dabei. Vorher einen Snapshot machen. Und nein, Cortana hat auf einem Server nichts verloren.
  4. Auf Windows verzichten. Windows ist für kritische Infrastrukturen zu umfangreich und zu intransparent.