Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Hardware & Software Cherry Loader: Ein neuer Go-basierter Loader, der bei jüngsten Eindringlingen entdeckt wurde!

Hintergrund​

Arctic Wolf Labs hat in jüngster Zeit zwei Eindringlinge verfolgt, bei denen Bedrohungsakteure einen neuen Go-basierten Malware-Downloader namens "CherryLoader" nutzten, der es ihnen ermöglichte, Exploits auszutauschen, ohne den Code neu kompilieren zu müssen.
Das Symbol und der Name des Laders sind als legitime CherryTree-Notizanwendung getarnt, um die Opfer auszutricksen.
Bei den von uns untersuchten Eindringlingen wurde CherryLoader verwendet, um eines von zwei Tools zur Rechteausweitung, PrintSpoofer oder JuicyPotatoNG, abzulegen, das dann eine Batch-Datei ausführte, um Persistenz auf dem Opfergerät herzustellen.

Wichtige Takeaways​

  • Arctic Wolf hat einen neuen Loader namens "CherryLoader" beobachtet, der in Go geschrieben wurde und bei den jüngsten Einbrüchen verwendet wurde.
  • Der Loader enthält modularisierte Funktionen, die es dem Bedrohungsakteur ermöglichen, Exploits auszutauschen, ohne den Code neu kompilieren zu müssen.
  • CherryLoader verwirft zwei öffentlich zugängliche Exploits zur Rechteausweitung.
  • Die Angriffskette von CherryLoader nutzt Prozess-Ghosting und ermöglicht es Bedrohungsakteuren, Berechtigungen zu erhöhen und Persistenz auf den Rechnern der Opfer herzustellen.

Technische Analyse​

Basierend auf Incident-Response-Daten und zusätzlichen Analysen nutzten die Bedrohungsakteure zunächst die IP-Adresse 141.11.187[.] 70, um dem Opfer CherryLoader und zugehörige Dateien zu liefern.
Zwei Dateien wurden von dieser IP heruntergeladen, eine passwortgeschützte RAR-Datei (Packed.rar) und eine ausführbare Datei (main.exe), die zum Entpacken von Packed.rar verwendet wurde.

Die gepackte .rar-Datei enthielt eine Golang-Binärdatei (cherrytree.exe) zusammen mit drei zusätzlichen Dateien, NuxtSharp.Data, Spof.Data und Juicy.Data.
Cherrytree.exe wurde entfernt und die Importadresstabelle wurde zerstört, um die Analysebemühungen zu behindern.

Mittels statischer Analyse wurde eine eindeutige Referenz für das Projekt gefunden, die den ursprünglichen Projektnamen des Autors "XorRunPeGoler" enthüllte.

cherrytree_2_2.png


Nachdem CherryLoader und die zugehörigen Dateien aus der .rar-Datei extrahiert wurden, riefen die Bedrohungsakteure CherryLoader mit dem folgenden Befehl auf:

Cherrytree.exe 405060EEw@! NuxtSharp.Data Spof.Data
Bei der Ausführung prüft die Binärdatei die übergebenen Argumente und vergleicht das erste Argument (Kennwort) mit einem hartcodierten MD5-Kennworthash.
Wenn die Hashes übereinstimmen, fährt die Binärdatei mit dem nächsten Schritt fort, wenn nicht, wird CherryLoader beendet.

cherrytree_3_2.jpeg


Die Binärdatei weist dann Speicher zu, um die Datei zu lesen und zu entschlüsseln, die über das zweite Argument (NuxtSharp.Data) übergeben wird.
Die Datei wird dann mit einem einfachen XOR-Algorithmus entschlüsselt.

Um die XOR-Schleife zu starten, kopiert CherryLoader den XOR-Schlüssel "Kry" und weist Speicher für die entschlüsselten Daten zu.
Anschließend wird die Datei NuxtSharp.Data Byte für Byte durchlaufen und die Bytes mit einem Buchstaben versehen, der einem Index in ["K", "r", "y"] entspricht.
Der Index ist mit einem Modul von 3 begrenzt, um einen Zugriff außerhalb des Bereichs zu vermeiden.

cherrytree_4.png


cherrytree_5_2.jpeg


Bemerkenswert ist, dass der Entschlüsselungsalgorithmus nicht auf das eingegebene Passwort angewiesen ist, daher kann er gepatcht werden, wodurch das Passwortargument nutzlos wird.
Die Kennwortüberprüfung dient wahrscheinlich dazu, die Analyse der Datei zu verhindern.

Nachdem die XOR-Schleife abgeschlossen ist und die Datei (NuxtSharp.Data) im Arbeitsspeicher entschlüsselt wurde, wird GetProcAddress verwendet, um CreateFileW dynamisch zu suchen, wodurch die entschlüsselte Datei als File.log im Verzeichnis %TEMP% gespeichert wird.

cherrytree_6.png


Nach dem Speichern von File.log auf dem Datenträger sucht das Beispiel dynamisch die CreateProcessW-Funktion zum Ausführen von cmd.exe, die wiederum File.log als untergeordneten Prozess ausführt:

cmd.exe /c File.log Spof.Data 123 12.log
cherrytree_8.png

cherrytree_9.png


Nach dem Ausführen des cmd.exe-Prozesses werden DeleteFileW und RemoveDirectoryW dynamisch gesucht und aufgerufen, um alle Beweise im Verzeichnis %TEMP% zu löschen.

File.log (auch bekannt als NuxtSharp.Data)​

DateinameDatei:.log
SHA256-KARTONe0f53fb3651caf5eb3b30603064d527b9ac9243f8e682e4367616484ec708976

File.log ist eine PE-Datei, die in C geschrieben ist und Symbole zu enthalten scheint, die sich auf ein ursprüngliches Projekt namens NuxtSharp beziehen.
File.log stellt die nächste Stufe in der Angriffskette dar, die mit der Entschlüsselung von Spof.Data beginnt.

Entschlüsseln des Spoofers​

CherryLoader führt File.log als Prozess mit drei zusätzlichen Argumenten aus.
Die Hauptfunktion der ausführbaren Datei File.log erleichtert die Übergabe von Argumenten an eine Funktion, die später die Binärdatei entschlüsselt und aus dem Speicher lädt.

cherrytree_10.png


File.log beginnt mit dem Erstellen einer Datei mit dem Namen 12.log (das letzte in der Befehlszeile angegebene Argument).
File.log öffnet dann die verschlüsselte Spof.Data-Datei (erstes Argument) und liest die Daten zur Entschlüsselung in einen Puffer.

cherrytree_11_2.jpeg


cherrytree_12_3.png


cherrytree_13_2.jpeg


Spof.Data wird mit AES ECB (Rijndael) verschlüsselt; Der Schlüssel "123" wurde als zweites Argument in der ersten Befehlszeile übergeben.

cherrytree_14.png


Bemerkenswert ist, dass eine der anderen Dateien, die mit CherryLoader gefunden wurden, Juicy.Data, den gleichen Verschlüsselungsalgorithmus und Schlüssel verwendete. Arctic Wolf hat ein Python-Skript erstellt, das bei der Entschlüsselung von Spof.Data und Juicy.Data hilft, das Skript finden Sie
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
.

Ausweichversuch (Prozess-Ghosting)​

Nachdem File.log die Entschlüsselung von Spof.Data abgeschlossen hat, versucht es, einen neuen Prozess mit dem Namen 12.log mithilfe einer dateilosen Technik namens Process Ghosting zu erstellen.
Diese Technik ist modular aufgebaut und ermöglicht es dem Bedrohungsakteur, anderen Exploit-Code anstelle von Spof.Data zu nutzen.
In diesem Fall kann Juicy.Data, das einen anderen Exploit enthält, an Ort und Stelle ausgetauscht werden, ohne File.log neu zu kompilieren.

Die Ghosting-Technik des Prozesses beginnt mit dem Erstellen einer Datei mithilfe der CreateFile-API, wobei das DELETE-Flag als dwDesiredAccess-Parameter festgelegt ist.

cherrytree_15.png


Anschließend wird die NtSetInformationFile-API verwendet, um den FileInformation-Parameter festzulegen, der auf eine FILE_DISPOSITION_INFORMATION Struktur verweist.
Diese Struktur verfügt über einen einzigen booleschen Parameter namens DeleteFile, der, wenn er festgelegt ist, das Betriebssystem veranlasst, die Datei zu löschen, wenn sie geschlossen wird.

cherrytree_16_2.jpeg


File.log schreibt dann die entschlüsselte Binärdatei mithilfe der WriteFile-API in eine neu erstellte Datei und erstellt dann einen Bildabschnitt mit NtCreateSection:

cherrytree_17_2.jpeg


Nachdem der Bildabschnitt erstellt wurde, werden CreateFileMappingA und MapViewOfFile verwendet, um die erstellte Datei dem Arbeitsspeicher zuzuordnen.

cherrytree_18.png


Nach dem Erstellen der Dateizuordnung werden die Handles für die zugeordneten Dateien geschlossen, was zum Löschen der zuvor erstellten Datei führt.

cherrytree_19.png


File.log erstellt dann einen neuen Prozess, der den zuvor zugeordneten Abschnitt nutzt.

cherrytree_20.png


Sobald der erstellte Prozess abgeschlossen ist, ruft er die Umgebungsvariablen mithilfe von CreateEnvironmentBlock und den RtlCreateProcessParameters-Funktionen ab, um die Argumente und die Umgebung des neu erstellten Prozesses festzulegen.

cherrytree_21.png


Vor dem Erstellen eines neuen Ausführungsthreads ordnet File.log dem neu erstellten Prozess mithilfe von VirutalAllocEx Speicher zu und ruft die Funktionen WriteProcessMemory und ReadProcessMemory auf, um die Basisadresse, Prozessparameter und Umgebungsdaten in den neu zugeordneten Speicher festzulegen.

cherrytree_22_2.jpeg


Schließlich wird ein neuer Thread mithilfe eines Handles für den neu erstellten Prozess und der NtCreateThreadEx-Funktion erstellt, um die Ausführung des Prozesses 12.log zu starten.

Nach erfolgreicher Thread-Erstellung wird "Success – Threat ID" mit einem ironischen Schreibfehler des Wortes "Threat" anstelle von Thread auf das Terminal ausgegeben.

cherrytree_23_2.jpeg


Rechte-Eskalation​

Der neu erstellte Prozess 12.log (Spof.Data) ist mit einem öffentlich verfügbaren Rechteausweitungstool namens PrintSpoofer verknüpft, das das SeImpersonatePrivilege unter Windows 10 und Server 2016/2019 missbraucht.
Die Zeichenfolgen in der Binärdatei enthielten den Namen des Autors für das PrintSpoofer-Tool.

cherrytree_24.png


Basierend auf den Zeichenfolgen der Datei war Juicy.Data ein weiteres öffentlich verfügbares Tool zur Rechteausweitung namens JuicyPotatoNG.

cherrytree_25.png


cherrytree_26.png


Die verschlüsselten ausführbaren Dateien Spof.data und Juicy.data hatten drei Dinge gemeinsam:

  • Bei beiden handelte es sich um öffentlich zugängliche Tools zur Rechteausweitung
  • Die Namenskonvention folgte dem ursprünglichen Projektnamen:
    • Open-Source-PrintSpoofer mit dem Namen Spof.data
    • Open-Source-JuicyPotatoNG mit dem Namen Juicy.data
  • Beide versuchen, user.bat auszuführen, nachdem die Berechtigungen erfolgreich ausgeweitet wurden.
cherrytree_27.png


Ausdauer​

Nach erfolgreicher Eskalation der Berechtigungen versuchen Spof.data und Juicy.data, ein Batchdateiskript namens user.bat auszuführen. Das Batchdateiskript wird nicht verschleiert und führt Folgendes aus:

  • Zuerst wird ein Administratorkonto mit dem falsch geschriebenen Benutzernamen Administrater und dem Passwort erstellt 102030TTYG@
  • Whitelist des exe-Prozesses in Microsoft Defender (Ngrok ist ein Reverseproxy, der verwendet werden kann, um eine Verbindung mit einem internen Dienst herzustellen, der nicht extern verfügbar gemacht oder durch eine externe Firewall zugelassen wird)
  • Legt einen Ausschluss für .exe Dateien in Windows Defender fest
  • Deaktivieren von Microsoft Defender AntiSpyware (Effektives Deaktivieren von Windows Defender)
  • Aktivieren Sie Remoteverbindungen, und fügen Sie Firewallregeln hinzu, um RDP-Verbindungen auf Port 3389 zuzulassen.
  • Starten Sie den Windows-Dienst termservice (Remotedesktopdienst) neu)
cherrytree_28_2.jpeg


Das Ziel dieser Phase ist es, eine Persistenz auf dem Computer des Opfers herzustellen.

Schlussfolgerung​

CherryLoader ist ein neu identifizierter mehrstufiger Downloader, der verschiedene Verschlüsselungsmethoden und andere Anti-Analyse-Techniken nutzt, um alternative, öffentlich zugängliche Privilegien-Eskalations-Exploits zu detonieren, ohne Code neu kompilieren zu müssen.

Zu den Verschlüsselungsmethoden gehören sowohl einfaches XOR als auch AES; Zu den Anti-Analyse-Techniken gehören die Bereitstellung von Passwörtern und Prozess-Ghosting.
Zu den Exploits in dem analysierten Paket gehören PrintSpoofer und JuicyPotatoNG.

Arctic Wolf hat es sich zur Aufgabe gemacht, Cyberrisiken zu beenden, und wenn aktive Eindringlinge festgestellt werden, sind wir schnell zur Stelle, um unsere Kunden zu schützen.
Als Reaktion auf das Eindringen hat Arctic Wolf Erkennungen eingerichtet, um vor bösartigen Aktivitäten zu warnen, die vom CherryLoader und den zugehörigen Modulen gefunden wurden.

Kunden können ihre Systeme weiter schützen, indem sie sicherstellen, dass sie ihre Software regelmäßig gepatcht haben, die Möglichkeit zum Erstellen oder Überwachen der Erstellung von Administratorkonten, zum Überwachen von Firewalländerungen, zum Überwachen der Deaktivierung von Windows Defender, zum Überwachen von Remotedesktopdiensten und zur Verwendung von Reverseproxytools wie ngrok einschränken.

Anhang​


XOR-Entschlüsselungsskript für NuxtSharp.Data​

Das folgende Python-Skript führt die gleiche Entschlüsselungsfunktion wie Cherrytree.exe aus.
Es XORs für jedes Byte mit einem der drei Zeichen im ["K", "r", "y"]-Array:

from pathlib import Path
key = "Kry"

file = Path("NuxtSharp.Data")


with file.open("rb") as enc_file:
dec_file = Path("dec_NuxtSharp")
file_content = enc_file.read()

kry_index = 0

with dec_file.open('wb') as decrypted_file:
for enc_byte in file_content:
dec_byte = bytes([enc_byte ^ ord(key[kry_index])])
decrypted_file.write(dec_byte)
kry_index = (kry_index + 1) %3

Eine andere Möglichkeit, die gleiche Schlussfolgerung zu ziehen, ist die Datenanalyse der Datei, da der XOR-Schlüssel die Nullbytes mit dem entsprechenden Buchstaben überschreiben würde, wie in der folgenden Abbildung zu sehen ist:


cherrytree_29.png



AES-Entschlüsselungsskript für Spof.Data und Juicy.Data​

Das folgende Python-Skript führt die gleiche Entschlüsselungsfunktion wie File.log aus.
Dazu werden der AES-ECB-Algorithmus und der bereitgestellte AES-Schlüssel verwendet.

#command line to decrypt Spof.Data
decrypt_file.py -f Spof.Data -k 123

#command line to decrypt Juicy.Data
decrypt_file.py -f Juicy.Data -k 123
from Crypto.Cipher import AES
from pathlib import Path
import click

@click.command()
@click.option("-k", "--key", required=True, help="AES Key for ECB Decryption")
@click.option("-f", "--file", required=True, help="File to decrypt")
def decrypt(file, key, output):
file = Path(file)

if not file.exists():
print("[!] File does not exist.")

output_file_name = "decrypted_" + file.name
output_file = Path(output_file_name)

key = bytes(key, 'utf-8').ljust(16, b'\0')

ecb = AES.new(key , AES.MODE_ECB)

with file.open('rb') as encrypted_file:

Indikatoren für Kompromisse (IOCs)​

IndikatorArtZusammenhang
141.11.187[.] 70IP-AdresseIP-Adresse, die zum Herunterladen von Packed.rar und main.exe verwendet wird
50f7f8a8d1bd904ad7430226782d35d649e655974e848ff58d80eafedd377ee9SHA256-KARTONmain.exe
f9373383d2a1cea0179d016b4496475d44262945ab5fb6ff28cd156187c6ff6aSHA256-KARTONVerpackt:.rar
8c42321dd19bf4c8d2ef11885664e79b0064194e3222d73f00f4a1d67672f7fcSHA256-KARTONcherrytree:.exe/CherryLoader
7936b3d7d512c3a89914595c5048bce3c07bb872af59304fed95c567694230b0SHA256-KARTONNuxtSharp.Data (verschlüsselt)
e0f53fb3651caf5eb3b30603064d527b9ac9243f8e682e4367616484ec708976SHA256-KARTONNuxtSharp.Data (entschlüsselt)
08b8d8f8317936dad4f34676823b2eeb4fe99b0f4c213224e035b403e1e76cc0SHA256-KARTONSpof.Data (verschlüsselt)
92263e5085cb3fe58fd5803536c80c5c1084500c79fc026367a15b0f04ca0142SHA256-KARTONSpof.Data/PrintSpoofer (entschlüsselt)
9e6338674cd29066a4daad4ac54f01d272040d4947de39cfdf562e59af7c1318SHA256-KARTONJuicy.data/JuicyPotatoNG (verschlüsselt)
3641f3ddeb7583051f81ac15542850a1fba7591372389411a4b86363fdf02e78SHA256-KARTONJuicy.Data (entschlüsselt)
438c7ef49fbadd67bf809f7e3e239557e1d18d4c80e42c57f9479a89e3672fd9SHA256-KARTONBenutzer:.bat

Quelle: ARCTIC WOLF LABS

 
Zurück
Oben