Daniel Stepanic

NANOREMOTIK, ein Cousin von FINALDRAFT

Die voll ausgestattete Backdoor, die wir NANOREMOTE nennen, weist Ähnlichkeiten mit der in REF7707 beschriebenen Malware auf und ähnelt dem FINALDRAFT-Implantat.

24 Minuten LesezeitMalware-Analyse
NANOREMOTIK, ein Cousin von FINALDRAFT

Einführung

Im Oktober 2025 entdeckte Elastic Security Labs eine neu entdeckte Windows-Hintertür in den Telemetriedaten. Die voll ausgestattete Backdoor, die wir NANOREMOTE nennen, weist Ähnlichkeiten mit der in REF7707 beschriebenen Malware auf und ähnelt dem FINALDRAFT- Implantat.

Eine der Hauptfunktionen der Malware besteht darin, Daten mithilfe der Google Drive API zwischen dem Zielsystem des Opfers und dem Zielsystem hin und her zu senden. Diese Funktion bietet letztlich einen Kanal für Datendiebstahl und die Bereitstellung von Nutzdaten, der schwer zu erkennen ist. Die Malware beinhaltet ein Aufgabenverwaltungssystem für Dateiübertragungsfunktionen, darunter das Einreihen von Download-/Upload-Aufgaben, das Anhalten/Fortsetzen von Dateiübertragungen, das Abbrechen von Dateiübertragungen und das Generieren von Aktualisierungstoken.

Ziel dieses Berichts ist es, das Bewusstsein von Verteidigern und Organisationen für die von uns überwachten Bedrohungsakteure und deren sich entwickelnde Fähigkeiten zu schärfen.

Wichtigste Erkenntnisse

  • Elastic Security Labs entdeckt eine neue Windows-Hintertür
  • NANOREMOTE wurde wahrscheinlich von einem Spionageakteur entwickelt, der mit FINALDRAFT und REF7707 in Verbindung steht.
  • NANOREMOTE umfasst Befehlsausführung, Erkennung/Aufzählung und Dateiübertragungsfunktionen mithilfe der Google Drive API.
  • Die Hintertür integriert Funktionen aus Open-Source-Projekten, darunter Microsoft Detours und libPeConv.
  • Elastic Defend verhindert die NANOREMOTE-Angriffskette durch Verhaltensregeln, einen maschinellen Lernklassifikator und Speicherschutzfunktionen.

NanoRemote-Analyse

WMLOADER

Die beobachtete Angriffskette besteht aus zwei Hauptkomponenten, einem Loader (WMLOADER) und einer Payload (NANOREMOTE). Obwohl sich dieser Bericht auf NANOREMOTE konzentriert, werden wir den Loader beschreiben, um den Kontext des gesamten Infektionsablaufs zu verdeutlichen.

WMLOADER gibt sich als Bitdefender-Sicherheitsprogramm (BDReinit.exe) mit einer ungültigen digitalen Signatur aus.

Nach der Ausführung führt das Programm eine große Anzahl von Aufrufen von Windows-Funktionen (VirtualAlloc / VirtualProtect) durch, um den Prozess für die Ausführung des in der Datei gespeicherten eingebetteten Shellcodes vorzubereiten. Der Shellcode befindet sich unter RVA (0x193041) und wird mit Hilfe eines Rolling-XOR-Algorithmus entschlüsselt.

Dieser Shellcode sucht nach einer Datei namens wmsetup.log im selben Ordnerpfad wie WMLOADER und beginnt dann mit deren Entschlüsselung mittels AES-CBC mit einem 16-Byte-ASCII-Schlüssel (3A5AD78097D944AC). Nach der Entschlüsselung führt der Shellcode die im Arbeitsspeicher befindliche Hintertür NANOREMOTE aus.

Auf Basis der vorherigen Shellcode-Entschlüsselungsroutine können wir bei der Suche in VirusTotal weitere verwandte Samples identifizieren, die auf Bitdefender- und Trend Micro-Produkte abzielen.

Nanofernbedienung

NANOREMOTE ist eine voll ausgestattete Hintertür, die zur Aufklärung, zur Ausführung von Dateien und Befehlen sowie zum Datentransfer zwischen Zielsystemen und anderen Systemen verwendet werden kann. Das Implantat ist eine 64-Bit-Windows-Executable, die in C++ ohne Verschleierung geschrieben wurde.

NANOREMOTE-Konfiguration

Das von uns untersuchte NANOREMOTE-Beispiel war so vorkonfiguriert, dass es mit einer fest codierten, nicht routingfähigen IP-Adresse kommunizierte. Wir gehen davon aus, dass das Programm von einem Builder generiert wurde, da wir keine Querverweise auf eine Konfigurationseinstellung sehen.

Für die Authentifizierung mit der Google Drive API verwendet NANOREMOTE eine durch Pipes getrennte Konfiguration, die mehrere Clients nutzen kann. Der Trenner |*| teilt die von einem einzelnen Client verwendeten Felder auf, und der |-| dient als Markierung zur Trennung der Clients. Es gibt drei Felder pro Clientstruktur:

  • Client-ID
  • Kundengeheimnis
  • Aktualisierungstoken

Nachfolgend ein Beispiel für das Format:

Client_ID_1|*|Client_Secret_1|*|Refresh_Token_1|-|Client_ID_2|*|Client_Secret_2|*|Refresh_Token_2

Der Entwickler verfügt über einen Ausweichmechanismus, um diese Konfiguration über eine Umgebungsvariable namens NR_GOOGLE_ACCOUNTS zu akzeptieren.

Schnittstelle/Protokollierung

NANOREMOTE bietet eine detaillierte Konsole, die die Echtzeitaktivitäten der Anwendung anzeigt, einschließlich Zeitstempel, Quellcodepositionen und Beschreibungen ihres Verhaltens.

Es wird ein neues Windows-Verzeichnis an der gleichen Stelle erstellt, an der NANOREMOTE ausgeführt wurde; der Ordner trägt den Namen Log.

In diesem Ordner wird eine neu erstellte Protokolldatei (pe_exe_run.log) abgelegt, die die gleiche Ausgabe enthält, die von der Konsole ausgegeben wurde.

Einrichtung

Vor dem Start der Haupt-Worker-Schleife führt NANOREMOTE eine initiale Setup-Routine durch. Die Malware generiert eine eindeutige GUID mittels CoCreateGuid und hasht diese GUID anschließend mit Hilfe der Fowler-Noll-Vo (FNV)-Funktion. Diese GUID wird vom Bediener verwendet, um die einzelnen Maschinen bei jeder Anfrage zu identifizieren.

Der Malware-Entwickler verfügt über einen prozessweiten Crash-Handler, der bei Auftreten einer unbehandelten Ausnahme einen Windows-Minidump des laufenden Prozesses erstellt. Dieser wird höchstwahrscheinlich zur Analyse von Programmabstürzen verwendet.

Die Ausnahme führt zur Erstellung eines Speicherabbilds, bevor der Prozess beendet wird. Dies ist eine gängige Praxis, obwohl die Verwendung von MiniDumpWithFullMemory in legitimer Software als weniger üblich angesehen werden könnte, da dies zu größeren Speicherabbildern führen und sensible Daten enthalten könnte.

Eine schnelle Google-Suche mit demselben String-Formatter für die Dump-Datei (%d%02d%02d%02d%02d%02d_sv.dmp) ergab nur ein Ergebnis 1 von einer chinesischen Softwareentwicklungswebsite.

Netzwerkkommunikation

Wie bereits erwähnt, kommuniziert der C2-Server von NANOREMOTE mit einer fest codierten IP-Adresse. Diese Anfragen erfolgen über HTTP, wobei die JSON-Daten mittels POST-Anfragen übermittelt werden, die mit Zlib komprimiert und mit AES-CBC unter Verwendung eines 16-Byte-Schlüssels (558bec83ec40535657833d7440001c00) verschlüsselt sind. Die URI für alle Anfragen verwendet /api/client mit User-Agent (NanoRemote/1.0).

Nachfolgend das CyberChef-Rezept, das für die C2-Verschlüsselung/Komprimierung verwendet wurde:

Jede Anfrage vor der Verschlüsselung folgt einem Schema, das aus Folgendem besteht:

  • Befehls-ID: Zugehörige Befehlshandler-ID
  • Daten: Befehlsspezifisches Objekt mit den vom entsprechenden Handler benötigten Schlüssel-Wert-Paaren.
  • ID: Eindeutige Maschinenkennung, die dem infizierten Host zugewiesen wurde

Nachfolgend ein Beispiel für eine Anfrage, die die Ausführung von whoami über den Befehlsschlüssel innerhalb des Datenobjekts auslöst:

{
    "cmd": 21,
    "data": {
        "command": "whoami"
    },
    "id": 15100174208042555000
}

Jede Antwort folgt einem ähnlichen Format und verwendet die vorherigen Felder sowie zwei zusätzliche Felder.

  • Ausgabe: Enthält die Ausgabe des zuvor angeforderten Befehlshandlers.
  • Erfolg: Boolescher Wert, der angibt, ob der Befehl erfolgreich war oder nicht.

Nachfolgend ein Beispiel für die Antwort des vorherigen whoami-Befehls:

{
    "cmd": 21,
    "data": 0,
    "id": 17235741656643013000,
    "output": "desktop-2c3iqho\\rem\r\n",
    "success": true
}

Befehlshandler

Die Hauptfunktionalität von NANOREMOTE wird über seine 22 -Befehlshandler gesteuert. Nachfolgend ist ein Kontrollflussdiagramm (CFG) dargestellt, das die Switch-Anweisung zeigt, die zum Aufrufen der verschiedenen Handler verwendet wird.

Nachfolgend die Befehlsbehandlungstabelle:

Befehls-IDBeschreibung
1Sammeln Sie hostbasierte Informationen
2Beacon-Timeout ändern
3Selbstbeendigung
4Ordnerinhalte nach Pfad auflisten
#5Ordnerinhalte nach Pfad auflisten und Arbeitsverzeichnis festlegen
#6Details zum Speichermedium abrufen
#7Neues Verzeichnis erstellen
#8 #9Verzeichnis/Dateien löschen
#10 #11Abbau (Cache leeren, aufräumen)
#12PE-Loader – PE-Datei von der Festplatte ausführen
#13Arbeitsverzeichnis festlegen
#14Arbeitsverzeichnis abrufen
#15Datei verschieben
#16Downloadaufgabe über Google Drive in die Warteschlange stellen
#17Upload-Aufgabe über Google Drive in die Warteschlange stellen
#18Download/Upload pausieren
#19Lebenslauf herunterladen/hochladen
#20Dateiübertragung abbrechen
#21Befehlsausführung
#22PE-Loader – PE aus dem Speicher ausführen
Handler #1 - Hostbasierte Informationen sammeln

Dieser Handler listet System- und Benutzerdetails auf, um ein Profil der Opferumgebung zu erstellen:

  • Verwendet WSAIoctl mit SIO_GET_INTERFACE_LIST , um die interne und externe IP-Adresse abzurufen.
  • Ruft Benutzernamen ab über GetUserNameW
  • Ruft den Hostnamen ab über GetComputerNameW
  • Prüft, ob der aktuelle Benutzer Mitglied der Administratorgruppe ist über IsUserAnAdmin
  • Ruft den vom Schadprogramm verwendeten Prozesspfad ab. GetModuleFileNameW
  • Ruft Betriebssysteminformationen (Produktversion) aus der Registrierung mithilfe der Wertnamen WinREVersion und ProductName ab.
  • Ruft die Prozess-ID des laufenden Programms ab über GetCurrentProcessID

Nachfolgend ein Beispiel für die an den C2-Server gesendeten Daten:

{
    "cmd": 1,
    "data": {
        "Arch": "x64",
        "ExternalIp": "",
        "HostName": "DESKTOP-2C3IQHO",
        "ID": 8580477787937977000,
        "InternalIp": "192.168.1.1",
        "OsName": "Windows 10 Enterprise ",
        "ProcessID": 304,
        "ProcessName": "pe.exe",
        "SleepTimeSeconds": 0,
        "UID": 0,
        "UserName": "REM *"
    },
    "id": 8580477787937977000
}
Handler #2 - Beacon-Timeout ändern

Dieser Handler ändert das Timeout-Intervall für die Beacon-Kommunikation von NANOREMOTE; die Malware wird basierend auf der vom Operator angegebenen Anzahl von Sekunden in den Schlafmodus versetzt.

Nachfolgend ein Beispiel für diese Anfrage, bei der NANOREMOTE den Schlüssel (interval) mit dem Wert (5) verwendet, um das Beacon-Timeout auf 5 Sekunden zu ändern.

{
    "cmd": 2,
    "data": {
        "interval": 5
    },
    "id": 15100174208042555000
}
Handler #3 - Selbstbeendigung

Dieser Handler ist dafür verantwortlich, eine globale Variable auf 0 zu setzen und damit effektiv das Aufräumen und Beenden des Prozesses NANOREMOTE zu signalisieren.

Handler #4 - Ordnerinhalte nach Pfad auflisten

Dieser Handler listet den Ordnerinhalt anhand eines vom Operator bereitgestellten Dateipfads auf. Die Auflistung für jeden Artikel umfasst:

  • Ob es sich bei dem Element um ein Verzeichnis handelt oder nicht
  • Ob der Artikel als ausgeblendet markiert ist
  • Datum der letzten Änderung
  • Dateiname
  • Größe

Handler #5 – Ordnerinhalte auflisten und Arbeitsverzeichnis festlegen

Dieser Handler verwendet denselben Code wie der vorherige Handler (#4), der einzige Unterschied besteht darin, dass er auch das aktuelle Arbeitsverzeichnis des Prozesses auf den angegebenen Pfad setzt.

Handler #6 – Informationen zum Speichermedium abrufen

Dieser Handler verwendet die folgenden Windows-API-Funktionen, um Speicherdatenträgerinformationen vom Computer zu erfassen:

  • Logische Laufwerke abrufen
  • GetDiskFreeSpaceExW
  • GetDriveTypeW
  • GetVolumeInformationW

Nachfolgend ein Beispiel der Anfrage im JSON-Format mit den zurückgegebenen Daten:

{
    "cmd": 6,
    "data": {
        "items": [
            {
                "free": 26342813696,
                "name": "C:",
                "total": 85405782016,
                "type": "Fixed"
            }
        ]
    },
    "id": 16873875158734957000,
    "output": "",
    "success": true
}
Handler #7 – Neues Ordnerverzeichnis erstellen

Dieser Befehlshandler erstellt ein neues Verzeichnis basierend auf einem angegebenen Pfad.

Handler #8, #9 – Datei, Verzeichnis löschen

Dieser Handler unterstützt sowohl die Befehls-IDs #8 als auch #9; die Verzweigung wird dynamisch anhand des angegebenen Dateipfads ausgewählt. Es bietet die Möglichkeit, Dateien oder einen bestimmten Ordner zu löschen.

Handler Nr. 10, Nr. 11 - Abbau/Aufräumarbeiten

Diese beiden Handler rufen dieselbe Teardown-Funktion mit unterschiedlichen Argumenten auf, um rekursiv Heap-Allokationen, interne C++-Objekte und zwischengespeicherte Daten, die mit der Laufzeitumgebung der Malware verbunden sind, freizugeben. Ziel ist es, die Befehlsstrukturen zu bereinigen und Speicherlecks oder Instabilität zu verhindern.

Handler #12 – Benutzerdefinierter PE-Loader – PE von der Festplatte ausführen

Dieser Handler beinhaltet eine benutzerdefinierte PE-Ladefunktion für Dateien, die auf der Festplatte vorhanden sind. Diese Funktionalität nutzt Standard-Windows-APIs sowie Hilfscode aus der Bibliothek libPeConv , um PE-Dateien von der Festplatte zu laden, ohne den herkömmlichen Windows-Loader zu verwenden.

Kurz gesagt, liest es eine PE-Datei von der Festplatte, kopiert die Datei in den Speicher, ordnet die Abschnitte/Header manuell zu und bereitet die Datei so vor, bevor es sie schließlich im Speicher ausführt. Diese Implementierung ist eine bewusste Technik zur Tarnung und Umgehung von Benutzermodus-Hooking und herkömmlicher Sichtbarkeit. Ein Beispiel: Wenn eine Datei mit dieser Technik ausgeführt wird, gibt es keine Spur davon, dass diese ausführbare Datei mit procmon gestartet wurde.

Nachfolgend die Eingabe für diesen Handler, wobei der lokale Dateipfad unter dem Schlüssel (args) angegeben wird:

{
    "cmd": 12,
    "data": {
        "args": "C:\\tmp\\mare_test.exe"
    },
    "id": 15100174208042555000
}

Der folgende Screenshot zeigt die erfolgreiche Ausführung unserer Testdatei mit dieser Technik:

Bei dieser Analyse fällt besonders die Verwendung der libPeConv -Bibliothek auf. Es handelt sich dabei um ein großartiges und nützliches Projekt, das wir selbst intern für verschiedene Aufgaben im Zusammenhang mit Malware einsetzen. Der Entwickler von NANOREMOTE verwendet mehrere Funktionen aus dieser Bibliothek, um häufige Aufgaben im Zusammenhang mit dem manuellen Laden und Ausführen von PE-Dateien im Speicher zu vereinfachen. Nachfolgend sind die Funktionen aufgeführt, die von der in NANOREMOTE enthaltenen Bibliothek verwendet werden:

  • default_func_resolver: Löst Funktionen in einer PE-Datei auf, indem DLLs dynamisch geladen und die Adressen exportierter Funktionen abgerufen werden.

  • hooking_func_resolver: Ruft die virtuelle Adresse einer Funktion anhand ihres Namens aus einer geladenen DLL ab.

  • FillImportThunks: Füllt die Importtabelle, indem jede importierte Funktion ihrer tatsächlichen Speicheradresse zugeordnet wird.

  • ApplyRelocCallback: Wendet Basis-Relokationen an, wenn eine PE-Datei an einer anderen Adresse als ihrer bevorzugten Basisadresse geladen wird.

Eine weitere bemerkenswerte Beobachtung in diesem Handler ist die Verwendung der Open-Source-Hooking-Bibliothek Microsoft Detours. Diese Bibliothek dient dazu, die folgenden Windows-Funktionen abzufangen:

  • GetStdHandle
  • RtlExitUserThread
  • RtlExitUserProcess
  • FatalExit
  • ExitProcess

Diese Laufzeit-Hooking-Routine fängt Beendigungsfunktionen ab, um kontrolliertes Verhalten zu erzwingen und die Ausfallsicherheit zu verbessern. Beispielsweise verhindert NANOREMOTE, dass ein Fehler in einem einzelnen Worker-Thread den gesamten NANOREMOTE-Prozess beendet.

Handler #13 – Arbeitsverzeichnis festlegen

Dieser Handler legt das Arbeitsverzeichnis mithilfe des Schlüssels (Pfad) auf ein bestimmtes Verzeichnis fest. Nachfolgend ein Beispiel für eine Anfrage:

{
    "cmd": 13,
    "data": {
        "path": "C:\\tmp\\Log"
    },
    "id": 15100174208042555000
}
Handler #14 – Arbeitsverzeichnis abrufen

Dieser Handler ruft das aktuelle Arbeitsverzeichnis ab. Nachfolgend finden Sie eine Beispielantwort nach dem Festlegen des Verzeichnisses mit dem vorherigen Handler (#13).

{
    "cmd": 14,
    "data": 0,
    "id": 11010639976590963000,
    "output": "[+] pwd output:\r\nC:\\tmp\\Log\r\n",
    "success": true
}
Handler #15 – Datei verschieben

Dieser Handler ermöglicht es dem Benutzer, Dateien auf dem Zielrechner mithilfe von MoveFileExW mit zwei Argumenten (alter_Pfad, neuer_Pfad) zu verschieben, indem die Datei durch einen Kopier- und Löschvorgang in einen anderen Ordner verschoben wird.

Handler #16 - Warteschlangen-Download-Aufgabe

Dieser Handler erstellt ein Download-Task-Objekt mit einer angegebenen task_id und reiht den Task anschließend in die Download-Warteschlange ein. Diese Implementierung verwendet OAuth 2.0-Token zur Authentifizierung von Anfragen an die Google Drive API. Diese Funktionalität wird vom Angreifer genutzt, um Dateien auf den Rechner des Opfers herunterzuladen. Die verschlüsselte Kommunikation mit den Servern von Google lässt diesen Datenverkehr legitim erscheinen, sodass Organisationen ihn weder überprüfen noch vom normalen Datenverkehr unterscheiden können.

Innerhalb des Haupt-Worker-Threads gibt es eine globale Variable, die dazu dient, Warteschlangenobjekte zu verfolgen und die wartenden Aufgaben von der Malware zu verarbeiten.

Ein Auftrag wird unter Verwendung verschiedener Felder verarbeitet, die vom C2-Server bereitgestellt werden:

  • type
  • task_id
  • Datei-ID
  • Zielpfad
  • Dateigröße
  • md5

Wenn ein Downloadvorgang verarbeitet wird, ermittelt NANOREMOTE die Größe der auf Google Drive gespeicherten Datei anhand der Datei-ID (1BwdUSIyA3WTUrpAEEDhG0U48U9hYPcy7). Als nächstes lädt die Malware die Datei über WinHttpSendRequest herunter und verwendet dann WinHttpWriteData, um die Datei auf dem Rechner zu speichern.

Nachfolgend die Konsolenausgabe, die diesen Downloadvorgang zeigt:

Diese Malware-Funktion stellt Organisationen vor eine besondere Herausforderung, da Bedrohungsgruppen weiterhin vertrauenswürdige Cloud-Plattformen für Datenexfiltration und Payload-Hosting missbrauchen. Dieser Datenverkehr ohne jeglichen Kontext kann sich leicht mit legitimem Datenverkehr vermischen, was die Erkennung für die Verteidiger erschwert, die auf Netzwerktransparenz angewiesen sind.

Handler #17 - Warteschlangen-Upload-Aufgabe

Dieser Handler funktioniert ähnlich wie der vorherige Handler (#16), erstellt jedoch eine Upload-Warteschlangenaufgabe und reiht diese in die Upload-Warteschlange ein. Dieser Handler wird vom Angreifer verwendet, um Dateien vom Rechner des Opfers auf das vom Angreifer kontrollierte Google Drive-Konto hochzuladen.

Folgende Felder werden vom Betreiber über den C2-Server bereitgestellt:

  • type
  • task_id
  • upload_name
  • source_path
  • file_size
  • md5

Nachfolgend ist der Netzwerkverkehr dargestellt, der von der Malware beim Hochladen einer Testdatei über die Google Drive API (/upload/drive/v3/files) erzeugt wird.

Die folgende Abbildung zeigt die Konsole während dieses Upload-Vorgangs.

Nachfolgend ein Screenshot der vorherigen Demonstration mit der Datei-Upload-Funktion und unserem eigenen Google Drive-Testkonto.

Nachfolgend die Antwort dieses Handlers:

{
    "cmd": 17,
    "data": {
        "file_id": "1qmP4TcGfE2xbjYSlV-AVCRA96f6Kp-V7",
        "file_name": "meow.txt",
        "file_size": 16,
        "md5": "1e28c01387e0f0229a3fb3df931eaf80",
        "progress": 100,
        "status": "uploaded",
        "task_id": "124"
    },
    "id": 4079875446683087000,
    "output": "",
    "success": true
}
Handler #18 – Download-/Upload-Übertragung pausieren

Dieser Handler ermöglicht es dem Bediener, alle von NANOREMOTE verwalteten Download- und Upload-Aufgaben durch Übergabe der task_id anzuhalten.

Handler #19 – Download/Upload des Spielfortschritts

Dieser Handler ermöglicht es dem Bediener, alle von NANOREMOTE verwalteten pausierten Download- oder Upload-Aufgaben mithilfe der task_id fortzusetzen.

Handler #20 – Dateiübertragung abbrechen

Dieser Handler ermöglicht es dem Bediener, alle von NANOREMOTE verwalteten Download-/Upload-Aufgaben über die task_id abzubrechen.

Handler #21 - Befehlsausführung

Dies ist der Haupthandler, den der Angreifer zur Befehlsausführung auf dem Zielrechner verwendet. Es funktioniert, indem es neue Prozesse erzeugt und die Ausgabe über Windows-Pipes zurückgibt. Dies ist ein Kernmerkmal der meisten Hintertüren, die von Angreifern für den direkten Zugriff auf die Umgebung, zur lateralen Bewegung und zur Ausführung zusätzlicher Nutzlasten verwendet werden.

Die folgende Abbildung zeigt den Prozessbaum von NANOREMOTE, wenn dieser Handler aufgerufen wird. Die Malware startet cmd.exe, welches wiederum den angegebenen Befehl ausführt – in diesem Fall whoami.exe.

Handler #22 - Kodiertes PE aus dem Speicher ausführen

Dieser Handler lädt und führt eine Base64-kodierte PE-Datei innerhalb des bestehenden NANOREMOTE-Prozesses aus. Die kodierte PE-Datei wird vom C2-Server über das Feld pe_data bereitgestellt. Falls das Programm Kommandozeilenargumente benötigt, wird der Schlüssel (arguments) verwendet.

Nachfolgend ein Beispiel, das die Konsolenausgabe des Testprogramms zeigt:

Ähnlichkeit zu FinalDraft

Zwischen FINALDRAFT und NANOREMOTE gibt es sowohl hinsichtlich der Codeähnlichkeit als auch des Verhaltens Überschneidungen.

Viele Funktionen weisen eine klare Code-Wiederverwendung zwischen den beiden Implantaten auf. Beispielsweise folgen beide der gleichen Abfolge von Generierung einer GUID mittels CoCreateGuid, Hashing dieser GUID mit der Fowler-Noll-Vo (FNV) -Funktion und Durchführung identischer Heap-Validierungsprüfungen vor der Freigabe des Puffers.

Ein Großteil des HTTP-bezogenen Codes, der zum Senden und Empfangen von Anfragen verwendet wird, deutet ebenfalls auf Ähnlichkeit hin. Nachfolgend ein Beispiel eines Kontrollflussdiagramms, das den Aufbau/die Konfiguration einer HTTP-Anfrage zeigt, die von beiden Malware-Familien verwendet wird.

Bei unserer Analyse stellten wir fest, dass der WMLOADER die entsprechende Nutzlast aus einer fest codierten Datei namens wmsetup.log entschlüsselt – dem gleichen Dateinamen, den der PATHLOADER für die Bereitstellung von FINALDRAFT verwendete, das wir Anfang des Jahres veröffentlicht haben .

Ein weiteres interessantes Ergebnis ist, dass wir eine Beispieldatei (wmsetup.log) entdeckt haben. von VirusTotal, kürzlich hochgeladen von den Philippinen am 03.10.2025.

Wir haben die Datei heruntergeladen, sie neben WMLOADER platziert und anschließend den Loader ausgeführt. Die wmsetup.log -Datei wurde erfolgreich entschlüsselt und ein FINALDRAFT-Implantat aufgedeckt.

Unten sehen Sie eine Grafik, die nebeneinander zeigt, dass derselbe AES-Schlüssel verwendet wird, um sowohl FINALDRAFT als auch NANOREMOTE erfolgreich zu entschlüsseln.

Unsere Hypothese ist, dass WMLOADER denselben fest codierten Schlüssel verwendet, da es Teil desselben Build-/Entwicklungsprozesses ist, der es ihm ermöglicht, mit verschiedenen Nutzdaten zu arbeiten. Es ist unklar, warum die Bedrohungsgruppe hinter diesen Implantaten den Schlüssel nicht wechselt; möglicherweise geschieht dies aus Bequemlichkeit oder um Tests durchzuführen. Dies scheint ein weiteres starkes Indiz dafür zu sein, dass FINALDRAFT und NANOREMOTE eine gemeinsame Codebasis und Entwicklungsumgebung nutzen.

NANOREMOTE über MITRE ATT&CK

Elastic verwendet das MITRE ATT&CK-Framework , um gängige Taktiken, Techniken und Verfahren zu dokumentieren, die Bedrohungen gegen Unternehmensnetzwerke einsetzen.

Taktiken

Taktiken stellen das Warum einer Technik oder Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für die Ausführung einer Aktion.

Techniken

Techniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt.

Minderung von NANOREMOTE

In einer Laborumgebung, in der NANOREMOTE ausgeführt wurde, wurden mithilfe von Elastic Defend zahlreiche verschiedene Warnmeldungen ausgelöst.

Eines der wichtigsten Verhaltensweisen, die von Verteidigern überprüft werden müssen, ist der Missbrauch legitimer Dienste wie der Google Drive API. Nachfolgend ein Beispiel für eine Warnung, die durch die Regel „Verbindung zu häufig missbrauchten Webdiensten“ ausgelöst wird, wenn mit der Google API sowohl für das Herunterladen als auch für das Hochladen von Dateien über NANOREMOTE interagiert wird.

Die PE-Ladetechnik, bei der die Base64-kodierte Datei vom C2-Server verwendet wurde, wurde ebenfalls über Memory Threat Detection Alert: Shellcode Injection -Warnung erkannt.

Erkennung/Prävention

YARA

Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren.

rule Windows_Trojan_NanoRemote_7974c813 {
    meta:
        author = "Elastic Security"
        creation_date = "2025-11-17"
        last_modified = "2025-11-19"
	 license = "Elastic License v2"
        os = "Windows"
        arch = "x86"
        threat_name = "Windows.Trojan.NanoRemote"

    strings:
        $str1 = "/drive/v3/files/%s?alt=media" ascii fullword
        $str2 = "08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X" ascii fullword
        $str3 = "NanoRemote/" wide
        $str4 = "[+] pwd output:" wide
        $str5 = "Download task %s failed: write error (wrote %llu/%zu bytes)"
        $seq1 = { 48 83 7C 24 28 00 74 ?? 4C 8D 4C 24 20 41 B8 40 00 00 00 BA 00 00 01 00 48 8B 4C 24 28 FF 15 ?? ?? ?? ?? 85 C0 }
        $seq2 = { BF 06 00 00 00 89 78 48 8B 0D ?? ?? ?? ?? 89 48 ?? FF D3 89 78 78 8B 0D ?? ?? ?? ?? 89 48 7C FF D3 89 78 18 8B 0D }
    condition:
        4 of them
}
rule Windows_Trojan_WMLoader_d2c7b963 {
    meta:
        author = "Elastic Security"
        creation_date = "2025-12-03"
        last_modified = "2025-12-03"
       license = "Elastic License v2"
        os = "Windows"
        arch = "x86"
        threat_name = "Windows.Trojan.WMLoader"
        reference_sample = "fff31726d253458f2c29233d37ee4caf43c5252f58df76c0dced71c4014d6902"

    strings:
        $seq1 = { 8B 44 24 20 FF C0 89 44 24 20 81 7C 24 20 01 30 00 00 }
        $seq2 = { 41 B8 20 00 00 00 BA 01 30 00 00 48 8B 4C C4 50 FF 15 }
    condition:
        all of them
}

Beobachtungen

Die folgenden Observablen wurden in dieser Studie diskutiert.

ÜberwachbarTypNameReferenz
fff31726d253458f2c29233d37ee4caf43c5252f58df76c0dced71c4014d6902SHA-256BDReinit.exeWMLOADER
999648bd814ea5b1e97918366c6bd0f82b88f5675da1d4133257b9e6f4121475SHA-256ASDTool.exeWMLOADER
35593a51ecc14e68181b2de8f82dde8c18f27f16fcebedbbdac78371ff4f8d41SHA-256mitm_install_tool.exeWMLOADER
b26927ca4342a19e9314cf05ee9d9a4bddf7b848def2db941dd281d692eaa73cSHA-256BDReinit.exeWMLOADER
57e0e560801687a8691c704f79da0c1dbdd0f7d5cc671a6ce07ec0040205d728SHA-256Nanofernbedienung