Storage Fileless: Fileless Storage (T1027.011)
La tecnica T1027.011 - Fileless Storage descrive l'abuso di contenitori di dati alternativi al filesystem tradizionale per occultare payload, configurazioni e dati intermedi. Su Windows i luoghi prediletti sono il Registry, il repository WMI (%SystemRoot%\System32\Wbem\Repository) e gli Event Log; su Linux entrano in gioco le directory di memoria condivisa come /dev/shm, /run/shm, /var/run e /var/lock; sui network device compaiono /tmp e /volatile, aree volatili mappate direttamente in RAM.
La tecnica ricade nella tattica TA0005 (Defense Evasion) perché elude gli antivirus e gli EDR che ispezionano principalmente file su disco. Nella kill chain viene usata trasversalmente: come supporto alla persistenza (payload che sopravvivono al reboot dentro il Registry), come area di staging per Local Data Staging, e come deposito per shellcode caricati poi via Reflective Code Loading o Process Injection.
I dati MITRE ATT&CK mappano 2 gruppi APT (Turla, APT32), 27 famiglie malware e 2 campagne documentate. La massiccia rappresentanza nel catalogo software — da ComRAT e Uroburos fino a QakBot, REvil, DarkWatchman e Grandoreiro — conferma che il fileless storage è ormai commodity: attori state-sponsored, cybercrime e ransomware operator lo adottano perché offre un rapporto costo/beneficio eccellente in termini di evasione. Le contromisure si concentrano su audit ricorrenti (M1047) delle aree fileless più abusate.
Un esercizio red team su T1027.011 richiede di replicare i pattern di storage osservati in famiglie come ComRAT, PipeMon o DarkWatchman, mantenendo l'operazione confinata a un lab isolato.
Su Windows, la via più diretta è il Registry. Un payload codificato in Base64 può essere depositato con PowerShell nativo:
Set-ItemProperty -Path 'HKCU:\Software\Classes\LabTest' -Name 'blob' -Value ([Convert]::ToBase64String([IO.File]::ReadAllBytes('C:\lab\payload.bin')))
Il loader recupera successivamente il valore, lo decodifica in memoria e lo passa a un'API di esecuzione. Per simulare ThreatNeedle o RegDuke si può cifrare il blob con RC4 prima dello store. Percorsi realistici che riflettono i sample analizzati sono HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\GameCon o sottochiavi randomiche sotto HKCU\Software\Microsoft.
Il repository WMI offre un contenitore ancora più opaco. Con PowerShell si crea una classe custom e si popola una property statica con il payload:
New-Object System.Management.ManagementClass('root\default', $null, $null) seguito dalla definizione di una proprietà con qualificatore static. Framework come Atomic Red Team (open source) contengono test dedicati a T1027.011 con questa struttura. SharPersist (open source) e PowerSploit (open source, non più mantenuto ma utile in lab) automatizzano lo staging di script nel Registry.
Su Linux la simulazione ricalca lo schema Quad7: scrivere il tooling in /dev/shm ed eseguirlo direttamente. Un comando tipico è:
cp ./implant /dev/shm/.cache && chmod +x /dev/shm/.cache && /dev/shm/.cache &
Per un'evasione più avanzata si può usare memfd_create() via wrapper C, ottenendo un file descriptor anonimo eseguibile senza mai toccare il filesystem persistente. Il progetto fileless-elf-exec (open source) fornisce un esempio didattico per caricare binari ELF via memfd.
Su network device (scenario Quad7) l'operatore deposita gli script in /tmp sfruttando la volatilità: al reboot ogni traccia svanisce. La catena Operation CuckooBees, invece, usava i log transazionali CLFS: manipolarli richiede accesso alle API CreateLogFile e AddLogContainer, tecnica esplorata in ricerche pubbliche.
La reportistica del red team deve documentare percorso, dimensione del blob, entropia e processo che ha effettuato la scrittura — sono esattamente i metadati che la blue team cercherà.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo