Bagaimana orang dapat benar-benar mendapatkan informasi sensitif dari partisi swap?

8

Ketika saya google pertanyaan ini, saya hanya mendapatkan semua jenis informasi tentang cara melindungi data sensitif, cara mengenkripsi swap, dan bagaimana "berbahaya" bisa menjaga pertukaran "normal" dalam sistem linux.

Tetapi saya tidak dapat menemukan perangkat lunak, metode atau "cara" untuk benar-benar mendapatkan (membaca) bagian data dari partisi swap.

Jadi pertanyaan saya adalah, sebagai warga negara "normal" yang tinggal di Eropa Barat, apakah benar-benar perlu untuk menghapus atau mengenkripsi swap di komputer saya? Dan sebelum seseorang menjawab "ya", dapatkah saya memiliki contoh tentang bagaimana saya bisa menguji, dan mengeluarkan swap saya sendiri, sehingga saya benar-benar dapat melihat data apa yang tidak dilindungi meskipun rumah saya yang dienkripsi?

Bob
sumber
1
Satu metode dapat ditemukan pada pertanyaan ini
Nattgew

Jawaban:

10

menjadi warga negara "normal" yang tinggal di Eropa barat, apakah benar-benar perlu untuk menghapus atau mengenkripsi swap di komputer saya?

Ini adalah penilaian pribadi, penilaian yang tergantung pada seberapa besar Anda menghargai privasi data Anda, dan seberapa besar Anda ingin melindungi data Anda dari terekspos jika jatuh ke tangan penyerang. Misalkan Anda memiliki laptop, dan suatu hari dicuri - seberapa besar kemungkinan pencuri akan mencoba mengekstrak kata sandi atau kunci enkripsi atau data pribadi, dan apakah Anda peduli? Banyak orang tidak peduli, tetapi ada yang tidak. Diakui, sebagian besar pencuri hanya akan menjual laptop untuk keuntungan finansial langsung, tetapi ada kasus di mana penyerang mungkin termotivasi untuk melangkah lebih jauh dalam upaya mengakses data itu sendiri.

Dan sebelum seseorang menjawab "ya", dapatkah saya memiliki contoh tentang bagaimana saya bisa menguji, dan mengeluarkan swap saya sendiri, sehingga saya benar-benar dapat melihat data apa yang tidak dilindungi meskipun rumah saya yang dienkripsi?

Memori proses apa pun berpotensi ditukar ke ruang swap. Memori yang bocor bisa berbahaya - contoh nyata Heartbleed - lihat Bagaimana saya menggunakan Heartbleed untuk mencuri kunci kripto pribadi sebuah situs . Memori yang diekspos oleh Heartbleed hanya milik satu proses tunggal, sedangkan memori yang berpotensi diekspos oleh ruang swap Anda milik setiap proses. Bayangkan sebuah proses yang berisi kunci pribadi, atau daftar kata sandi (mis. Browser web) sedang ditukar - item-item itu akan muncul, dalam plaintext, di ruang swap. Mengekstraksi mereka adalah masalah memilah-milah memori untuk pola data tertentu - itu bisa berupa data ASCII plaintext yang terlihat melaluistrings, atau bisa lebih terlibat, seperti di Heartbleed (di mana tesnya adalah bahwa beberapa byte berturut-turut adalah pembagi kunci kripto publik). Jika Anda memiliki partisi yang dienkripsi / rumah, maka hal yang jelas untuk dicari adalah blok data yang membentuk kunci enkripsi yang akan membuka kunci data pengguna.

Contoh kerja:

  • lakukan bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'untuk membuat proses bash dengan beberapa data rahasia di tumpukannya

  • lakukan sysctl vm.swappiness=100untuk meningkatkan swappiness (tidak perlu, tetapi dapat membuat contoh lebih mudah)

  • jalankan top -c, tekan f, aktifkan kolom SWAP, tekan q untuk kembali ke tampilan proses teratas, gulir ke bawah sampai Anda melihat bash -cprosesnya

  • di terminal lain, simpan program Chimnay Kanchi dari Linux: Bagaimana cara memuat memori sistem? untuk usemem.c, kompilasi gcc -o usemem usemem.c, dan jalankan usemem &berulang kali di terminal. Ini akan menggunakan hingga 512MB blok memori sekaligus. (Tidak masalah apa yang menyebabkan memori untuk ditukar, bisa jadi penggunaan sistem normal, proses lari, atau serangan yang disengaja, hasil akhirnya adalah sama)

  • lihat top, tunggu bash -csampai ditukar (nilai kolom SWAP> 0)

  • sekarang jalankan di strings /dev/sdaX | grep SECRETmana X adalah parititon swap Anda

  • Selamat - Anda baru saja mengekstraksi data "rahasia" dari partisi swap. Anda akan melihat banyak salinan teks SECRET diikuti oleh "kata sandi", salinan yang menyertakan baris perintah penuh bocor dari proses bash induk, proses teratas, dan proses 'bash -c'. Baris-baris yang tidak termasuk baris perintah penuh telah bocor dari proses 'bash -c'.

  • Untuk membuktikan bahwa rahasia bocor dari memori proses, dan bukan hanya baris perintah, tambahkan baris unsigned char secret[] = "SECRET=XXXX";ke usemem.c (tepat di bawah unsigned long mem;garis). Kompilasi ulang dan jalankan usemem &berulang kali, dan strings /dev/sdaX | grep SECRETlagi. Kali ini Anda akan melihat rahasia 'XXXX' bocor.

bain
sumber
+1 untuk penjelasan yang cukup bagus dan contoh yang bagus.
jobin
-1

Pertanyaan ini membawa kita ke diskusi tentang masalah antara pengembangan perangkat lunak, seperti perangkat lunak menjaga data sensitif dalam memori dan enkripsi data.

Jadi untuk memulai Anda harus membaca beberapa artikel pengembangan perangkat lunak praktis dan enkripsi data.

Mulai membaca artikel ini: http://www.ibm.com/developerworks/library/s-data.html?ns-311

Semoga ini bisa membantu.

Octávio Filipe Gonçalves
sumber