ADWS und der versteckte Weg zur Aufzählung von Active Directory
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Artikel beschreibt eine heimliche Methode zur Active Directory-Aufzählung über das Active Directory Web Services (ADWS) Protokoll über TCP-Port 9389. Indem Angreifer sich auf ADWS anstatt auf Standard-LDAP über die Ports 389 oder 636 verlassen, können sie viele gängige Netzwerkerkennungen und EDR-Alarme vermeiden. Dieser Ansatz missbraucht legitime Verwaltungsprotokolle und -werkzeuge, um Aufklärungsaktivitäten zu tarnen.
Untersuchung
Die Untersuchung untersucht die technischen Ebenen hinter ADWS, einschließlich .NET Message Framing, NegotiateStream und NBFSE binärer SOAP-Codierung. Es wird erklärt, wie diese Komponenten die Betriebssicherheit verbessern, indem sie den Netzwerkverkehr verschleiern und die Quelle von Abfragen schwerer identifizierbar machen. Der Autor stellt auch ein Proof-of-Concept-Tool namens ADWSHound vor, um die Technik zu demonstrieren und zu validieren.
Minderung
Empfohlene Gegenmaßnahmen umfassen die Überwachung des Traffics über TCP-Port 9389, das Aktivieren der Verzeichnisdienst-Diagnoseprotokollierung mit Ereignis 1644 und die Anwendung von Zugriffsüberwachung durch SACLs auf empfindlichen Verzeichnisobjekten. Organisationen sollten auch in Erwägung ziehen, Köder-Objekte einzusetzen, um unbefugte Aufzählung zu erkennen. Die Korrelation von Verzeichnisdienstereignissen anhand der Operations-ID kann weiter helfen, verdächtige Aufzählungsaktivitäten zu rekonstruieren.
Reaktion
Wenn dieses Verhalten entdeckt wird, sollten Ermittler die Herkunft der Verbindung zu Port 9389 untersuchen und jeden Prozess identifizieren, der keinen legitimen Grund hat, über ADWS zu kommunizieren. Das für die Verzeichnisabfragen verwendete Konto sollte dann mit aktiven Sitzungen in der gesamten Umgebung korreliert werden, um das kompromittierte System ausfindig zu machen. Ereignis 4662 sollte ebenfalls auf Anzeichen unbefugten Zugriffs auf geschützte Objekte überprüft werden.
Angriffsfluss
Erkennungen
Möglicher Missbrauch von Active Directory Web Services (ADWS) zur Entdeckung von Konten / Gruppen / Systemen (über network_connection)
Ansicht
LDAP-Abfragen über ADWS mit PowerShell AD-Modul erkennen [Microsoft Windows Security Event Log]
Ansicht
ADWS-Aufzählungserkennung über Netzwerkindikatoren [Windows Sysmon]
Ansicht
Simulationsausführung
Voraussetzung: Das Telemetrie- & Grundlagen-Pre-Flight-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennung erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung & Befehle: Ein Angreifer hat sich initial auf einem Arbeitsgerät Zugang verschafft und versucht, Domänenbenutzer aufzulisten, um sich seitwärts zu bewegen. Um die Erkennung durch grundlegende signaturbasierte Werkzeuge zu vermeiden, entscheidet sich der Angreifer für das offizielle Microsoft PowerShell Active Directory Modul. Sie führen
Get-ADUseraus, um eine Liste aller Benutzer in der Domäne abzurufen. Diese Aktion zwingt die Active Directory Web Services (ADWS) dazu, die LDAP-Anfrage zu verarbeiten, die aufgrund aktivierter Diagnoseprotokollierung ein Windows-Ereignis 1644 generiert, das die Zeichenfolge „Get-ADUser“ enthält und so unsere Erkennungsregel auslöst. -
Regressionstest-Skript:
# Sicherstellen, dass das Active Directory Modul verfügbar ist if (!(Get-Module -ListAvailable ActiveDirectory)) { Write-Error "Dieses Skript erfordert das RSAT Active Directory Modul." return } Write-Host "[+] Simulation startet: LDAP-Aufzählung via Get-ADUser" -ForegroundColor Cyan # Erkennung auslösen, indem ein einzelner Benutzer mit dem Muster Get-AD* abgefragt wird # Dies soll erwartet ein Ereignis-ID 1644 im Verzeichnisdienstprotokoll erzeugen try { Get-ADUser -Filter * -ResultSetSize 1 | Out-Null Write-Host "[+] Simulationsbefehl erfolgreich ausgeführt." -ForegroundColor Green Write-Host "[+] Verzeichnisdienstprotokolle auf Ereignis-ID 1644 mit 'Get-AD*' überprüfen" -ForegroundColor Yellow } catch { Write-Host "[-] Fehler beim Ausführen des Befehls: $($_.Exception.Message)" -ForegroundColor Red } -
Bereinigungsbefehle:
# Es wurden keine dauerhaften Änderungen an der AD-Datenbank vorgenommen. # Wenn die Diagnosepegel des Registers manuell erhöht wurden, zurücksetzen: # Set-ItemProperty -Path "HKLM:SystemCurrentControlSetServicesNTDSDiagnostics" -Name "16 LDAP Interface Contained" -Value 0 Write-Host "[+] Bereinigung abgeschlossen. Keine Statusänderungen rückgängig zu machen." -ForegroundColor Cyan