Hacking dan Reverse engineering hardware

Saat ini di jaman IOT, makin banyak orang yang tertarik untuk hacking dan reverse engineering (RE) hardware. Karena sudah cukup banyak orang menanyakan topik ini, maka di artikel ini akan saya bahas dasar-dasarnya, plus tools apa saja yang dibutuhkan jika ingin memulai.

Dalam artikel ini RE hanya bertujuan memahami software dan hardware dalam sebuah sistem. Hacking hardware bermakna lebih luas misalnya menambah atau mengubah sesuatu di hardware, misalnya menjalankan Doom di printer, membuat hardware baru, atau oprekan apapun yang berhubungan dengan hardware.

Supaya bisa mengubah sebuah hardware yang tidak terdokumentasi, kita perlu melakukan dulu reverse engineering untuk memahami cara kerjanya, baru setelah itu kita bisa melakukan perubahan. Untuk hardware open source atau yang dokumentasinya sangat baik, proses RE ini tidak perlu.

Tujuan melakukan Hacking Hardware

Ada banyak tujuan RE dan hacking hardware, misalnya:

  • Mencari key enkripsi untuk mengakses konten gratis atau untuk membuat konten baru (misalnya game homebrew), atau bahkan membajak, contohnya dalam kasus Game Console
  • Memperbaiki, menambah atau menghilangkan fungsionalitas , misalnya menambah SD Card di router
  • Mengekstraksi firmware dengan berbagai tujuan: mencari bug di firmwarenya, mengclone firmwarenya (membuat produk tiruan), mencari key dalam firmwarenya

Perlu dicatat bahwa dalam 99% kasus, ujung dari reversing hardware adalah melakukan reversing software yang berjalan di hardware tersebut.

Level RE Hardware

Karena hacking hardware butuh reversing, maka sebelum lanjut saya akan mengkategorikan tingkatan reversing hardware. Tidak ada referensi resmi mengenai level ini, jadi saya akan karang sendiri berdasarkan pengalaman dan hasil dari membaca banyak sumber.

Level pertama hanya sekedar memahami interface dan protokol untuk berkomunikasi dengan hardware. Contohnya: ketika saya menemukan bug di e-Money Mandiri, itu hanya sekedar memakai NFC reader. Hanya perlu pemahaman bagaimana memakai hardware readernya. Testing security smartcard juga hanya melibatkan smartcard reader, sisanya adalah pemahaman protokol dan enkripsi. Cloning berbagai jenis kartu juga sering kali hanya melibatkan hardware untuk membaca dan menulis saja. Kalau dianalogikan dengan hacking jaringan sebuah perusahaan, kita sekedar mengakses dari luar menggunakan sebuah protokol saja (misalnya HTTP).

Khusus untuk benda yang memakai interface dengan signal radio yang tidak standar, ini di luar lingkup tulisan ini. Radio signal hacking belum saya dalami (baru permukaannya saja), dan Anda bisa membaca perkenalannya di berbagai artikel dan presentasi di Internet (misalnya ini)

Raspberry Pi dengan NFC reader

Level kedua membongkar hardware yang biasa dipakai sehari-hari (misalnya router, kamera, mobil, dsb). Biasanya ini melibatkan pengenalan CPU, pengenalan komponen yang ada di sistem (berbagai jenis chip dan berbagai sensor) serta protokol komunikasi. Dalm level ini kita mungkin menyadap/mengubah komunikasi antar komponen.

Umumnya tujuan di sini adalah memahami sebuah software dalam lingkungan hardware di mana software tersebut berjalan dan mungkin melakukan modifikasi (menambah komponen, mengganti komponen, dsb). Di level ini peralatan yang dibutuhkan hanyalah multimeter,solder, dan beberapa modul hardware. Jika dianalogikan dengan hacking jaringan, di sini kita masuk ke dalam, mengetahui setiap komputer/server di jaringan fungsinya apa (web server, mail server, database, dsb), dan kita mengetahui protokol apa saja yang dipakai untuk berkomunikasi antar komputer (HTTP, SSH, dsb).

Level berikutnya memahami karakteristik yang lebih dalam mengenai hardware, terutama untuk membongkar key  enkripsi dan/atau melakukan bypass menggunakan side channel analysis (atau side channel attack) dan fault injection.  Side channel analysis/attack (SCA) artinya “membaca” fluktuasi hasil dari operasi yang dilakukan CPU (entah itu fluktuasi voltase listrik, suhu, suara) untuk mendapatkan informasi tertentu (biasanya key).

Fault injection (FI) digunakan untuk “merusak” atau “mengganggu” sistem agar kelakuannya berubah. FI ini sebenarnya bisa dilakukan di software dan hardware. Dalam konteks hardware gangguan yang bisa dilakukan dengan berbagai cara, contohnya: dengan menembakkan laser ke chip atau menurunkan voltase selama beberapa nanosecond maka eksekusi bisa berubah. Perubahan yang terjadi misalnya seharusnya melakukan jump ke satu alamat menjadi jump ke alamat lain.

Selain untuk mengubah eksekusi program, beberapa jenis enkripsi bisa dibongkar keynya dengan fault injection. Contoh yang bisa dibongkar adalah AES dan RSA.

Di level ini kita butuh presisi yang tinggi untuk membaca signal dalam SCA atau timing yang akurat dalam FI. Presisi yang tinggi artinya butuh hardware khusus. Dalam kasus tertentu (misalnya fault injection dengan laser) kadang perlu membongkar chip supaya bisa menembakkan laser ke target. SCA dan FI untuk hardware yang sederhana masih bisa dilakukan sendiri dengan biaya yang masih terjangkau level hobi (dalam orde puluhan sampai ratusan USD misalnya dengan ChipWhisperer).

Perusahaan seperti Riscure melakukan RE di level 1, 2 dan 3 dengan tujuan untuk memeriksa apakah design sebuah sistem embedded sudah aman atau belum. Dalam contoh smart card: mereka membongkar smart cardnya, menembakkan laser, mengubah voltase, dsb untuk menguji apakah smart card tersebut sudah kebal (resistant) terhadap serangan seperti itu. Jika kita memakai smart card yang sudah mendapatkan sertifikasi, maka smart card tersebut sudah aman dari berbagai serangan seperti ini.

Sulit mencari padanan yang pas seperti level ini  dalam hacking jaringan, karena di level ini sudah cukup detail dan matematis, kira-kira di hacking jaringan, di level ini Anda sudah harus bisa menyusun eksploit sendiri, tidak sekedar memakai tool yang sudah ada.

Sebagai catatan: beberapa artikel hacking terhadap smartcard kartu jenis tertentu bukan sekedar level pertama, tapi level ketiga. Smartcard yang belum disertifikasi (misalnya untuk tujuan banking) kadang bisa diserang dengan teknik SCA/FI.

Level terakhir adalah di level silikon. Reverse engineering dilakukan dengan membongkar chip, membuat foto resolusi tinggi dari semua layernya, dan mencari tahu cara kerja chip (mungkin jika ingin membuat clone chipnya), mengecek apakah ada backdoornya, dsb. Ada perusahaan khusus yang melakukan hal semacam ini, misalnya Tech Insights.

Level terakhir ini biayanya relatif mahal (terutama mikroskopnya), bisa merusak banyak chip, dan prosesnya berbahaya  karena membongkar chip butuh bahan kimia berbahaya. Jika sekedar penasaran seperti apa isi sebuah chip, ada blog yang menyediakan berbagai foto die chip.

Level terakhir ini agak sulit dilakukan di level hobi. Beberapa chip yang sangat sederhana bisa dibongkar dan dilihat dengan mikroskop yang harganya beberapa ratus USD. Tapi kebanyakan chip sangat sederhana ini sudah ada yang membongkar, sedangkan chip terbaru umumnya sudah terlalu kompleks.

Level terakhir ini bisa dianalogikan mencari bug di sistem operasi sebuah komputer. Jika Anda sekedar seorang pentester jaringan, Anda tidak akan mencari bug sampai level ini. Anda percaya bahwa OS terbaru dengan patch terbaru sudah aman.

Di sini saya hanya akan membahas level kedua saja. Untuk level pertama Anda bisa dengan mudah membeli hardware reader/writer yang ada di pasaran (NFC reader, Smartcard reader, dsb). Level berikutnya sudah terlalu rumit untuk dibahas di sini dan saya tidak punya peralatan maupun kapabilitas yang cukup untuk membahas hal tersebut.

Target untuk pemula

Target awal yang mudah biasanya adalah router dan WIFI Camera. Beberapa tujuan RE yang bisa dilakukan:

  • Mencari bug di firmware-nya
  • Menambahkan fitur hardware (contohnya menambahkan sdcard memakai GPIO)
  • Membaca firmware langsung dari hardwarenya

Mendapatkan firmware sering kali bisa dilakukan dengan cara lain

  • Mengambil dari website produsennya
  • Mengambil firmware dengan menggunakan bug di web interfacenya

Tapi meskipun demikian, bisa mengambil firmware langsung dari chip merupakan pengalaman menarik.

Development Board

Buat Anda yang masih “buta” soal elektronik, sebaiknya membeli development board, misalnya Arduino UNO, ESP8266, dsb. Setelah bisa membuat sesuatu (walau sekedar meniru contoh di Internet) akan lebih mudah memahami cara membongkar sesuatu. Anda juga bisa menggunakan ini untuk belajar menggunakan multimeter, solder, dll.

Berbagai development board memakai Microcontroller/CPU yang berbeda, dan ini bagus untuk memahami proses reverse engineering untukMicrocontroller/CPU jenis itu.

Development board ini sebaiknya digunakan untuk memahami berbagai interface hardware dasar, misalnya: UART/Serial, I2C, SPI, 1 Wire. Minimal Anda tahu berapa koneksi/kabel yang digunakan oleh masing-masing protokol, apa saja pin-nya dan bagaimana mengaksesnya.

Saat ini berbagai board bisa didapatkan relatif murah. Arduino Uno bisa didapatkan sekitar 3-5 USD (memakai AVR), ESP8266 bisa didapatkan sekitar 3-5 USD (memakai XTensa), STM32 bisa dengan harga sekitar 2 USD (memakai Cortex-M3/M4). Karena harga development board ini sangat murah, Anda tidak akan terlalu takut merusaknya.

Target sebenarnya mungkin harganya puluhan sampai ratusan dollar dan sayang sekali jika rusak hanya karena Anda belum paham cara memakai multimeter dan menyebabkan short circuit.

Supaya lebih seru, sebaiknya Anda membeli juga kit dasar elektronik yang berisi tombol/saklar, LED, resistor, dsb. Kit semacam ini bisa didapatkan dengan harga relatif murah (kurang dari 20 usd).

Single Board Computer

Saat ini sebagian besar embedded system memakai Linux. Tadinya ada cukup banyak OS alternatif yang berjaya (seperti QNX, VxWorks, dsb), tapi saat ini sebagian besar digantikan dengan Linux. Jadi pemahaman penggunaan Linux dan software yang berhubungan dengan Linux di embedded device akan sangat berguna.

Contoh beberapa hal yang spesifik untuk embedded misalnya: device tree, berbagai filesystem untuk embedded  (misalnya cramfs, squashfs, jffs, dsb), library C alternatif (misalnya uClibc, dietlibc, musl, newlib, dsb), tools userspace alternatif (misalnya busybox).

Untuk memudahkan belajar ini, salah satu yang bisa dilakukan adalah membeli Single Board Computer seperti Raspberry Pi (sekitar 10-35 USD), Orange Pi (12-60 USD), atau yang lain. Perlu dicatat, harga belum termasuk aksesori lain seperti micro SD Card.

Jika hanya ingin belajar aspek softwarenya, Anda juga bisa menggunakan emulator (Qemu), tapi jika ingin mengenal aspek hardwarenya, maka memiliki SBC akan sangat membantu.

Jika Anda masih belum tahu sama sekali mengenai SBC, Saya pernah membahas SBC dan microcontroller di blog saya yang lain.

Tools Dasar

Berikut ini beberapa tools dasar yang sebaiknya Anda miliki.

Beberapa peralatan standar

Obeng

Tentunya tools paling dasar adalah obeng, ini dipakai untuk membuka hardware yang ingin dibongkar. Kebanyakan hardware bisa dibuka dengan obeng Philips (jadi ini wajib dimiliki). Satu set obeng bisa didapatkan dengan harga beberapa puluh ribu rupiah.

Beberapa hardware perlu obeng khusus untuk membongkarnya (misalnya Wii memakai Tri wing). Silakan baca dulu mengenai hardware yang ingin Anda bongkar sebelum membeli obeng khusus.

Multimeter

Tools dasar berikutnya adalah multimeter. Semakin bagus multimeternya semakin mahal. Hal paling dasar adalah untuk mengecek voltase berbagai titik di board dan juga untuk mengecek konektivitas.  Sebaiknya belilah multimeter yang memiliki continuity tester, dengan ini  kita mudah mengecek apakah dua titik di sebuah board terhubung atau tidak dengan mudah (akan berbunyi “beep” jika memang terhubung). Multimeter dasar bisa didapatkan kurang dari 100 ribu.

Pelajari dulu penggunaan multimeter supaya tidak merusak hardware, misalnya jangan memakai continuity tester ketika sistem sedang hidup.

Multimeter murahan biasanya cukup untuk memeriksa listrik DC (yang biasanya ada di berbagai peralatan elektronik), tapi hati-hati jika Anda ingin mencoba mengukur listrik AC. Biasanya multimeter murah safetynya kurang baik.

Kaca Pembesar atau Mikroskop USB

Saat ini banyak sekali komponen yang sangat kecil, dan teks di atas chip yang sulit dibaca. Jika mata Anda masih sangat tajam, mungkin tidak terlalu butuh kaca pembesar. Dulu saya merasa tidak butuh, tapi sekarang merasa lebih nyaman memeriksa komponen kecil dengan kaca pembesar.

Membaca label chip dengan kaca pembesar

 

Alternatif lain adalah mikroskop USB yang harganya relatif murah. Saat ini saya lebih suka memakai ini karena saya bisa mendapatkan fotonya dengan mudah.

Membaca label chip dengan mikroskop USB

USB to serial

Kebanyakan hardware memiliki port serial, kadang dengan jelas dituliskan, kadang hanya ada pin hole tanpa header. Sebaiknya Anda membeli USB to serial port yang mendukung 3.3v dan 5v. Informasi dari serial port ini biasanya sangat berguna. Harga komponen ini saat ini sudah sangat murah, sekitar 2-5 USD.

Kabel dan Pin Header

Kebanyakan board memiliki konektor yang tinggal dicolok, dan sebagian lagi butuh pin header (di boardnya hanya ada lubang saja). Sebaiknya belilah kabel dupont berbagai versi (Male-Male, Male-Female, Female-Female).

Kabel dupont
Pin Header

Kadang Alligator Clip Mini seperti ini juga bisa berguna:

Mini alligator clip

Breadboard

Breadboard adalah papan untuk prototype, biasanya digunakan bersama kabel dupont male to male (atau male to female jika dihubungkan ke sebuah board). Untuk bereksperimen, breadboard ini memudahkan kita mengetes berbagai modul.

Breadboard

Solder

Ketika membongkar hardware, biasanya kita perlu menyambungkan kabel tertentu (misalnya serial port) atau memasang pin header. Untuk itu kita akan butuh solder. Untuk sekedar memasang kabel biasanya solder murahan juga cukup, tapi untuk hal yang lebih serius, ada yang namanya temperature controlled soldering iron.

Selain untuk memasang komponen, solder juga bisa digunakan untuk melepas komponen. Tapi untuk ini hot air gun akan lebih gampang.

Bus Pirate

Bus pirate ini bisa digunakan untuk melakukan koneksi ke berbagai hardware dengan berbagai protokol. Ini tidak wajib jika Anda sudah punya development board (semua bisa dilakukan dengan sendiri). Tapi memakai bus pirate ini lebih mudah. Harga bus pirate sekitar 30 USD.

Bus pirate, milik saya versi lama (3.5) saat ini sudah ada versi 3.6 dan versi 4 (yang masih beta/belum stabil)

Logic Analyzer

Logic Analyzer ada yang sangat murah dan sangat mahal. Untuk protokol yang low speed, logic analyzer murah sudah cukup. Saya sudah pernah membahas topik ini, jadi silakan baca artikel saya mengenai logic analyzer.

Logic Analyer murah

Osiloskop

Ini tidak wajib dan osiloskop yang bagus harganya relatif mahal. Dalam kasus tertentu,osiloskop USB dengan harga sekitar 60 USD kadang cukup untuk keperluan identifikasi protokol dan bahkan melakukan side channel analysis (contohnya yang dilakukan orang ini).

Osiloskop USB

Di mana membeli alatnya?

Untuk Anda yang sabar: bisa beli di AliExpress, harganya lebih murah, tapi sampainya lama. Di Indonesia ada banyak toko di Tokopedia atau Buka Lapak yang berjualan benda-benda elektronik seperti ini, harganya saat ini tidak terlalu jauh bedanya dari AliExpress.

Kendala dan Risiko

Meskipun saat ini hacking hardware sudah bisa dilakukan dengan relatif murah, tapi tetap saja tidak semudah hacking/reverse engineering software.

Hacking hardware butuh lebih banyak ketelitian, dari mulai memastikan solder sudah baik, memastikan komponen tidak terbalik, memastikan voltase sudah benar, memastikan tidak ada crosstalk, dsb.

Hardware bisa rusak jika kita salah melakukan koneksi sedangkan hacking software jauh lebih mudah, jika error maka kasus terburuk hanya perlu reinstall. Meskipun kebanyakan hardware sudah cukup murah, tapi jika melakukan banyak kesalahan maka harga yang harus dibayar jadi banyak.

Sesuatu yang sudah dibuat juga tidak mudah direplikasi oleh orang lain, karena butuh hardware yang sama, butuh ketelitian yang sama.

Mendapatkan sebuah hardware tertentu juga seringkali tidak mudah. Misalnya jika ingin hacking meteran listrik, di mana bisa mendapatkan barangnya? Jika ingin hacking mobil, jika tidak punya mobil ekstra maka akan gawat jika mobil utama rusak.

Mulai Hacking

Ketika belajar reverse engineering software, biasanya yang dilakukan seseorang adalah mencoba melakukan hal yang sama dengan tutorial. Hal ini sama juga ketika reverse engineering hardware. Jadi cobalah cari tutorial reverse engineering yang menarik bagi Anda, coba beli devicenya dan ikuti.

Contohnya ada yang sudah melakukan reverse engineering kamera WIFI atau reverse engineering light bulb (ada juga untuk model lain). Device-device tersebut harganya relatif murah, masing-masing kurang dari 300 ribu rupiah.

Jika Anda nekat, bisa juga langsung melakukan reverse engineering terhadap device yang sudah Anda miliki, walaupun saya sangat menyarankan Anda latihan dulu di hardware lain jika device Anda tersebut mahal harganya.

Saya sendiri sebenarnya belum sangat ahli dalam hal reverse engineering hardware dan cara belajar saya agak serabutan, saya dulu belajar menyolder menambah SD card di router WRT54GL, menambah SD card di DIR-300, bluetooth di router, belajar elektronik. Saya juga melakukan porting kernel FreeBSD. Mengimplementasikan U2F (yang dipakai di Kickstarter OnlyKey).

Di posting sebelumnya saya menceritakan bahwa untuk menstrukturkan ilmu saya, saya ke Belanda mengikuti kursus di Riscure (gratis karena tahun lalu saya mendapatkan best writeup untuk CTF hardware RHME2). Isi posting ini adalah sebagian dari yang saya pelajari di pelatihan tersebut.

Ini hanya artikel pengantar, tiap topik masih perlu penjelasan yang lebih panjang (keseluruhan topik ini bisa jadi buku). Misalnya tiap protokol/interface hardware bisa menjadi satu topik sendiri (SPI, I2C, 1 Wire, dsb). Semoga artikel ini cukup untuk memperkenalkan Anda pada dunia hacking hardware.

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.