Port 88: Kerberos
Was ein offener Kerberos-Port über eine Active-Directory-Umgebung verrät, bevor überhaupt ein gültiges Credential vorliegt.
Port 88/TCP und UDP bedeutet mit hoher Zuverlässigkeit: hier läuft ein Domain Controller. Kerberos ist in Active-Directory-Umgebungen das primäre Authentifizierungsprotokoll, und anders als viele andere Dienste lässt es sich in Teilen sogar ganz ohne gültige Credentials sondieren.
Was vor jeder Authentifizierung möglich ist
Der auffälligste Punkt: Kerberos erlaubt User-Enumeration ohne ein einziges gültiges Passwort, allein über das Protokollverhalten bei AS-REQ-Anfragen.
kerbrute userenum --dc 10.10.11.5 -d corp.local userlist.txt
Fragt man nach einem existierenden Benutzernamen, antwortet der KDC
(Key Distribution Center) anders als bei einem nicht existierenden: Bei
einem gültigen Benutzernamen kommt entweder ein AS-REP (wenn
Pre-Authentication nicht erforderlich ist, siehe unten) oder ein
KRB5KDC_ERR_PREAUTH_REQUIRED. Bei einem ungültigen Namen antwortet der
KDC mit KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN. Dieser Unterschied allein reicht
für eine vollständige Enumeration gültiger Domain-Benutzernamen, Monate vor
dem ersten kompromittierten Account.
Pre-Authentication als zweiter Hebel
Accounts mit deaktivierter Kerberos-Pre-Authentication (Do not require Kerberos preauthentication in den Account-Eigenschaften) liefern direkt ein
verschlüsseltes AS-REP, ohne dass vorher ein Passwort nötig war. Dieses
AS-REP lässt sich offline gegen das Benutzerpasswort crackbar machen, eine
eigene Technik (AS-REP Roasting), die eng mit dem
Kerberoasting-Artikel dieser Reihe
verwandt ist, dort aber gegen Service- statt Benutzerkonten.
Warum das für die weitere Vorgehensweise zählt
Sobald irgendein gültiges Domain-Credential vorliegt, egal wie niedrigprivilegiert, öffnet Kerberos die Tür zu Kerberoasting: jeder Domain-User darf Service-Tickets für beliebige Dienste im Verzeichnis anfordern, auch ohne jemals Zugriff auf diesen Dienst zu haben. Tools wie NetExec bauen genau auf dieser Eigenschaft auf, um mit einem einzigen gültigen Credential sehr schnell einen Überblick über die gesamte Domäne zu bekommen.
Hardening-Tipp
User-Enumeration über Kerberos lässt sich nicht vollständig verhindern,
das Protokoll ist darauf angewiesen, Benutzer zu identifizieren. Was zählt,
ist die zweite Ebene: Pre-Authentication für alle Accounts erzwingen,
AS-REP-Roasting-Kandidaten (Pre-Auth deaktiviert) regelmäßig auditieren,
und ungewöhnlich viele KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN-Antworten in
kurzer Zeit als Enumeration-Indikator im SIEM werten.