← ALL FILES REPAIR · Analyses
Analyse NanoCore Client

Analyse statique.NET 32 bitsEazfuscator2026-10-13

Analyse statique du RAT NanoCore Client 1.2.2.0

L'échantillon est un client NanoCore RAT en .NET 32 bits, obfusqué avec Eazfuscator, dont la configuration chiffrée a été déchiffrée sans exécution : deux serveurs C2 sur le port 80, persistance par clé Run et tâche planifiée, et un plugin de surveillance (keylogger, vol de mots de passe). Analyse réalisée par Claude Sonnet 5.5 (claude-sonnet-5-5) via Claude Code, avec REA 6.4.0, Ghidra 12.1.4 et ILSpy.

Fichiers analysés

L'exécutable fait 207 872 octets et s'identifie comme NanoCore Client.exe version 1.2.2.0 ; son SHA-256 correspond à son nom de fichier.

FichierTaille (octets)SHA-256Nature
exe_rat.zip161 738e23f8a0562d63e66fe610dc9cc0572aa51510de6766fea84a62af1247056c3a6Archive ZIP chiffrée en AES (mot de passe infected)
51ef4a78…f6753.exe207 87251ef4a7863a921980f5c3f3522449faaf851c5a6c3f1c12e8cf186ce593f6753Échantillon principal : PE32 GUI, assembly .NET (CIL pur)
plugin_19968.dll.bin19 96861e9d5c0727665e9ef3f328141397be47c65ed11ab621c644b5bbf1d67138403Bibliothèque de base des plugins (NanoCore.ClientPlugin)
plugin_SurveillanceEx_100352.dll.bin100 35201e3b18bd63981decb384f558f0321346c3334bb6e6f97c31c6c95c4ab2fe354Plugin « SurveillanceEx »
uac_task_template.xml1 278311a6b79025c4a4f65fc57f5c34fce6b3c51c9b8088f40d247be589d2a9ce817Modèle XML de tâche planifiée (contournement d'UAC)

Autres empreintes de l'échantillon : MD5 292bc05e8da008c1c146069c53782afb, SHA-1 ecc8c355ebc50034a371f1b18dca073cc2b5181e. Autres empreintes de l'archive : MD5 fe534166ebba6601caae7474e282a5ea, SHA-1 babdd5c22dc4c7316e0ea027b933168f040f5856.

Caractéristiques de l'échantillon : 3 sections, 71 types, 464 méthodes, 19 imports P/Invoke, non signé, point d'entrée ClientLoaderForm.Main. MVID 426fff4d-c208-4bdc-b784-e45b84513c2d, GUID d'assembly 6d55dc7f-761f-447b-bef5-4a3b649a2621, date de build lue dans la configuration : 2026-10-08 13:13 UTC.

Méthode

L'analyse est entièrement statique : l'échantillon n'a jamais été exécuté et aucun réseau n'a été contacté.

  1. Extraction. unzip ne gère pas le chiffrement AES de l'archive et 7z était absent ; l'archive a été ouverte avec pyzipper dans un environnement Python temporaire, puis identifiée avec file et sha256sum.
  2. Inspection avec REA 6.4.0. Les commandes inspect-managed-artifact, inspect-managed-members, inspect-managed-native-boundaries et inspect-pe-resources ont donné l'identité du fichier, 2 252 appels entre méthodes, 19 imports natifs et une ressource RT_RCDATA d'entropie 8,0.
  3. Ghidra 12.1.4. Import réussi (403 procédures), mais son décompilateur lit le bytecode CIL comme du x86 et produit du pseudo-code inutilisable ; il n'a servi qu'à confirmer la structure.
  4. Décompilation CIL. ilspycmd 8.2.0.7535 a produit environ 9 900 lignes de C#.
  5. Déchiffrement de la configuration. PBKDF2 (SHA-1, 8 itérations) initialisé avec le GUID d'assembly donne la clé et l'IV d'un AES-128-CBC ; il livre une clé DES de 8 octets, qui déchiffre ensuite les données (Deflate puis sérialiseur maison).
  6. Décodage des 189 chaînes. La routine d'Eazfuscator a été réécrite en Python à partir du code décompilé, sans exécuter celui de l'échantillon. Deux constantes internes (1607814 et 1611930) sont retrouvées à l'identique et les 189 chaînes donnent du texte lisible.

Configuration extraite

Les serveurs C2 sont pg999asia[.]net et pg999slot2022[.]com, tous deux sur le port 80 ; les valeurs ci-dessous sont lues directement après déchiffrement.

ParamètreValeur
C2 primairepg999asia[.]net:80
C2 de secourspg999slot2022[.]com:80
GroupeVietNamBlackHat
Mutex79b88cab-4b67-435c-bffd-973c7016a4f3
Version1.2.2.0
DNS personnalisés8.8.8.8 et 8.8.4.4
ActivéRunOnStartup, RequestElevation, BypassUserAccountControl, ClearZoneIdentifier, PreventSystemSleep, EnableDebugMode, KeyboardLogging
DésactivéSetCriticalProcess, ClearAccessControl, ActivateAwayMode
Délais (ms)connexion 4000, redémarrage 5000, keep-alive 30000, LAN 2500, WAN 8000
Tampon / paquet max (octets)65 535 / 10 485 760

La configuration embarque aussi deux assemblies .NET (les plugins) et un modèle XML de tâche planifiée exécutée avec les privilèges maximaux.

Comportement

Le client s'installe discrètement, s'élève, persiste, puis attend les ordres de l'opérateur ; les plugins sont chargés en mémoire.

Plugin SurveillanceEx

Ses commandes et ses imports natifs montrent un module de surveillance complet ; le fonctionnement détaillé est déduit des noms et des API, pas retracé de bout en bout.

Indicateurs de compromission

Les domaines sont écrits sous forme défangée ([.]) pour éviter tout clic accidentel.

TypeValeur
SHA-256 de l'échantillon51ef4a7863a921980f5c3f3522449faaf851c5a6c3f1c12e8cf186ce593f6753
SHA-256 du plugin de base61e9d5c0727665e9ef3f328141397be47c65ed11ab621c644b5bbf1d67138403
SHA-256 du plugin SurveillanceEx01e3b18bd63981decb384f558f0321346c3334bb6e6f97c31c6c95c4ab2fe354
Domaines C2 (port 80)pg999asia[.]net, pg999slot2022[.]com
Mutex79b88cab-4b67-435c-bffd-973c7016a4f3
GroupeVietNamBlackHat
GUID d'assembly6d55dc7f-761f-447b-bef5-4a3b649a2621
MVID426fff4d-c208-4bdc-b784-e45b84513c2d
Artefacts sur l'hôteentrée ...\CurrentVersion\Run, tâche créée par schtasks.exe /create ... /xml, fichiers *.dat et client.log

Limites et recommandations

La configuration et les chaînes sont fiables car lues après déchiffrement ; le comportement des plugins est déduit et n'a pas été observé.

Limites

Recommandations

  1. Bloquer les deux domaines C2 au niveau DNS et proxy, et les rechercher dans les journaux.
  2. Chercher le mutex, les tâches planifiées créées avec /xml, les entrées Run récentes et les fichiers *.dat ou client.log dans les profils utilisateurs.
  3. Ajouter les trois hachages aux listes de blocage de l'EDR.
  4. En cas d'infection avérée, considérer comme compromis les mots de passe saisis ou enregistrés et le contenu du presse-papiers.
  5. Compléter par une analyse dynamique en laboratoire isolé et une analyse complète du plugin SurveillanceEx.