Come si possono davvero ottenere informazioni sensibili da una partizione di swap?


8

Quando cerco su Google questa domanda, ottengo solo tutti i tipi di informazioni su come proteggere i dati sensibili, come crittografare lo scambio e quanto "pericoloso" potrebbe essere uno scambio "normale" in un sistema Linux.

Ma non sono riuscito a trovare alcun software, metodo o "come" per ottenere realmente (leggere) qualsiasi dato da una partizione di swap.

Quindi la mia domanda è, essendo un cittadino "normale" che vive nell'Europa occidentale, è davvero necessario cancellare o crittografare lo scambio sul mio computer? E prima che qualcuno risponda "sì", posso avere un esempio di come ho potuto testare ed eliminare il mio swap, in modo da poter effettivamente vedere che tipo di dati non sono protetti nonostante la mia casa crittografata?


1
Un metodo può essere trovato su questa domanda
Nattgew,

Risposte:


10

essendo un "normale" cittadino che vive nell'Europa occidentale, è davvero necessario cancellare o crittografare lo scambio sul mio computer?

È un giudizio personale, che dipende da quanto apprezzi la privacy dei tuoi dati e da quanto desideri proteggere i tuoi dati dall'esposizione se cadessero nelle mani di un utente malintenzionato. Supponiamo che tu abbia un laptop e che un giorno venga rubato: quanto è probabile che un ladro provi a estrarre password o chiavi di crittografia o altri dati privati, e te ne importa? A molte persone non importa, ma alcuni lo fanno. Certo, la maggior parte dei ladri venderebbe semplicemente il laptop per un immediato guadagno finanziario, ma ci sono casi in cui un utente malintenzionato potrebbe essere motivato ad andare oltre nel tentativo di accedere ai dati stessi.

E prima che qualcuno risponda "sì", posso avere un esempio di come ho potuto testare ed eliminare il mio swap, in modo da poter effettivamente vedere che tipo di dati non sono protetti nonostante la mia casa crittografata?

La memoria di qualsiasi processo potrebbe essere potenzialmente scambiata nello spazio di scambio. Perdere memoria può essere pericoloso - l'ovvio esempio è Heartbleed - vedi Come ho usato Heartbleed per rubare la chiave crittografica privata di un sito . La memoria esposta da Heartbleed appartiene solo a un singolo processo, mentre la memoria potenzialmente esposta dallo spazio di swap appartiene a ogni processo. Immagina che un processo contenente una chiave privata o un elenco di password (ad es. Browser web) venga scambiato: tali elementi appariranno, in chiaro, nello spazio di scambio. Estrarli è una questione di setacciare la memoria per particolari modelli di dati - potrebbero essere dati ASCII in chiaro visibili attraversostringso potrebbe essere più coinvolto, come in Heartbleed (dove il test è che alcuni byte consecutivi sono divisori della chiave crittografica pubblica). Se si dispone di una partizione crittografata / home, la cosa ovvia da cercare è un blocco di dati che costituisce la chiave di crittografia che sbloccherà i dati dell'utente.

Un esempio funzionante:

  • fare bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'per creare un processo bash con alcuni dati segreti nel suo stack

  • fare sysctl vm.swappiness=100per aumentare la swappiness (non necessario, ma può rendere l'esempio più semplice)

  • eseguire top -c, premere f, abilitare la colonna SWAP, premere q per tornare alla vista di processo superiore, scorrere verso il basso fino a visualizzare il bash -cprocesso

  • in un altro terminale, salva il programma Chimnay Kanchi da Linux: come caricare la memoria di sistema? a usemem.c, compilare gcc -o usemem usemem.c, ed eseguire usemem &ripetutamente in un terminale. Questo utilizzerà fino a 512 MB di blocchi di memoria alla volta. (Non importa ciò che provoca lo scambio della memoria, potrebbe essere il normale utilizzo del sistema, un processo di fuga o un attacco deliberato, il risultato finale è lo stesso)

  • guarda in alto, attendi bash -cche venga scambiato (valore della colonna SWAP> 0)

  • ora corri strings /dev/sdaX | grep SECRETdove X è la tua parititon di swap

  • Congratulazioni: hai appena estratto i dati "segreti" dalla partizione di swap. vedrai più copie del testo SEGRETO seguito dalla "password", le copie che includono l'intera riga di comando trapelata dal processo bash parent, dal processo top e dal processo 'bash -c'. Le righe che non includono l'intera riga di comando sono trapelate dal processo 'bash -c'.

  • Per dimostrare che i segreti perdono dalla memoria di processo e non solo dalla riga di comando, aggiungere la riga unsigned char secret[] = "SECRET=XXXX";a usemem.c (appena sotto la unsigned long mem;riga). Ricompilare ed eseguire usemem &più volte e di strings /dev/sdaX | grep SECRETnuovo. Questa volta vedrai trapelare il segreto 'XXXX'.


+1 per una spiegazione abbastanza buona e un ottimo esempio.
Jobin

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.