Cancellare le Tracce dalla Cronologia Comandi: Impair Command History Logging (T1562.003)

Ogni interprete di comandi — che sia Bash su Linux, Zsh su macOS, PowerShell su Windows o la CLI di un apparato di rete — tiene traccia di ciò che l'utente digita. Questa cronologia è una miniera d'oro per chi indaga su un'intrusione: rivela esattamente cosa ha fatto l'attaccante, in che ordine, e con quali parametri. Proprio per questo, una delle prime mosse di un avversario esperto consiste nel disabilitare o manipolare il logging della command history, cancellando le proprie tracce prima ancora di iniziare l'operazione vera e propria.

La tecnica si colloca nella tattica Defense Evasion (TA0005), la fase in cui l'avversario cerca di evitare il rilevamento. I metodi variano per piattaforma: su Linux e macOS si agisce sulle variabili d'ambiente HISTFILE, HISTCONTROL e HISTFILESIZE; su Windows si interviene sul modulo PSReadLine di PowerShell; su dispositivi di rete si utilizzano comandi CLI per disattivare il logging; su ESXi si azzerano le stesse variabili della shell.

I numeri confermano che non si tratta di una tecnica di nicchia: 4 gruppi APT, 4 software malevoli, 2 campagne documentate e 2 mitigazioni formali ne attestano l'uso sistematico in operazioni reali. Dalla sottrazione di fondi bancari al compromesso di router enterprise, la manipolazione della cronologia è un pattern trasversale a scenari molto diversi tra loro.


La simulazione di questa tecnica in laboratorio è sorprendentemente semplice, ma il valore sta nel testare se i controlli difensivi del cliente la rilevano davvero. L'obiettivo del red teamer non è solo eseguire il bypass, ma generare gli artefatti (o la loro assenza) che il blue team dovrebbe notare.

Linux e macOS — variabili d'ambiente

Il metodo più diretto consiste nel disattivare completamente la registrazione della sessione corrente. Il comando classico è:

unset HISTFILE

Questo impedisce alla shell di scrivere qualsiasi comando nel file di history al logout. Un'alternativa più sottile agisce sulla dimensione del file:

export HISTFILESIZE=0

Per un approccio meno invasivo — che non modifica variabili ma sfrutta un comportamento legittimo — si può configurare HISTCONTROL affinché ignori i comandi preceduti da uno spazio:

export HISTCONTROL=ignorespace

Da quel momento, ogni comando preceduto da uno spazio (es. " whoami") non verrà registrato. In un engagement reale, è buona pratica concatenare queste azioni all'inizio della sessione post-exploitation.

Per MySQL su host compromessi, l'approccio è analogo:

export MYSQL_HISTFILE=/dev/null

Windows — PSReadLine

Su PowerShell, il modulo PSReadLine scrive di default ogni comando in un file di testo. Per disabilitare completamente il salvataggio:

Set-PSReadLineOption -HistorySaveStyle SaveNothing

Per deviare il file di history verso un percorso controllato dall'attaccante (utile se si vuole mascherare l'attività senza eliminarla del tutto):

Set-PSReadLineOption -HistorySavePath "C:\Windows\Temp\legit.log"

Per rimuovere la cronologia già registrata nella sessione corrente:

Remove-Item (Get-PSReadLineOption).HistorySavePath

ESXi

Sugli hypervisor VMware ESXi la shell usa le stesse variabili Bash. Il comando unset HISTFILE funziona identicamente. In scenari avanzati, l'attaccante potrebbe anche fermare il servizio di syslog:

esxcli system syslog config set --loghost=""

Apparati di rete

Su dispositivi Cisco, un semplice no logging dalla CLI disabilita il logging storico della sessione. La sintassi varia per vendor: su Juniper il meccanismo coinvolge la configurazione del syslog di Junos OS.

Per orchestrare il test, tool come Atomic Red Team (open source) offrono test atomici già pronti per T1562.003 che eseguono queste varianti in modo ripetibile e documentato, ideali per validare le detection rule del SOC.


Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.