Dopo aver letto le altre risposte e osservato questo aspetto, ho osservato alcuni comportamenti del file system, il che implica una soluzione molto semplice. Il programma terminale memorizza i suoi dati in
~/Library/Saved Application State/com.apple.Terminal.savedState/
come indicato sopra. Quando esco dall'applicazione Terminale (pulita), questa intera cartella viene cancellata. Il motivo per cui l'OP recupera i dati è perché sta bloccando l'app terminale con killall
. Ho osservato questo aprendo il finder alla cartella Saved Application State
e iniziando e chiudendo il terminale. Il lato negativo di questo è che devi chiudere TUTTE le finestre dei terminali, ma in questo modo tutti gli stati salvati sembrano essere cancellati (escludendo ovviamente il forensics del disco)
Sembra che ci sia un file in questa directory per ogni finestra terminale aperta (ma non per ogni scheda!) più data.data e windows.plist e window_1.data
che presumibilmente rappresenta il programma terminale stesso. I file per-terminal scompaiono alla chiusura della finestra, tuttavia il file data.data è quello che cresce man mano che i comandi vengono emessi e quindi memorizza presumibilmente il buffer scrollback. Non si restringe alla chiusura della finestra del terminale, il che implica che continua a contenere i dati di scorrimento. Il file data.data
tuttavia si restringe quando viene aperta la successiva finestra del terminale. Si restringe anche drasticamente quando viene aggiornata un'altra finestra di terminale (premendo return ad esempio). Quindi sembra che la seguente routine cancellerà (probabilmente) completamente i dati di scrollback:
- Chiudi in modo pulito la finestra con i dati sensibili (ad es. punto rosso,
command + w
)
- Apri una nuova finestra di terminale O fallo scorrere in un'altra finestra di terminale che è già aperta.
o
- Chiudi l'intera applicazione terminale (comando + q ecc.)
Vale anche la pena notare che il file data.data
non è un file di testo. È un file binario che richiederà uno sforzo per interpretare. La mia ipotesi è che i dati siano compressi in qualche modo. Un semplice cat
del file non rivela nulla di leggibile. Quindi, affinché questi file siano vulnerabili, sembra che entrambi i seguenti debbano essere veri:
- Il terminale è morto e
NSQuitAlwaysKeepsWindows
è vero (vedi altra risposta), oppure la finestra del terminale è stata chiusa e nessun'altra finestra è stata aperta o aggiornata.
- L'autore dell'attacco è abbastanza sofisticato da sapere abbastanza da cercare e sapere come decodificare il file data.data.
NOTA BENE: quanto sopra si basa interamente sull'osservazione di come i file appaiono / scompaiono e su come cambiano le loro dimensioni. È ovviamente ancora possibile che alcune informazioni parziali vengano conservate se il mantenimento del file data.data
è trascurato. Comunque queste osservazioni mi sembrano abbastanza buone. Decidi tu se è abbastanza buono per te.
Queste osservazioni provengono da OS X 10.9.5 e Terminal Version 2.4 (326), per favore verifica il comportamento sopra descritto se stai usando qualche altra versione prima di fare affidamento su questo consiglio. Qualsiasi o tutto questo potrebbe cambiare con le nuove versioni di terminale o Mac OSX.