SOC Prime Bias: Critico

26 May 2026 16:01 UTC

Void Dokkaebi utilizza il malware InvisibleFerret compilato con Cython

Author Photo
SOC Prime Team linkedin icon Segui
Void Dokkaebi utilizza il malware InvisibleFerret compilato con Cython
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

Void Dokkaebi, un attore di minacce legato alla Corea del Nord, ha migliorato il suo malware InvisibleFerret compilando con Cython in nativo .pyd and .so binari. Questo cambiamento aiuta il malware a evitare le rilevazioni che si concentrano solo sugli script Python mantenendo le sue funzioni principali, tra cui il furto delle credenziali, keylogging, acquisizione della clipboard e dirottamento del portafoglio di criptovalute. BeaverTail funge da loader multi-fase che recupera ed esegue i moduli compilati. La campagna è mirata a sviluppatori di software e utenti di criptovalute che potrebbero detenere credenziali di portafoglio, chiavi di firma o altri segreti di alto valore.

Indagine

I ricercatori hanno analizzato l’intera catena di infezione e hanno trovato un chiaro allontanamento dai leggibili script Python verso i moduli di estensione compilati con Cython. Hanno anche documentato diversi metodi di offuscazione, inclusi la codifica Base64, la crittografia XOR e la manipolazione delle stringhe split-and-swap. Durante l’indagine, hanno estratto indirizzi IP hard-coded, porte e nomi di file, e hanno osservato la creazione di file temporanei Python .mod script usati per caricare i binari maliziosi. L’analisi delle stringhe ha inoltre rivelato tracce dell’ambiente di build e riferimenti alle estensioni per portafogli di criptovalute basate su browser.

Mitigazione

I difensori dovrebbero espandere oltre le rilevazioni focalizzate sugli script e monitorare la presenza di .pyd and .so file in posizioni inusuali, così come temporanei .mod script di caricamento. Altre opportunità di rilevazione includono i nomi dei file osservati, le richieste in uscita verso ip-api.com, e i download che coinvolgono estensioni di portafogli di criptovalute. Rimuovere o isolare gli script di caricamento temporanei dopo l’esecuzione può anche aiutare a ridurre le opportunità di persistenza.

Risposta

Se vengono rilevati indicatori correlati, isolare immediatamente l’endpoint interessato, bloccare il traffico in uscita verso l’indirizzo IP di comando e controllo identificato, e cercare i binari elencati e gli artefatti dei task pianificati. Gli investigatori dovrebbero analizzare eventuali .mod script recuperati per estrarre payload incorporati e comprendere meglio la catena di esecuzione. Eventuali credenziali di criptovalute esposte, segreti del portafoglio o chiavi di firma dovrebbero essere ruotati senza indugio.

Flusso di Attacco

Stiamo ancora aggiornando questa parte. Iscriviti per ricevere notifiche

Notificami

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria & Baseline deve essere passato.

Motivo: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto devono riflettere direttamente i TTP individuati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione & Comandi di Attacco:
    L’attaccante ha ottenuto un set di moduli compilati con Cython (mod.pyd, pad.pyd, brw.pyd) che implementano il furto di credenziali e la comunicazione C2. Per raggiungere la persistenza, l’avversario copia questi moduli nella directory di configurazione di VS Code dell’utente attuale (%USERPROFILE%.vscode). VS Code esegue scansioni periodiche di questa cartella per le estensioni, facendo sì che i moduli malevoli vengano caricati da un successivo script Python malevolo. L’operazione di copia genera un evento FileCreate di Sysmon che corrisponde alla regola Sigma.

  • Script di Test di Regressione:

    # -------------------------------------------------
    # Simulazione del rilascio di moduli Cython del malware InvisibleFerret
    # -------------------------------------------------
    $vscodePath = "$env:USERPROFILE.vscode"
    # Assicurarsi che la cartella di destinazione esista
    if (-not (Test-Path -Path $vscodePath)) {
        New-Item -ItemType Directory -Path $vscodePath | Out-Null
    }
    
    # Binari malevoli simulati (contenuto casuale di spazzatura)
    $modules = @("mod.pyd","pad.pyd","brw.pyd")
    foreach ($mod in $modules) {
        $dest = Join-Path -Path $vscodePath -ChildPath $mod
        # Scrivere 1 KB di byte casuali per imitare un'estensione compilata
        $bytes = New-Object byte[] 1024
        (New-Object System.Random).NextBytes($bytes)
        [System.IO.File]::WriteAllBytes($dest, $bytes)
        Write-Host "Created $dest"
    }
  • Comandi di Pulizia:

    # -------------------------------------------------
    # Pulizia dei file malevoli simulati
    # -------------------------------------------------
    $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"
        }
    }