Der von Expel untersuchte Vorfall begann mit einer Phishing-Mail. Statt auf billige Tricks wie Typosquatting zu setzen, registrierten die Angreifer einen eigenen Microsoft-365-Mandanten und schrieben das Opfer von einer Adresse mit Microsofts Standarddomänenstruktur onmicrosoft.com an. Der Absender gab sich als IT-Service-Desk des Unternehmens aus und bat um Installation eines angeblichen PowerShell-Wartungswerkzeugs. Auch beim Hosting nutzten die Täter Microsofts Markennamen: Der schädliche Installer lag auf einer offiziellen Azure-Storage-Seite.

Der Installer bringt ein ganzes Bündel mit: ein PowerShell-Skript, das seine Anweisungen im flüchtigen Speicher ausführt, eine minimalistische Python-Umgebung, ein schädliches Python-Skript, das sich bei den Command-and-Control-Domains der Angreifer meldet, sowie ein Dutzend gefälschter Microsoft-Runtime-DLLs.

Die Sprachwahl ist Kalkül. „Historisch wurde nicht viel Malware in Python geschrieben, das reduziert eines der Signale für EDR-Systeme, das bei einer anderen Sprache Verdacht erregen würde", erklärt Hutchins. Viele der gewünschten Funktionen seien in Python allerdings nicht umsetzbar, weil es keine native Windows-Programmiersprache ist. Deshalb würden über in C geschriebene Komponenten native DLLs eingebunden — eine Brücke, die schädliches Verhalten innerhalb eines Python-Prozesses ermöglicht.

Anzeige

Gerade darin liegt aber auch ein Erkennungsmerkmal: Nutzer installierten Python-Umgebungen üblicherweise an festen Orten oder im Unterverzeichnis eines Projekts, so Hutchins. SynkLoader lege dagegen eine beliebige Python-Umgebung in einem beliebigen Ordner unter App Data ab. Eine deplatzierte Python-Programmdatei sei „ein recht starkes Signal".

Das erste der DLL-Module ist ein Systemprofiler. Er sammelt laufende Prozesse und Dienste, die Rechte des lokalen Benutzers, den Namen der Active-Directory-Domäne und die Zahl der weiteren Rechner im AD-Netz. Letzteres hält Hutchins für verräterisch: Die Größe eines Opfernetzwerks zu messen interessiere typischerweise nur Erpressergruppen. Ein APT kenne die Zielorganisation bereits, während opportunistische Ransomware-Akteure erst nach dem Einbruch fragten, wie groß das Netz eigentlich sei.

Ein Persistenzmodul richtet eine wiederkehrende Windows-Aufgabe ein — allerdings nicht über den Aufgabenplaner auf der Kommandozeile, sondern direkt über die COM-Schnittstelle von Windows, mutmaßlich um EDR-Erkennung zu entgehen. Weitere Module arbeiten als Remote-Access-Trojaner, streamen den Desktop des Opfers samt Maus- und Tastatursteuerung oder errichten einen Reverse Proxy. Damit lässt sich Internetverkehr über die IP-Adresse des Opferrechners leiten und auf interne Dienste zugreifen, die sonst nur im lokalen Netz erreichbar sind.

Die größte Überraschung ist „PhishLocker". Ältere Schadprogramme sperrten Bildschirme mit einfachem JavaScript, indem sie den Browser in den Vollbildmodus zwangen und den Ausstieg ohne Zugangsdaten oder Zahlung verhinderten. „Das war eine der frühesten Formen von Ransomware, bei der die Seite Leute zahlen ließ, damit dieses JavaScript-Ärgernis verschwindet", sagt Hutchins. Ebenso ließen sich per HTML gefälschte Anwendungsoberflächen etwa des Outlook-Clients nachbauen, um Anwendungspasswörter abzufangen. Weil das Problem verbreitet war, entfernten Organisationen die zugrunde liegende Browserfunktion.

SynkLoader belebt die Technik über eine DLL wieder: eine aufwendige grafische Oberfläche, die den Windows-Sperrbildschirm nahezu ununterscheidbar nachbildet und den Nutzer erst nach Eingabe seines Windows-Kennworts wieder freigibt. Ob das Passwort korrekt ist, prüft die Malware bislang nicht. Wirksam sei die Methode dennoch, meint Hutchins: In SSO-basierten Netzen sei das Anmeldekennwort des Rechners dasselbe wie für alle Unternehmensressourcen — und damit ein starkes Mittel für Angreifer, die sich lateral bewegen wollen.