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.
Die Shell überprüft Kontrollbefehle, die über den gemeinsamen Speicher gesendet werden:
Pending: Normale Ausführung.
Terminate: Shell beenden und bereinigen. Shell vollständig zerstört und zurückgesetzt
Ctrlc: Erzwingt das Beenden aller verbleibenden Kindprozesse.
Im Normalbetrieb schreibt sie, falls ein Befehl vorhanden ist, den Befehl in die CMD und prüft dann mit PeekNamedPipe auf eine Ausgabe und speichert diese im Puffer.
Der zweite Thread.
Der Thread beginnt mit der Erstellung einer neuen Datei unter dem angegebenen Pfad. Diese Datei wird verwendet, um Daten vorübergehend zu speichern, bevor sie an den C2-Server hochgeladen werden. Wenn die Datei nicht erstellt werden kann oder während der Initialisierung ein Fehler auftritt, setzt die Funktion den Status-String "error" im gemeinsamen Speicher und beendet sich. Die Datei wird per HTTPS an den Command-and-Control-Server der Malware (moodleuni[.]com) übertragen, wobei benutzerdefinierte Header und Sitzungskennungen verwendet werden, um legitimen Datenverkehr zu imitieren. Nach Abschluss des Uploads aktualisiert die Funktion den gemeinsamen Speicher, um Erfolg oder Misserfolg anzuzeigen:
- "error", falls der Upload fehlschlägt.
- "done", falls der Upload erfolgreich ist.
Zusammenfassung:
Die Kalim-Backdoor-Malware konzentriert sich zunächst darauf, Persistenz zu etablieren, um eine langfristige Präsenz auf dem Opfersystem sicherzustellen. Dies erreicht sie durch die Erstellung einer bösartigen Verknüpfung im Startverzeichnis (CSIDL_STARTUP):
Dieser Mechanismus stellt sicher, dass die Malware bei jedem Systemstart automatisch ausgeführt wird.
Sobald die Persistenz hergestellt ist, initiiert die Malware die Kommunikation mit ihrem Command-and-Control (C2)-Server, moodleuni[.]com. Sie führt eine erste Authentifizierungs- und System-Fingerprinting-Phase durch, in der hostbasierte Informationen gesammelt, verarbeitet und verschlüsselt werden. Danach tritt die Malware in einen Zustand des Wartens auf Befehle ein und fragt kontinuierlich den C2 nach Anweisungen ab.
Basierend auf den empfangenen Befehlen kann die Malware dynamisch über ihre nächsten Aktionen entscheiden, einschließlich des Erzeugens einer versteckten Befehlsshell für die interaktive Steuerung oder des Hochladens gesammelter Daten zurück zum C2-Server. Dieses modulare Design ermöglicht sowohl die Fernausführung von Befehlen als auch die Datenexfiltration und macht Kalim zu einer flexiblen und persistenten Backdoor.