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…

1. Pendahuluan
2. Arsitektur perangkat keras
– 2.1. Papan utama
– 2.2. Papan indikator LCD
– 2.3. Papan ketik
– 2.4. Melihat kabelnya
3. Urutan langkah penyerangan
– 3.1. Mengambil dump data dari flash drive SPI
– 3.2. Mengendus komunikasi

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian


1. Pendahuluan

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian
Perumahan

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian
Pengepakan

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):

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

2.1. Papan utama

Papan utamanya cukup sederhana:

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

Bagian yang paling menonjol (lihat dari atas ke bawah):

  • konektor untuk indikator LCD (CN1);
  • tweeter (SP1);
  • Pm25LD010 (spesifikasi) Flashdisk SPI (U2);
  • 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.

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

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.

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

Di sini, di sisi belakang, kita melihat konektor pita, serta mikrokontroler Cypress CY8C21434 PSoC 1 (selanjutnya kita sebut saja PSoC)

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

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:

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

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.

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

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.

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

Kemudian kami meluncurkan penganalisis logika Saleae dan mengetik di keyboard: “123456~”. Hasilnya, kita melihat diagram berikut.

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

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:

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

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:

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

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:

Membalikkan dan meretas drive HDD eksternal yang mengenkripsi sendiri Aigo. Bagian 1: Membedah menjadi beberapa bagian

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.

Sumber: www.habr.com

Tambah komentar