Steganografi sistem file

Hei Habr.

Saya ingin memberi Anda sebuah proyek kecil steganografi, dibuat di waktu luang saya dari belajar.

Saya membuat proyek tentang penyimpanan informasi tersembunyi dalam sistem file (selanjutnya FS).
Ini dapat digunakan untuk mencuri informasi rahasia untuk tujuan pendidikan.

Steganografi sistem file

Linux FS yang sangat lama dipilih sebagai prototipe ext2.

Implementasi

Pertimbangan Implementasi

Jika ada baiknya untuk "mengurai" standar ext2, maka Anda dapat menggantinya di FS ada yang disebut Superblok, yang memberikan informasi dasar tentang sistem. Setelah saya ditemukan Blokir Bitmap и Tabel Inode. Segera, ide untuk mencatat informasi ke dalam blok FS yang saat ini kosong lahir. Sekarang ada baiknya memikirkan perlindungan dari seorang programmer bersenjata editor heksa.

Jika Anda menyimpan informasi tersembunyi tanpa enkripsi, meskipun FS kabur, informasi tersebut akan tetap terlalu mencolok, terutama jika pemrogram mengetahui apa yang harus dicari. Oleh karena itu, diputuskan untuk mengenkripsi semua blok file sumber. Saya memilih blok cipher AES, tapi seperti yang Anda pahami, ini tidak penting.

Untuk memisahkan blok yang diperlukan dari blok lainnya saat membaca, diputuskan untuk menambahkan penanda khusus ke setiap blok di awal blok. Token ini dienkripsi tergantung pada nomor blok di file sumber. Trik ini segera memungkinkan tidak hanya untuk menemukan blok yang diperlukan, tetapi juga untuk mengenali urutannya yang benar.

Prinsip operasi umum sistem.

Steganografi sistem file

Algoritma perekaman

Poinnya:

  • Pertama tulis beberapa informasi ke sistem file sumber;
  • Hapus informasi ini (tidak harus semuanya);
  • File yang akan disembunyikan dibagi menjadi blok-blok dengan panjang yang sama, menambahkan penanda;
  • Enkripsi blok-blok ini;
  • Tempatkan blok terenkripsi di blok FS kosong.

Bagi pecinta diagram blok

Di bawah ini adalah diagram blok dari algoritma pencatatan. Algoritme menerima empat file sebagai masukan:
-Gambar sistem file yang dapat dimodifikasi;
-File tunduk pada steganografi;
-File dengan kunci enkripsi untuk AES;
-File dengan spidol.
Steganografi sistem file

Perlu segera dicatat bahwa algoritma ini memiliki satu kelemahan: setelah menulis file ke FS, tidak harus tulis sesuatu yang baru ke dalam FS, karena informasi baru apa pun dapat berakhir di blok yang telah kita alokasikan ke file zip kita, meskipun ini juga membuka kemungkinan untuk “menutupi jejak kita dengan cepat.”

Tetapi cukup jelas bagaimana hal ini dapat diperbaiki: perlu untuk menulis ulang algoritma untuk menulis blok di FS. Ini adalah tugas yang dapat dimengerti, namun sangat memakan waktu.
Untuk Proof Of Consept saya tidak menerapkan ini.

Akibatnya, perubahan berikut akan dilakukan pada FS; inilah tampilan FS sebelum steganografi (file audio direkam sebelumnya).
Steganografi sistem file
Dan seperti inilah tampilan FS dengan informasi yang sudah di-zip.
Steganografi sistem file

Algoritma membaca

Poinnya:

  • Dengan pengetahuan tentang kunci dan metode pembuatan penanda, buatlah N penanda pertama, dengan jaminan bahwa N dikalikan dengan panjang blok sistem file lebih besar dari panjang file zip;
  • Cari blok di FS dimulai dengan penanda;
  • Menguraikan blok yang diterima dan memisahkan penandanya;
  • Kumpulkan blok yang dihasilkan dalam urutan yang benar dan dapatkan file sumbernya.

Bagi pecinta diagram blok

Di bawah ini adalah diagram blok dari algoritma pencatatan. Algoritme menerima tiga file sebagai masukan:
-Gambar sistem file;
-File dengan kunci enkripsi untuk AES;
-File dengan spidol.
Steganografi sistem file

Setelah program dijalankan, file Read akan muncul, yang merupakan file yang diekstraksi dari sistem file steganograf; jika kunci atau penanda yang ditentukan salah, maka file Read akan kosong.
(bagi pecinta kecantikan, Anda tidak hanya dapat memasukkan file, tetapi juga "header" yang berisi informasi meta: nama file, hak, waktu modifikasi terakhir, dll.)

Otomatisasi permulaan

Demi kenyamanan, skrip bash ditulis untuk mengotomatiskan peluncuran di Linux (diuji pada Ubuntu 16.04.3 LTS).
Mari kita lihat peluncurannya selangkah demi selangkah.
Rekam:

  1. sudo Copy_Flash.sh “DEVICE” - dapatkan gambar FS dari DEVICE (flash);
  2. ./Write.sh “FILE” “KEY” “MARKER” – membuat lingkungan virtual, mengunduh perpustakaan yang diperlukan dan menjalankan skrip penulisan;
  3. sudo ./Write_Flash.sh “DEVICE” – tulis lagi FS yang diubah ke DEVICE.

Membaca:

  1. sudo Copy_Flash.sh “DEVICE” - dapatkan gambar FS dari DEVICE (flash);
  2. ./Read.sh “KEY” 'MARKER” - buat lingkungan virtual, unduh perpustakaan yang diperlukan dan jalankan skipt untuk membaca;
  3. Di direktori saat ini, buka file Baca - ini adalah informasi zip.

Kesimpulan

Metode steganografi ini mungkin memerlukan perbaikan, pengujian tambahan dan perluasan ke sistem file yang lebih populer, seperti Fat32, NTFS и ext4.
Namun tujuan dari pekerjaan ini adalah untuk menunjukkan prinsip yang memungkinkan untuk melakukan penyimpanan informasi tersembunyi dalam sistem file.
Dengan bantuan algoritme semacam itu, Anda dapat menyimpan informasi tanpa rasa takut, dan jika, jika Anda mengetahui kuncinya, sistem seperti itu dapat diretas bukan dengan kekerasan (tetapi dengan algoritme yang sangat panjang), maka tanpa mengetahui kuncinya, ini sistem menurut saya benar-benar stabil, namun, ini mungkin menjadi alasan untuk artikel terpisah.

Semua kode diimplementasikan dalam Python versi 3.5.2. Contoh pekerjaan disajikan di saluran youtube saya. Kode lengkap proyek diposting di github.
(Ya, ya, saya tahu bahwa untuk versi produksi Anda perlu menulis sesuatu yang "cepat", misalnya C 😉)
Dalam implementasi ini, ukuran file masukan untuk steganografi tidak boleh melebihi 1000 kB.

Saya ingin mengucapkan terima kasih kepada pengguna PavelMSTU atas nasihat berharga dalam merencanakan penelitian dan rekomendasi mengenai desain artikel.

Sumber: www.habr.com

Tambah komentar