Nach Angaben von Ontinue lud dieser PowerShell-Befehl ein Archiv nach, das die Python-Laufzeitumgebung und eine 39 Megabyte große kompilierte Nutzlast namens „bootstrap-fat.pyc“ enthielt. Diese Datei fungiert als Loader für TWINLOOT. Ontinue beschreibt den Bedrohungsakteur als versiert in offensiven Methoden und in Microsofts Cloud-Architektur. Das Unternehmen stuft das Framework als das erste bekannte Werkzeug ein, das Microsoft-365-Dead-Drop-C2, den Missbrauch von Teams-TURN-Relays und den Transport über einen kopflosen Browser in einem einzigen Paket vereint.
TWINLOOT betreibt auf dem kompromittierten Rechner zwei parallele Kanäle. Der erste ist ein SharePoint-Dead-Drop, der sich an einem Azure-Mandanten des Angreifers authentifiziert und alle 15 Sekunden ein SharePoint-Laufwerk auf Befehle abfragt. Darüber kann der Operator Anweisungen zustellen, diese ausführen lassen und Daten zurück zum Server exfiltrieren.
Der zweite Kanal dient dem interaktiven Zugriff und der seitlichen Bewegung über einen Reverse-SOCKS5-Tunnel. Laut Ontinue läuft dieser entweder über eine direkte TLS-/WebSocket-Verbindung zum Server des Angreifers oder über das Teams-TURN-WebRTC-Relay. Der Operator erhält dabei auf dem eigenen System einen SOCKS5-Listener unter 127.0.0.1:1080 und kann Datenverkehr darüber in das interne Netzwerk des Opfers leiten. Für interne Ziele sieht es dann so aus, als baue der kompromittierte Host normale Verbindungen auf, etwa zu Port 445 für SMB, 3389 für RDP, 5985 für WinRM oder 1433 für MSSQL.
Für die seitliche Bewegung sammelt TWINLOOT Passwörter über gefälschte Sperrbildschirm-Abfragen ein. Diese Anzeige wird ausgelöst, wenn der Angreifer den Befehl „credz_waiting“ sendet. Die eingegebenen Passwörter werden laut Ontinue nicht gegen die Windows-Authentifizierung geprüft. Unabhängig von der Eingabe erscheint stets die Fehlermeldung, das Passwort sei falsch und solle erneut eingegeben werden. Das dürfte Nutzer dazu bringen, beim zweiten Versuch das korrekte Kennwort einzugeben. Jede erfasste Eingabe wird verschlüsselt und in das SharePoint-Laufwerk hochgeladen; anschließend missbrauchen die Angreifer diese Zugangsdaten über den SOCKS5-Tunnel für den Wechsel auf weitere Systeme per RDP oder WinRM.
Wie msaRAT steuert auch TWINLOOT den Browser des Opfers über das Chrome DevTools Protocol. Das Implantat startet Edge im kopflosen Modus, aktiviert die Debugging-Schnittstelle und verbindet sich darüber mit dem Browser. Danach wird eine Registerkarte zu „graph.microsoft[.]com“ geöffnet und die Drive API zur Interaktion mit dem SharePoint des Angreifers genutzt. Ontinue sieht darin eine bemerkenswerte Parallele zu msaRAT: Zwei unabhängige Akteure seien im selben Monat unabhängig auf die Idee gekommen, den eigenen Browser des Opfers als C2-Transport zu missbrauchen.
Für Persistenz nutzt TWINLOOT je nach Build-Konfiguration vier Methoden. Die vierte basiert auf dem Open-Source-Werkzeug Swarmer von Praetorian. Dieses Verfahren erstellt laut Ontinue einen obligatorischen Windows-Profil-Hive vollständig offline über RegLoadAppKeyW und Microsofts Offline-Registry-Bibliothek offreg.dll mit den Funktionen ORCreateKey, ORSetValue und ORSaveHive. Das Ergebnis wird nach %USERPROFILE%\NTUSER.MAN geschrieben. Wenn Windows ein Benutzerprofil lädt, prüft es NTUSER.MAN vor NTUSER.DAT; existiert die Datei, haben ihre Inhalte Vorrang. Ontinue spricht von dem ersten dokumentierten bösartigen Einsatz dieser Persistenzmethode in freier Wildbahn.
Darüber hinaus unterstützt TWINLOOT Aufklärung, Discovery, Bildschirmaufnahmen und einen Ausweichmechanismus im Stil von EtherHiding, um Laufzeitkonfigurationen zu beziehen, falls die Azure-Blob-Storage-Dead-Drop-Methode scheitert. Laut Ontinue ist die Ethereum-basierte Auflösung in dem untersuchten Build ungenutzt, was auf aktive Weiterentwicklung hindeute.
Zur Urheberschaft äußert sich Ontinue zurückhaltend, verweist aber auf operative Parallelen zu einem Cluster namens STAC4749, das Teams-Sprach-Phishing-Kampagnen zum Ausbringen von Chaos-Ransomware durchgeführt haben soll. Genannt werden Überschneidungen bei Teams-Vishing, einem mit PyArmor verschleierten Python-Backdoor, einem Reverse-SOCKS5-Proxy, HKCU-Run-Key-Persistenz und einer benachbarten Zeitlinie. Zugleich betont Ontinue deutliche Unterschiede in der Umsetzung: STAC4749 setze auf PyInstaller, Go-basierte Implantate, eigenständige SOCKS5-Werkzeuge und .top-Domains hinter Cloudflare, während TWINLOOT rohe .pyc-Ausführung, reines Python, einen integrierten SOCKS5-Multiplexer sowie SharePoint-Dead-Drop-C2 mit abgefangenen gealterten Domains nutze.
