Was ein DCShadow-Angriff ist und wie man sich dagegen verteidigt
Sep 28, 2022
DCShadow ist ein Angriff in einem späten Stadium der Angriffskette, der es einem Gegner mit kompromittierten privilegierten Anmeldeinformationen ermöglicht, einen bösartigen Active Directory Domaincontroller (DC) zu registrieren und schädliche Änderungen zu replizieren, wie zum Beispiel Modifikationen, die ihnen helfen, Persistenz zu etablieren. Genauer gesagt ist DCShadow ein Befehl im lsadump-Modul des Open-Source-Hacking-Tools Mimikatz. Eingeführt Anfang 2018, nutzt es spezifische Anweisungen im Microsoft Directory Replication Service Remote (MS-DRSR) Protokoll.
Ausgewählte verwandte Inhalte:
DCShadow-Angriffe sind schwer zu verhindern. Wie bei DCSync, wird keine Schwachstelle ausgenutzt, die gepatcht werden könnte; es werden gültige und notwendige Funktionen des Replikationsprozesses ausgenutzt, die nicht abgeschaltet oder deaktiviert werden können. DCShadow-Angriffe sind auch schwer zu erkennen, da die Änderungen, die der Angreifer anfordert, als legitime Domänenreplikation registriert, verarbeitet und übernommen werden.
Überblick über einen DCShadow-Angriff
Hier ist ein Überblick über die Schritte eines DCShadow-Angriffs:
- Ein Angreifer erhält beispielsweise Domain Admin- oder Enterprise Admin-Berechtigungen, indem er ein schlecht gesichertes gruppenverwaltetes Dienstkonto kompromittiert.
- The attacker uses DCShadow to register a computer object (such as a workstation) as a domain controller by making changes to the AD configuration schema and the workstation’s SPN. Now, AD thinks the workstation is a DC so it’s trusted to replicate changes.
- Der Angreifer reicht Änderungen zur Replikation ein, wie zum Beispiel Änderungen an Passwortdaten, Kontodetails oder Mitgliedschaften in Sicherheitsgruppen. Sobald die Replikation ausgelöst wird, werden die Änderungen von den anderen DCs veröffentlicht und übernommen.
- Der Angreifer verwendet DCShadow, um den Schurken-Domain-Controller aus der AD database zu entfernen und seine Aktivitäten zu verschleiern.
Ein einfaches Beispiel: Replizieren einer geringfügigen Änderung mit DCShadow
Gehen wir davon aus, Sie sind ein Angreifer, der einen Schatten-DC mit DCShadow registriert hat. Hier sind die Schritte, die Sie unternehmen könnten, um eine einfache Änderung auf allen DCs in der Domäne zu replizieren.
Schritt 1. Wechseln Sie zur Verwendung des SYSTEM-Kontos.
Der Prozess, der die zu replizierende Änderung erstellt, muss als SYSTEM-Konto ausgeführt werden, anstatt als Domänenbenutzerkonto, da nur Änderungen von registrierten DCs repliziert werden. Wenn Sie dies nicht tun, könnte dieser Fehlercode angezeigt werden:
ERROR kuhl_m_lsadump_dcshadow_force_sync_partition ; IDL_DRSReplicaAdd DC=JEFFLAB,DC=local 0x80090322 (2148074274)
Eine Möglichkeit, einen Prozess als SYSTEM in Mimikatz zu verwenden, ist die Nutzung von PSExec:
PsExec.exe –i –s cmd.exe
Um zu bestätigen, dass Sie jetzt unter SYSTEM laufen, verwenden Sie den Befehl whoami .
Verwenden Sie dann token::elevate, um sicherzustellen, dass alle Threads als SYSTEM ausgeführt werden.
Schritt 2. Führen Sie eine gewünschte Änderung durch.
Nun können Sie eine Änderung vornehmen. Für dieses einfache Beispiel ändern wir die Beschreibung des Administrator-Kontos:
lsadump::dcshadow /object:CN=Administrator,CN=Users,DC=JEFFLAB,DC=local /attribute:description /value:”DCShadow was here!”
Schritt 3. Replikation auslösen.
Um die Replikation auszulösen, öffnen Sie ein weiteres Fenster und führen Sie den folgenden Befehl als kompromittiertes Domain Admin-Konto aus (nicht als SYSTEM):
lsadump::dcshadow /push
Das ursprüngliche Fenster zeigt die resultierenden Ereignisse:
Schritt 4. Bestätigen Sie die Änderung.
Gehen Sie zum Domain-Controller und überprüfen Sie das Beschreibungsfeld:
Ein realer Angriff: Einsatz von DCShadow zur Erreichung von Persistenz
Jetzt sehen wir uns an, wie ein Angreifer DCShadow in einem realen Angriff verwenden würde. Um DCShadow auszuführen, müssen sie bereits über Domain Admin- oder Enterprise Admin-Rechte verfügen, also warum sollten sie DCShadow nutzen?
One reason is that they may not want to use a Domain Admin account for data exfiltration, since those accounts are often closely monitored and trigger alarms more easily. Another reason is to obtain administrative rights in other forests.
Aber einer der häufigsten Gründe ist die Schaffung von Persistenz — damit sie selbst dann, wenn sie den Zugang zum kompromittierten Admin-Konto verlieren, weiterhin einen Fuß im Domain behalten. Lassen Sie uns einen Weg durchgehen, wie wir DCShadow nutzen könnten, um Persistenz zu erreichen.
Der grundlegende Arbeitsablauf ist wie folgt:
- Überprüfen Sie das AdminSDHolder-Objekt, das Vorlagenberechtigungen für die geschützten Konten und Gruppen in der Domäne bereitstellt.
- Fügen Sie ein neues Konto mit Vollzugriff-Berechtigungen zu AdminSDHolder hinzu.
- Replizieren Sie die Änderung mit DCShadow.
Schritt 1. Überprüfen Sie das AdminSDHolder-Objekt.
Um das AdminSDHolder-Objekt zu überprüfen, verwenden wir einige grundlegende PowerShell-Befehle:
$AdminSDHolder = [adsi]'LDAP://CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local'
$SDDL = $AdminSDHolder.ObjectSecurity.Sddl
Wir können den Befehl ConvertFrom-SDDLString verwenden, um das Ergebnis in ein besser lesbares Format zu konvertieren:
Schritt 2. Fügen Sie ein Konto zum AdminSDHolder-Container hinzu.
Um Persistenz zu schaffen, müssen wir ein Konto zu AdminSDHolder hinzufügen, indem wir seine SID verwenden. Alles, was wir wissen müssen, ist der eindeutige Name des Objekts, und der folgende Befehl wird seine SID in der Variablen $UserSid: speichern
$UserToAdd = [adsi]'LDAP://CN=Bob Loblaw,OU=Business,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local'
$UserSid = New-Object System.Security.Principal.SecurityIdentifier($UserToAdd.objectSid[0], 0)
Nun können wir diese Variable verwenden, um das Konto zu AdminSDHolder hinzuzufügen und ihm Vollzugriffsberechtigungen zu erteilen. Wir werden den folgenden PowerShell-Befehl verwenden:
$NewSDDL = $SDDL + "(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;" + $UserSid.Value + ")"
Wenn wir noch einmal einen Blick auf AdminSDHolder werfen, sehen wir nun den Benutzer als letzten Eintrag:
Schritt 3. Replizieren Sie die Änderung mit DCShadow.
Jetzt, da wir die neuen Berechtigungen in Form eines Attributwerts haben, ist es einfach, sie mit DCShadow anzuwenden. Als SYSTEM ausgeführt, können wir den folgenden Befehl verwenden, um die gewünschte Änderung vorzunehmen:
mimikatz.exe "lsadump::dcshadow /object:CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local /attribute:ntsecuritydescriptor /value:[output from the previous command]”
Hier können Sie sehen, dass die Änderung zur Replikation bereit ist:
Dann verwenden wir den Befehl lsadump::dcshadow/push um die Replikation auszulösen. Hier können Sie das aktualisierte AdminSDHolder-Objekt mit unserem hinzugefügten Benutzer sehen; bald wird dies auf jeder geschützten Gruppe in der Domäne sein.
Verhinderung von DCShadow-Angriffen
Dies ist nur eine Methode, wie DCShadow verwendet werden kann, um Persistenz zu etablieren oder anderweitig die Active Directory security zu untergraben. Es ist schwierig, diese Angriffe zu verhindern, da sie native Funktionen von Active Directory nutzen und nicht Schwachstellen, die durch Patchen behoben werden können.
Der primäre Schlüssel zur Verteidigung liegt in der Tatsache, dass ein Angreifer Domain Admin- oder Enterprise Admin-Rechte haben muss, um den DCShadow-Angriff durchzuführen. Daher ist die effektivste Strategie, diesen Angriff zu blockieren, zu verhindern, dass jemand unbefugten Zugang zu diesen mächtigen Sicherheitsgruppen erhält.
Erkennung von DCShadow-Angriffen
Ein wesentlicher Vorteil der Verwendung von DCShadow besteht darin, dass ein Angreifer Änderungen vornehmen kann, die nicht in den Ereignisprotokollen aufgezeichnet werden – da die Änderungen über die Replikation erfolgen, gelten sie als legitim. Dennoch können Sie Anzeichen eines Angriffs in den Ereignisprotokollen erkennen. Hier sind die Schlüsselereignisse, auf die Sie achten sollten.
Änderungen an Computer-SPNs
Damit DCShadow funktioniert, müssen zwei bestimmte Service Principal Name (SPN)-Werte dem Computer hinzugefügt werden, der den Domain-Controller imitieren wird (der Computer, von dem aus der Angreifer DCShadow ausführt). Dies kann jeder mit der Domäne verbundene Computer sein.
Diese beiden SPNS sind:
- Global Catalog server SPN — Dieses hat das Format GC/<DNS-Hostname>/<DNS-Forestname>.
- Directory Replication Service (DRS) SPN — Dies hat das Format <DRS-Schnittstellen-GUID>/<DSA-GUID>/<DNS-Domainname>, wobei <DRS-Schnittstellen-GUID> immer E3514235–4B06–11D1-AB04–00C04FC2DCD2 ist.
Wir können Anzeichen von DCShadow-Angriffen erkennen, indem wir nach dem Hinzufügen dieser SPNs zu einem Computer suchen, der kein Domänencontroller ist, gefolgt von der Entfernung dieser SPNs. (Beachten Sie, dass in unserem Labor DCShadow nur den SPN des Global Catalog-Servers entfernt; der DRS SPN bleibt erhalten.)
Wir können die Ereignis-ID 4742 verwenden, um diese Änderungen zu überwachen. Dieses Ereignis zeigt, welcher Benutzer die Änderung initiiert hat, sodass Sie wissen, welches Domain-Admin-Konto verwendet wird, um den Angriff durchzuführen.
Erstellung und Löschung eines DC
Ein weiterer Schritt im DCShadow-Angriff besteht darin, einen DC im Sites-Container des Configuration-Namespace zu erstellen. Dies geschieht durch das Erstellen eines Servers und NTDS-Einstellungen für diesen Server. Sie können diese Objekte für unseren legitimen Domain-Controller unten sehen:
DCShadow wird einen DC und dessen Einstellungen erstellen und dann, sobald die Änderung repliziert ist, die Einträge sofort löschen, um seine Spuren zu verwischen. Dies hinterlässt eine merkwürdige Abfolge von Ereignissen, bei der ein neuer DC hinzugefügt und dann entfernt wurde.
Die Hinzufügung kann mit der Ereignis-ID 5137 verfolgt werden, die den Namen des nicht autorisierten DC, seine GUID und Objektklasse sowie das Konto, das für die Erstellung verantwortlich ist, enthält:
Ereignis-ID 5141 zeigt dieselben Informationen für die Löschung des DC:
Ungewöhnliches Replication Event
Es ist auch möglich, DCShadow-Angriffe zu erkennen, indem man die Replikation überwacht. Allerdings können die ausgelösten Replikationsereignisse schwer von echten Replikationsereignissen zu unterscheiden sein.
Dennoch kann die Ereignis-ID 4929 ein nützlicher Hinweis sein, da sie darauf hinweist, dass ein Quellbenennungskontext entfernt wurde und auf den Schurken-DC als Quelle verweisen wird. Das Auftreten dieses Ereignisses für einen Computer, der kein anerkannter Domänencontroller ist, sollte ein Warnsignal sein.
Replikationsfehler
Zusätzlich deuten die Ereignisse 4935 & 4936 auf einen Replikationsfehler hin, den Sie oft mit DCShadow in Verbindung bringen können.
Wie Netwrix helfen kann
Netwrix StealthDEFEND ist eine erstklassige Lösung zum Erkennen und Reagieren auf DCShadow-Angriffe:
Detection
Netwrix StealthDEFEND bietet integrierte DCShadow-Bedrohungserkennung. Es überwacht alle Domänenreplikations- und Änderungsereignisse in Echtzeit auf Verhaltensweisen, die auf DCShadow-Angriffe hinweisen. Insbesondere beobachtet es das Hinzufügen und Löschen von DCs und überwacht den Replikationsverkehr.
Unten finden Sie ein Beispiel, in dem Netwrix StealthDEFEND die Hinzufügung eines neuen Domain-Controllers erkannt hat:
Die Hinzufügung eines DC ist verdächtig genug, aber der Bericht hebt auch hervor, dass die Maschine Windows 10 ausführt, welches die Rolle des Domain-Controllers nicht unterstützt. Indem wir die Ereignisdetails erweitern, können wir die spezifischen Änderungen sehen, die als Teil des DCShadow-Angriffs gemacht wurden:
Antwort
Obwohl die schnelle Erkennung von DCShadow-Angriffen entscheidend ist, reicht sie nicht aus, besonders da dies bedeutet, dass ein Gegner ein hochprivilegiertes Konto kompromittiert hat. Aber einfach dieses Konto zu deaktivieren, könnte unzureichend sein, denn bis Sie einen DCShadow-Angriff bemerken, hat der Gegner wahrscheinlich bereits eine Vielzahl anderer Netzwerkressourcen und Optionen zur Verfügung und nutzt diese.
Netwrix StealthDEFEND bietet eine Vielzahl automatisierter Reaktionsmöglichkeiten, die es Ihnen ermöglichen, effektiv ein Handbuch für jede erwartete Bedrohung oder Schwachstelle zu erstellen. Im Falle eines DCShadow-Angriffs sollte das Handbuch die folgenden Schritte umfassen:
- Informieren Sie die richtigen Personen in der Organisation, dass ein Angriff stattgefunden hat, und stellen Sie ihnen die Informationen zur Verfügung, die sie benötigen, um effektiv zu reagieren. Netwrix StealthDEFEND liefert alle kritischen Details des Angriffs, einschließlich des Täters, der Quelle und des Ziels. Darüber hinaus erleichtert es die schnelle Kommunikation durch einfache Integration mit Slack, Microsoft Teams, ServiceNow und anderen Systemen mittels PowerShell oder Webhook-Einrichtungen.
- Blockieren Sie das fehlerhafte Konto oder die Workstation, um weitere Replikationen, Authentifizierungen oder andere Aktionen auszuführen:
FAQs
Was ist DCShadow?
DCShadow ist ein Befehl im Werkzeug Mimikatz, der es einem Angreifer ermöglicht, einen Schurken-Domaincontroller zu registrieren und bösartige Änderungen im gesamten Domain zu replizieren.
Wie funktioniert ein DCShadow-Angriff?
Ein Angreifer registriert seinen Computer als Domain-Controller, indem er Änderungen am AD-Konfigurationsschema und dem SPN-Wert der Workstation vornimmt. Dann kann er Änderungen replizieren, einschließlich Änderungen, um seine Persistenz im Domain sicherzustellen.
Wie können DCShadow-Angriffe erkannt werden?
Der beste Weg, um DCShadow-Angriffe zu erkennen, ist die Verwendung einer automatisierten Lösung, die kontinuierlich auf verdächtige Hinzufügungen von Domänencontrollern achtet und den Replikationsverkehr auf ungewöhnliche Aktivitäten überwacht.
Was ist die beste Art, auf einen DCShadow-Angriff zu reagieren?
Wenn ein DCShadow-Angriff erkannt wird, ist Zeit äußerst wichtig. Deshalb ist es am besten, einen automatisierten Workflow zu haben, der das Ereignis sofort dem Sicherheitsteam meldet und das Konto daran hindert, weitere Änderungen im Domain vorzunehmen.
Teilen auf
Erfahren Sie mehr
Über den Autor
Jeff Warren
Chief Product Officer
Jeff Warren überwacht das Netwrix Produktportfolio und bringt über ein Jahrzehnt Erfahrung im sicherheitsorientierten Produktmanagement und der Entwicklung mit. Bevor er zu Netwrix kam, leitete Jeff die Produktorganisation bei Stealthbits Technologies, wo er seine Erfahrung als Software-Ingenieur nutzte, um innovative, unternehmensweite Sicherheitslösungen zu entwickeln. Mit einem praktischen Ansatz und einem Talent für die Lösung schwieriger Sicherheitsherausforderungen konzentriert sich Jeff darauf, praktikable Lösungen zu schaffen, die funktionieren. Er hat einen BS in Informationssystemen von der University of Delaware.
Erfahren Sie mehr zu diesem Thema
Datenschutzgesetze der Bundesstaaten: Unterschiedliche Ansätze zum Datenschutz
Beispiel für Risikoanalyse: Wie man Risiken bewertet
Das CIA-Dreieck und seine Anwendung in der realen Welt
Was ist elektronisches Records Management?
Quantitative Risikoanalyse: Jährliche Verlust Erwartung