Void Dokkaebi Utilise le Malware InvisibleFerret Compilé par Cython
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Void Dokkaebi, un acteur de menace lié à la Corée du Nord, a amélioré son malware InvisibleFerret en le compilant avec Cython en .pyd and .so binaries natifs. Ce changement aide le malware à éviter les détections qui se concentrent uniquement sur les scripts Python tout en conservant ses fonctions principales, notamment le vol d’identifiants, l’enregistrement de frappe, la capture de presse-papiers et le détournement de portefeuille de cryptomonnaies. BeaverTail sert de chargeur à plusieurs étapes qui récupère et exécute les modules compilés. La campagne cible les développeurs de logiciels et les utilisateurs de cryptomonnaies qui peuvent détenir des identifiants de portefeuille, des clés de signature ou d’autres secrets de grande valeur.
Enquête
Les chercheurs ont analysé toute la chaîne d’infection et ont constaté un passage clair des scripts Python lisibles vers des modules d’extension compilés avec Cython. Ils ont également documenté plusieurs méthodes d’obfuscation, y compris le codage Base64, le cryptage XOR et la manipulation de chaîne par division et permutation. Au cours de l’enquête, ils ont extrait des adresses IP, ports et noms de fichiers codés en dur, et ont observé la création de scripts Python temporaires .mod utilisés pour charger les binaries malveillants. L’analyse des chaînes a également révélé des traces de l’environnement de construction et des références aux extensions de portefeuille de cryptomonnaies basées sur le navigateur.
Atténuation
Les défenseurs devraient aller au-delà des détections axées sur les scripts et surveiller les .pyd and .so fichiers suspects apparaissant dans des emplacements inhabituels, ainsi que les .mod scripts de chargement temporaires. D’autres opportunités de détection incluent les noms de fichiers observés, les requêtes sortantes vers ip-api.com, et les téléchargements impliquant des extensions de portefeuille de cryptomonnaies. Supprimer ou isoler les scripts de chargement temporaires après exécution peut également aider à réduire les opportunités de persistance.
Réponse
Si des indicateurs liés sont détectés, isolez immédiatement le point de terminaison affecté, bloquez le trafic sortant vers l’adresse IP de commande et de contrôle identifiée, et recherchez les binaries listés et les artefacts de tâche planifiée. Les enquêteurs devraient analyser tout .mod script récupéré pour extraire les charges intégrées et mieux comprendre la chaîne d’exécution. Tous les identifiants de cryptomonnaies exposées, secrets de portefeuille ou clés de signature devraient être changés sans délai.
Flux d’attaque
Nous mettons encore cette partie à jour. Inscrivez-vous pour être averti
Me notifierDétections
Communications C2 possibles sur HTTP vers une IP directe avec un port inhabituel (via un proxy)
Voir
Tentative possible de communication avec un domaine de recherche IP (via DNS)
Voir
Un fichier caché a été créé sur un hôte Linux (via file_event)
Voir
Détection des modules InvisibleFerret compilés avec Cython [Windows File Event]
Voir
Exécution de la simulation
Prérequis : Le contrôle préalable de télémétrie et de référentiel doit avoir été passé.
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 DOIVENT refléter directement les TTP identifiés et viser à générer précisément la télémétrie attendue par la logique de détection. Des exemples abstraits ou non liés mèneront à un diagnostic erroné.
-
Récit d’attaque & Commandes :
L’attaquant a obtenu un ensemble de modules compilés avec Cython (mod.pyd,pad.pyd,brw.pyd) qui implémentent la récolte d’identifiants et la communication C2. Pour obtenir la persistance, l’adversaire copie ces modules dans le répertoire de configuration VS Code de l’utilisateur actuel (%USERPROFILE%.vscode). VS Code scanne périodiquement ce dossier pour y trouver des extensions, ce qui permet aux modules malveillants d’être chargés plus tard par un script Python malveillant. L’opération de copie génère un événement Sysmon FileCreate qui correspond à la règle Sigma. -
Script de test de régression :
# ------------------------------------------------- # Simulation de la chute du module InvisibleFerret avec Cython # ------------------------------------------------- $vscodePath = "$env:USERPROFILE.vscode" # S'assurer que le dossier cible existe if (-not (Test-Path -Path $vscodePath)) { New-Item -ItemType Directory -Path $vscodePath | Out-Null } # Binaries malveillants simulés (contenu de déchets aléatoires) $modules = @("mod.pyd","pad.pyd","brw.pyd") foreach ($mod in $modules) { $dest = Join-Path -Path $vscodePath -ChildPath $mod # Écrire 1 KB de bytes aléatoires pour imiter une extension compilée $bytes = New-Object byte[] 1024 (New-Object System.Random).NextBytes($bytes) [System.IO.File]::WriteAllBytes($dest, $bytes) Write-Host "Created $dest" } -
Commandes de nettoyage :
# ------------------------------------------------- # Nettoyage des fichiers malveillants simulés # ------------------------------------------------- $vscodePath = "$env:USERPROFILE.vscode" $modules = @("mod.pyd","pad.pyd","brw.pyd") foreach ($mod in $modules) { $file = Join-Path -Path $vscodePath -ChildPath $mod if (Test-Path $file) { Remove-Item -Path $file -Force Write-Host "Removed $file" } }