SOC Prime Bias: Medio

04 Dic 2025 17:37

ValleyRAT Malware mira i candidati al lavoro, sfrutta il caricamento laterale del DLL di Foxit

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
ValleyRAT Malware mira i candidati al lavoro, sfrutta il caricamento laterale del DLL di Foxit
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sintesi

Il trojan di accesso remoto ValleyRAT viene distribuito tramite allegati email mirati a cercatori di lavoro e personale HR. Gli avversari associano un eseguibile Foxit PDF Reader alterato e si affidano al side-loading di DLL per attivare un msimg32.dll malevolo. Il payload estrae un runtime Python nascosto, recupera uno script codificato in Base64 da un server C2 e stabilisce la persistenza tramite un valore di registro autorun, sottraendo i dati del browser.

Indagine

I ricercatori hanno analizzato l’archivio malevolo e trovato un FoxitPDFReader.exe rinominato che carica un msimg32.dll canaglia tramite l’ordine di ricerca DLL standard di Windows. Uno script batch quindi estrae un interprete Python incorporato (rinominato zvchost.exe) ed esegue uno script loader codificato in Base64 recuperato da un indirizzo IP malevolo. L’ispezione della rete ha rivelato un certificato auto-firmato con un CN casuale e un’impronta digitale JA3 distinta usata per il traffico C2. La persistenza viene mantenuta creando una chiave di registro autorun.

Mitigazione

Le difese raccomandate includono una rigorosa scansione degli allegati email e il blocco degli eseguibili che si spacciano per file PDF. Applicare la whitelisting delle applicazioni per prevenire il side-loading di DLL non autorizzate e l’esecuzione di binari non attendibili. Monitorare la creazione delle voci di registro autorun e bloccare gli indirizzi IP C2 noti. Mantenere aggiornate le firme di protezione degli endpoint e fornire formazione mirata sulla consapevolezza della sicurezza focalizzata su phishing a tema lavoro.

Risposta

Generare allarmi quando FoxitPDFReader.exe o msimg32.dll vengono eseguiti da posizioni inusuali, specialmente percorsi con schemi di trattini bassi profondi. Correlare l’attività dei processi da zvchost.exe utilizzando il parametro -c e i payload dei comandi Base64. Rilevare connessioni in uscita a 196.251.86.145 (e infrastruttura correlata) e rivedere le sessioni TLS per il certificato auto-firmato distintivo. Esaminare le modifiche del registro sotto HKCUSoftwareMicrosoftWindowsCurrentVersionRun per voci autorun non autorizzate.

mermaid graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 %% Node Definitions action_phishing[“<b>Azione</b> – <b>T1566.001 Phishing: Allegato mirato</b><br/>La vittima riceve un archivio zip malevolo contenente un FoxitPDFReader.exe camuffato.”] class action_phishing action file_archive[“<b>Strumento</b> – Archivio malevolo<br/>File compresso Overview_of_Work_Expectations.zip che consegna il payload.”] class file_archive tool exe_foxit[“<b>Strumento</b> – FoxitPDFReader.exe (rinominato)<br/>Eseguito dopo che l’utente apre l’archivio.”] class exe_foxit tool dll_msimg32[“<b>Strumento</b> – msimg32.dll (malevolo)<br/>Posizionato nella stessa directory per ottenere il side-loading DLL.”] class dll_msimg32 tool exec_hijack[“<b>Azione</b> – T1574.008 Dirottamento flusso di esecuzione<br/>Il dirottamento dell’ordine di ricerca carica la DLL malevola.”] class exec_hijack action script_bat[“<b>Strumento</b> – document.bat<br/>Script batch lanciato dall’eseguibile dirottato.”] class script_bat tool docx_7zip[“<b>Strumento</b> – document.docx (archivio 7‑zip)<br/>Contiene un ambiente Python incorporato.””” class docx_7zip tool exe_zvchost[“<b>Strumento</b> – zvchost.exe (rinominato python.exe)<br/>Esegue uno script loader codificato Base64.”] class exe_zvchost tool payload_base64[“<b>Strumento</b> – payload Base64<br/>Decodifica e allestisce il componente malevolo finale.”] class payload_base64 tool registry_run_key[“<b>Strumento</b> – Chiave di esecuzione del registro<br/>Creata sotto Active Setup per ottenere persistenza.”] class registry_run_key tool persistence_active_setup[“<b>Azione</b> – T1547.014 Avvio Esferico o di Logon: Active Setup<br/>Garantisce che il payload venga eseguito ad ogni logon.”] class persistence_active_setup action defense_obfuscation[“<b>Azione</b> – T1027 File o informazioni offuscate<br/>File nascosti in directory con trattini bassi profondi e codificati in Base64.”] class defense_obfuscation action credential_browser[“<b>Azione</b> – T1555.003 Credenziali dai browser web<br/>ValleyRAT estrae nomi utente, password e cookie salvati.”] class credential_browser action malware_valleyrat[“<b>Malware</b> – ValleyRAT<br/>Strumento di accesso remoto che apre un canale TLS C2.”] class malware_valleyrat malware c2_server[“<b>Strumento</b> – server C2 196.251.86.145<br/>Riceve traffico criptato dal RAT.”] class c2_server tool malware_component[“<b>Malware</b> – Componente aggiuntivo<br/>Binari recuperati eseguiti sull’host della vittima.”] class malware_component malware %% Connections Showing Flow action_phishing u002du002d>|consegna| file_archive file_archive u002du002d>|contiene| exe_foxit exe_foxit u002du002d>|carica| dll_msimg32 dll_msimg32 u002du002d>|abilita| exec_hijack exec_hijack u002du002d>|attiva| script_bat script_bat u002du002d>|estrae| docx_7zip docx_7zip u002du002d>|fornisce| exe_zvchost exe_zvchost u002du002d>|esegue| payload_base64 payload_base64 u002du002d>|crea| registry_run_key registry_run_key u002du002d>|garantisce| persistence_active_setup payload_base64 u002du002d>|esegue| defense_obfuscation payload_base64 u002du002d>|ruba| credential_browser credential_browser u002du002d>|alimentano| malware_valleyrat malware_valleyrat u002du002d>|stabilisce| c2_server malware_valleyrat u002du002d>|recupera| malware_component

Flusso di attacco

Esecuzione di simulazione

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

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

  • Narrativa di attacco & Comandi:

    1. Compromissione iniziale: La vittima apre un PDF a tema reclutamento malevolo consegnato tramite email. Il PDF contiene JavaScript (T1059.006) che rilascia una DLL malevola (valley.dll) nella stessa directory dell’eseguibile del lettore PDF.

    2. Side-Loading di DLL: L’attaccante sfrutta la capacità di Foxit Reader di caricare DLL ausiliari. Posizionando valley.dll accanto a una rinominata eseguibile Foxit (zvchost.exe), Foxit caricherà inavvertitamente la DLL malevola all’avvio, eseguendo ValleyRAT.

    3. Trigger di Creazione Processo: L’eseguibile rinominato (zvchost.exe) viene avviato, generando un evento di creazione del processo in cui il percorso dell’immagine termina con zvchost.exe. Ciò corrisponde alla condizione Image|endswith della regola Sigma, causando un allarme.

  • Script di Test di Regressione: Lo script PowerShell seguente riproduce i passaggi precedenti in un ambiente di laboratorio controllato.

    # ------------------------------------------------------------
    # Script di regressione per il test di rilevamento del side-loading ValleyRAT
    # ------------------------------------------------------------
    
    # 1. Imposta directory di lavoro temporanea
    $workDir = "$env:TEMPValleyRAT_Test"
    New-Item -Path $workDir -ItemType Directory -Force | Out-Null
    
    # 2. Copia un eseguibile Foxit Reader legittimo (simulando il lettore PDF)
    $foxitSrc = "C:Program FilesFoxit SoftwareFoxit ReaderFoxitReader.exe"
    $foxitRenamed = Join-Path $workDir "zvchost.exe"
    Copy-Item -Path $foxitSrc -Destination $foxitRenamed -Force
    
    # 3. Crea una DLL malevola fittizia (in realtà questo sarebbe il payload ValleyRAT)
    $dllPath = Join-Path $workDir "valley.dll"
    Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A)) -Encoding Byte  # Intestazione MZ minima
    
    # 4. Avvia l'eseguibile Foxit rinominato (questo attiva il side-loading DLL)
    Write-Host "[*] Avvio dell'eseguibile Foxit rinominato per attivare il side‑loading..."
    $proc = Start-Process -FilePath $foxitRenamed -PassThru -WindowStyle Hidden
    
    # 5. Attendere brevemente per garantire che la creazione del processo sia registrata
    Start-Sleep -Seconds 5
    
    # 6. Output delle informazioni del processo per la verifica
    Write-Host "ID del processo: $($proc.Id)"
    Write-Host "Percorso dell'eseguibile: $($proc.Path)"
    
    # 7. Pulizia (opzionale – vedere sezione di pulizia separata)
    # Remove-Item -Recurse -Force $workDir
  • Comandi di Pulizia: Eseguire dopo il test per rimuovere gli artefatti ed evitare DLL side-loaded persistenti.

    # Pulizia della directory di test e terminazione dei processi residui
    $workDir = "$env:TEMPValleyRAT_Test"
    
    # Termina il processo lanciato se ancora in esecuzione
    Get-Process -Name "zvchost" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Elimina gli artefatti di test
    Remove-Item -Path $workDir -Recurse -Force -ErrorAction SilentlyContinue
    
    Write-Host "[+] Pulizia completata."