Wslink: Einzigartiger und undokumentierter bösartiger Loader, jener wie Server läuft
[ad_1]
Es gibt keine Kennung-, Funktions- oder Betriebsähnlichkeiten, die darauf hindeuten, dass es sich um ein Tool eines bekannten Bedrohungsakteurs handelt
ESET-Forscher nach sich ziehen zusammensetzen einzigartigen und bisher unbeschriebenen Loader für jedes Windows-Binärdateien entdeckt, jener im Unterschied zu anderen solchen Loadern wie Server läuft und empfangene Module im Speicher ausführt. Wir nach sich ziehen selbige neue Schadsoftware Wslink nachher einer ihrer DLLs so genannt.
Wir nach sich ziehen in den letzten zwei Jahren nur wenige Treffer in unserer Telemetrie gesehen, mit Erkennungen in Mitteleuropa, Nordamerika und im Nahen Osten. Welcher anfängliche Kompromissvektor ist nicht veröffentlicht; die meisten Beispiele sind mit MPRESS gepackt und wenige Teile des Codes sind virtualisiert. Leider konnten wir bisher keines jener Module erhalten, die es erhalten soll. Es gibt keine Kennung-, Funktions- oder Betriebsähnlichkeiten, die darauf hindeuten, dass es sich wahrscheinlich um ein Werkzeug einer bekannten Bedrohungsakteurgruppe handelt.
Die folgenden Abschnitte enthalten eine Betrachtung des Loaders und unsrige eigene Implementierung seines Clients, die ursprünglich zum Experimentieren mit Erkennungsmethoden entwickelt wurde. Welcher Quellcode dieses Clients könnte für jedes Neuling in jener Schadsoftware-Betrachtung interessant sein – er zeigt, wie man vorhandene Funktionen von zuvor analysierter Schadsoftware wiederverwenden und mit ihnen interagieren kann. Die Betrachtung selbst könnte untergeordnet wie informative Ressource wirken, die selbige Gefahr für jedes blaue Teamer dokumentiert.
Technische Betrachtung
Wslink wird wie Tätigkeit umgesetzt und lauscht hinauf allen Netzwerkschnittstellen hinauf dem in jener angegebenen Port Tafelgeschirr-Port Registrierungswert des Dienstes Variable Schlüssel. Die vorhergehende Komponente, die den Wslink-Tätigkeit registriert, ist nicht veröffentlicht. Kurvenblatt 1 zeigt den Kennung, jener eingehende Verbindungen zu diesem Port akzeptiert.
Aufwärts die Vermutung einer Vernetzung folgt ein RSA-Handshake mit einem hartcodierten öffentlichen 2048-Bit-Schlüssel, um sowohl den Schlüssel wie untergeordnet den für jedes 256-Bit-AES im CBC-Modus zu verwendenden IV sicher auszutauschen (siehe Kurvenblatt 2). Dasjenige verschlüsselte Modul wird anschließend mit einer eindeutigen Kennung – Signatur – und einem zusätzlichen Schlüssel zu seiner Entschlüsselung empfangen.
Interessanterweise wird dies zuletzt empfangene verschlüsselte Modul mit seiner Signatur multinational gespeichert und steht damit allen Clients zur Verfügung. Aufwärts selbige Weise kann man Verkehrswesen sparen – nur den Schlüssel veräußern, wenn die Signatur des zu ladenden Moduls mit jener vorherigen übereinstimmt.
Wie in Kurvenblatt 3 zu sehen ist, wird dies entschlüsselte Modul, im Zusammenhang dem es sich um eine normale PE-File handelt, mithilfe jener MemoryModule-Bibliothek in den Speicher geladen und schließlich jener erste Export umgesetzt. Die Funktionen für jedes Kommunikation, Socket, Key und IV werden dem Export in einem Variable geben, so dass dies Modul droben die schon aufgebaute Vernetzung Nachrichtensendung kommutieren kann.
Implementierung des Kunden
Unsrige eigene Implementierung eines Wslink-Clients, wie unten beschrieben, baut wie am Schnürchen eine Vernetzung zu einem modifizierten Wslink-Server hinauf und sendet ein Modul, dies dann entschlüsselt und umgesetzt wird. Da unser Client den privaten Schlüssel, jener dem öffentlichen Schlüssel in einer bestimmten Wslink-Serverinstanz entspricht, nicht Kontakt haben kann, nach sich ziehen wir unser eigenes Schlüsselpaar erstellt und die ausführbare Serverdatei mit dem öffentlichen Schlüssel dieses Paares modifiziert und den privaten Schlüssel in unserer Wslink-Client-Implementierung verwendet.
Dieser Client ermöglichte es uns, die Kommunikation von Wslink zu reproduzieren und nachher einzigartigen Mustern zu suchen; es bestätigte unsrige Ergebnisse zusätzlich, weil wir sein Verhalten nachahmen konnten.
Manche Funktionen zum Senden/Empfangen von Nachrichtensendung werden zunächst aus dem Originalmuster übernommen (siehe Kurvenblatt 4) – wir können sie sofort nutzen und sollen sie später nicht neu implementieren.
Anschließend liest unser Client den zu verwendenden privaten RSA-Schlüssel aus einer File und eine Vernetzung zur angegebenen IP und Port wird aufgebaut. Es wird erwartet, dass eine Instanz von Wslink schon hinauf jener angegebenen Anschrift und dem Port lauscht. Natürlich muss untergeordnet sein eingebetteter öffentlicher Schlüssel durch zusammensetzen ersetzt werden, dessen privater Schlüssel veröffentlicht ist.
Unser Client und jener Wslink-Server kutschieren mit dem Handshake fort, jener den Schlüssel und den für jedes die AES-Verschlüsselung zu verwendenden IV austauscht. Dies besteht aus drei Schritten, wie in Kurvenblatt 5 zu sehen: Senden eines Client-Hallo, Empfangen des symmetrischen Schlüssels mit IV und Zurücksenden, um die erfolgreiche Entschlüsselung zu nachsehen. Ende jener Umpolung jener Wslink-Binärdatei nach sich ziehen wir gelernt, dass die einzige Einschränkung jener Hallo-Nachricht, ausgenommen von jener Größe von 240 Bytes, darin besteht, dass dies zweite Byte Null sein muss, folglich setzen wir es wie am Schnürchen hinauf Nullen.
Welcher letzte Teil ist dies Senden des Moduls. Wie man in Kurvenblatt 6 sehen kann, besteht es aus ein paar einfachen Schritten:
- die Signatur des zuvor geladenen Moduls erhalten – wir nach sich ziehen uns kategorisch, in unserer Implementierung nichts damit zu tun, da es für jedes uns nicht wichtig war
- Senden einer hartcodierten Signatur des Moduls
- dies Modul aus einer File Vorlesung halten, verschlüsseln (siehe Kurvenblatt 7) und versenden
- Senden des Verschlüsselungsschlüssels des Moduls
Welcher vollständige Quellcode für jedes unseren Client ist in unserem WslinkClient GitHub-Repository verfügbar. Einplanen Sie, dass jener Kennung immer noch zusammensetzen erheblichen Arbeitsaufwand erfordert, um für jedes böswillige Zwecke verwendet werden zu können, und es wäre einfacher, zusammensetzen anderen Lader von Grund hinauf neu zu erstellen.
Zweck
Wslink ist ein einfacher, im Unterschied dazu bemerkenswerter Loader, jener im Unterschied zu denen, die wir normalerweise sehen, wie Server läuft und empfangene Module im Speicher ausführt.
Interessanterweise verwenden die Module die Funktionen des Laders für jedes Kommunikation, Tasten und Buchsen wieder; von dort sollen sie keine neuen ausgehenden Verbindungen initiieren. Wslink bietet zusätzlich ein gut entwickeltes kryptografisches Protokoll zum Schutzmechanismus jener ausgetauschten Fakten.
IoCs
Proben
SHA-1 | ESET-Erkennungsname |
---|---|
01257C3669179F754489F92947FBE0B57AEAE573 | Win64/TrojanDownloader.Wslink |
E6F36C66729A151F4F60F54012F242736BA24862 | |
39C4DE564352D7B6390BFD50B28AA9461C93FB32 |
MITRE ATT&CK-Techniken
Welche Tabelle wurde erstellt mit Version 9 des ATT&CK-Frameworks.
Taktik | ICH WÜRDE | Name | Darstellung |
---|---|---|---|
Unternehmen | T1587.001 | Entwicklungsfähigkeiten: Schadsoftware | Wslink ist ein benutzerdefinierter PE-Loader. |
Version | T1129 | Verbinden genutzte Module | Wslink lädt DLLs im RAM und führt sie aus. |
T1569.002 | Systemdienste: Dienstausführung | Wslink wird wie Tätigkeit umgesetzt. | |
Verschleierte Dateien oder Informationen | T1027.002 | Verschleierte Dateien oder Informationen: Softwarepakete | Wslink ist mit MPRESS gepackt und sein Kennung könnte virtualisiert werden. |
Steuerung und Leistungsnachweis | T1573.001 | Verschlüsselter Wasserweg: Symmetrische Kryptographie | Wslink verschlüsselt den Datenverkehr mit AES. |
T1573.002 | Verschlüsselter Wasserweg: Asymmetrische Kryptographie | Wslink tauscht zusammensetzen symmetrischen Schlüssel mit RSA aus. |