Tips: Reverse Engineering Smart Device

From Indonesian Research And Development Center
Jump to: navigation, search

Pendahuluan

Tutorial singkat ini akan membahas cara mendapatkan firmware perangkat pintar (smart device) yang saat ini banyak beredar di pasaran. Tutorial ini menitikberatkan pada firmware, karena firmware adalah salah kunci penting pada sebuah perangkat pintar (smart device). Sebagai contoh yang akan digunakan pada tutorial ini adalah salah satu perangkat smart socket yang dipasarkan dengan nama yang berbeda-beda (rebrand). Tutorial ini akan menggunakan perangkat dengan merk ankuoo.


Langkah-langkah

  • Situs pembuat perangkat tersebut memiliki bagian untuk mengunduh aplikasi yang dapat digunakan pada ponsel seperti dapat dilihat pada gambar berikut ini:


Ankuoo-download page.png


  • Dari gambar di atas, bisa terlihat sebuah tautan untuk langsung mengunduh aplikasi untuk perangkat android:
http://www.ankuoo.com/android/OEMEno.apk
  • Selanjutnya, unduh aplikasi tersebut:
% wget -q http://www.ankuoo.com/android/OEMEno.apk
  • Setelah mengunduh aplikasi tersebut, gunakan apktool, dex2jar dan JD-GUI atau aplikasi lain untuk melakukan analisa terhadap berkas APK tersebut. Tutorial ini akan menggunakan androguard untuk proses analisa. Berikut ini adalah tampilan aplikasi androguard ketika melakukan analisa aplikasi OEMEno.apk:


Ankuoo-androguard.png


  • Dari gambar di atas, bisa terlihat bahwa aplikasi tersebut akan melakukan pengecekan terhadap versi aplikasi terbaru pada alamat http://cloud.broadlink.com.cn/soft/ankuoo/version.html
  • Berdasarkan informasi di atas, Anda dapat melakukan pengecekan secara manual versi aplikasi terbaru dengan cara seperti ini:
% curl -s 'http://cloud.broadlink.com.cn/soft/ankuoo/version.html'
{"version":5,"updates":"发现新版本\n1.修复已知使用Bug。\n","url":"http://cloud.broadlink.com.cn/soft/ankuoo/ankuoo.apk"}
  • Informasi tersebut menggunakan format JSON dan mengarah ke tautan untuk mengunduh aplikasi terbaru. Selanjutnya, unduh aplikasi yang terdapat pada tautan tersebut:
% wget -q 'http://cloud.broadlink.com.cn/soft/ankuoo/ankuoo.apk'
  • Setelah melakukan analisis singkat menggunakan androguard, ternyata aplikasi tersebut tidak memiliki informasi mengenai tautan untuk mengunduh firmware ataupun melakukan update menggunakan metode OTA (Over The Air). Dengan sedikit googling memanfaatkan tautan untuk update aplikasi di atas, maka kita bisa memperoleh tautan untuk mengunduh firmware seperti yang dapat dilihat pada gambar berikut:


Ankuoo-firmware url.png


  • Dan bukan hanya informasi mengenai tautan untuk mengunduh firmware, namun kita juga bisa menemukan informasi mengenai SDK yang dapat diunduh pada situs cnx-software seperti yang dapat dilihat pada gambar berikut ini:


Ankuoo-sdk link.png


  • Selanjutnya, Anda dapat melakukan analisa salah satu firmware tersebut menggunakan binwalk, namun hasilnya tidak akan akurat. Berikut ini adalah hasil analisa menggunakan binwalk:
% binwalk BL_SP2-22.bin

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
237541        0x39FE5         xz compressed data
242211        0x3B223         xz compressed data
245284        0x3BE24         xz compressed data
245396        0x3BE94         PEM certificate
245556        0x3BF34         PEM RSA private key
245746        0x3BFF2         PEM EC private key
245806        0x3C02E         PEM DSA private key
249624        0x3CF18         SHA256 hash constants, little endian
  • Karena hasil dari proses di atas kurang akurat, maka analisa selanjutnya akan menggunakan IDAPro. Mengingat firmware yang akan dianalisa adalah untuk chipset marvell, maka bisa diambil kesimpulan sementara bahwa arsitektur yang digunakan adalah ARM little endian karena rata-rata atau mungkin semua chipset buatan marvell menggunakan arsitektur ARM. Berikut ini adalah cara mengatur agar IDAPro menggunakan arsitektur ARM (little endian) untuk membaca firmware tersebut:


Ankuoo-idapro-processor type.png


  • Setelah IDAPro selesai melakukan analisa firmware tersebut, Anda dapat mulai memeriksa hasilnya. Jika Anda menemuka bagian yang kemungkinan adalah bagian dari instruksi (code) misalnya seperti ini:


Ankuoo-idapro-c-before.png


maka Anda dapat menekan tombol c pada keyboard untuk mengubah baris tersebut menjadi code seperti ini:


Ankuoo-idapro-c-after.png


  • Dan jika Anda menemukan bagian yang kemungkinan adalah string seperti ini:


Ankuoo-idapro-a-before.png


maka Anda dapat menekan tombol a pada keyboard untuk mengubah baris tersebut menjadi string seperti ini:


Ankuoo-idapro-a-after.png


  • Selain kedua tombol shortcut di atas, Anda juga dapat menggunakan tombol d pada keyboard untuk mengubah baris dimana kursor berada menjadi data dengan ukuran BYTE, WORD, DWORD atau QWORD.
  • Hal yang tidak kalah penting adalah melakukan analisa terhadap setiap printable string yang terdapat pada firmware tersebut, misalnya seperti ini:


Ankuoo-idapro-strings.png


  • Selanjutnya, tugas Anda adalah mengembangkan tutorial ini dan berlatih untuk mempelajari firmware lainnya.


Penutup

Sekian tutorial kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang Maha Esa, Maxindo, N3 dan Anda yang telah membaca tutorial ini.


Referensi