Zusammenfassung
XWorm ist ein relativ neues, vielseitiges Tool, das im Jahr 2022 entdeckt wurde. Es ermöglicht Angreifern, eine Vielzahl von Funktionen auszuführen, darunter den Zugriff auf vertrauliche Informationen, den Fernzugriff und die Bereitstellung zusätzlicher Malware. Die Vielschichtigkeit von XWorm ist für Bedrohungsakteure attraktiv, wie die angebliche Nutzung durch Bedrohungsakteure wie NullBulge und TA558 Anfang des Jahres zeigt.
Im Rahmen der Jagdbemühungen der Netskope Threat Labs haben wir die neueste Version von XWorm in freier Wildbahn entdeckt. In diesem Blogbeitrag werden wir die folgenden Punkte aufschlüsseln:
- Die Infektionskette, die zur Ausführung von XWorm führt.
- Umgehungsausführung des DLL-Loaders von XWorm durch reflektierendes Laden von Code.
- Die Injektion von XWorm in einen legitimen Prozess.
- Die neuen Funktionen von XWorm, zu denen das Entfernen von Plugins und ein Netzwerkbefehl gehören, der die Antwortzeit von XWorm meldet, zusammen mit anderen bemerkenswerten Befehlen.
- Benachrichtigung des Angreifers nach einer Infektion über Telegram.
Ablauf der XWorm-Ausführung
Im Folgenden finden Sie eine Zusammenfassung des Ausführungsablaufs von XWorm:
- Die Infektionskette beginnt mit dem Herunterladen und Ausführen eines PowerShell-Skripts durch das WSF, das auf paste.ee gehostet wird
- Das PowerShell-Skript führt die folgenden Aktionen aus:
A. Erstellt drei Skripte, nämlich VsLabs.vbs, VsEnhance.bat, und VsLabsData.ps1.
B. Erstellt eine geplante Aufgabe.
C. Sendet eine Telegram-Benachrichtigung an den Angreifer. - Die geplante Aufgabe führt das VBScript mit dem Namen VsLabs.vbs aus.
- VBScript führt eine Batchdatei mit dem Namen VsEnhance.bat aus.
- Die Batchdatei führt ein PowerShell-Skript mit dem Namen VsLabsData.ps1 aus.
- Das PowerShell-Skript lädt eine schädliche DLL durch das Laden von reflektierendem Code.
- Die bösartige DLL injiziert XWorm in einen legitimen Prozess und führt ihn aus.
XWorm-Dropper, der über die Windows-Skriptdatei (WSF) bereitgestellt wird
Die Infektionskette beginnt mit einer Windows-Skriptdatei (WSF), die wahrscheinlich durch Phishing übermittelt wird. Die WSF-Datei beginnt mit mehreren Absätzen über die Sozialversicherungsverwaltung durch eine Reihe von kommentierten Zeilen. Es endet jedoch mit einem VBScript, das ein PowerShell-Skript mithilfe von Wscript.Shell herunterlädt und ausführt. Um eine statische Erkennung zu vermeiden, ist der Befehl zum Herunterladen des PowerShell-Skripts hexadezimalcodiert und erfordert eine Zeichenfolgenverkettung.
Analyse von PowerShell-Skripten
VBScript lädt ein PowerShell-Skript herunter, das auf Paste.ee, einer legitimen Pastebin-Website, gespeichert ist. Die Verwendung legitimer Websites zum Speichern von bösartigem Code hilft Angreifern, unter dem Radar des Verteidigers zu fliegen. Um eine Erkennung über die Leitung zu vermeiden, führt das PowerShell-Skript die Verschleierung mehrerer Zeichenfolgen durch, einschließlich Escapezeichen und Zeichenfolgenverkettung. Das PowerShell-Skript erstellt einen Ordner mit dem Namen "Visuals" im Pfad: "C:\ProgramData\Music\Visuals". Anschließend werden PowerShell, Batch und VBScripts (VsLabsData.ps1, VsEnhance.bat, und VsLabs.vbs) und speichert es in dem erstellten Ordner.
Das VBScript mit dem Namen VsLabs.vbs startet die Ausführungskette, indem es eine Batchdatei mit dem Namen VsEnhance.bat mithilfe von WScript.Shell ausführt. Und der VsEnhance.bat führt das PowerShell-Skript mit dem Namen VsLabsData.ps1 aus.
VsLabsData.ps1
VsLabsData.ps1 führt die folgenden Aktionen aus:
- Definieren Sie zwei Nutzlasten als Hexadezimalzeichenfolgen mit der Variablen $cake für XWorm (XClient3.exe) und $oven für den DLL-Loader (NewPE2).
- Erstellen Sie eine geplante Aufgabe mit dem Namen "MicroSoftVisualsUpdater".
- Senden Sie eine Benachrichtigung per Telegramm an den Angreifer.
- Führen Sie das DLL-Ladeprogramm aus, das XWorm in einen legitimen Prozess einfügt.
Schauen wir uns genauer an, wie das PowerShell-Skript diese Schritte ausführt.
Persistenz
Die Persistenz von XWorm wird durch eine geplante Aufgabe mit dem Namen MicrosoftVisualUpdater erreicht. Diese Aufgabe wird eine Minute nach ihrer Erstellung ausgelöst und wird dann weiterhin alle 15 Minuten ausgelöst. Es ist so eingestellt, dass es das VBscript-VsEnhance.bat ausführt.
Telegramm-Benachrichtigung
Sobald das PowerShell-Skript VsLabsData.ps1 seine Routine abgeschlossen hat, sendet es eine Telegram-Nachricht an den Angreifer. Die Nachricht enthält die öffentliche IP-Adresse des Opfers mit einer Zuschreibung an "XYZCRYPTER" als Angreifer.
NewPE2 wird durch das Laden von Code ausgeführt und injiziert XWorm in einen legitimen Prozess
Im Gegensatz zu zuvor gemeldeten XWorm-Instanzen, bei denen die Nutzlast heruntergeladen wurde, speichert die analysierte Datei die tatsächlichen Nutzlasten innerhalb des PowerShell-Skripts mithilfe der Variablen $cake und $oven. Um eine statische Erkennung zu vermeiden, werden XWorm und NewPE2 als Hexadezimalzeichenfolgen definiert und durch einen Unterstrich getrennt. Sobald Unterstriche ersetzt wurden, wird der Loader mit reflektierendem Code-Laden ausgeführt.
Das Laden von reflektierendem Code beginnt mit dem Laden der Bytes im Arbeitsspeicher mithilfe der Load-Methode der Assembly-Klasse. Anschließend werden das Type-Objekt für die 'PE'-Klasse und die 'Execute'-Methode im 'NewPE'-Namespace aus der geladenen Assembly abgerufen.
Die "Execute"-Methode aus dem Loader wird verwendet, um XWorm in einen legitimen Prozess einzufügen (C:\Windows\Microsoft.Net\Framework\v4.0.30319\RegSvcs.exe). Wir können dieses Verhalten bei der Detonation beobachten. Wenn RegSvcs die "Execute"-Methode des Ladeprogramms durchläuft, können wir sehen, dass das XWorm in den Speicherplatz des legitimen Prozesses injiziert wird.
Sobald die Injektion abgeschlossen ist und XWorm den legitimen Prozess durchläuft, wird der PowerShell-Loader beendet, sodass nur der legitime Prozess mit einer Datei übrig bleibt, die von Microsoft digital signiert wurde.
XWorm-Analyse
XWorm ist eine .NET-kompilierte Binärdatei mit dem Namen XClient3.exe. Die Binärdatei wird bereits von DetectItEasy und von mehreren AV-Anbietern in Virustotal erkannt, was möglicherweise der Grund dafür ist, dass sie überhaupt nicht auf die Festplatte geschrieben wurde.
Die Anwendung beginnt mit der Entschlüsselung der XWorm-Konfiguration, einschließlich der C2-Domäne und des Ports, des Befehlstrennzeichens, des AES-Schlüssels und der XWorm-Version. Anhand der enthaltenen Einstellungen können wir bestätigen, dass es sich bei diesem XWorm um Version 5.6 handelt.
Diese Konfigurationen sind im Base64-Format und AES ECB-verschlüsselt. Um diese Einstellungen zu entschlüsseln, wird der MD5-Wert der Zeichenkette "rZ2W67345HrmrYRB" als Schlüssel verwendet. Wir müssen den MD5-Hash an seinen ursprünglichen Wert beim 15. Index anhängen.
XWorm-Konfiguration
Gastgeber | ziadonfire[.] Arbeit[.] GD (89.116.164.56) |
---|---|
Hafen | 7000 |
Schlüssel (AES-Verschlüsselungsschlüssel) | |
SPL (Trennzeichen) | |
Groub (Ausführung) | XWorm V5.6 |
USBNM | USB.exe |
C2-Anschluss über Steckdose
XWorm initiiert die Netzwerkverbindung mit dem C2-Server über den Socket. Der Socketkonstruktor zeigt, dass er über eine IP-Adresse über TCP eine Verbindung mit dem C2 herstellen würde. Es wird die IP-Adresse aus der C2-Domain verwendet. Es ist auch so eingestellt, dass es das Senden und Empfangen von Daten über Sockets mit etwa 50 KB verarbeitet. Um die Verbindung aufrechtzuerhalten, pingt XWorm alle 10 bis 15 Sekunden einen Ping an den C2-Server und überwacht jede Millisekunde eine Pong-Antwort.
Aufklärung
Nach der ersten Verbindung werden die Geräteinformationen des Opfers gesammelt und an den Angreifer gesendet. Dadurch erhält der Angreifer erste Informationen, bevor er bösartige Aktionen ausführt. Zu den gesammelten Informationen gehören Hostname, Benutzername, Treiber, CPU- und GPU-Details, wenn der Benutzer ein Administrator ist, wenn ein Antivirenprogramm installiert ist und eine ausführbare Datei mit dem Namen "USB.exe". Die Informationen sind an die Trennzeichenkette und die XWorm-Version gebunden.
Neue Befehle in v5.6
Einige Befehle sind in Version 5.6 im Vergleich zu früheren gemeldeten Versionen zu finden. Eine davon ist die Möglichkeit, gespeicherte Plugins zu entfernen. XWorm ist in der Lage, Plugins zu laden und zu speichern, die mehrere benutzerdefinierte Funktionen ausführen können. Der Befehl "RemovePlugins" gibt XWorm die Möglichkeit, in der Registrierung gespeicherte Plugin-Informationen zu bereinigen, falls sie Artefakte bereinigen möchten. Der Angreifer wird benachrichtigt, sobald Plugins entfernt werden.
In der Zwischenzeit scheint es sich bei dem "Pong"-Befehl um ein Netzwerktool für Angreifer zu handeln, das die Reaktionszeit von XWorm zurückmeldet. Die Variable "Interval" ist die Anzahl der Millisekunden, die XWorm eine Pong-Antwort von der "Ping"-Funktion des C2 erhält.
Änderung der Hosts-Datei
Ein weiterer bemerkenswerter Befehl von XWorm ist die Fähigkeit, die Hosts-Datei des Opfers zu lesen und zu ändern. Dies bietet dem Angreifer die Möglichkeit, DNS-bezogene Angriffe durchzuführen. Die Hosts-Datei in Windows ist eine Nur-Text-Datei, die zum manuellen Zuordnen von Hostnamen zu IP-Adressen verwendet wird. Es überschreibt die vom Netzwerk bereitgestellte DNS-Auflösung. Der Befehl "Hosts" ermöglicht es XWorm, eine Kopie der Hosts-Datei an den Angreifer zu senden. Der Befehl "Shosts" ermöglicht es dem Angreifer, seine eigene Hosts-Datei zu senden und die des Opfers zu überschreiben. Nach dem Überschreiben wird eine Nachricht an den Angreifer gesendet, die den Erfolg bestätigt.
Starten Sie einen DDoS-Angriff
Ein weiterer Befehl von XWorm besteht darin, einen Denial-of-Service-Angriff (DoS) auf ein Ziel zu starten. Wenn das Opfer einen "StartDDos"-Befehl erhält, bricht es zunächst alle laufenden Denial-of-Service-Aktivitäten ab und generiert dann einen neuen Thread, der alle 2,5 Sekunden eine POST-Anfrage über den Socket sendet. Der Angreifer gibt die IP-Adresse des Ziels, die Portnummer und die Dauer des Angriffs an.
Aufnahme von Screenshots
Eine weitere Funktion von XWorm besteht darin, einen Screenshot des Bildschirms des Opfers zu sammeln. Zuerst werden die Abmessungen des primären Bildschirms abgerufen und übergeben, um eine Bitmap zu erstellen. Anschließend wird der Bildschirminhalt mit CopyFromScreen erfasst, der mit MemoryStream im JPEG-Format im Speicher gespeichert und über den Socket an den Angreifer gesendet wird.
Format der Nachricht:
"#CAP",
<Xwormmm>
Daten des Opfers
<Xwormmm>
Base64 und komprimiertes Image
Eine Liste aller Befehle, die in XWorm zu finden sind, ist unten aufgeführt:
Befehl | Description |
---|---|
stinken | Sendet "pong" zusammen mit dem Wert des Ping-Intervalls |
Rec | Startet die Anwendung neu |
SCHLIEßEN | Schließt die Anwendung |
Deinstallieren | Löscht die ausführbare Datei, die auf mehreren Dateipfaden abgelegt wurde. |
aktualisieren | Startet die Anwendung mit neuen Prozessinformationen neu |
DW | Akzeptieren Sie den PowerShell-Befehl, schreiben Sie den Befehl in eine Datei im temporären Ordner und führen Sie ihn aus |
FM | Führt einen komprimierten und base64-basierten Befehl aus |
LN | Lädt eine Datei herunter und führt sie aus |
URLÖFFNEN | Sendet eine GET-Anforderung an eine URL, die von C2 gesendet wurde. |
URLHIDE | Sendet eine GET-Anfrage an eine URL, die von C2 gesendet wurde, aber vor dem Opfer verborgen ist |
PCShutdown | Den Computer des Opfers herunterfahren |
PCRestart | Starten Sie den Computer des Opfers neu |
PCLogoff | Meldet das Opfer vom Computer ab |
RunShell (RunShell) | Führt einen Hintergrundprozess aus |
DDos | Senden Sie eine Nachricht "DDos" an den C2 |
StartDDos | Stoppt zunächst alle DDoS-Aktivitäten. Sendet anschließend alle 2,5 Sekunden eine POST-Anforderung über einen Socket mit einem zufälligen Benutzeragenten pro Anforderung. |
StoppDDos | Stoppt alle DDoS-Aktivitäten der Anwendung |
StartBericht | Erhält eine Liste der Prozessnamen von C2. Es meldet zurück, welche Prozesse laufen. |
StopReport | Bricht das Senden des Berichts ab |
Xchat (Englisch) | Sendet die folgenden Daten an C2: Anzahl der Prozessoren Nutzername Gerätename OS Format der Nachricht: " |
Wirte | Lesen und senden Sie den Inhalt der Hosts-Datei. Format der Nachricht: "Gastgeber", (Xchat-Daten) Dateipfad des Hosts Host-Dateiinhalt |
Shosts | Ändert und speichert eine Datei (bei der es sich wahrscheinlich um die Hostdatei handelt) und sendet dann eine Nachricht, um zu bestätigen, dass die Änderung erfolgreich war. |
Plugin (Englisch) | Sammelt das Plugin von C2 |
savePlugin | Speichert Plugin-Informationen in der Registrierung |
Plugins entfernen | Löschen Sie die Plugin-Informationen in der Registrierung |
OfflineHolen | Dies sendet eine Fehlermeldung mit der Aufschrift "Offlinekeylogger nicht aktiviert" |
$cap | Nimmt einen Screenshot auf und sendet ihn an den Angreifer |
Schlussfolgerungen
XWorm ist ein facettenreiches Tool, das dem Angreifer eine breite Palette von Funktionen zur Verfügung stellen kann. In diesem Blogbeitrag haben wir aufgeschlüsselt, wie ein Angreifer XWorm ausliefern und heimlich ausführen kann, sowie welche Funktionen und Methoden es bietet. Die Ausführungskette, die XWorm-Konfiguration und IOCs können Verteidigern helfen, XWorm in ihrer Umgebung zu identifizieren und nach potenziellen Updates zu suchen. Netskope Threat Labs wird XWorm und andere Malware, die ähnliche Techniken anwenden, weiterhin überwachen.
Netskope-Erkennung
- Netskope Threat Protection
- Gen:Variant.Jalapeno.683
- Netskope Advanced Threat Protection bietet proaktiven Schutz gegen diese Bedrohung.
- Gen.Detect.By.NSCloudSandbox.tr
- ByteCode-MSIL.Hintertür.XWorm
IOCs
Alle IOCs, die sich auf diese Kampagne beziehen, finden Sie in unserem GitHub-Repository.