- Dengan latar kontroversi pelarangan Flipper Zero di Kanada, artikel ini benar-benar menangkap dan menganalisis sinyal RF key fob mobil untuk melihat sejauh mana serangan replay sederhana memungkinkan
- RTL-SDR dapat menerima data I/Q mentah pada rentang 24–1750 MHz untuk divisualisasikan, disimpan, dan dianalisis, sementara CC1101 pada Flipper Zero bisa mengirim dan menerima, tetapi membutuhkan pengaturan RF yang benar
- Pada 433,92 MHz, setiap penekanan tombol menampilkan tiga burst pendek, dan dua puncak di kedua sisi frekuensi tengah ditafsirkan sebagai 2-FSK, yaitu 0 dan 1 dibawa pada frekuensi berbeda
- Saat FSK, 50 samples/symbol, dan dekode Manchester II diterapkan di Universal Radio Hacker, struktur berupa burst panjang tanpa data, tiga paket utama, dan paket akhir yang pendek menjadi terlihat
- Pada sinyal teridentifikasi area berentropi tinggi untuk rolling code, counter yang meningkat, byte perintah lock/unlock, nomor urut paket, checksum XOR, dan syncword; ini mengarah pada kesimpulan bahwa sebagian besar mobil sulit dicuri hanya dengan replay sederhana
Tujuan dan konteks eksperimen
- Selama beberapa tahun, dongle RTL-SDR telah digunakan untuk mengeksplorasi protokol komunikasi nirkabel, dan kali ini fokusnya adalah memahami bagaimana key fob mobil mengirim data serta menguji kemungkinan serangan replay
- Sebelumnya sinyal key fob pernah ditangkap, tetapi akses ke mobil yang bisa diuji terbatas sehingga belum berlanjut ke analisis yang bermakna
- Eksperimen ini merupakan proses persiapan untuk benar-benar merekayasa balik dan me-replay sinyal key fob, mengikuti alur dari konsep dasar RF hingga analisis
- Berbeda dengan pelarangan Flipper Zero di Kanada, artikel ini juga membahas gagasan bahwa sebagian besar mobil tidak mudah dicuri hanya dengan serangan replay sederhana
- RollingPwn disebut sebagai kasus pengecualian terkait Honda
Perangkat keras yang digunakan
-
RTL-SDR
- Dongle USB TV/radio terestrial seharga sekitar 10 dolar dapat diubah menjadi penerima RF serbaguna untuk memeriksa dan mendekode sinyal pada rentang 24–1750 MHz
- RTL-SDR menjadi kuat berkat chip RTL2832U yang dapat menggunakan SDR
- Pemrosesan sinyal yang biasanya dilakukan di perangkat keras dapat dilewati, sehingga host dapat mengakses data I/Q mentah secara langsung
- Dengan data mentah, sinyal dapat diterima, divisualisasikan, disimpan, lalu dianalisis langsung tanpa perlu mengetahui lebih dulu pengaturan spesifik seperti jenis modulasi, bandwidth, atau data rate
-
Flipper Zero dan CC1101
- Bagian penting Flipper Zero untuk eksperimen ini adalah modul Sub-GHz
- Modul tersebut berbasis chip CC1101, dan mendukung frekuensi di bawah 1 GHz yang digunakan pada perangkat nirkabel konsumen umum
- Modul CC1101 juga dapat dibeli terpisah dengan harga 5 dolar ke atas dan digunakan bersama Arduino, Raspberry Pi, atau adaptor USB-to-TTL
-
Perbedaan CC1101 dan RTL2832U
- CC1101 pada Flipper Zero adalah transceiver, sehingga dapat mengirim sekaligus menerima sinyal
- RTL2832U pada RTL-SDR dapat menerima dan menganalisis sinyal mentah, tetapi tidak dapat mengirim
- Karena CC1101 tidak mendukung SDR, ia hanya mengembalikan data yang sudah diproses sepenuhnya, dan hanya berguna jika pengaturan RF untuk sinyal yang dikirim sudah benar
- Ada juga perangkat SDR yang dapat mengirim dan menerima, tetapi harganya cenderung mahal
Konsep dasar untuk membaca sinyal RF
- Transmisi frekuensi radio mengirim sinyal melalui gelombang radio, yaitu gelombang elektromagnetik
- Untuk meningkatkan keandalan transmisi melalui udara, digunakan gelombang pembawa dengan frekuensi lebih tinggi daripada sinyal asli yang ingin dikirim
- Frekuensi adalah jumlah kemunculan gelombang pembawa per detik, dan umumnya digunakan untuk mendefinisikan kanal komunikasi
- Modulasi adalah cara merepresentasikan data pada gelombang radio
- AM merepresentasikan data melalui perubahan amplitudo
- FM merepresentasikan data melalui perubahan frekuensi
- Bandwidth adalah rentang frekuensi yang ditempati sinyal RF termodulasi, dan berkaitan dengan jumlah data yang dapat dibawa sinyal
Sinyal key fob yang diamati dengan SDR#
-
Alat dan frekuensi
- SDR# adalah aplikasi DSP gratis yang ditulis dalam C#, mendukung visualisasi spektrum real-time untuk SDR serta demodulasi beberapa modulasi umum
- Dongle RTL-SDR dihubungkan dan menggunakan driver WinUSB alih-alih driver DVB-T bawaan
- Jika disetel ke 433,92 MHz, aktivitas remote jarak dekat dapat terlihat
- 433,92 MHz diperkenalkan sebagai frekuensi standar tanpa lisensi yang digunakan di UE dan negara sekitarnya, serta di Maroko, tempat tinggal penulis
-
Pola yang diamati
- Setiap kali tombol key fob mobil ditekan, terbentuk tiga burst pendek berturut-turut
- Dua puncak besar muncul di kedua sisi 433,92 MHz pada bagian tengah spektrum
- Setelah meneliti jenis modulasi umum, bentuk ini tampak cocok dengan 2-FSK
- Puncak-puncak kecil yang terlihat di layar dianggap sebagai frekuensi tak diinginkan akibat perangkat keras pemancar yang murah serta jarak dekat antara remote dan antena, lalu diabaikan
-
Interpretasi 2-FSK
- FSK adalah Frequency-Shift Keying, yaitu jenis modulasi frekuensi yang mengenkode data dengan mengubah frekuensi gelombang pembawa di antara beberapa frekuensi diskret
- Angka “2” pada 2-FSK berarti jumlah kanal yang digunakan untuk encoding
- Dalam kasus ini, 0 dan 1 dienkode pada dua frekuensi berbeda, sehingga dua puncak yang diamati dapat dijelaskan
Mengekstrak bit dan byte dengan Universal Radio Hacker
-
Analisis menggunakan URH
- Universal Radio Hacker adalah kumpulan alat open-source untuk meneliti protokol nirkabel, dan mendukung berbagai SDR secara bawaan
- URH menyediakan demodulasi sinyal dan deteksi otomatis parameter modulasi, sehingga digunakan untuk mengidentifikasi bit dan byte yang dikirim melalui udara
- Pada awalnya, parameter yang benar tidak ditemukan sehingga hasilnya keliru
- Setelah beberapa sinyal berulang direkam sekaligus, tingkat keberhasilan deteksi otomatis meningkat, dan pada kasus ini 50 samples/symbol, FSK muncul sebagai pengaturan yang benar
-
Struktur burst dan dekode Manchester
- Saat sinyal diperbesar, tiga burst yang terlihat di SDR# kembali terkonfirmasi
- Burst kedua ternyata terdiri lagi dari tiga bagian terpisah, sehingga total ada lima bagian yang dianalisis
- Setelah bitstream diekstrak otomatis dari tiap bagian dan dikonversi ke heksadesimal, pola berulang terlihat, tetapi lima angka heksadesimal yang sama dan banyak byte
0x55berulang, sehingga diperlukan pemrosesan tambahan - Setelah mencoba beberapa algoritme decoding di tab Analysis pada URH, Manchester II mengubah byte
0x55menjadi null dan tidak menghasilkan error decoding
-
Peran encoding Manchester
- Manchester adalah metode modulasi digital sederhana yang mencegah sinyal bertahan terlalu lama pada status logika low atau high
- Metode ini mengubah sinyal data menjadi sinyal gabungan antara data dan sinkronisasi, sehingga berguna untuk clock recovery
- Karena media analog rentan terhadap noise dan interferensi, karakteristik seperti ini membantu saat mengirim data digital
- Dalam Manchester, data biner dienkode menjadi dua bit yang saling berlawanan
- Contoh:
0menjadi01,1menjadi10, atau sebaliknya tergantung konvensi
Struktur paket dan dugaan rolling code
-
Struktur yang terlihat pada setiap penekanan tombol
- Dari perbandingan manual beberapa tangkapan, setiap penekanan tombol memiliki struktur tertentu
- Ada satu burst panjang tanpa data, yang jika didekode menjadi 100 byte null
- Ada tiga burst yang sangat mirip, tetapi 2 byte di antaranya berubah sebagian
- Setelah itu ada satu burst akhir yang cukup mirip dengan tiga burst sebelumnya, tetapi lebih pendek
- Tiga burst di tengah dianggap sebagai paket utama dan dianalisis lebih lanjut
- Ditemukan ID meningkat yang tampaknya naik 1 pada setiap sinyal baru
-
Mekanisme rolling code
- Rolling code digunakan pada sistem keyless entry untuk mencegah serangan replay sederhana
- Mekanisme ini mencegah penyerang merekam transmisi lalu memutarnya kembali di kemudian hari agar penerima membuka kunci
- Mobil dan remote menyepakati algoritme yang aman secara kriptografis untuk menghasilkan rolling code yang akan digunakan dalam autentikasi
- Kunci dibuat dan dilacak menggunakan counter, sehingga counter pada remote dan mobil harus tetap tersinkronisasi
- Jendela validitas mencegah remote keluar dari sinkronisasi meskipun mobil tidak menerima sinyal
- Banyak implementasi mengizinkan hingga 255 penekanan tombol di luar jangkauan; setelah itu remote harus disinkronkan ulang secara manual
-
Identifikasi field sinyal
- Karena rolling code aman secara kriptografis, bagian dengan entropi tertinggi pada sinyal diidentifikasi sebagai area yang terkait dengan implementasi tersebut
- ID meningkat yang ditemukan sebelumnya diduga sebagai counter pada sistem rolling code
- Dengan membandingkan sinyal lock dan unlock, byte yang merepresentasikan perintah berhasil diidentifikasi
8= unlock4= lock
Nomor urut, checksum, dan syncword
-
Nilai yang tampak sebagai nomor urut paket
- Salah satu area variabel yang tersisa memiliki nilai yang sama berulang pada sinyal-sinyal lain yang ditangkap
- Jika tiga nilai dilihat dalam biner, bit teratasnya meningkat seperti nomor urut
0x6:01100xA:10100xE:1110- Jika paket akhir keempat juga dilihat, bentuknya menjadi
0x13:10011, cocok dengan interpretasi bahwa area tersebut memuat nomor urut paket - Perubahan bit paling rendah dikecualikan dari penilaian ini
-
Checksum XOR
- Byte terakhir berubah pada setiap paket, dan juga berubah tampak acak di antara keseluruhan sinyal
- Karena merupakan byte terakhir paket dan berubah tidak teratur, ini mungkin merupakan checksum
- Jika byte ini di-XOR dengan byte nomor urut yang dianalisis sebelumnya, nilai tetap muncul pada tiap contoh
- Contoh 1:
0x06 ^ 0xB9 = 0xBF0x0A ^ 0xB5 = 0xBF0x0E ^ 0xB1 = 0xBF
- Contoh 2:
0x06 ^ 0xCC = 0xCA0x0A ^ 0xC0 = 0xCA0x0E ^ 0xC4 = 0xCA
- Saat XOR diterapkan pada semua byte paket, nilainya selalu meleset 1, sehingga besar kemungkinan 2 byte pertama dikecualikan dari checksum
- Dua byte pertama ditafsirkan berperan sebagai syncword yang menyinkronkan penerima dan menandai awal data
Komposisi sinyal akhir dan langkah berikutnya
- Burst panjang di awal berfungsi membangunkan penerima radio yang berada dalam mode hemat daya saat idle, agar siap menerima data
- Alasan remote mengirim tiga paket berisi data yang hampir sama adalah untuk menjaga keandalan jika salah satu transmisi rusak
- Dari hasil pelabelan akhir, sinyal key fob mobil ditafsirkan terbagi menjadi syncword, area terkait rolling code, counter, byte perintah, nomor urut paket, checksum XOR, dan bagian lainnya
- Langkah berikutnya adalah mengintegrasikan format sinyal ini ke Flipper Zero agar mendukung pembacaan, reserialisasi, dan replay
- Jika ada informasi yang tidak akurat atau ruang untuk perbaikan, pull request dapat dikirim di GitHub
1 komentar
Komentar di Hacker News
Saya pernah harus merekayasa balik remote kunci mobil murah yang dibeli di AliExpress untuk proyek elektronik, dan ternyata dengan osiloskop serta Wikipedia saja, kalau cukup lama berkutat, itu bisa dilakukan
Lain kali saya akan mencoba metode dari tulisan blog ini dan berusaha menjadi peretas yang lebih baik
Ada juga flow graph GNU Radio untuk tujuan serupa: https://github.com/bastibl/gr-keyfob
Materi presentasi: https://www.fleark.de/keyfob.pdf
Kalau remote dan mobil membuat serta melacak kunci dengan counter agar tetap sinkron, saya selalu penasaran bagaimana remote pembelajar bisa mengakali ini
Mobil saya punya beberapa tombol pintu garasi bawaan, dan seingat saya saya mengaturnya dengan menaruh mobil dalam mode belajar lalu menekan tombol remote garasi. Saya penasaran apakah fungsinya jauh lebih kompleks daripada sekadar replay sederhana: mendekode sinyal, mengenali jenisnya, lalu memulai pairing dengan opener
Sepemahaman saya, mereka bekerja sama dengan berbagai perusahaan untuk mendukung kode tetap dan rolling code, serta memungkinkan pairing dengan pintu garasi tersebut. Chamberlain[0], produsen pintu garasi terbesar di AS, memiliki banyak merek dan menggunakan algoritma rolling code yang sudah dikenal dan dapat didekode[1]
[0] https://www.chamberlain.com/
[1] https://github.com/argilo/secplus
Proses ini lebih mirip memberi tahu opener, “Dengar remote baru ini? Izinkan juga dia membuka pintu.” Tombol di sisi mobil tampaknya menggilir beberapa protokol umum, dan secara realistis yang banyak dipakai di AS mungkin sekitar 4–5 keluarga seperti Chamberlain/Liftmaster atau Genie
Remote pembelajar untuk sistem seperti ini bisa bekerja hanya dengan memutar ulang sinyal yang direkam, tetapi jika saat perekaman tercampur sinyal lain di pita yang sama, seperti bel pintu nirkabel, sinyal yang tidak diinginkan itu juga bisa ikut diputar ulang. Jadi setidaknya perlu pemrosesan untuk memotong hanya bagian sinyal pintu yang sebenarnya, dan yang lebih baik adalah mendekode sinyal untuk mengetahui kodenya lalu menghasilkan sinyal baru yang bersih setiap kali
Hampir semua perusahaan pembuka pintu garasi rumahan di AS mengganti model baru mereka ke rolling code pada 1990-an, jadi jika pemasangannya berumur sekitar 25 tahun atau kurang, hampir pasti memakai rolling code. Biasanya remote menghasilkan deret pseudorandom dengan seed, mengirim nilai berikutnya setiap kali tombol ditekan, dan unit utama dalam mode belajar melihat beberapa nilai berurutan untuk memperkirakan seed tersebut lalu menambahkannya ke daftar remote
Saat beroperasi, unit utama mendekode nilai deret yang diterima, memeriksa apakah nilainya berada dalam rentang yang diharapkan untuk salah satu remote yang dikenal, dan jika cocok, membuka pintu serta memperbarui posisi remote tersebut. Ada juga sedikit rentang toleransi agar anak yang menekan tombol berkali-kali di perjalanan tidak membuat pintu gagal terbuka saat sampai rumah
Remote pembelajar yang menyalin remote rolling code yang sudah ada juga secara prinsip memungkinkan, tetapi dari sudut pandang unit utama, salinan dan aslinya adalah remote yang sama. Jika salah satunya lama tidak dipakai sementara yang lain mendorong deret keluar dari rentang toleransi, salah satunya bisa tidak berfungsi, dan pairing ulang juga bisa menjadi rumit tergantung detail implementasi sistem
Remote universal untuk rolling code yang pernah saya lihat dalam praktiknya bukan belajar dari remote yang ada, melainkan diberi tahu jenis unit utamanya lalu dipasangkan sebagai remote baru seperti remote pabrikan. Karena antarmuka penggunanya minim, kemungkinan caranya adalah mencari nomor di tabel manual, menekan tombol tersembunyi, lalu menekan tombol yang ingin diprogram sebanyak nomor tersebut
Akan bagus jika bisa otomatis mengenali sistem rolling code apa dari sinyal remote yang ada, tetapi itu memerlukan penerima, dan hampir tidak ada kegunaan lain untuk itu sehingga sulit dibenarkan. Pairing pintu garasi dan perintah buka-tutup pada dasarnya satu arah dari remote ke unit utama
Penulis memang mendekode semuanya, tetapi sebenarnya belum membuka pintu mobil. Masih harus memecahkan rolling code, dan tidak bisa sekadar menambahkan 1 lalu mengirimkannya kembali
Dari luar, rolling code berikutnya harus tampak seperti acak
Saya berharap pabrikan mobil mulai membuat remote yang sangat kecil, mungkin remote RFID, yang bisa dimasukkan ke dompet
Atau semoga ada perangkat kecil seukuran kartu kredit, mirip Flipper, yang melakukan hal yang sama. Serius, kunci mobil adalah benda terbesar kedua di saku saya setelah ponsel, dan setidaknya dari sisi ketebalan cukup mengganggu
Menyegarkan karena sudah lama tidak membaca tulisan yang bisa saya pahami
Dengan makin mudahnya akses ke peralatan pemrograman kunci, menarik melihat tren otorisasi pemrograman kunci dimasukkan ke balik “keamanan” yang lebih kuat
Pabrikanlah yang menentukan apa saja yang termasuk bagian dari sistem “keamanan”, dan itu bisa meluas bukan hanya ke kunci, tetapi juga ke banyak modul. Apakah ini efektif terhadap penjahat yang terkenal sangat taat aturan masih bisa diperdebatkan (/s), tetapi jelas berdampak pada sebagian pihak
Orang dengan catatan kriminal bisa dilarang ikut serta. Setelah menjalani hukuman, memulai usaha sendiri dan sukses adalah salah satu jalur penting bagi mantan narapidana, tetapi dalam skema ini jalan itu bisa terasa buntu
https://wp.nastf.org/?page_id=367
https://wp.nastf.org/wp-content/uploads/2023/07/ApplicationC...
Apakah memang perlu mencegat sinyal, mendekode, lalu mengenkode ulang? Cukup lakukan serangan man-in-the-middle antara remote kunci dan kendaraan dengan antena besar agar keduanya percaya jaraknya lebih dekat satu sama lain
Sekarang, begitu bisa masuk ke dalam mobil, Anda bisa memprogram kunci baru dengan alat OBD lalu langsung membawanya pergi, jadi ini jauh lebih menarik dan jauh lebih tidak aman
Flipper standar juga bisa menerima sinyal mentah
Mungkin bisa dibuat mengeluarkan data FSK atau OOK mentah yang sudah didemodulasi tanpa pemrosesan tambahan, tetapi mendapatkan sampel IQ mentah benar-benar meragukan