Segreti della Steganografia: Malware Nascosti in Bella Vista
Detection stack
- AIDR
- Alert
- ETL
- Query
Sintesi
Gli attori delle minacce stanno sempre più abusando di servizi di hosting di immagini e condivisione file per distribuire payload dannosi nascosti all’interno di file PNG e JPEG apparentemente innocui. Queste immagini contengono DLL codificate in Base64 che vengono estratte da un droppper JavaScript e caricate direttamente in memoria per avviare malware di accesso remoto come Remcos RAT. Evitando evidenti artefatti su disco e facendo affidamento su esecuzioni senza file, la tecnica può sfuggire a molte difese tradizionali degli endpoint. Le campagne spesso utilizzano temi legati alla finanza e prendono di mira vittime attraverso email di phishing personalizzate.
Indagine
Cofense ha analizzato un gruppo di email di phishing costruite attorno a falsi documenti di ordine d’acquisto che consegnavano un droppper basato su JavaScript. Quel droppper recuperava un’immagine steganografica da domini abusati, decodificava una DLL loader .NET codificata in Base64, e iniettava Remcos RAT in un processo legittimo. Le statistiche delle campagne mostravano che il 27% degli attacchi osservati distribuiva Remcos RAT, mentre il 21% distribuiva Agent Tesla e il 18% distribuiva XWorm RAT. Il rapporto identificava inoltre piattaforme di hosting pesantemente abusate, tra cui uploaddeimagens.com.br and archive.org.
Mitigazione
Le organizzazioni dovrebbero rafforzare la scansione degli allegati email e bloccare l’esecuzione di file JavaScript non attendibili. Monitorare il traffico in uscita verso piattaforme di hosting di immagini note può aiutare a individuare la fase di consegna del payload. Analitiche comportamentali dovrebbero essere utilizzate anche per rilevare iniezioni di processo e caricamenti in memoria unicamente di DLL non firmate. I difensori dovrebbero inoltre monitorare le ubicazioni autorun del registro e i compiti pianificati per identificare i tentativi di persistenza senza file.
Risposta
Se si sospetta un’immagine steganografica dannosa, isolare immediatamente l’endpoint interessato e raccogliere memoria per l’analisi forense. Gli investigatori dovrebbero cercare la DLL loader .NET e qualsiasi processo legittimo che possa ospitare componenti Remcos iniettati. Le voci di autorun non autorizzate nel registro e i compiti pianificati creati dal loader dovrebbero essere rimossi. Qualsiasi account potenzialmente esposto durante l’intrusione dovrebbe sottoporsi a un completo reset delle credenziali.
"graph TB %% Class Definitions classDef action fill:#99ccff classDef malware fill:#ff9999 classDef persistence fill:#ffcc99 classDef privilege fill:#ffb3b3 %% Node definitions action_phishing["<b>Azione</b> – <b>T1566.001 Phishing</b><br/>Allegato Spearphishing: l’attaccante invia email a tema finanziario con un allegato JavaScript dannoso."] class action_phishing action action_user_execution["<b>Azione</b> – <b>T1204.003 Esecuzione dell’Utente</b><br/>Immagine Dannosa: la vittima apre il droppper JavaScript che avvia il download di un’immagine dannosa da un sito di hosting pubblico."] class action_user_execution action action_steganography["<b>Azione</b> – <b>T1027.003 File o Informazioni Offuscati</b><br/>Steganografia: l’immagine scaricata contiene una DLL loader .NET codificata in Base64 nascosta tramite steganografia."] class action_steganography action action_process_injection["<b>Azione</b> – <b>T1055 Iniezione di Processo</b><br/>Il loader inietta il Remcos RAT nella memoria di un processo legittimo come explorer.exe."] class action_process_injection action action_privilege_escalation["<b>Azione</b> – <b>T1548 Abuso del Meccanismo di Controllo di Elevazione</b><br/>Il loader eleva i privilegi per ottenere diritti di amministratore prima di eseguire il payload."] class action_privilege_escalation privilege persistence_appcert["<b>Persistenza</b> – <b>T1546.009 Esecuzione Attivata da Evento</b><br/>DLL AppCert: voci del registro scritte per caricare la DLL dannosa all’avvio (persistenza senza file)."] class persistence_appcert persistence persistence_activesetup["<b>Persistenza</b> – <b>T1547.014 Esecuzione Autostart All’Avvio o Login</b><br/>Active Setup: chiavi di registro autostart aggiuntive aggiunte per la persistenza."] class persistence_activesetup persistence malware_remcos_rat["<b>Malware</b> – <b>T1219 Strumento di Accesso Remoto</b><br/>Remcos RAT fornisce capacità di controllo e comando per l’attaccante."] class malware_remcos_rat malware action_lateral_movement["<b>Azione</b> – <b>T1021 Servizi Remoti</b><br/>RAT utilizza servizi remoti per muoversi lateralmente nella rete."] class action_lateral_movement action %% Connections action_phishing –>|consegna| action_user_execution action_user_execution –>|esegue| action_steganography action_steganography –>|contiene| action_process_injection action_process_injection –>|inietta| malware_remcos_rat malware_remcos_rat –>|abilita| action_privilege_escalation action_privilege_escalation –>|crea| persistence_appcert persistence_appcert –>|aggiunge| persistence_activesetup malware_remcos_rat –>|facilita| action_lateral_movement "
Flusso dell’Attacco
Rilevazioni
LOLBAS WScript / CScript (tramite process_creation)
Visualizza
File Immagine Creato da Processo Sospetto (tramite file_event)
Visualizza
Archivio Internet Possibile Risolto da Processo Non Comune (tramite dns_query)
Visualizza
Rilevazione del Loader DotNET e Remcos RAT tramite Steganografia [Creazione Processo Windows]
Visualizza
Esecuzione Simulazione
Prerequisito: La Verifica Preliminare di Telemetria e Baseline deve essere superata.
Ragione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirano a generare esattamente la telemetria prevista dalla logica di rilevamento.
-
Narrativa sull’Attacco & Comandi:
-
Preparazione – Payload Steganografico:
L’attaccante incorpora una DLL Remcos RAT compilata all’interno di un JPEG benigno utilizzando uno strumento personalizzato (StegoEmbed.exe). Il file risultante (malicious.jpg) trasporta il payload dannoso nei suoi dati pixel. -
Consegna – Esecuzione del Loader DotNET:
L’attaccante esegue un loader basato su .NET (dotnet.exe) che fa riferimento all’immagine stego e include l’argomentoLoader. Il loader legge l’immagine, estrae la DLL incorporata e la carica direttamente in memoria (esecuzione in memoria) senza scrivere sul disco, ottenendo in questo modo l’escalation dei privilegi tramite un exploit (T1068). -
Risultato – Beacon RAT:
Una volta in memoria, il Remcos RAT stabilisce una connessione di rete al server C2.
La telemetria critica generata è un evento di processo-creazione dove:
Immagine(NomeProcesso) contiene DotNET (dotnet.exe).RigaComandicontiene la parola letterale Loader.
Questo soddisfa la regola Sigma per
selection_dotnet_loader. -
-
Script di Test di Regressione:
# --------------------------------------------------------- # Script di Simulazione – Loader DotNET con Steganografia (T1027.003) # --------------------------------------------------------- # 1. Creare un'immagine stego fittizia (segnaposto, non è richiesto l'incorporamento reale) $stegoPath = "$env:TEMPmalicious.jpg" Copy-Item "$env:SystemRootWebWallpaperWindowsimg0.jpg" $stegoPath -Force # 2. Eseguire il loader .NET con il flag richiesto # Utilizzare il legittimo dotnet.exe per imitare il nome immagine “DotNET”. # L'argomento “Loader” attiva la regola Sigma. $loaderArgs = "`"$stegoPath`" Loader" Write-Host "[*] Avvio del loader dotnet con argomento: $loaderArgs" Start-Process -FilePath "dotnet.exe" -ArgumentList $loaderArgs -NoNewWindow # 3. Attendere un breve periodo per assicurarsi che il processo sia catturato da Sysmon Start-Sleep -Seconds 5 # 4. OPZIONALE: Simulare il beacon RAT (traffico di rete) – non richiesto per il test della regola # --------------------------------------------------------- Write-Host "[*] Simulazione completata. Verificare l'avviso nel SIEM." -
Comandi di Pulizia:
# --------------------------------------------------------- # Pulizia – rimuovere immagine stego temporanea e fermare eventuali processi loader residui # --------------------------------------------------------- $stegoPath = "$env:TEMPmalicious.jpg" # Rimuovere l'immagine temporanea if (Test-Path $stegoPath) { Remove-Item $stegoPath -Force Write-Host "[*] Cancellato $stegoPath" } # Fermare eventuali processi dotnet avviati da questo script (identificati dall'argomento "Loader") Get-Process -Name dotnet -ErrorAction SilentlyContinue | Where-Object { $_.Path -like "*dotnet.exe*" -and $_.StartInfo.Arguments -match "Loader" } | ForEach-Object { $_.Kill() Write-Host "[*] Terminato processo ID $($_.Id)" } # ---------------------------------------------------------