Senin, 23 November 2009

Data Recovery on Linux and ext3

Artikel ini membahas proses memulihkan data yang dihapus dari partisi ext3, pada sistem yang menjalankan Linux, menggunakan proses yang disebut data ukiran. Teknik dasar ini sangat berguna dalam sejumlah situasi, seperti memulihkan data yang telah sengaja dihapus oleh pengguna, informasi dihapus dalam upaya untuk menghapus tanda-tanda penyusupan suatu sistem yang dapat digunakan untuk melacak sumber, atau data yang dihapus oleh pengguna-akhir berusaha untuk menutupi kebijakan yang dapat diterima menggunakan pelanggaran.

Artikel ini mengasumsikan bahwa Anda memiliki pemahaman dasar ext3 dan kerja batin filesystem. Penting untuk dicatat bahwa ada sejumlah risiko yang terkait dengan proses ini. Ketika dilakukan tidak semestinya, data Anda sedang berusaha untuk memulihkan, atau data lain yang tersimpan pada sistem, bisa hilang secara permanen. Meskipun teknik ini cukup akurat sepanjang waktu, dan sangat berguna dalam sejumlah situasi yang berbeda, tidak "forensically suara" dan tidak akan tahan secara legal untuk digunakan di pengadilan. Khusus software, hardware, dan prosedur - atau layanan profesional - adalah suatu keharusan dalam situasi ketika tindakan hukum yang diperlukan.

Alat-alat yang digunakan dalam artikel ini tersedia dengan gratis dan dapat didownload dari situs web masing-masing.
Proses pemulihan dasar

Pada bagian ini kita akan pergi langkah-demi-langkah melalui proses pemulihan data dan jelaskan alat-alat, dan pilihan mereka, secara rinci. Kita mulai dengan daftar direktori di bawah ini.
[abe @ abe-laptop test] $ ls-al
total 27
drwxrwxr-x 2 abe abe 4096 2008-03-29 17:48.
drwx ------ 71 abe abe 4096 2008-03-29 17:47 ..
-rwxr - r - 1 abe abe 42736 2008-03-29 17:47 weimaraner1.jpg

Dalam listing di atas kita dapat melihat bahwa terdapat sebuah file bernama weimaraner1.jpg dalam direktori tes. Ini adalah gambar anjing saya. Aku tidak ingin menghapusnya. Aku suka anjing.
[abe @ abe-laptop tes] $ rm-f *

Di sini kita dapat melihat saya menghapusnya. Whoops! Maaf buddy. Mari kita mengumpulkan beberapa informasi dasar tentang sistem sehingga kita dapat memulai proses pemulihan.
[abe @ abe-laptop tes] $ df-h
Filesystem Size Used Avail Use% Di Mount pada
/ dev/sda2 71G 14g 53g 21% /
/ dev/sda1 99m 19m 76M 20% / boot
tmpfs 1007M 12K 1007M 1% / dev / shm
/ dev/sdb1 887M 152M 735M 18% / media / UMUM

Di sini kita melihat bahwa path lengkap ke direktori tes (yang adalah / home / abe / test) adalah bagian dari / filesystem, yang diwakili oleh file device / dev/hda2.
[abe @ abe-laptop tes] $ su --
Password:
[root @ abe-laptop ~] # debugfs / dev/sda2

Menggunakan perintah su untuk mendapatkan akses root, kita dapat memulai program debugfs memberikan target / dev/sda2. Program yang debugfs sistem file interaktif debugger yang terinstal secara default dengan distribusi Linux yang paling umum. Program ini digunakan untuk secara manual memeriksa dan mengubah keadaan filesystem. Dalam situasi kita, kita akan menggunakan program ini untuk menentukan inode yang tersimpan informasi tentang file dihapus dan untuk apa kelompok blok milik file yang dihapus.
debugfs 1.40.4 (31-Dec-2007)
debugfs: cd / home / abe / test
debugfs: ls-d
1835327 (12). 65538 (4084) .. <1835328> (4072) weimaraner1.jpg

Setelah debugfs dimulai, kita cd ke / home / abe / pengujian dan menjalankan perintah ls-d. Perintah ini menunjukkan kepada kita semua entri dihapus di direktori saat ini. Output menunjukkan kepada kita bahwa kita memiliki satu entri dihapus dan bahwa nomor inode 1835328 - yaitu, jumlah sudut antara tanda kurung.
debugfs: imap <1835328>
1835328 inode adalah bagian dari kelompok blok 56
terletak di blok 1835019, offset 0x0f80

Perintah selanjutnya yang ingin kita jalankan adalah imap, memberikan nomor diatas yang inode sehingga kami dapat menentukan mana kelompok blok file milik. Kita melihat dari output itu milik kelompok blok 56.
debugfs: stats
[... lots of output ...]
Blok per kelompok: 32.768
[... lots of output ...]
debugfs: q

Menjalankan perintah statistik akan menghasilkan banyak output. Satu-satunya data yang kami tertarik dari daftar ini, bagaimanapun, adalah jumlah blok per kelompok. Dalam kasus ini, dan sebagian besar kasus, itu 32.768. Sekarang kami memiliki data yang memadai untuk dapat menentukan set blok khusus di mana data tinggal. Kita sudah selesai dengan debugfs sekarang, jadi kita ketik q untuk keluar.
[root @ abe-laptop ~] # DLS / dev/sda2 1.835.008-1.867.775> / media / UMUM / block.dat


Hal berikutnya yang perlu kita lakukan adalah menarik semua terisi blok dari 56 kelompok blok sehingga kami dapat memeriksa konten mereka. Program yang DLS, dari The Sleuth Kit (TSK), memungkinkan kita untuk melakukan hal itu. Kita hanya perlu untuk mengetahui file device, berbagai blok, dan memiliki cukup ruang di tempat yang tepat untuk output data ini. Dengan menggunakan informasi di atas, kita dapat menghitung jarak blok dengan mengalikan jumlah grup blok dan kelompok blok ukuran dan kemudian mengalikannya kelompok blok nomor plus satu oleh blok per kelompok minus satu. Dalam kasus ini, rumus akan terlihat seperti ini:
(56 x 32.768) melalui ((56 + 1) x 32.768-1)

Ini akan memberi kita berbagai 1835008 melalui 1.867.775. Ini sangat penting bahwa tujuan dari output tidak berada pada partisi yang sama karena data Anda mencoba untuk pulih. Apa yang kemungkinan besar akan sejumlah besar data yang ditulis ke disk dari output dari perintah ini dapat berpotensi menimpa data Anda mencoba untuk memulihkan (sebagai blok yang menyimpan data dari file yang dihapus sudah ditandai tidak terisi). Anda ingin sesedikit mungkin aktivitas disk pada partisi Anda bekerja dengan. Dalam contoh ini, saya menggunakan USB thumb drive (terletak di / media / UMUM) sebagai lokasi untuk menyimpan data ini.
[root @ abe-laptop ~] # mkdir / media / UMUM / output
[root @ abe-laptop ~] # paling-dv-t jpg-i / media / UMUM / block.dat-o / media / UMUM / output /

Selanjutnya kita perlu berupaya mengambil data ini dari blok kami belum dialokasikan diekstraksi dengan DLS perintah di atas. Untuk melakukan hal ini, kita akan menggunakan Foremost. Program ini digunakan untuk memulihkan file berdasarkan informasi header, footer informasi, dan struktur data internal. Ini adalah proses, yang disebutkan sebelumnya, yang dinamakan data ukiran. Pertama kita akan menciptakan sebuah direktori untuk menyimpan output terkemuka (sekali lagi, ini harus di partisi yang terpisah). Selanjutnya kita akan menjalankan perintah yang paling utama memberikan jenis file jpg (yang merupakan jenis diakui secara internal - lebih pada jenis kustom di bawah), input file, dan direktori output. Output dari perintah ini tercantum di bawah ini.
Terutama versi 1.5.3 oleh Jesse Kornblum, Kris Kendall, dan Nick Mikus
Audit File

Terkemuka mulai pada Sat Mar 29 18:02:29 2008
Doa: paling-dv-t jpg-i / media / UMUM / block.dat-o / media / UMUM / output /
Output directory: / media / UMUM / output
File konfigurasi: / usr / local / etc / foremost.conf
Pengolahan: / media / UMUM / block.dat
|------------------------------------------------- -----------------
File: / media / UMUM / block.dat
Start: Sat Mar 29 18:02:29 2008
Length: 110 MB (115.941.376 bytes)

Num Nama (bs = 512) Ukuran File Offset Komentar

0: 00033272.jpg 26 KB 17.035.264
1: 00033328.jpg 184 KB 17.063.936
2: 00033704.jpg 58 KB 17.256.448
3: 00033824.jpg 62 KB 17.317.888

[...]

* 46: 00210136.jpg 2 KB 107.589.632
47: 00210144.jpg 3 KB 107.593.728
48: 00210392.jpg 6 KB 107.720.704
*
Selesai: Sat Mar 29 18:02:29 2008

49 FILES diekstraksi

jpg: = 49
-------------------------------------------------- ----------------

Terkemuka selesai pada Sat Mar 29 18:02:29 2008
[root @ abe-laptop ~] #

Seperti kita lihat, Foremost menemukan empat puluh sembilan sebelumnya dihapus file jpg (output ini juga disimpan dalam file bernama audit.txt di root direktori keluaran tertentu). Bagaimana kita tahu mana file kita berusaha untuk memulihkan? Kami bisa, seperti yang paling sering dilakukan, membuka semua file-file ini dan melihat isinya. Pilihan lain adalah dengan membandingkan ukuran file. Kita tahu dari daftar direktori kami di atas bahwa file jpg kita cari adalah ukuran 41k. Hanya ada satu file yang paling diekstrak ke direktori keluaran yang 41k, dan memang, 00114144.jpg adalah file kita berusaha untuk pulih. Membandingkan ukuran hanya bekerja, tentu saja, jika anda "tahu data". Memeriksa integritas program-program seperti Tripwire memainkan peran besar dalam sebuah operasi pemulihan anda dapat mengidentifikasi data yang dipulihkan tanpa pernah memeriksa isi, serta memverifikasi integritas. Hal ini menjadi sangat bermanfaat jika informasi yang Anda mencoba untuk memulihkan bersifat rahasia dan Anda tidak diizinkan untuk melihat data.
Mendefinisikan jenis adat di Foremost

Per Foremost v1.5.3, internal data pendukung jenis program yang akan sembuh tanpa aturan-aturan adat jpg, gif, png, bmp, avi, exe, mpg, wav, riff, wmv, mov, pdf, ole, doc, zip , rar, htm, dan cpp. Jika Anda ingin melakukan pemulihan data yang luar built-in ini tipe data, Anda akan perlu untuk menetapkan jenis dalam file konfigurasi Foremost (foremost.conf). 



Sebuah entri yang mendefinisikan sebuah tipe dalam file konfigurasi utama (seperti yang dijelaskan dalam dokumentasi di awal atau di foremost.conf manual) terdiri dari beberapa kolom: ekstensi, huruf besar dan kecil, ukuran maksimum, header dan footer (opsional), dan kata kunci spesial (opsional). Sebagai contoh yang paling harus mengenal, di sini adalah entri untuk sebuah file html:
htm n 50.000

Kita lihat di sini bahwa ekstensi file htm (NONE dapat ditentukan jika ekstensi file tidak harus digunakan selama output data diekstrak), header dan footer tidak bersifat case sensitif, ukuran file maksimum adalah 50k bytes (yang berarti bahwa 50k byte setelah header akan pulih jika tidak ada footer adalah ditentukan atau 50k byte akan pulih jika jumlah data yang ditemukan sebelum didefinisikan footer terdeteksi), file yang dipulihkan harus dimulai dengan " "(footer).

Kata kunci ASCII juga dapat digunakan ketika mencoba untuk memulihkan file ASCII. Menentukan kata kunci ini pada akhir sebuah entri akan memberitahu Foremost untuk mengekstrak semua karakter ASCII yang dapat dicetak sebelum dan sesudah kata kunci yang ditetapkan. Contoh ini akan menjadi tipe untuk memulihkan script perl. Jika, misalnya, Anda perlu untuk memulihkan script perl yang Anda tahu termasuk Crypt:: CBC, Anda dapat menggunakan definisi tipe berikut:
pl y 100.000 Crypt:: CBC Crypt:: CBC ASCII

Perhatikan bahwa Crypt:: CBC terdaftar baik di header dan footer field. Hal ini dilakukan agar Foremost akan mengenali ini sebagai string untuk mencari sekitar saat kata kunci ASCII digunakan. Jenis yang lebih umum untuk mencari script-script perl bisa didefinisikan sebagai berikut:
pl n 100.000 #! / usr / bin / perl #! / usr / bin / perl ASCII

Ketika mencoba untuk memulihkan file yang tidak ASCII, notasi heksadesimal dan oktal dapat digunakan dengan menetapkan \ x [0-f] [0-f] atau \ [0-3] [0-7] [0-7], masing-masing . Di bawah ini adalah contoh yang menggambarkan notasi heksadesimal header dan footer dari gif:
gif y 155000000 \ x47 \ x49 \ x46 \ X38 \ x37 \ x61 \ x00 \ x3b

Seperti Anda mungkin telah menyadari sekarang, Foremost merupakan alat yang sangat ampuh. Pelajari dengan kerumitan dan dapat menjadi alat yang mengagumkan dalam data fleksibel pemulihan dan operasi keamanan komputer forensik. Bacalah halaman manual Foremost atau berkonsultasi dengan file konfigurasi untuk panduan lengkap untuk menciptakan tipe data kustom.
ext2 vs ext3 Recover Data

Anda mungkin bertanya pada diri sendiri mengapa proses ini jauh lebih sulit dengan ext3 daripada dengan ext2? Pertanyaan ini dijawab oleh salah satu pengembang ext3 di Linux ext3 FAQ:

    
T: Bagaimana saya bisa memulihkan (membatalkan) menghapus file dari partisi ext3?

Sebenarnya, Anda tidak bisa! Inilah yang salah satu pengembang, Andreas Dilger, berkata tentang hal ini:

    
Dalam rangka untuk memastikan bahwa ext3 dengan aman dapat melanjutkan sebuah link setelah kecelakaan, itu benar-benar nol luar pointer di blok inode, sedangkan ext2 saja blok ini sebagai tanda tidak terpakai di blok bitmap dan inode menandai sebagai "dihapus" dan meninggalkan blok pointer sendirian.

Anda satu-satunya harapan adalah "grep" untuk bagian-bagian dari file Anda yang telah dihapus dan berharap untuk yang terbaik.

Proses, seperti yang dijelaskan dalam artikel ini, adalah "grep" yang merujuk ke Andreas. Mudah-mudahan, sebagai ext3 adalah dikembangkan lebih lanjut, beberapa upaya akan dimasukkan dalam untuk membuat proses ini lebih mudah dan lebih dapat diandalkan.
Kesimpulan

Sementara melalui proses ini mungkin diperlukan untuk mendapatkan kembali informasi yang hilang dalam sejumlah situasi apapun, itu bukan proses yang Anda ingin melewati pada Senin pagi untuk memulihkan data penggajian organisasi setelah seorang administrator lemak-jari sebuah perintah rm. Tunggal paling penting potongan informasi yang Anda harus ambil dari artikel ini, di vena, adalah menjaga agar arus, diuji backup data penting bisnis yang berada di sistem Anda kelola. Terlepas dari alasan penggunaannya, proses tercakup dalam pasal ini adalah sesuatu yang setiap sistem administrator dan analis keamanan harus toolbelt mereka.

Tidak ada komentar:

Posting Komentar