RAT Telegram basé sur Rebex ciblant le Vietnam
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Un fichier CHM malveillant livré dans une archive ZIP déploie un exécutable Python véreux ainsi qu’un DLL C++ qui déchiffre une charge utile intégrée. Cette charge établit une persistance via un détournement de la shell Winlogon, une tâche planifiée et l’abus de MSBuild, puis lance un RAT Telegram basé sur .NET. Le malware communique avec un bot Telegram à l’aide d’un jeton codé en dur et supporte l’exécution de commandes, le remplacement de jeton et le téléchargement de fichiers. La campagne a été observée ciblant des victimes au Vietnam sans détections actuelles sur VirusTotal.
Enquête
L’analyse du fichier CHM a révélé un script qui a décompilé l’archive, effacé PYTHONHOME, et lancé un exécutable Python renommé avec un fichier de bytecode compilé. Le bytecode a ensuite chargé un DLL qui a déchiffré un blob DOCX crypté, extrait des composants supplémentaires et les a écrits dans des emplacements temporaires. Le DLL a créé des entrées dans le registre, planifié une tâche nommée Doute, et exécuté un MSBuild fichier XML pour charger un second DLL, qui a finalement déployé le RAT Telegram .NET. Le RAT reposait sur des identifiants de bot Telegram codés en dur pour le commandement et le contrôle.
Atténuation
Les défenseurs doivent bloquer l’exécution de fichiers CHM provenant de sources non fiables et restreindre l’utilisation de hh.exe, msbuild.exe, et PowerShell pour les scripts non signés ou suspects. La surveillance devrait se concentrer sur les modifications du registre Shell de Winlogon, la création de tâches planifiées inhabituelles, et les nouveaux DLL déposés dans les répertoires temporaires. Les organisations devraient également examiner le trafic API Telegram via les contrôles de proxy et appliquer un accès de moindre privilège pour les utilisateurs finaux.
Réponse
Et la tâche planifiée doivent être supprimées, les fichiers déposés effacés, et les paramètres du registre modifiés rétablis à un état sain connu. Tout jeton de bot Telegram exposé doit être immédiatement remplacé, et les défenseurs doivent continuer à surveiller toute activité supplémentaire de commandement et de contrôle. Une enquête judiciaire complète est recommandée pour déterminer si des données ont été exfiltrées. Les équipes de sécurité doivent identifier et isoler les hôtes affectés, collecter les preuves volatiles, extraire les DLLs et scripts malveillants pour analyse. La valeur de modifications du registre Shell Winlogon
graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes initial_access[« <b>Technique</b> – <b>T1204.001 Exécution utilisateur : lien malveillant</b><br/><b>Description</b> : Les victimes cliquent sur un lien malveillant. »] class initial_access technique delivery_html_smuggling[« <b>Technique</b> – <b>T1027.006 Fichiers ou informations obfusqués : HTML Smuggling</b><br/><b>Description</b> : JavaScript malveillant caché dans une page web. »] class delivery_html_smuggling technique delivery_compile_after[« <b>Technique</b> – <b>T1027.004 Compilation après livraison</b><br/><b>Description</b> : Charge utile assemblée après livraison. »] class delivery_compile_after technique delivery_embedded_payloads[« <b>Technique</b> – <b>T1027.009 Charges utiles intégrées</b><br/><b>Description</b> : Charge cachée dans d’autres fichiers. »] class delivery_embedded_payloads technique delivery_deobfuscate[« <b>Technique</b> – <b>T1140 Déobfuscation / décodage</b><br/><b>Description</b> : Décodage Base64 dans le navigateur. »] class delivery_deobfuscate technique persistence_run_key[« <b>Technique</b> – <b>T1127.002 Exécution proxy outils développeur</b> »] class persistence_run_key technique persistence_appcert[« <b>Technique</b> – <b>T1546.009 DLL AppCert</b> »] class persistence_appcert technique recon_hardware[« <b>Technique</b> – Collecte d’informations matériel »] class recon_hardware technique recon_firmware[« <b>Technique</b> – Collecte d’informations firmware »] class recon_firmware technique c2_web_protocols[« <b>Technique</b> – Protocole web C2 »] class c2_web_protocols technique c2_bidirectional[« <b>Technique</b> – Communication bidirectionnelle »] class c2_bidirectional technique c2_oneway[« <b>Technique</b> – Communication unidirectionnelle »] class c2_oneway technique c2_encrypted[« <b>Technique</b> – Canal chiffré »] class c2_encrypted technique c2_data_encoding[« <b>Technique</b> – Encodage des données »] class c2_data_encoding technique c2_config_repo[« <b>Technique</b> – Dépôt de configuration »] class c2_config_repo technique asset_drain[« <b>Technique</b> – Approvisionnement de tokens »] class asset_drain technique %% Tools / Processes tool_malicious_link[« <b>Outil</b> : Lien de phishing »] class tool_malicious_link tool tool_js_payload[« <b>Outil</b> : Payload JavaScript obfusqué »] class tool_js_payload tool process_installer[« <b>Processus</b> : Installateur Windows »] class process_installer process tool_node_exe[« <b>Outil</b> : node.exe »] class tool_node_exe tool tool_web3modal[« <b>Outil</b> : UI Web3Modal »] class tool_web3modal tool %% Connections unchanged initial_access –>|leads_to| delivery_html_smuggling delivery_html_smuggling –>|uses| tool_malicious_link delivery_html_smuggling –>|uses| tool_js_payload delivery_html_smuggling –>|enables| delivery_compile_after delivery_compile_after –>|enables| delivery_embedded_payloads delivery_embedded_payloads –>|triggers| delivery_deobfuscate delivery_deobfuscate –>|creates| process_installer process_installer –>|drops| persistence_run_key process_installer –>|may_use| persistence_appcert persistence_run_key –>|executes| tool_node_exe persistence_appcert –>|loads| tool_node_exe tool_node_exe –>|collects| recon_hardware tool_node_exe –>|collects| recon_firmware recon_hardware –>|feeds| c2_web_protocols recon_firmware –>|feeds| c2_web_protocols c2_web_protocols –>|supports| c2_bidirectional c2_web_protocols –>|supports| c2_oneway c2_bidirectional –>|uses| c2_encrypted c2_oneway –>|uses| c2_encrypted c2_encrypted –>|encodes| c2_data_encoding c2_data_encoding –>|stores_config_in| c2_config_repo c2_config_repo –>|provides| asset_drain asset_drain –>|uses| tool_web3modal
Flux d’attaque
Détections
Points de persistance possibles [ASEPs – Hive Software/NTUSER] (via événement de registre)
Voir
Arrêt utilisé pour forcer un arrêt ou un redémarrage du système (via la ligne de commande)
Voir
LOLBAS HH – Arguments suspects du programme exécutable d’aide HTML (via la ligne de commande)
Voir
Binaire / Scripts suspects dans l’emplacement de démarrage automatique (via événement de fichier)
Voir
Exécution possible en écrivant un fichier avec l’extension Microsoft Compiled HTML Help (.chm) (via événement de fichier)
Voir
Abus possible de Telegram en tant que canal de commande et de contrôle (via requête DNS)
Voir
IOCs (HashSha256) pour détecter : RAT Telegram basé sur Rebex ciblant le Vietnam
Voir
Exécution de fichier CHM menant à une activité malveillante [Création de processus Windows]
Voir
Exécution de simulation
Prérequis : Le Check pré-vol du télémetrie & baseline doit avoir été réussi.
Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit reflètent directement les TTPs identifiés et visent à générer la télémetrie exacte attendue par la logique de détection.
-
Narratif d’attaque & Commandes
-
Livraison : L’attaquant livre un
fichier .chm(nomméUpdateHelp.chm) au destinataire. -
Décompilation : La victime (ou un script malveillant) exécute
hh.exeavec le-decompileflag pour extraire la charge intégrée :hh.exe -decompile C:TempPayloads C:UsersPublicUpdateHelp.chmCela génère l’événement de création de processus que la règle surveille (
hh.exe+-decompile). -
Exécution de charge utile – Interprète renommé : Parmi les fichiers extraits se trouve un interprète Python renommé (
_pJifgWSwPi.exe). L’attaquant le lance viacmd.exepour rester discret :cmd.exe /c "C:TempPayloads_pJifgWSwPi.exe -c "import os; os.system('whoami')""Cela remplit la
cmd.execondition de la règle. -
Proxy de binaire signé – Msbuild : La charge utile Python écrit un fichier
.projmalveillant, puis invoquemsbuild.exepour l’exécuter, atteignant la persistance ou l’exécution de code ultérieure :msbuild.exe C:TempPayloadsmalicious.proj /target:Build
-
-
Script de test de régression
#============================================================= # Simulation d'attaque basée sur CHM – Déclenche la règle Sigma #============================================================= # Variables $chmPath = "C:UsersPublicUpdateHelp.chm" $outFolder = "C:TempPayloads" $renamedPy = "_pJifgWSwPi.exe" $projFile = "malicious.proj" # 1. Assurez-vous que le dossier de sortie existe New-Item -ItemType Directory -Force -Path $outFolder | Out-Null # 2. Simulez la décompilation du fichier CHM Write-Host "[*] Décompilation du CHM..." hh.exe -decompile $outFolder $chmPath # 3. Placez une copie de python.exe (ou toute exe bénigne) en tant qu'interprète renommé Copy-Item -Path "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" ` -Destination "$outFolder$renamedPy" -Force # 4. Exécutez l'interprète renommé via cmd.exe Write-Host "[*] Lancement de l'interprète renommé via cmd.exe..." cmd.exe /c "`"$outFolder$renamedPy`" -c `"Write-Host 'Exécution simulée de charge'`"" # 5. Créez un projet msbuild trivial qui affiche un message $projContent = @" <Project ToolsVersion='4.0' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'> <Target Name='Build'> <Message Text='Msbuild a exécuté le projet malveillant' Importance='High'/> </Target> </Project> "@ Set-Content -Path "$outFolder$projFile" -Value $projContent -Encoding ASCII # 6. Exécutez msbuild.exe sur le projet malveillant Write-Host "[*] Exécution de msbuild.exe..." msbuild.exe "$outFolder$projFile" /target:Build Write-Host "[+] Simulation terminée." -
Commandes de nettoyage
# Arrêtez tous les processus restants (s'il en existe encore) Get-Process -Name "_pJifgWSwPi","hh","msbuild","cmd" -ErrorAction SilentlyContinue | Stop-Process -Force # Supprimez les fichiers et dossiers générés Remove-Item -Recurse -Force -Path "C:TempPayloads" # Supprimez éventuellement le fichier CHM s'il a été créé pour le test Remove-Item -Force -Path "C:UsersPublicUpdateHelp.chm" -ErrorAction SilentlyContinue Write-Host "[+] Nettoyage terminé."