Iscriviti al webinar gratuito del 26 Maggio per diventare SOC Specialist! Scopri di più
Cancellazione della Cronologia Comandi: Clear Command History (T1070.003)
Quando un attaccante conquista una shell su un sistema compromesso, ogni comando digitato lascia una traccia persistente. La tecnica Clear Command History consiste nell'eliminare o manipolare queste tracce per ostacolare le indagini forensi e sfuggire al monitoraggio difensivo. Si colloca nella tattica Defense Evasion (TA0005), quella fase della kill chain in cui l'avversario lavora attivamente per non essere scoperto.
La superficie d'impatto è ampia e multipiattaforma. Su Linux e macOS, la cronologia risiede nel file puntato dalla variabile d'ambiente HISTFILE — tipicamente ~/.bash_history o ~/.zsh_history. Su Windows, PowerShell mantiene due livelli di cronologia: quella di sessione (volatile) e quella persistente gestita dal modulo PSReadLine, scritta nel file ConsoleHost_history.txt sotto APPDATA. Anche ambienti infrastrutturali sono coinvolti: i server ESXi registrano i comandi in /var/log/shell.log, mentre i dispositivi di rete conservano la history nella CLI.
I numeri parlano chiaro: 8 gruppi APT documentati, 3 famiglie malware e 3 mitigazioni dedicate. Dalla criminalità finanziaria allo spionaggio state-sponsored, la cancellazione della cronologia è un gesto universale — rapido da eseguire, devastante per chi indaga. Eppure, proprio la sua semplicità la rende intercettabile con le giuste contromisure.
La simulazione di questa tecnica in laboratorio è tra le più dirette del framework: non richiede exploit complessi, ma una comprensione granulare di dove ogni sistema operativo conserva la cronologia. L'obiettivo del red teamer è dimostrare che la cancellazione funziona — e, soprattutto, verificare se il blue team la rileva.
Linux e macOS. Il metodo classico è il comando history -c, che svuota la cronologia della sessione corrente in memoria. Tuttavia, questo da solo non elimina il file su disco. Per una pulizia completa durante un engagement, la catena operativa è:
history -c && history -w && rm -f ~/.bash_history
Il flag -w forza la scrittura dello stato (ora vuoto) sul file, e il rm rimuove fisicamente l'artefatto. Per Zsh, il target diventa ~/.zsh_history. Un approccio più sottile consiste nel manipolare la variabile d'ambiente per disabilitare il logging fin dall'inizio della sessione:
unset HISTFILE
oppure
export HISTFILE=/dev/null
Questi comandi impediscono che qualsiasi comando successivo venga registrato. In un red team assessment realistico, è buona pratica eseguire unset HISTFILE come primo comando dopo l'accesso, simulando il comportamento documentato di gruppi come TeamTNT e APT41.
Windows PowerShell. La cronologia di sessione si cancella con:
Clear-History
Ma il vero bersaglio è il file persistente di PSReadLine. Per eliminarlo come ha fatto Medusa Group:
Remove-Item (Get-PSReadlineOption).HistorySavePath
Per disabilitare il logging futuro nella sessione corrente, utile durante l'engagement:
Set-PSReadlineOption -HistorySaveStyle SaveNothing
ESXi. Su server VMware ESXi, il target è il file /var/log/shell.log. La cancellazione può avvenire con un semplice troncamento:
> /var/log/shell.log
oppure con la rimozione selettiva di righe specifiche tramite sed, per un approccio più chirurgico che simula operazioni di APT5.
Dispositivi di rete. Sulla CLI di router e switch, i comandi sono diretti:
clear history clear logging
Per il framework di test, Atomic Red Team (open source) fornisce test atomici pre-confezionati per questa tecnica, eseguibili con il modulo PowerShell Invoke-AtomicRedTeam (open source). I test coprono Linux, macOS, Windows e permettono di validare le detection in modo ripetibile.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo