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

Membalik dan meretas drive enkripsi diri eksternal adalah hobi lama saya. Di masa lalu, saya dulu berlatih dengan model seperti Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Baru-baru ini, seorang kolega membawakan saya pameran lain: Patriot (Aigo) SK8671, yang dibangun sesuai dengan desain yang khas - indikator LCD dan keyboard untuk memasukkan kode PIN. Inilah yang terjadi ...


1. Pendahuluan
2. Arsitektur perangkat keras
- 2.1. Papan utama
- 2.2. Papan LCD
- 2.3. Papan keyboard
- 2.4. Kami melihat kabelnya
3. Urutan langkah serangan
- 3.1. Hapus dump data dari flash drive SPI
- 3.2. Mengendus komunikasi




1. Pendahuluan



Perumahan



Pengepakan


Akses ke data yang disimpan dalam disk, yang seharusnya dienkripsi, dilakukan setelah memasukkan kode PIN. Beberapa catatan pengantar pada perangkat ini:


  • Untuk mengubah kode PIN, tekan F1 sebelum membuka kunci;
  • Kode PIN harus antara 6 dan 9 digit;
  • Setelah 15 upaya yang salah, disk dihapus.


2. Arsitektur perangkat keras


Pertama, kami menyiapkan perangkat menjadi beberapa bagian untuk memahami komponen apa yang ada di dalamnya. Tugas yang paling membosankan adalah membuka kasing: banyak roda penggerak mikroskopis dan plastik. Setelah membuka kasing, kami melihat yang berikut (perhatikan konektor lima pin yang disolder oleh saya):




2.1. Papan utama


Papan utama cukup sederhana:



Bagian yang paling terkenal (lihat atas ke bawah):


  • Konektor LCD (CN1);
  • tweeter (SP1);
  • Pm25LD010 ( spesifikasi ) SPI flash drive (U2);
  • Pengontrol Jmicron JMS539 ( spesifikasi ) untuk USB-SATA (U1);
  • Konektor USB 3 (J1).

SPI flash drive menyimpan firmware untuk JMS539 dan beberapa pengaturan.



2.2. Papan LCD


Tidak ada yang luar biasa di papan LCD.




Hanya:


  • Indikator LCD yang tidak diketahui asalnya (mungkin dengan font Cina); dengan kontrol sekuensial;
  • konektor pita untuk papan keyboard.


2.3. Papan keyboard


Ketika Anda melihat papan keyboard, segala sesuatunya berubah menjadi lebih menarik.



Di sini, di sisi belakang, kita melihat konektor pita, serta Cypress CY8C21434 - mikrokontroler PSoC 1 (selanjutnya hanya disebut PSoC)



CY8C21434 menggunakan set instruksi M8C (lihat dokumentasi ). Pada halaman produk, diindikasikan mendukung teknologi CapSense (solusi dari Cypress, untuk keyboard kapasitif). Di sini saya dapat melihat konektor lima pin yang disolder oleh saya - ini adalah pendekatan standar untuk menghubungkan programmer eksternal melalui antarmuka ISSP.



2.4. Kami melihat kabelnya


Mari kita cari tahu apa yang terhubung dengan ini. Untuk melakukan ini, cukup dengan membunyikan kabel dengan multimeter:



Penjelasan untuk diagram berlutut ini:


  • PSoC dijelaskan dalam spesifikasi teknis;
  • konektor berikutnya, yang di sebelah kanan adalah antarmuka ISSP yang, sesuai dengan takdir, sesuai dengan apa yang tertulis tentang itu di Internet;
  • konektor paling kanan adalah terminal untuk konektor pita dengan papan keyboard;
  • kotak hitam adalah gambar konektor CN1, yang dirancang untuk menghubungkan papan utama ke papan LCD. P11, P13 dan P4 - terhubung ke kaki PSoC 11, 13 dan 4, pada papan LCD.


3. Urutan langkah serangan


Sekarang kita tahu 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 dimana tepatnya kode pin dicentang.


Untuk melakukan ini, saya telah melakukan langkah-langkah berikut:


  • menghapus data dump drive SPI;
  • Saya mencoba untuk menghapus data dump drive PSoC;
  • memastikan bahwa pertukaran data antara Cypress PSoC dan JMS539 sebenarnya berisi tombol yang ditekan;
  • memastikan bahwa ketika mengganti kata sandi, tidak ada yang ditimpa dalam flash drive SPI;
  • terlalu malas untuk membalikkan firmware 8.051 dari JMS539.


3.1. Hapus dump data dari flash drive SPI


Prosedur ini sangat sederhana:


  • hubungkan probe ke kaki flash drive: CLK, MOSI, MISO dan (opsional) EN;
  • Komunikasi "Sniff" menggunakan sniffer menggunakan penganalisis logika (saya menggunakan Saleae Logic Pro 16 );
  • mendekode protokol SPI dan mengekspor hasilnya ke CSV;
  • Gunakan decode_spi.rb untuk mem - parsing hasil dan mendapatkan dump.

Harap dicatat bahwa pendekatan ini dalam kasus pengontrol JMS539 bekerja sangat baik, karena pengontrol ini memuat seluruh firmware dari flash drive USB selama fase 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 menghapus dump dari SPI flash drive, saya sampai pada kesimpulan bahwa satu-satunya tugas adalah menyimpan firmware untuk unit kontrol JMicron, yang dibangun ke dalam mikrokontroler 8.051. Sayangnya, membuang flash drive SPI ternyata tidak berguna:


  • saat mengubah kode PIN, dump drive flash 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 menarik. Seperti yang telah kita ketahui, pengontrol USB-SATA terhubung ke LCD Cypress PSoC melalui konektor CN1 dan dua kaset. Oleh karena itu, kami menghubungkan probe ke tiga kaki yang sesuai:


  • P4, input / output umum;
  • P11, I2C SCL;
  • P13, I2C SDA.


Kemudian kita mulai penganalisa logika Saleae, dan masukkan pada keyboard: "123456 ~". Hasilnya, kita melihat diagram berikut.



Di atasnya kita bisa melihat tiga saluran pertukaran data:


  • saluran P4 memiliki beberapa ledakan singkat;
  • pada P11 dan P13 - pertukaran data hampir terus menerus.

Meningkatkan burst pertama pada saluran P4 (kotak biru dari gambar sebelumnya), kita melihat hal berikut:



Di sini Anda dapat melihat bahwa pada P4 ada hampir 70 ms sinyal seragam, yang, seperti yang tampak pada saya pada awalnya, memainkan peran sinyal jam. Namun, setelah menghabiskan beberapa waktu mencoba memverifikasi dugaan saya, saya menemukan bahwa ini bukan sinyal jam, tetapi aliran audio yang dihasilkan ke alat penyapu ketika Anda menekan tombol. Oleh karena itu, bagian sinyal ini sendiri tidak mengandung informasi yang berguna bagi kami. Namun, ini dapat digunakan sebagai indikator - untuk mengetahui saat PSoC mendaftarkan keystroke.


Namun, aliran audio terakhir dari saluran P4 sedikit berbeda dari yang lain: ini adalah suara untuk β€œkode kode yang salah”!


Kembali ke diagram penekanan tombol, ketika meningkatkan diagram aliran audio terakhir (lihat lagi persegi panjang biru) kita dapatkan:



Di sini kita melihat sinyal monoton pada P11. Jadi sepertinya inilah jamnya. Dan P13 adalah data. Perhatikan bagaimana polanya berubah setelah akhir bunyi bip. Akan menarik untuk melihat apa yang terjadi di sini.


Protokol yang bekerja dengan dua kabel biasanya SPI atau I2C, dan spesifikasi teknis Cypress mengatakan bahwa kontak ini sesuai dengan I2C, yang, seperti yang kita lihat, berlaku untuk kasus kami:



Chipset USB-SATA terus-menerus mengumpulkan PSoC - untuk membaca status kunci, yang standarnya adalah "0". Kemudian, ketika Anda menekan tombol "1", itu berubah menjadi "1". Transmisi terakhir, segera setelah menekan β€œ~”, berbeda jika kode PIN yang salah dimasukkan. Namun, saat ini saya tidak memeriksa apa yang sebenarnya ditransmisikan di sana. Tapi saya menduga ini bukan kunci enkripsi. Bagaimanapun, lihat bagian selanjutnya untuk memahami bagaimana saya menghapus dump firmware PSoC internal.

Source: https://habr.com/ru/post/id455515/


All Articles