ProHoster > blog > administrasi > Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian
Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian
Membalikkan dan meretas drive eksternal yang mengenkripsi sendiri adalah hobi lama saya. Dulu saya berkesempatan berlatih dengan model seperti Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Baru-baru ini, seorang rekan membawakan saya pameran lain: Patriot (Aigo) SK8671, yang dibuat sesuai dengan desain khas - indikator LCD dan keyboard untuk memasukkan kode PIN. Itulah yang keluar darinya…
Akses ke data yang tersimpan di disk, yang seharusnya dienkripsi, dilakukan setelah memasukkan kode PIN. Beberapa catatan pengantar tentang perangkat ini:
Untuk mengubah kode PIN, Anda harus menekan F1 sebelum membuka kunci;
Kode PIN harus berisi 6 hingga 9 digit;
Setelah 15 kali upaya yang salah, disk akan dihapus.
2. Arsitektur perangkat keras
Pertama, kami membedah perangkat menjadi beberapa bagian untuk memahami komponen apa saja yang ada di dalamnya. Tugas yang paling membosankan adalah membuka casing: banyak sekrup mikroskopis dan plastik. Setelah membuka kasingnya, kita melihat yang berikut (perhatikan konektor lima pin yang saya solder):
2.1. Papan utama
Papan utamanya cukup sederhana:
Bagian yang paling menonjol (lihat dari atas ke bawah):
Pengontrol Jmicron JMS539 (spesifikasi) untuk USB-SATA (U1);
Konektor USB 3 (J1).
Flash drive SPI menyimpan firmware untuk JMS539 dan beberapa pengaturan.
2.2. Papan indikator LCD
Tidak ada yang luar biasa pada papan LCD.
Hanya:
Indikator LCD yang tidak diketahui asalnya (mungkin dengan font Cina); dengan kontrol berurutan;
Konektor pita untuk papan keyboard.
2.3. Papan ketik
Saat memeriksa papan keyboard, segalanya menjadi lebih menarik.
Di sini, di sisi belakang, kita melihat konektor pita, serta mikrokontroler Cypress CY8C21434 PSoC 1 (selanjutnya kita sebut saja PSoC)
CY8C21434 menggunakan set instruksi M8C (lihat dokumentasi). Di [halaman produk]( (http://www.cypress.com/part/cy8c21434-24ltxi) diindikasikan mendukung teknologi tersebut CapSense (solusi dari Cypress, untuk keyboard kapasitif). Di sini Anda dapat melihat konektor lima pin yang saya solder - ini adalah pendekatan standar untuk menghubungkan programmer eksternal melalui antarmuka ISSP.
2.4. Melihat kabelnya
Mari kita cari tahu apa hubungannya di sini. Untuk melakukan ini, cukup uji kabel dengan multimeter:
Penjelasan untuk diagram yang digambar di lutut ini:
PSoC dijelaskan dalam spesifikasi teknis;
konektor berikutnya, yang di sebelah kanan, adalah antarmuka ISSP, yang, atas kehendak takdir, sesuai dengan apa yang tertulis di Internet;
Konektor paling kanan adalah terminal untuk konektor pita ke papan keyboard;
Persegi panjang hitam adalah gambar konektor CN1, yang dirancang untuk menghubungkan papan utama ke papan LCD. P11, P13 dan P4 dihubungkan ke pin PSoC 11, 13 dan 4, pada papan LCD.
3. Urutan langkah penyerangan
Sekarang setelah kita mengetahui komponen apa yang terdiri dari drive ini, kita perlu: 1) memastikan bahwa fungsi enkripsi dasar benar-benar ada; 2) mencari tahu bagaimana kunci enkripsi dihasilkan/disimpan; 3) temukan di mana tepatnya kode PIN akan diperiksa.
Untuk melakukan ini saya melakukan langkah-langkah berikut:
mengambil dump data dari flash drive SPI;
mencoba membuang data dari flash drive PSoC;
memverifikasi bahwa komunikasi antara Cypress PSoC dan JMS539 sebenarnya berisi tombol yang ditekan;
Saya memastikan bahwa ketika mengubah kata sandi, tidak ada yang tertimpa di flash drive SPI;
terlalu malas untuk membalikkan firmware 8051 dari JMS539.
3.1. Mengambil dump data dari flash drive SPI
Prosedur ini sangat sederhana:
sambungkan probe ke kaki flash drive: CLK, MOSI, MISO dan (opsional) EN;
Komunikasi "mengendus" dengan sniffer menggunakan penganalisis logika (saya menggunakan Logika Saleae Pro 16);
mendekode protokol SPI dan mengekspor hasilnya ke CSV;
mengambil keuntungan decode_spi.rbuntuk mengurai hasil dan membuangnya.
Harap dicatat bahwa pendekatan ini bekerja sangat baik terutama dalam kasus pengontrol JMS539, karena pengontrol ini memuat semua firmware dari flash drive pada tahap inisialisasi.
Setelah mengambil dump dari flash drive SPI, saya sampai pada kesimpulan bahwa satu-satunya tugasnya adalah menyimpan firmware untuk perangkat kontrol JMicron, yang dibangun ke dalam mikrokontroler 8051. Sayangnya, membuang flash drive SPI ternyata sia-sia:
ketika kode PIN diubah, dump flash drive tetap sama;
Setelah tahap inisialisasi, perangkat tidak mengakses flash drive SPI.
3.2. Mengendus komunikasi
Ini adalah salah satu cara untuk menemukan chip mana yang bertanggung jawab untuk memeriksa komunikasi untuk waktu/konten yang diinginkan. Seperti yang telah kita ketahui, pengontrol USB-SATA terhubung ke LCD Cypress PSoC melalui konektor CN1 dan dua pita. Oleh karena itu, kami menghubungkan probe ke tiga kaki yang sesuai:
P4, masukan/keluaran umum;
P11, I2C SCL;
P13, I2C SDA.
Kemudian kami meluncurkan penganalisis logika Saleae dan mengetik di keyboard: “123456~”. Hasilnya, kita melihat diagram berikut.
Di atasnya kita bisa melihat tiga saluran pertukaran data:
ada beberapa semburan pendek di saluran P4;
pada P11 dan P13 - pertukaran data hampir terus menerus.
Memperbesar lonjakan pertama pada saluran P4 (persegi panjang biru pada gambar sebelumnya), kita melihat yang berikut:
Di sini Anda dapat melihat bahwa pada P4 terdapat hampir 70ms sinyal monoton, yang pada awalnya menurut saya berperan sebagai sinyal jam. Namun, setelah meluangkan waktu untuk memeriksa tebakan saya, saya menemukan bahwa ini bukanlah sinyal jam, tetapi aliran audio yang dikeluarkan ke tweeter ketika tombol ditekan. Oleh karena itu, bagian sinyal ini sendiri tidak berisi informasi yang berguna bagi kami. Namun, ini dapat digunakan sebagai indikator untuk mengetahui kapan PSoC mencatat penekanan tombol.
Namun, aliran audio P4 terbaru sedikit berbeda: ini adalah audio untuk "PIN tidak valid"!
Kembali ke grafik penekanan tombol, memperbesar grafik aliran audio terakhir (lihat persegi panjang biru lagi), kita mendapatkan:
Di sini kita melihat sinyal monoton di P11. Jadi sepertinya ini adalah sinyal jam. Dan P13 adalah data. Perhatikan bagaimana polanya berubah setelah bunyi bip berakhir. Menarik untuk melihat apa yang terjadi di sini.
Protokol yang bekerja dengan dua kabel biasanya SPI atau I2C, dan spesifikasi teknis pada Cypress menyatakan bahwa pin ini sesuai dengan I2C, yang kami lihat berlaku dalam kasus kami:
Chipset USB-SATA terus-menerus melakukan polling pada PSoC untuk membaca status kunci, yang secara default adalah “0”. Kemudian, saat Anda menekan tombol "1", berubah menjadi "1". Transmisi terakhir segera setelah menekan “~” berbeda jika kode PIN yang dimasukkan salah. Namun, saat ini saya belum memeriksa apa yang sebenarnya ditransmisikan di sana. Tapi saya curiga ini bukan kunci enkripsi. Bagaimanapun, lihat bagian selanjutnya untuk memahami cara saya menghapus firmware internal PSoC.