Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Arile! Scopri di più
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.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo