Dieser Bericht behandelt die Funktionsweise der Kalim Backdoor Malware.
Inhaltsverzeichnis:
- Was ist ein Backdoor?
- Technische Analyse.
- Zusammenfassung.
- Taktiken & Techniken (MITRE ATT&CK).
- IOCs.
- Yara-Regel.
Was bedeutet Backdoor?
Ein Backdoor ist eine versteckte Methode, um auf ein System zuzugreifen, die die normale Authentifizierung und Sicherheitskontrollen umgeht.
Technische Analyse:
Grundlegende statische Analyse:
Laden Sie es zunächst bei VirusTotal für die erste Analyse hoch. Die Ergebnisse zeigen, dass es sich um eine 64-Bit-DLL handelt, die der Malware-Familie Kalim zugeordnet wird. Darüber hinaus deuten mehrere Erkennungen auf eine mögliche Verbindung zur Bedrohungsgruppe MuddyWater hin.
Die Malware stellt außerdem eine Netzwerkkommunikation mit der Domain moodleuni[.]com her.
Sie legt einige Dateien ab:
Öffnen Sie es nun in Die (Detect it easy):
Die Probe importiert eine große Anzahl von Windows-APIs, was darauf hindeutet, dass sie nicht gepackt ist. Insgesamt importiert sie Funktionen aus sechs DLLs: KERNEL32.dll, USER32.dll, ADVAPI32.dll, SHELL32.dll, ole32.dll und WININET.dll.
Obwohl mehrere APIs aus jeder DLL importiert werden, sind einige Funktionen aufgrund ihrer Rolle im Verhalten der Malware besonders bemerkenswert.
Insbesondere importiert die Probe netzwerkbezogene APIs aus WININET.dll, um eine Kommunikation mit dem Command-and-Control (C2)-Server herzustellen. Sie nutzt auch COM-bezogene Funktionen aus ole32.dll, um Component Object Model (COM)-Objekte zu erstellen und mit ihnen zu interagieren. Zusätzlich verwendet die Malware SHGetFolderPathW aus SHELL32.dll, um Systemverzeichnispfade abzurufen, die durch CSIDL-Werte identifiziert werden.
Erweiterte statische Analyse:
In DllMain wird lediglich ein neuer Thread erstellt. In diesem Thread werden zwei Funktionen ausgeführt: sub_1800063A0 und StartAddress.
Bei der Analyse der Funktion sub_1800063A0 habe ich festgestellt, dass sie aus zwei unterschiedlichen Phasen besteht. In der ersten Phase legt die Malware eine Kopie ihrer selbst im Verzeichnis AppData\Roaming ab. Dazu erstellt sie ein neues Unterverzeichnis namens Updates und anschließend eine ausführbare Datei namens update.exe. Die in diese Datei geschriebene binäre Nutzlast stammt direkt aus den eingebetteten Daten an der Adresse unk_18002AA10. Dadurch wird die endgültige Datei unter folgendem Pfad abgelegt: „C:\Users<Username>\AppData\Roaming\Update\update.exe“.
In der zweiten Phase initialisiert die Malware ein Component Object Model (COM)-Objekt unter Verwendung von *RCLSID: {00021401-0000-0000-C000-000000000046}, was dem Shell Link Object (CLSID_ShellLink) entspricht, und RIID: {000214F9-0000-0000-C000-000000000046}, was auf das IShellLinkW-Interface verweist. Durch Betrachtung der vollständigen Shell-COM-Interface-Tabelle, die von shell32.dll implementiert wird, können die aufgerufenen Methoden genau identifiziert werden. Die Malware ruft vier wichtige COM-Methoden auf: SetPath, SetDescription, Save und Release. Mit diesen Funktionen erstellt sie eine bösartige Startverknüpfung namens MicrosoftUpdateSerice.lnk im Windows-Startverzeichnis und etabliert so Persistenz auf dem infizierten System.
Analyse der StartAddress-Funktion
Die Malware implementiert ihre Netzwerkkommunikationslogik über drei verschiedene Funktionen und erzeugt zwei separate Threads. Ein Thread ist für das Erzeugen und Verwalten einer Befehlsshell zuständig, während der zweite Thread das Hochladen der gesammelten Daten nach Abschluss der Malware-Ausführung übernimmt.
Die drei Funktionen verwalten gemeinsam die Kommunikation zwischen dem infizierten Host und dem Command-and-Control (C2)-Server und sind in drei logische Schichten organisiert.
Die erste Schicht ist für das Sammeln von hostbasierten Fingerprinting-Informationen vom kompromittierten System verantwortlich. Die zweite Schicht verarbeitet diese Daten durch Verschlüsselung und weitere Manipulationen, um sie für die Übertragung vorzubereiten. Die dritte Schicht stellt die Netzwerkkommunikation mit der C2-Domain moodleuni[.]com her und überträgt die verarbeiteten Daten.
Die ersten beiden netzwerkbezogenen Funktionen sind speziell für die Authentifizierung und den Aufbau von HTTP-POST-Anfragen zuständig, was eine authentifizierte Datenübertragung an den entfernten Server ermöglicht.
Die dritte Funktion ist für den Empfang von Befehlen vom C2-Server zuständig. Basierend auf der Antwort des Servers bestimmt die Malware ihre nächste Aktion – entweder das Erzeugen einer versteckten Befehlsshell oder das Hochladen der gesammelten Daten, je nach dem vom C2 erhaltenen Befehl.
Analyse der beiden Threads, um ihre Funktionsweise vollständig zu verstehen.
Im ersten Thread erstellt die Malware ein Job-Objekt sowie zwei weitere Pipes und setzt dann bestimmte Eigenschaften für sie.
Dann erstellt sie eine CMD mit einigen Eigenschaften:
Der Wert 1 im vierten Argument bedeutet, dass die CMD von Pipe-Handles erben kann
Der Wert 0x1000200u im fünften Argument bedeutet, dass die CMD Folgendes aufweist:
CREATE_NO_WINDOW = 0x0000000u
CREATE_NEW_PROCESS_GROUP = 0x0000200u
CREATE_UNICODE_ENVIRONMENT = 0x0000400u
Und einige Startinformationen: {Größe der Struktur = 104 Bytes, hStdError = hWritePipe, hStdOutput = hWritePipe, hStdInput = hReadPipe2, dwFlags |= 0x100u = STARTF_USESTDHANDLES}. Die erste Pipe ist dafür zuständig, die Ausgabe der Shell zu lesen, und die zweite Pipe ist dafür zuständig, in die Shell zu schreiben.
Und ein Zeiger auf eine PROCESS_INFORMATION
Und nach dem Erstellen der Shell weist sie diese dem Job-Objekt zu und versetzt sie in den ausstehenden Zustand, um auf Befehle vom C2 zu warten.