ESC1 und ESC8 Angriffspfade: Von Social Engineering bis AD CS Missbrauch
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Bedrohungsakteure nutzten Social Engineering über Microsoft Teams, um IT-Helpdesk-Mitarbeiter zu imitieren und mit Quick Assist Remote-Zugriff herzustellen. Nach dem Zugriff missbrauchten sie falsch konfigurierte Active Directory-Zertifikatsdienste (AD CS) durch ESC1- und ESC8-Techniken, um Privilegien zu eskalieren und eine Authentifizierung auf Domain-Ebene zu erlangen. Die Einbrüche ermöglichten unbefugte Zertifikatseinschreibungen, DCSync-Aktivitäten und anschließende Datenexfiltration.
Untersuchung
Die Untersuchung rekonstruierte die Angriffskette von der anfänglichen Teams-Phishing-Interaktion bis zum späteren Zertifikatsmissbrauch. Analysten korrelierten Remote-Session-Telemetrie, verdächtige Laufzeitausführungen aus benutzerbeschreibbaren Verzeichnissen und AD CS-Ereignisse, einschließlich Zertifikatseinschreibungsanfragen und PKINIT-Aktivitäten. Diskrepanzen zwischen authentifizierten Identitäten und ursprünglichen Geräten boten wichtige Ansatzpunkte zur Identifizierung potenzieller NTLM-Relay-Angriffe.
Minderung
Organisationen sollten starke Verifizierungsverfahren für unaufgeforderte Support-Anfragen durchsetzen und den externen Zugriff in Microsoft Teams einschränken. Technische Minderungsmaßnahmen umfassen die Verwendung von App Control for Business zur Blockierung unbefugter Laufzeiten und die Härtung von AD CS durch Aktivierung des erweiterten Schutzes für die Authentifizierung (EPA) und HTTPS auf Einschreibungsendpunkten. Das Deaktivieren von NTLM auf Einschreibungsdiensten und das regelmäßige Auditieren von Zertifikatvorlagen sind ebenfalls entscheidend.
Reaktion
Wenn bösartige Aktivitäten erkannt werden, sollten die Responder sofort betroffene Workstations isolieren und kompromittierte Identitäten auf Ausschlussrisiken überprüfen. Unbefugte Zertifikate müssen widerrufen und aktualisierte Widerrufsinformationen veröffentlicht werden. Aktive Kerberos-Tickets sollten separat bewertet werden, da der Zertifikatswiderruf bestehende TGTs nicht ungültig macht. Manuelle Eindämmung sollte auch für Konten zugewiesen werden, die von automatisierten Störungen ausgeschlossen sind.
Angriffsablauf
Erkennungen
Mögliche Systemnetzwerkkonfigurations-Ermittlung (via cmdline)
Java-Binärdatei von ungewöhnlichem Standort ausgeführt (via process_creation)
Alternative Fernzugriffs-/Verwaltungssoftware (via process_creation)
Zertifikatanforderungsevents für Domänencontroller [ADCS] (via Audit)
Zertifikatanforderungsevents [ADCS] (via Audit)
Falsch konfigurierte ADCS-Vorlagenverwendung [ESC1/SAN] (via Audit)
Mögliche erzwungene Angriffe (via Audit)
Versuchte verdächtige Zertifikatsbezogene Aktionen (via Audit)
Mögliche PetitPotam/ADCS-ESC8-Angriffsausnutzung [MS-EFSRPC/ADCS-PKI] (via Audit)
Möglicher DCSync-Angriff (via Audit)
Möglicher unbefugter Zugriff über Quick Assist (via Audit)
IOCs (HashSha256) zur Erkennung: Von Helpdesk-Imitation zur AD CS-Nutzung: Untersuchung von ESC1- und ESC8-Einbruchswegen
Missbrauch von Zertifikatvorlagen und NTLM-Authentifizierungs-Relay-Erkennung [Microsoft Windows Security Event Log]
Missbrauch der zertifikatsbasierten Authentifizierung mit LDAPS- und SMB-Verbindungen [Windows-Netzwerkverbindung]
Teams-Phishing und portable Laufzeitausführung für unbefugten Zugriff [Windows-Prozesserstellung]
Simulationsausführung
-
Angriffsablauf & Befehle: Der Angreifer startet eine Phishing-Kampagne über Microsoft Teams, indem er den IT-Support imitiert. Sie weisen das Opfer an, „Quick Assist“ zu öffnen. Sobald die Sitzung hergestellt ist, verwendet der Angreifer den Remote-Zugriff, um eine Portable
python.exein ein getarntes Verzeichnis:C:Users<User>AppDataRoamingKB. Schließlich, um eine seitliche Bewegung zu erleichtern, führt der Angreifersysteminfoandipconfigaus, um Aufklärungsdaten auf dem Host zu sammeln. -
Regressions-Testskript:
# Simulationsskript: Teams-Phishing & Portable Laufzeitausführung # 1. Einrichtung: Erstelle das 'bösartige' Verzeichnis in AppData $targetDir = "$env:APPDATAKB" if (!(Test-Path $targetDir)) { New-Item -Path $targetDir -ItemType Directory -Force } # 2. Simuliere die portable Laufzeit (Erstellen einer Dummy-Datei namens python.exe) # In einem echten Angriff wäre dies eine echte Binärdatei. $dummyPython = Join-Path $targetDir "python.exe" New-Item -Path $dummyPython -ItemType File -Force # 3. Simuliere den 'Teams'-Übergeordneten Prozess, der Quick Assist aufruft # Hinweis: Da wir den tatsächlichen Teams.exe-Prozessbaum nicht einfach in einem einzigen Skript # ohne fortgeschrittene Injektion fälschen können, simulieren wir die Telemetrie, indem wir die Befehlszeile # und das erwartete Verhalten in einer Weise nachahmen, die der Logik entspricht. Write-Host "[!] Simulation der Angriffssequenz..." # Löse die Erkennungslogik aus, indem die Prozesskette simuliert wird # Hinweis: Um die spezifische Sigma-Regel auszulösen, muss der Prozess 'python.exe' # als untergeordnet zu 'Teams.exe' im Telemetriestream gesehen werden. # Schritt A: Simuliere, dass Teams Quick Assist aufruft (Manuelle Simulation der Telemetrie) # In einer echten Testumgebung könnten Sie ein Tool wie 'ProcessHacker' oder 'Sysmon' # verwenden, um übergeordnete PIDs zu manipulieren, aber für dieses Skript führen wir die Reihenfolge aus. Start-Process "cmd.exe" -ArgumentList "/c echo Simuliere, dass Teams Quick Assist aufruft" # Schritt B: Führe die 'Portable Runtime' aus dem spezifischen Pfad aus Start-Process -FilePath $dummyPython -ArgumentList "--version" -ErrorAction SilentlyContinue # Schritt C: Führe Erkundungsbefehle aus Start-Process "cmd.exe" -ArgumentList "/c systeminfo" Start-Process "cmd.exe" -ArgumentList "/c ipconfig" Start-Process "cmd.exe" -ArgumentList "/c tasklist" Write-Host "[+] Simulation abgeschlossen. Überprüfen Sie SIEM auf Alarme." -
Aufräumbefehle:
# Aufräumen: Entferne das simulierte bösartige Verzeichnis und die Dateien $targetDir = "$env:APPDATAKB" if (Test-Path $targetDir) { Remove-Item -Path $targetDir -Recurse -Force Write-Host "[+] Aufräumen erfolgreich: $targetDir entfernt." } else { Write-Host "[-] Aufräumen fehlgeschlagen: Verzeichnis nicht gefunden." }