🛡️ Executive Summary
- Un archivio cifrato consegna un file LNK che eleva i privilegi, indebolisce Microsoft Defender e installa un falso ambiente Python.
- HollowFrame offre process ghosting, module stomping, injection e persistenza, mentre Matryoshka esegue comandi e trasferisce payload tramite HTTP o GitHub.
- La difesa richiede correlazione tra PowerShell, DLL caricate localmente, processi firmati, persistenza WMI e accessi anomali alle API GitHub.
Blackpoint Cyber ha scoperto HollowFrame, un framework loader modulare sviluppato in Go, e due backdoor Matryoshka scritte in Rust durante l’analisi di un’intrusione che ha colpito due endpoint di uno studio legale. L’attacco parte da uno spear phishing con documenti giudiziari e attraversa più livelli composti da file LNK, PowerShell offuscato, un falso runtime Python, DLL sideloading, processi Microsoft firmati e servizi cloud legittimi. La frammentazione permette a ogni componente di svolgere una funzione limitata e apparentemente scollegata dalle altre, nascondendo il percorso che conduce dall’apertura dell’archivio al controllo remoto, alla ricognizione di Active Directory e alla distribuzione di ulteriori payload.
Cosa leggere
Il file LNK prepara una corsia esclusa da Microsoft Defender
L’accesso iniziale avviene attraverso un’email di spear phishing inviata a più dipendenti dello studio legale. Il collegamento incluso nel messaggio passa attraverso un redirector controllato dagli aggressori e conduce a un archivio cifrato ospitato su MEGA, contenente il file Case Documents.lnk. Il collegamento scrive dati codificati Base64 nella directory temporanea, genera uno script CMD e utilizza certutil.exe per decodificare il comando successivo, che avvia PowerShell e recupera nuovi contenuti da un indirizzo IP esterno. Il secondo script conserva una chiave di sedici caratteri e un payload esadecimale che viene ricostruito, decifrato con XOR ed eseguito attraverso Invoke-Expression.

Prima di scaricare gli eseguibili, PowerShell controlla i privilegi amministrativi e, quando necessario, riavvia se stesso attraverso RunAs, con finestra nascosta ed ExecutionPolicy disabilitata. La catena crea poi %LOCALAPPDATA%\Programs\Python\Python311-Brief e aggiunge esclusioni di Microsoft Defender sia per quella directory sia per il processo python.exe. Gli aggressori costruiscono così una zona considerata affidabile prima di introdurre il malware, riducendo i controlli su qualsiasi file depositato nel percorso e sulle attività eseguite dal runtime. Il comportamento richiama la distribuzione di RAT Windows attraverso PowerShell e un falso ambiente Python, ma HollowFrame utilizza il runtime come contenitore per un loader nativo e non per eseguire normali script Python.
python311.dll trasferisce l’esecuzione al loader HollowFrame
Lo script scarica un archivio denominato Python-3.11.0-embed-amd96.zip, controlla che abbia dimensioni superiori a 1.024 byte e che inizi con una firma ZIP valida, quindi estrae python.exe, python311.dll e vcruntime140.dll. L’eseguibile Python è autentico, ma la libreria adiacente non contiene il runtime CPython: si tratta di una DLL Go a 64 bit che esporta soltanto quattro funzioni compatibili, sufficienti a soddisfare l’importazione di Py_Main e trasferire il controllo al codice malevolo. La tecnica di DLL sideloading sfrutta quindi la fiducia attribuita a un programma riconoscibile e colloca l’attività ostile dentro un processo che può apparire legittimo a una verifica superficiale.

La DLL contiene una regione cifrata di oltre 6,3 MB costruita alternando byte utili e byte ignorati, in modo che l’estrazione lineare del contenuto non produca il payload corretto. HollowFrame seleziona soltanto i byte alle posizioni pari, decifra il risultato con XChaCha20-Poly1305, verifica l’integrità attraverso il tag Poly1305 e decomprime lo stream zlib fino a ottenere un eseguibile PE valido. Questa stratificazione non si limita a offuscare le stringhe, ma impedisce che strumenti automatici o analisti recuperino la fase successiva senza ricostruire esattamente la logica del loader. Il modello si avvicina alla complessità di OXLOADER e CASTLESTEALER, dove ogni stadio riduce gli indicatori visibili e separa la consegna dall’esecuzione finale.
HollowFrame sceglie tra ghosting, stomping e injection
Il payload decifrato è un framework Go progettato per offrire più percorsi di esecuzione e persistenza. I moduli interni includono funzioni dedicate a Process Parameter Poisoning, Process Ghosting, module stomping, manual PE mapping, shellcode loading, NtCreateThreadEx, modifica della base immagine nel PEB e avvio tradizionale da file. Il Process Ghosting crea una sezione eseguibile a partire da un file marcato per l’eliminazione e avvia un processo il cui contenuto non conserva più una controparte stabile sul disco; il manual mapper analizza invece gli header PE, alloca la memoria, copia le sezioni, applica le relocation, risolve gli import e trasferisce l’esecuzione direttamente all’entry point.

La disponibilità di percorsi differenti consente agli operatori di adattare la telemetria all’ambiente e di sostituire una tecnica quando viene bloccata dall’EDR. HollowFrame controlla inoltre uptime, memoria installata, quantità di file nel profilo utente e movimento del cursore, terminando l’esecuzione quando individua caratteristiche compatibili con una sandbox. La persistenza può essere mantenuta attraverso un’attività pianificata eseguita al login con privilegi elevati e ritardo di trenta secondi, una sottoscrizione permanente agli eventi WMI attivata dalla creazione di nuove Win32_LogonSession oppure un file nella cartella Startup. Questa flessibilità rende il loader paragonabile a crypter avanzati come Cruciferra, capace di alternare decine di tecniche contro RAT e infostealer, ma HollowFrame integra anche la gestione della persistenza e la selezione del metodo di lancio.
Matryoshka usa OneDrive e HTTP per nascondere la shell remota
Una seconda struttura cifrata incorporata nel loader contiene circa settanta componenti e utilizza un formato proprietario nel quale una chiave ChaCha20-Poly1305 viene ricostruita da quattro frammenti XOR riordinati. Dopo la decifratura, HollowFrame prepara un nuovo sideloading collocando version.dll accanto a updater.exe, eseguibile firmato riconducibile all’aggiornamento di Microsoft OneDrive. La DLL Rust, chiamata Matryoshka HTTP, conserva le funzioni Version API richieste dal programma legittimo e avvia parallelamente un thread dedicato alla backdoor. Il C2 viene decodificato durante l’esecuzione e contattato sulla porta 8888 attraverso HTTP in chiaro, mentre le funzioni WinHTTP vengono risolte dinamicamente per non comparire nella tabella statica degli import. La backdoor registra identificativo del client, utente, hostname e PID, riceve task in formato JSON ed esegue i comandi attraverso cmd.exe, restituendo output standard ed errori al server. Non sono presenti moduli nativi per keylogging, screenshot o furto delle password, perché la shell consente agli operatori di introdurre strumenti successivi utilizzando i privilegi, gli accessi di rete e il contesto del processo OneDrive. Il caricamento dentro un’applicazione firmata trasferisce ancora una volta la fiducia dal componente autentico alla DLL locale, una tecnica osservata anche in RemotePE, il RAT che esegue il payload esclusivamente in memoria.
La seconda Matryoshka trasforma GitHub in un C2 per vittima
Una variante separata, Matryoshka GitHub, utilizza una DLL wtsapi32.dll capace di inoltrare 41 esportazioni alla libreria autentica di Windows e di comunicare con un repository GitHub privato attraverso la Contents API. Ogni vittima riceve una directory costruita con nome del computer e utente, contenente beacon.json, cmd.json, result.json e una cartella per i payload. La backdoor legge i comandi con richieste GET, invia beacon e risultati attraverso PUT, recupera lo SHA del blob prima di sostituire i file e usa lo user agent OneDrive/24.170.0825.0001. GitHub sostituisce così il server di comando tradizionale e offre agli aggressori un’infrastruttura cifrata, affidabile e normalmente autorizzata dalle reti aziendali. Matryoshka può eseguire comandi, raccogliere configurazione di rete, token, privilegi, controller di dominio, computer del dominio, gruppi privilegiati e software installato. I payload secondari vengono scaricati dal repository, scritti sul disco o avviati in memoria attraverso module overloading su winspool.drv, con un percorso alternativo basato sulla sequenza VirtualAlloc, VirtualProtect e CreateThread. L’uso di repository come caselle postali specifiche per host ricorda le infrastrutture dead-drop osservate in NarwhalRAT e UNK_DeadDrop contro sviluppatori e ingegneri AI, ma in questo caso GitHub gestisce contemporaneamente beacon, comandi, risultati e consegna dei file.
La rilevazione richiede di ricostruire l’intera sequenza
HollowFrame e Matryoshka non dipendono dall’invisibilità assoluta di ogni singolo artefatto, ma dalla difficoltà di collegare eventi distribuiti tra processi, filesystem, rete e servizi cloud. Un file LNK proveniente da un archivio cifrato, certutil.exe, PowerShell nascosto, una cartella Python nel profilo utente, un eseguibile firmato, una DLL con nome corretto e traffico verso GitHub possono apparire isolatamente compatibili con attività legittime. La difesa deve invece correlare l’intera sequenza: eseguibili Python o updater avviati da directory scrivibili, caricamento di python311.dll, version.dll o wtsapi32.dll dalla stessa cartella, esclusioni Defender appena create, shell generate da processi insoliti, task al login, sottoscrizioni WMI e richieste verso percorsi GitHub associati a file di tasking. Devono essere controllati soprattutto gli accessi ad api.github.com provenienti da processi non utilizzati per lo sviluppo, senza bloccare indiscriminatamente il servizio. Gli archivi protetti da password e i file LNK richiedono detonazione controllata, mentre PowerShell Script Block Logging e telemetria delle righe di comando devono essere conservati per ricostruire gli stadi eseguiti soltanto in memoria. Nel rapporto tecnico di Blackpoint Cyber su HollowFrame e sulle backdoor Matryoshka, i ricercatori sottolineano che nessun componente contiene da solo l’intera logica dell’intrusione: l’indicatore realmente significativo è il passaggio coordinato da un livello di fiducia al successivo, fino alla persistenza e al controllo remoto.
Iscriviti alla Newsletter
Non perdere le analisi settimanali: Entra nella Matrice Digitale.
Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.









