Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.
Un campione di malware denominato LausivLoader, rilevato a fine agosto 2025 in un allegato malspam con estensione .r01, evidenzia una tecnica di anti-analisi che sfrutta un meccanismo ordinario del sistema operativo: l'ereditarietà delle variabili d'ambiente da processo padre a figlio. Secondo l'analisi pubblicata il 17 settembre 2025 dall'Internet Storm Center di SANS, il malware utilizza questa catena di passaggio dati — orchestrata attraverso conhost.exe — per rendere impraticabile l'analisi per parti dei singoli stadi di infezione.
- Il file JavaScript iniziale di 613 KB, con detection 28/55 su VirusTotal, imposta le variabili d'ambiente Kv7408 e Kv562 contenenti i percorsi di due file temporanei che verranno ereditate da PowerShell tramite conhost.exe.
- I file temporanei, con nomi terminanti in 'a' e 'b', vengono cancellati prima della decrittazione, lasciando i soli percorsi nelle variabili d'ambiente come ponte invisibile tra gli stadi.
- Il payload intermedio è un eseguibile .NET a 64 bit di 315.904 byte, caricato in memoria via reflection dopo decodifica, decrittazione AES-128-CBC con PKCS#7 padding e decompressione GZipStream.
- La persistenza si realizza tramite un scheduled task denominato '\MicrosoftEdgeUpdateTaskCore' con trigger logon, che esegue wscript.exe da una copia del JavaScript in %LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.js.
Il trucco dell'handoff invisibile tra JavaScript e PowerShell
Il meccanismo centrale della catena di infezione risiede in un passaggio dati che l'analista del SANS ISC definisce esplicitamente non replicabile in sandbox isolate. Il file JavaScript iniziale — 613 KB di cui circa 205 KB effettivi dopo rimozione di 450 righe di commento offuscante — crea una directory temporanea con nome casuale basato su timestamp in base 36 all'interno di %TEMP%. Al suo interno scrive due file con nomi terminanti rispettivamente in 'a' e 'b'.
Il passaggio successivo è quello che altera il paradigma dell'analisi: il JavaScript imposta due variabili d'ambiente, Kv7408 e Kv562, assegnando loro i percorsi assoluti dei due file temporanei. Queste variabili non vengono scritte su disco né trasmesse via rete: persistono esclusivamente nello spazio di memoria del processo. Quando il JavaScript avvia conhost.exe come processo intermedio, e questo a sua volta esegue PowerShell, la shell eredita l'ambiente completo del padre.
"Since child processes normally inherit their parent's environment, this allows the paths to reach the PowerShell code through the intermediate 'conhost.exe' process." — Analista SANS ISC
PowerShell recupera quindi i percorsi attraverso $env:Kv7408 e $env:Kv562, combina i contenuti dei due file, applica le trasformazioni crittografiche e decompressione, e solo allora i file temporanei vengono cancellati. L'ordine è intenzionale: i dati originali scompaiono prima che il payload venga esposto in chiaro, rendendo vano qualsiasi tentativo di cattura postuma.
Perché l'analisi per parti fallisce su questo campione
La conseguenza operativa di questo design è documentata con precisione nell'analisi originale. Se un analista estrae il comando PowerShell decodificato e lo incolla in una shell indipendente, i riferimenti alle variabili d'ambiente risolvono nulla: i percorsi puntano a file già cancellati o, peggio, a percorsi mai esistiti in quella sessione. La catena di infezione è vincolata alla genealogia dei processi, non al contenuto statico dei singoli artefatti.
Questo vincolo strutturale rende inefficaci gli approcci di analisi sandbox che eseguono gli stadi in isolamento o che salvano i file intermedi senza preservare l'ambiente di esecuzione completo. La variabile d'ambiente, meccanismo legittimo e onnipresente nei sistemi Windows, diventa qui un canale di comunicazione inter-processo invisibile agli strumenti che non tracciano l'ereditarietà ambientale attraverso più generazioni di processi.
La catena crittografica e il doppio loader .NET
Dopo l'handoff ambientale, il payload si trasforma attraverso una serie di operazioni documentate nei dettagli. Il contenuto combinato dei due file temporanei subisce decodifica, decrittazione con AES-128-CBC in modalità CBC con padding PKCS#7, e decompressione tramite GZipStream. Il risultato è un eseguibile .NET a 64 bit di 315.904 byte, caricato in memoria senza toccare il disco tramite reflection.
Questo primo loader .NET implementa già tecniche di elusione: risolve API Windows dinamicamente e modifica AmsiScanBuffer e AmsiScanString per bypassare l'Anti-Malware Scan Interface di Microsoft. Dal suo interno estrae poi un secondo stadio applicando un sottocampionamento selettivo — ogni quinto byte — da un array embedded di 299.520 byte, seguito da decrittazione RC4. Il secondo loader .NET risultante occupa 59.904 byte.
Quest'ultimo componente si connette a hxxps://yapw[.]life/phpt/stego_zrgaixkku8.png per scaricare il payload finale. L'URL non era più attivo al momento dell'analisi, e il payload finale non è stato recuperato.
La steganografia PNG vera e i due percorsi di esecuzione
Un elemento che l'analista del SANS ISC definisce sorprendente è la natura del file scaricato: non un eseguibile con estensione fittizia, ma una PNG autentica. Il loader analizza la struttura del formato PNG alla ricerca di un chunk iTXt, dove il payload è celato con un marker binario specifico — la sequenza esadecimale 'FF 89 AD 4A' — seguito dalla lunghezza del payload, decrittazione XOR e decompressione DEFLATE.
L'architettura del secondo loader supporta due modalità di esecuzione per il payload finale: caricamento di assembly .NET managed tramite reflection, oppure process hollowing per eseguibili nativi. Il dossier non specifica quale dei due percorsi fosse attivo nel campione analizzato, né la famiglia malware del payload finale non recuperato.
La persistenza camuffata da task di sistema Microsoft
Oltre alla catena di iniezione, il campione implementa persistenza con un'operazione di mascheramento che sfrutta la familiarità dei nomi di sistema. Il JavaScript si copia in %LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.js — una directory inesistente in installazioni Windows standard — e registra un scheduled task denominato '\MicrosoftEdgeUpdateTaskCore'. Il trigger è al logon dell'utente, l'azione è l'esecuzione di wscript.exe con parametri '//B //Nologo' che sopprimono banner e errori visuali.
Il nome del task imita quelli legittimi degli aggiornamenti di Microsoft Edge, un dettaglio progettato per sfuggire alla revisione manuale e a regole euristiche troppo rigide. L'analista non specifica se il task crei anche voci di registro aggiuntive o se modifichi attributi di occultamento.
Perché è importante
Il dossier non documenta misure correttive specifiche né raccomandazioni operative dettagliate da parte della fonte. Non emerge se l'analista abbia proposto indicatori di compromissione aggiuntivi oltre al nome del task e al percorso del file JavaScript. La fonte non specifica la natura dei dati esposti o prelevati, né il destinatario o bersaglio specifico dell'attacco.
Ciò che il campione LausivLoader documenta con chiarezza è invece un cambiamento nel rapporto costi-benefici dell'analisi malware automatizzata. Gli strumenti che eseguono JavaScript e PowerShell in sandbox separate, o che estraggono comandi senza tracciare l'ereditarietà delle variabili d'ambiente, producono artefatti incompleti. L'analista lo formula esplicitamente: "It is also one of the reasons why looking only at the decoded command would leave us with an incomplete picture."
Il meccanismo non richiede vulnerabilità zero-day né privilegi elevati: sfrutta un comportamento documentato e necessario dei sistemi operativi Windows. La sua efficacia anti-forense deriva proprio da questa banalità, che lo rende compatibile con una vasta gamma di ambienti target e difficile da segnalare come anomalia senza contesto genealogico del processo.
Domande frequenti
Perché l'analisi del solo comando PowerShell non basta?
Perché il comando referenzia variabili d'ambiente ereditate dal processo padre JavaScript tramite conhost.exe. In una shell indipendente quelle variabili non esistono, i file temporanei sono già cancellati, e il comando decodificato non può ricostruire il payload.
Il file PNG scaricato è dannoso di per sé?
Secondo la fonte, si tratta di una PNG vera con payload nascosto nel chunk iTXt tramite steganografia. Il file non è eseguibile diretto: richiede il loader per estrarre, decrittare e decompressare il contenuto celato.
Cosa rende il task di persistenza particolarmente insidioso?
Il nome '\MicrosoftEdgeUpdateTaskCore' imita quello di un componente legittimo di sistema Microsoft. La copia del JavaScript in una directory fittizia sotto Microsoft\PhotoEngine completa il camuffamento all'interno della struttura di %LOCALAPPDATA%.
Le informazioni sono basate sull'analisi del SANS ISC e aggiornate al momento della pubblicazione.
Fonti
Le informazioni sono basate sulla fonte citata e aggiornate al momento della pubblicazione.
Fonti
Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.