Share
Beitragsbild zu Neues Botnetz „NightshadeC2“ entdeckt: Umgehung von Windows Defender durch „UAC Prompt Bombing“

Neues Botnetz „NightshadeC2“ entdeckt: Umgehung von Windows Defender durch „UAC Prompt Bombing“

5. September 2025

Im August 2025 hat die Threat Response Unit (TRU) des Sicherheitsunternehmens eSentire ein neues Botnetz identifiziert. Unter dem Namen „NightshadeC2“ verbreitet es sich über einen Loader, der eine effektive Methode einsetzt, um Malware-Analyse-Sandboxes zu umgehen. Die Technik, die von den Forschenden als „UAC Prompt Bombing“ bezeichnet wird, soll außerdem Windows Defender austricksen.

Die TRU registrierte Varianten der Schadsoftware in C und Python, die mit einem bisher unbekannten Command-and-Control-Framework (C2) kommunizieren. Während die C-Version vor allem die TCP-Ports 7777, 33336, 33337 und 443 nutzt, setzen Python-Varianten überwiegend auf Port 80.

Funktionen des Botnetzes

NightshadeC2 bietet zahlreiche Möglichkeiten zur Manipulation infizierter Systeme, darunter:

  • Reverse Shell über Eingabeaufforderung oder PowerShell

  • Download und Ausführung von DLL- und EXE-Dateien

  • Selbstlöschung

  • Fernsteuerung

  • Bildschirmaufnahmen

  • Verborgene Webbrowser

  • Keylogging und Zugriff auf die Zwischenablage

Einige Versionen sind zudem in der Lage, Passwörter und Cookies aus Gecko- und Chromium-basierten Browsern zu stehlen. Die Python-Variante zeigt im Vergleich deutlich weniger Funktionen und beschränkt sich auf Selbstlöschung, Download/Ausführung und Reverse-Shell.

Infektionswege

Als Einstiegsvektor wurde der sogenannte ClickFix-Ansatz beobachtet: Nutzer sehen ein Captcha und werden dazu gebracht, einen schädlichen Befehl in der Windows-Eingabeaufforderung auszuführen. Zusätzlich fanden die Forschenden in OSINT-Quellen manipulierte Installationspakete gängiger Programme wie Advanced IP Scanner, ExpressVPN, HyperSecure VPN, CCleaner und Everything, die ebenfalls als Verbreitungsweg dienten.

Analyse der zweiten Stufe von PowerShell

In der zweiten Stufe des Angriffs wird ein .NET-basierter Loader heruntergeladen/entschlüsselt, das Modul mit Assembly.Load geladen und die Methode ExclusionAndAutorun.PayloadExecutor.Run aufgerufen. Diese Methode ist dafür zuständig, die C-Variante von NightshadeC2 in der letzten Stufe herunterzuladen/zu entschlüsseln und sie mithilfe einer Technik, die wir als „UAC Prompt Bombing“ bezeichnen, aus Windows Defender auszuschließen.

Analyse des .NET-basierten Ladeprogramms

Obwohl sich das Ladeprogramm zwischen den einzelnen Samples unterscheidet, hat TRU ein verschleiertes .NET-basiertes Ladeprogramm (verfügbar hier) beobachtet, das eine While-Schleife implementiert, um einen PowerShell-Befehl in einem neuen Prozess auszuführen. In einer neueren Version des Ladeprogramms wird stattdessen eine UAC-Umgehung verwendet, aber darauf kommen wir später noch zu sprechen.

Der von diesem speziellen Beispiel verwendete Befehl versucht, in Windows Defender eine Ausnahme für die endgültige Nutzlast hinzuzufügen, die noch nicht auf die Festplatte geschrieben wurde. Der Loader überprüft dann den Exit-Code des PowerShell-Prozesses. Wenn der Code 0 ist (was auf Erfolg hinweist), wird die nächste Stufe – in der Regel NightshadeC2 – ausgeliefert. TRU hat jedoch auch Berichte erhalten, dass derselbe Loader zur Verbreitung von Lumma Stealer verwendet wird.

Wenn der PowerShell-Prozess einen anderen Exit-Code als 0 zurückgibt, wird die While-Schleife weiter ausgeführt, wodurch der Benutzer effektiv gezwungen wird, die UAC-Eingabeaufforderung (User Account Control) zu bestätigen, da sonst Probleme mit der Systemverwendbarkeit auftreten. TRU bezeichnet diese Technik als UAC Prompt Bombing.

Ein besonders bemerkenswerter Aspekt dieses Ansatzes ist, dass Systeme, bei denen der WinDefend (Windows Defender)-Dienst deaktiviert ist, Exit-Codes ungleich Null generieren, wodurch Malware-Analyse-Sandboxes in der Ausführungsschleife gefangen werden. TRU hat bestätigt, dass mehrere Sandbox-Umgebungen mit dieser trivialen Technik erfolgreich umgangen werden können.

Obwohl die spezifischen Tests nicht erschöpfend waren, ist es sehr wahrscheinlich, dass andere Sandbox-Lösungen ähnlich anfällig für diese Umgehungsmethode sind.

  • Joe Sandbox
  • CAPEv2 Sandbox
  • Hatching Triage
  • Any.Run

Der Loader umgeht effektiv:

  • Sandboxes, bei denen der Microsoft Defender-Dienst (WinDefend) beendet wurde
  • Windows Defender, wenn das Opfer die UAC-Eingabeaufforderung akzeptiert

Opfer, die in der UAC-Eingabeaufforderung auf „Details anzeigen“ klicken, können den bösartigen PowerShell-Befehl sehen. Durch Auswahl von „Nein“ werden wiederholt Eingabeaufforderungen ausgelöst, bis „Ja“ ausgewählt wird – eine Technik, die als UAC-Eingabeaufforderungsbombardierung bezeichnet wird.

In den folgenden Abbildungen sehen wir die Routine, die das Hinzufügen der Windows Defender-Ausnahme über einen neuen PowerShell-Prozess und die Rückgabe des Exit-Codes des PowerShell-Prozesses übernimmt.

Vor dem Start der Payload der letzten Stufe stellt der Loader die Persistenz über drei verschiedene Registrierungsschlüssel her: Winlogon, RunOnce und Active Setup. In den Abbildungen wird die Payload der letzten Stufe mit dem erforderlichen Argument 0x8c41db6c gestartet – wahrscheinlich, um eine Analyse durch Sicherheitsforscher und Malware-Sandboxes zu vermeiden.

Sandbox-Umgehung PoC

TRU hat einen Proof of Concept (PoC) erstellt, der hier verfügbar ist, um die in dem oben genannten Loader gefundene Umgehungsmöglichkeit zu demonstrieren. Wenn der Windows Defender-Dienst (WinDefend) beendet wird, ist die Umgehung erfolgreich. Der PoC umfasst etwa 50 Zeilen Code und verwendet dieselbe Logik wie der Loader, wobei eine While-Schleife weiterhin eine UAC-Eingabeaufforderung anzeigt, um das Opfer zu zwingen, eine Ausnahme für die endgültige Nutzlast festzulegen.

Die folgende Abbildung zeigt, wie der PoC die endgültige Nutzlast entschlüsselt und ausführt. Beachten Sie, dass es sich bei der endgültigen Nutzlast lediglich um eine Messagebox-Anwendung handelt, die die EICAR-Zeichenfolge ausgibt. Da die schädliche Datei bereits zur Ausschlussliste von Windows Defender hinzugefügt wurde, kann sie ausgeführt werden, ohne Sicherheitswarnungen auszulösen!

Analyse der NightshadeC2-Nutzlast

Die betreffende Datei (updater.exe) ist gepackt und führt ein Modul-Stomping von shell32.dll durch, um die NightshadeC2-Nutzlast auszuführen. Zunächst fragt die Malware ip-api[.]com ab, um die externen IP-Informationen des Opfers zu erfassen, darunter das Land und den VPN-Status – wahrscheinlich, um Sicherheitsforscher und Sandbox-Umgebungen zu umgehen.

Nachdem die RC4-verschlüsselte Schlüsselzeichenfolge zur Autorisierung an den C2 gesendet wurde, wird der Fingerabdruck-Callback der Malware durch die folgenden Schritte gebildet.

Ruft den Namen des Betriebssystems des Opfers über den Registrierungsschlüssel/-wert ab:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName

Fragt das aktuelle Prozesstoken ab, um festzustellen, ob der Prozess mit erhöhten Berechtigungen ausgeführt wird.

Ruft die MachineGuid des betroffenen Betriebssystems aus dem Registrierungsschlüssel/Wert ab:HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid

Ruft die APIs „GetUserNameW“ und „GetComputerNameExW“ auf, um den Benutzernamen, den Computernamen und die Domäne des Opfers abzurufen.

Die Struktur dieses Callbacks nach der Entschlüsselung aus RC4 ist in der folgenden Abbildung mit Anmerkungen dargestellt.

Die folgende Abbildung zeigt einen kommentierten PCAP-TCP-Stream zwischen NightshadeC2 und einer Sandbox-Umgebung innerhalb von VirusTotal aus dem hier verfügbaren PCAP. Das erste Paket, das der Client an den C2 sendet, ist die RC4-verschlüsselte RC4-Passphrase RandOmKey322666B, gefolgt von den Bytes 01 00 00 00.

Dies dient als Autorisierungsschritt, um die weitere Kommunikation mit dem C2 zu ermöglichen. Der C2 antwortet dann mit der RC4-verschlüsselten Passphrase als Bestätigung des korrekten Schlüssels, und der Client sendet die Fingerabdruckinformationen für das Gerät des Opfers.

Cyberchef und die RC4-Operation mit der Passphrase, die auf den in der Nutzlast gefundenen Schlüssel gesetzt ist, ermöglichen die Entschlüsselung des Datenverkehrs zum und vom C2. In diesem Fall lautete der RC4-Schlüssel RandOmKey322666B.

Die Malware ruft dann die API „SetThreadExecutionState“ mit den unten aufgeführten Flags auf, um zu verhindern, dass der Computer des Opfers in den Ruhezustand wechselt.

SetThreadExecutionState(ES_CONTINUOUS | ES_AWAYMODE_REQUIRED | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);

Die Malware erstellt dann einen neuen Thread, um Funktionen zum Sammeln von Zwischenablageinhalten und zur Protokollierung von Tastenanschlägen einzurichten. Die gesammelten Zwischenablageinhalte und Tastenanschläge werden in eine versteckte Protokolldatei geschrieben, deren Pfad von Beispiel zu Beispiel variiert.

In dem konkreten Fall, der bei dem Vorfall beobachtet wurde, werden die folgenden Protokolldateien verwendet:

  • %LOCALAPPDATA%\JohniiDepp – Wird verwendet, wenn das Token des Prozesses erhöht ist
  • %LOCALAPPDATA%\LuchiiSvet – „RaysLight” auf Russisch, wird verwendet, wenn das Token des Prozesses NICHT erhöht ist

Die Keylogging- und Clipboard-Harvesting-Funktionen werden über einen neuen Thread eingerichtet, der über die API „CreateWindowExW“ ein verstecktes Fenster erstellt und über „RegisterClassExW“ einen Callback registriert, um an das Fenster gesendete Nachrichten zu verarbeiten.

Die wichtigsten Parameter werden im Folgenden beschrieben:

CreateWindowExW(
    0x80u, // dwExStyle == WS_EX_TOOLWINDOW - Hides the window from the victim's taskbar/ALT+TAB
    ClassName, // lpClassName == L"IsabellaWine" - Specific class name used for the window, does not appear to change between samples
    0LL, // lpWindowName == NULL - No window title text
    0, // dwStyle == WS_OVERLAPPED - Omits WS_VISIBLE flag so window is hidden
    ...

Anschließend wird die API „AddClipboardFormatListener“ aufgerufen, um das Fenster in die Listener-Liste für das Zwischenablageformat aufzunehmen, sodass das Fenster „WM_CLIPBOARDUPDATE“-Meldungen empfangen kann. Dadurch kann das Fenster im Wesentlichen den Inhalt der Zwischenablage des Opfers erfassen, wenn sich dieser ändert.

Um die Tastenanschläge des Opfers zu erfassen, wird die API „SetWindowsHookExW“ aufgerufen, um eine Hook-Prozedur in die Hook-Kette zu installieren, eine häufig verwendete API für Keylogging.

Die wichtigsten Parameter werden im Folgenden beschrieben:

SetWindowsHookExW(
    13, // idHook == WH_KEYBOARD_LL - Installs a hook procedure that monitors low-level keyboard input events.
    (HOOKPROC)fn, // lpfn == Pointer to the hook procedure that captures keystrokes,
...

Die Hook-Prozedur überprüft zunächst, ob die gedrückten Tasten nicht Strg+c oder Strg+v sind, wandelt dann die virtuelle Taste in das zugehörige Unicode-Zeichen um und schreibt es zusammen mit dem über GetWindowTextW abgerufenen Fenstertitel des aktuellen Fensters in die Protokolldatei, wodurch die Angreifer einen Kontext darüber erhalten, in welchem Fenster die Tastenanschläge eingegeben wurden.

Nachfolgend finden Sie eine Vorschau einer Beispiel-Keylog-/Zwischenablage-Protokolldatei. Diese zeigt, welche Inhalte Angreifer sehen würden, nachdem sie die Datei vom Computer des Opfers abgerufen haben, darunter der Titel des aktiven Fensters und der Inhalt der Zwischenablage/Tastenanschläge.

Als Nächstes beginnt die Malware mit der Verarbeitung von Befehlen vom C2. Die Liste der Befehle, die je nach Sample variieren kann, finden Sie in der folgenden Tabelle.

Command Description
1 Pong / Keep Alive
4 or 8 Reverse Shell via Command Prompt/PowerShell
48 Upload attacker-specified file(s) from victim device
49 Download/execute DLL or EXE
89 Connect to new C2
90 Self deletion
128 Create mutex, start hidden desktops/browsers (Firefox, Chrome, Brave, Edge) or a Run Prompt in a specified desktop
150 Upload captured victim keystrokes/clipboard contents from the hidden log file to the C2
201/202 Screen capturing
205 Remote control capability: copy/paste from attacker to victim, simulate keyboard/mouse input via SendInput API

Der gezeigte Code erstellt eine Reverse-Shell-Verbindung zum C2-Server, indem er einen versteckten Befehlszeilen- oder PowerShell-Prozess startet. Er konfiguriert Pipes als Handles für die Streams stdin, stdout und stderr des Prozesses, sodass der C2-Server Befehle senden und Ausgaben von der Shell des kompromittierten Systems empfangen kann.

Die Funktionsweise der Kopier-/Einfügefunktion ist in der folgenden Abbildung dargestellt, in der die Malware eine Anfrage an den C2 für den Ersatztext sendet und diesen über die Windows-API SetClipboardData ersetzt, bevor sie SendInput aufruft, um die Tastenkombination Strg+V zu senden.

Die nächste Abbildung zeigt den Code, der für das Starten eines versteckten Webbrowsers oder einer Eingabeaufforderung verantwortlich ist. Abhängig von den Flags aus dem C2 wird der angegebene Webbrowser in einem neuen oder bestehenden Desktop gestartet, wobei Google Chrome, Microsoft Edge, Firefox und Brave unterstützt werden.

Firefox wird mit dem Parameter -no-delevate gestartet, während Chromium-basierte Browser –mute-audio –do-not-deelevate verwenden. Diese Befehlszeilenargumente stellen die ordnungsgemäße Funktionalität des Browsers sicher, wenn er mit erhöhten Rechten gestartet wird.

Wenn das C2 das Flag zum Starten einer Eingabeaufforderung anstelle eines Webbrowsers angibt, wird der folgende Prozess gestartet:

"C:\Windows\System32\rundll32.exe" "C:\Windows\System32\shell32.dll" #61

NightshadeC2 Python-Variante

TRU hat festgestellt, dass Angreifer möglicherweise ein LLM verwendet haben, um die C-basierte Malware in Python zu konvertieren. Die Python-Variante behält einen Teil der Funktionen bei, darunter Download/Ausführung, Selbstlöschung und Reverse-Shell-Fähigkeiten.

Dieser Ansatz trägt wahrscheinlich dazu bei, der Erkennung zu entgehen, da VirusTotal zeigt, dass nur wenige Anbieter Python-Varianten identifizieren. Die Abbildung zeigt, wie der Python-Code nahezu identische API-Aufrufe wie sein C-Pendant verwendet, um die externe IP-Adresse und Betriebssysteminformationen des Opfers zu erfassen, bevor er diese in der in Abbildung 17 oben gezeigten Struktur an den C2-Server sendet.

Die nächste Abbildung zeigt die Logik der Befehlsverarbeitung, bei der die Fingerabdruckinformationen an den C2 gesendet und ein Thread gestartet wird, um den C2 anzupingen. Dieses Verhalten ist in der C-Variante identisch.
Das Skript verarbeitet drei Befehle (unten in der Reihenfolge aufgeführt), darunter: Ping, Reverse Shell, Herunterladen/Ausführen einer DLL oder EXE und Selbstlöschung.

Steam-Profil für C2

Wie andere Malware nutzen auch einige Nightshade-Varianten (einschließlich der Python-Varianten) Steam-URLs, um den C2 zu erfassen. Dadurch können Angreifer ihren C2 spontan ändern, während die Steam-URL unverändert bleibt. Die folgenden Abbildungen veranschaulichen diese Suche in der Malware und zeigen den C2 „programsbookss[.]com“ in den Metadaten des Steam-Profils.

UAC-Umgehungen

TRU hat zwei verschiedene UAC-Umgehungstechniken beobachtet, die in Kampagnen verwendet werden. Die erste wurde in einer NightshadeC2-Nutzlast gefunden und nutzt eine UAC-Umgehung aus dem Jahr 2019 zur Privilegienerweiterung, die das Verhalten des RPC-Servers missbraucht, der die UAC-Funktion implementiert. Ein PoC der Umgehung ist hier auf Github verfügbar.

Der zweite UAC-Bypass nutzt die hier beschriebene Technik und wurde in einer neuen Version des .NET-basierten Loaders implementiert, wo er überprüft, ob das System ein älteres Betriebssystem als Windows 11 ausführt. Ist dies der Fall, startet er die folgenden LOLBin-Prozesse, um die Berechtigungen zu erweitern. Kurz darauf fügt er eine Ausnahme in Windows Defender für die endgültige Payload hinzu, wodurch die Erweiterung durch die UAC-Eingabeaufforderung vermieden wird.

reg add "HKCU\Environment" /v windir /t REG_SZ /d "<REDACTED_PAYLOAD_PATH> /1" /f
schtasks /Run /i /TN "\Microsoft\Windows\DiskCleanup\SilentCleanup"
reg delete "HKCU\Environment" /v windir /f

Yara-Regeln

rule NightshadeC2_Win_x64
{
    meta:
        author = "YungBinary"
        description = "Detects NightshadeC2 in memory"

    strings:
        $a = "camera!" wide
        $b = "keylog.txt" wide
        $c = "powershell Start-Sleep -Seconds 3; Remove-Item -Path %ws -Force" wide
        $d = "MachineGuid" wide
        $e = "[%02d:%02d %02d.%02d.%02d] %ws"

    condition:
        4 of them
}
rule NightshadeC2_Python_Win
{
    meta:
        author = "YungBinary"
        description = "Detects PyNightshade on disk"

    strings:
        $s1 = "Winhttp.WinHttpOpenRequest(hConnect, \"GET\", \"line/?fields=" ascii
        $s2 = "MachineGuid" ascii
        $s3 = "i = (i + 1) % 256" ascii

    condition:
        all of them
}
Was können Sie aus diesem TRU Positive lernen?
  • NightshadeC2 ist eine neue Botnet-/Infostealer-Malware mit umfassender Funktionalität: Systemsteuerungsfunktionen, Überwachung von Tastenanschlägen/Zwischenablage, Reverse-Shell-Zugriff, Ausführung von Payloads und Diebstahl von Anmeldedaten aus Browsern.
  • Die Verbreitung erfolgt über zwei Methoden: ClickFix nutzt Landingpages mit dem Thema booking[.]com und trojanisierte legitime Software wie CCleaner, Advanced IP Scanner, Everything und VPN-Setup-Pakete.
  • Technischer Hinweis: In Analyseumgebungen mit deaktiviertem Windows Defender-Schutz kann die Loader-Komponente nicht ordnungsgemäß ausgeführt werden.
  • Angreifer nutzen weiterhin bestehende und neue Umgehungsmöglichkeiten für die Benutzerkontensteuerung (User Account Control, UAC), um Windows Defender zu umgehen.

Indikatoren für Kompromittierung

  • Indikatoren für Kompromittierung finden Sie hier.

Vielleicht spannend für Sie


Bild/Quelle: https://depositphotos.com/de/home.html

Folgen Sie uns auf X

Folgen Sie uns auf Bluesky