Zum Inhalt springen

Authentication Coercion auf Domänencontrollern blockieren

PrinterBug, PetitPotam, DFSCoerce und ShadowCoerce auf DCs mit RPC-Filtern, reduzierten Diensten und relay-sicheren Zielen stoppen – und die Wirkung prüfen.

Florian Amette7 Min. Lesezeit

Authentication Coercion ist der Schritt, der aus einem niedrig privilegierten Domänenkonto eine Domänenkompromittierung macht – ganz ohne Kennwort. Der Angreifer ruft auf einem Domänencontroller eine RPC-Methode auf, die das Computerkonto des DC dazu bringt, sich bei einem Host seiner Wahl zu authentifizieren. Diese Authentifizierung wird dann per NTLM an die AD-CS-Webregistrierung (ESC8) oder an LDAP weitergeleitet (Relay) oder als Kerberos-TGT auf einem Host mit uneingeschränkter Delegierung abgegriffen. Das Computerkonto eines DC kann DCSync ausführen – die Kette endet also mit sämtlichen Hashes der Domäne.

Die bekanntesten Auslöser sind PrinterBug (MS-RPRN), PetitPotam (MS-EFSR), DFSCoerce (MS-DFSNM) und ShadowCoerce (MS-FSRVP). Regelmäßig tauchen neue Varianten auf, und Microsoft behandelt authentifizierte Coercion in der Regel nicht als Schwachstelle. Dieser Leitfaden geht tiefer als die Coercion-Hinweise in der DC-Baseline. Er behandelt, wie Sie die Exposition messen, die Auslöser über Dienste und RPC-Filter kappen, erzwungene Authentifizierung nutzlos machen und das Ergebnis überprüfen.

Warum Coercion ein zweiseitiges Problem ist

Jede Coercion-Kette hat einen Auslöser (eine RPC-Schnittstelle auf dem DC, die vom Aufrufer einen UNC-Pfad entgegennimmt) und ein Ziel (ein Relay-Ziel oder einen Delegierungshost, der die Anmeldeinformationen des DC akzeptiert). Wer nur eine Seite behebt, wettet darauf, dass niemand den nächsten Auslöser oder das nächste Ziel findet. Erst die Härtung beider Seiten macht diese Angriffsklasse langweilig:

TechnikProtokollNamed Pipe(s)Dienst auf dem DCPrimäre Maßnahme
PrinterBug / SpoolSampleMS-RPRN\pipe\spoolssDruckwarteschlangeSpooler deaktivieren
PetitPotamMS-EFSR\pipe\efsrpc, \pipe\lsarpcLSASS (EFS RPC)RPC-Filter
DFSCoerceMS-DFSNM\pipe\netdfsDFS-NamespaceRPC-Filter (einschränken)
ShadowCoerceMS-FSRVP\pipe\FssagentRpcFile Server VSS AgentRolle entfernen

Die Zielseite gehört in andere Leitfäden: LDAP-Signierung und Channel Binding, SMB-Signierung, EPA auf der AD-CS-Webregistrierung und uneingeschränkte Delegierung entfernen. Der Rest dieses Leitfadens behandelt die Auslöserseite und die DC-spezifischen Kontrollen, die beide Seiten verbinden.

Messen: Was ist heute exponiert?

Prüfen Sie zunächst, welche Auslöserdienste auf jedem DC tatsächlich laufen. Der Spooler sollte bereits deaktiviert sein, wenn Sie die Baseline angewendet haben – prüfen Sie es trotzdem. Der File Server VSS Agent Service ist nur vorhanden, wenn der Rollendienst FS-VSS-Agent installiert ist.

PowerShell
$dcs = (Get-ADDomainController -Filter *).HostName
Invoke-Command -ComputerName $dcs -ScriptBlock {
    [PSCustomObject]@{
        DC            = $env:COMPUTERNAME
        Spooler       = (Get-Service Spooler -ErrorAction SilentlyContinue).Status
        FssAgent      = (Get-Service -DisplayName 'File Server VSS Agent Service' -ErrorAction SilentlyContinue).Status
        DfsNamespace  = (Get-Service Dfs -ErrorAction SilentlyContinue).Status
        EfsService    = (Get-Service EFS -ErrorAction SilentlyContinue).Status
        VssAgentRole  = (Get-WindowsFeature FS-VSS-Agent).InstallState
        RpcFilters    = (netsh rpc filter show filter | Select-String 'filterKey').Count
    }
} | Format-Table -AutoSize

Beachten Sie: Das Stoppen des Dienstes EFS ist keine Abhilfe gegen PetitPotam. Die Schnittstelle MS-EFSR ist auch über \pipe\lsarpc erreichbar, die LSASS bedient – unabhängig davon, ob der EFS-Dienst läuft. Deshalb ist RPC-Filterung die empfohlene Kontrolle für EFSRPC.

Prüfen Sie dann die Ziele. Coercion richtet sich gegen den DC, das Relay landet aber anderswo. Listen Sie die Hosts auf, die eine erzwungene DC-Authentifizierung in einen Erfolg verwandeln würden:

PowerShell
# Computer (außer DCs), die für uneingeschränkte Delegierung vertrauenswürdig sind
Get-ADComputer -Filter { TrustedForDelegation -eq $true -and PrimaryGroupID -ne 516 } |
    Select-Object Name, DNSHostName

# Hosts der Unternehmens-CA: jeden (und alle CES-/Web-Enrollment-Server) auf HTTP-Relay-Ziele prüfen
Get-ADObject -SearchBase ("CN=Enrollment Services,CN=Public Key Services,CN=Services," +
    (Get-ADRootDSE).configurationNamingContext) -Filter * -Properties dNSHostName |
    Select-Object Name, dNSHostName

Auditieren: Coercion-Versuche sehen, bevor Sie blockieren

Bevor Sie blockierende Filter einrichten, lassen Sie dieselben Filter eine Woche lang im Überwachungsmodus laufen. Die RPC-Filter-Engine von Windows schreibt für Filter mit aktivierter Überwachung das Sicherheitsereignis 5712 („A Remote Procedure Call (RPC) was attempted“), sofern die Überwachungsunterkategorie RPC Events aktiv ist:

PowerShell
auditpol /set /subcategory:"RPC Events" /success:enable /failure:enable

Zugriffe auf Named Pipes am DC sehen Sie außerdem mit der Überwachung Detailed File Share (Ereignis 5145) und einem Filter auf die relativen Zielnamen efsrpc, lsarpc, spoolss, netdfs und FssagentRpc. Vorsicht: lsarpc wird von jedem Domänenmitglied den ganzen Tag genutzt. Verwenden Sie es zur Korrelation, nicht zur Alarmierung.

Achten Sie zuerst auf das Offensichtliche. Jeder EFSRPC-Aufruf an einen DC von einer Arbeitsstation ist verdächtig, weil kein legitimer Client Dateien auf einem DC verschlüsselt. Jeder MS-DFSNM-Aufruf von einem Host, der keine Tier-0-PAW ist, braucht einen Verantwortlichen.

Durchsetzen: jeden Auslöser entfernen oder filtern

Druckwarteschlange

Halten Sie sie deaktiviert – mit Computer Configuration > Policies > Windows Settings > Security Settings > System Services > Print Spooler = Disabled in einer mit der OU Domain Controllers verknüpften GPO. Das ist die einzige vollständige Abhilfe gegen PrinterBug. RPC-Filterung von MS-RPRN ist eine Ausweichlösung für Mitgliedsserver, die den Spooler behalten müssen.

File Server VSS Agent (ShadowCoerce)

Ein DC sollte diese Rolle nicht hosten. Entfernen Sie sie:

PowerShell
Uninstall-WindowsFeature -Name FS-VSS-Agent -ComputerName DC01

RPC-Filter für EFSRPC und DFSNM

RPC-Filter sind Regeln der Windows Filtering Platform auf RPC-Ebene, die an die Schnittstellen-UUID gebunden sind. Das Blockieren per UUID stoppt den Aufruf, egal über welche Named Pipe oder welchen TCP-Endpunkt er eintrifft. Die Schnittstelle MS-EFSR ist unter zwei UUIDs erreichbar, c681d488-d850-11d0-8c52-00c04fd90f7e (über lsarpc) und df1941c5-fe89-4e79-bf10-463657acf44d (über efsrpc) – blockieren Sie also beide. MS-DFSNM verwendet 4fc742e0-4a10-11cf-8273-00aa004ae673. Für DFSNM ist eine auf Ihre Tier-0-Gruppe beschränkte Zulassungsregel sicherer als eine Pauschalsperre, weil Administratoren domänenbasierte Namespaces weiterhin darüber verwalten.

Speichern Sie die Filterdefinition als versionierte Datei, zum Beispiel dc-rpc-filters.txt:

Text
rpc
filter
add rule layer=um actiontype=block audit=enable
add condition field=if_uuid matchtype=equal data=c681d488-d850-11d0-8c52-00c04fd90f7e
add filter
add rule layer=um actiontype=block audit=enable
add condition field=if_uuid matchtype=equal data=df1941c5-fe89-4e79-bf10-463657acf44d
add filter
add rule layer=um actiontype=permit audit=enable
add condition field=if_uuid matchtype=equal data=4fc742e0-4a10-11cf-8273-00aa004ae673
add condition field=remote_user_token matchtype=equal data=D:(A;;CC;;;DA)
add filter
add rule layer=um actiontype=block audit=enable
add condition field=if_uuid matchtype=equal data=4fc742e0-4a10-11cf-8273-00aa004ae673
add filter
quit

Anwenden und bestätigen:

PowerShell
netsh -f C:\Tier0\dc-rpc-filters.txt
netsh rpc filter show filter

Ersetzen Sie DA in der SDDL durch die SID Ihrer dedizierten Tier-0-Admin-Gruppe, sobald Sie eine haben. Für RPC-Filter gibt es keinen Gruppenrichtlinienknoten; verteilen Sie die Datei daher über Ihr Tier-0-Konfigurationsmanagement oder ein DC-Startskript. Machen Sie das Skript idempotent: Führen Sie netsh rpc filter delete filter filterkey=all nur dann vorab aus, wenn Ihnen jeder Filter auf dem System gehört.

Den Netzwerkpfad entziehen

Coercion setzt voraus, dass der DC den Listener des Angreifers über SMB (445) oder HTTP (80 oder ein beliebiger Port über den WebClient-Dienst) erreicht. Ein DC hat selten einen legitimen Grund, SMB- oder HTTP-Sitzungen zu Arbeitsstationen oder Benutzer-Server-Subnetzen aufzubauen. Das Blockieren dieses ausgehenden Verkehrs wird in Firewall für Domänencontroller behandelt und ist eine der wirksamsten Anti-Coercion-Maßnahmen, weil sie auch Auslöser abdeckt, die noch niemand veröffentlicht hat.

Die Ziele härten

Betrachten Sie diese Punkte als Pflichtbegleiter, nicht als optionale Extras:

  • LDAP: Signierung und Channel Binding auf jedem DC verlangen.
  • SMB: Signierung auf Servern und Clients verlangen. Auf aktuellen Builds von Windows 11 und Windows Server 2025 ist das Standard – prüfen Sie es aber, statt es anzunehmen.
  • AD CS: Web Enrollment entfernen, wenn es nicht genutzt wird. Andernfalls HTTPS mit Extended Protection for Authentication erzwingen und NTLM auf diesen IIS-Sites deaktivieren.
  • Delegierung: Kein Computer außer den DCs sollte uneingeschränkte Delegierung behalten. Nehmen Sie Tier-0-Konten in Protected Users auf und markieren Sie sie als vertraulich, damit ihre TGTs nicht weitergeleitet werden können.

Überprüfen

Prüfen Sie die Konfiguration von einer PAW aus:

PowerShell
Invoke-Command -ComputerName $dcs -ScriptBlock {
    $f = netsh rpc filter show filter | Out-String
    [PSCustomObject]@{
        DC          = $env:COMPUTERNAME
        Spooler     = (Get-Service Spooler).StartType
        EfsLsarpc   = $f -match 'c681d488-d850-11d0-8c52-00c04fd90f7e'
        EfsEfsrpc   = $f -match 'df1941c5-fe89-4e79-bf10-463657acf44d'
        DfsNm       = $f -match '4fc742e0-4a10-11cf-8273-00aa004ae673'
        VssAgent    = (Get-WindowsFeature FS-VSS-Agent).InstallState
    }
}

Testen Sie dann das Verhalten. Lassen Sie in einem Labor oder einem genehmigten Zeitfenster Ihr Red Team oder eine Purple-Team-Übung die gängigen Coercion-Tools (zum Beispiel Coercer oder die einzelnen Proof-of-Concepts) mit einem Standardbenutzerkonto gegen einen DC ausführen. Bestätigen Sie drei Dinge: Keine Authentifizierung erreicht den Listener, Ereignis 5712 wird für die blockierte Schnittstelle ausgelöst, und Ihr SIEM schlägt Alarm. Testen Sie auch die DFSNM-Zulassungsregel: Öffnen Sie die DFS-Verwaltungskonsole von einer PAW als Tier-0-Admin und bestätigen Sie, dass die Namespace-Verwaltung weiterhin funktioniert.

Wiederholen Sie die Prüfung nach jedem kumulativen Update und nach jedem Neuaufbau eines DC. Ein frisch heraufgestufter DC ohne Filterdatei ist die häufigste Lücke.

Was dabei kaputtgeht

  • Remote-EFS-Vorgänge auf DCs. Nichts Legitimes sollte Dateien auf einem DC über das Netzwerk verschlüsseln. Backup- oder Dateiverwaltungstools, die EFSRPC gegen auf DCs gehostete Freigaben aufrufen, schlagen fehl. Verlagern Sie diese Freigaben vom DC weg.
  • DFS-Namespace-Verwaltung von Nicht-Admin-Hosts. Mit dem DFSNM-Filter kann nur die SID aus der Zulassungsregel Namespaces remote verwalten. Delegierte Namespace-Admins, die an normalen Arbeitsstationen arbeiten, verlieren den Zugriff, bis sie auf eine PAW wechseln oder in die zugelassene Gruppe aufgenommen werden. SYSVOL- und NETLOGON-Verweise sind nicht betroffen, da Clients die Verwaltungsschnittstelle nicht nutzen.
  • Drucken über einen DC. Jede noch von einem DC veröffentlichte Warteschlange verschwindet, sobald der Spooler deaktiviert ist.
  • Monitoring- oder Backup-Agenten, die in umgekehrter Richtung per SMB/HTTP von DCs abrufen. Egress-Filterung kann Agenten treffen, die erwarten, dass der DC sich zu ihnen verbindet. Erfassen Sie diese während der Audit-Woche.
  • Künftige RPC-Änderungen. An UUIDs gebundene Filter sind präzise. Sollte Microsoft Funktionalität auf eine neue Schnittstelle verlagern, greifen die Filter dort nicht – lassen Sie die Audit-Ereignisse also weiterlaufen.

Weiterführende Lektüre: die DC-Baseline für die übrige Konfiguration der Domänencontroller, NTLM-Relay stoppen: LDAP, SMB-Signierung und LLMNR für die Seite der Relay-Ziele sowie der Glossareintrag NTLM-Relay als Hintergrund dazu, warum eine erzwungene Authentifizierung so wertvoll ist.

Häufige Fragen

Reicht Patchen aus, um PetitPotam und ähnliche Coercion zu stoppen?

Nein. Die Updates von Microsoft haben die nicht authentifizierten EFSRPC-Pfade geschlossen, doch die meisten Coercion-Methoden funktionieren weiterhin für jeden authentifizierten Domänenbenutzer, und Microsoft betrachtet das als beabsichtigtes Verhalten. Patchen ist Voraussetzung, nicht die Lösung. Sie brauchen RPC-Filter oder deaktivierte Dienste, um den Auslöser zu entfernen, plus Signierung, Channel Binding und EPA auf den Relay-Zielen, damit eine erzwungene Authentifizierung nirgends Schaden anrichten kann.

Kann ich den DFS-Namespacedienst auf Domänencontrollern deaktivieren, um DFSCoerce zu stoppen?

In den meisten Domänen nicht gefahrlos. Domänencontroller beantworten über den DFS-Namespacedienst Verweise für SYSVOL und NETLOGON sowie für domänenbasierte Namespaces; ihn zu stoppen, legt Gruppenrichtlinien und Anmeldeskripte lahm. Fügen Sie stattdessen einen RPC-Filter für die Verwaltungsschnittstelle MS-DFSNM hinzu, der nur Ihre Tier-0-Administratoren zulässt, und testen Sie anschließend die Namespace-Verwaltung von einer PAW aus.

Überstehen RPC-Filter Neustarts, und wie verteile ich sie in großem Umfang?

Ja. Mit netsh rpc filter angelegte Filter sind persistente Objekte der Windows Filtering Platform und überstehen Neustarts. Es gibt keinen eigenen Gruppenrichtlinienknoten dafür; verteilen Sie sie daher per Startskript, Konfigurationsmanagement-Tool oder DSC, das netsh -f mit einer versionierten Filterdatei ausführt, und prüfen Sie das Ergebnis auf jedem DC mit netsh rpc filter show filter.

Authentication Coercion auf Domänencontrollern blockieren

Verwandte Leitfäden

NTLM & Legacy-Protokolle

LDAP-Signierung und Channel Binding auf DCs erzwingen

LDAP-Signierung und Channel Binding faktenbasiert einführen: Ereignisse 2887, 2889 und 3039 sammeln, Clients anpassen und LdapEnforceChannelBinding sicher setzen.

Fortgeschritten