SOC Prime Bias: Critique

26 May 2026 16:01 UTC

Void Dokkaebi Utilise le Malware InvisibleFerret Compilé par Cython

Author Photo
SOC Prime Team linkedin icon Suivre
Void Dokkaebi Utilise le Malware InvisibleFerret Compilé par Cython
shield icon

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 notifier

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"
        }
    }