
Secara historis, sebagian besar karyawan menggunakan keyboard dan mouse nirkabel Logitech. Sekali lagi memasukkan kata sandi kami, kami, tim Keamanan Raccoon, bertanya-tanya: Seberapa sulitkah untuk melewati mekanisme keamanan keyboard nirkabel? Studi ini mengungkapkan kesalahan arsitektur dan kesalahan perangkat lunak yang memungkinkan akses ke data input. Di bawah potongan - apa yang kami lakukan.
Mengapa Logitech?
Menurut pendapat kami, perangkat input Logitech adalah di antara kualitas tertinggi dan paling nyaman. Sebagian besar perangkat yang kami miliki didasarkan pada solusi Logitech Unifying - ini adalah penerima dongle universal yang memungkinkan Anda menghubungkan hingga 6 perangkat. Semua perangkat yang kompatibel dengan Logitech Unifying diberi label dengan logo yang sesuai. Aplikasi yang mudah digunakan memungkinkan Anda untuk mengontrol koneksi keyboard nirkabel ke komputer Anda. Proses menghubungkan keyboard ke dongle-receiver Logitech secara terperinci, serta teknologinya sendiri, dibahas, misalnya di sini .

Penerima Dongle Pemersatu Logitech
Keyboard dapat menjadi sumber informasi bagi penyerang. Logitech, dengan mempertimbangkan kemungkinan ancaman, menjaga keamanan - menggunakan algoritma enkripsi AES128 di saluran radio dari keyboard nirkabel. Pikiran pertama bahwa penyerang dapat mengunjungi dalam situasi ini adalah untuk mencegat informasi penting ketika ditransmisikan melalui udara selama proses penautan. Lagi pula, jika Anda memiliki kunci, Anda dapat mencegat sinyal radio keyboard dan mendekripsi mereka. Namun, pengguna yang sangat jarang (atau bahkan tidak pernah) harus mengaitkan keyboard dengan prosedur Unifying, dan seorang peretas dengan radio pemindaian harus menunggu lama. Selain itu, tidak semuanya begitu sederhana dengan proses intersepsi itu sendiri. Dalam penelitian terbaru pada Juni 2019, pakar keamanan Marcus Mengs memposting pesan di jaringan tentang penemuan kerentanan pada firmware lama untuk dongle USB Logitech. Ini memungkinkan penyerang dengan akses fisik ke perangkat untuk mendapatkan kunci enkripsi saluran radio dan untuk menyuntikkan penekanan tombol (CVE-2019-13054).
Kami akan berbicara tentang studi keselamatan dongle Logitech SoC NRF24 kami dari Nordic Semiconductor. Dan mari kita mulai dengan saluran radio itu sendiri.
Cara "terbang" data di saluran radio
Untuk analisis frekuensi waktu dari sinyal radio, kami menggunakan penerima SDR berdasarkan pada perangkat Blade-RF dalam mode penganalisa spektrum (ini juga dapat dibaca di sini ).

Perangkat SDR Blade-RF
Kami juga mempertimbangkan kemungkinan merekam kuadratur dari sinyal radio pada frekuensi menengah, dan kemudian menganalisisnya menggunakan metode pemrosesan sinyal digital.
Komisi Negara untuk Frekuensi Radio di Federasi Rusia mengizinkan penggunaan perangkat jarak pendek di rentang frekuensi 2400β2483,5 MHz. Ini adalah rentang yang sangat βpadatβ di mana Anda tidak dapat bertemu apa pun: Wi-Fi, Bluetooth, berbagai kontrol jarak jauh, sistem keamanan, detektor nirkabel, mouse dengan keyboard, dan perangkat digital nirkabel lainnya.

2,4 GHz Band Spectrum
Lingkungan interferensi dalam kisaran cukup rumit. Meskipun demikian, Logitech mampu memberikan penerimaan yang andal dan stabil dengan menggunakan protokol Enhanced ShockBurst dalam transceiver NRF24 dalam kombinasi dengan algoritma adaptasi frekuensi.
Saluran dalam jangkauan terletak pada posisi MHz integer, seperti yang ditentukan dalam spesifikasi NRF24 Nordic Semiconductor - total 84 saluran dalam kisi frekuensi. Jumlah saluran frekuensi yang digunakan secara bersamaan oleh Logitech, tentu saja, lebih sedikit. Kami telah mengidentifikasi penggunaan setidaknya empat. Karena bidang pandang yang terbatas dari penganalisa spektrum sinyal yang digunakan, tidak mungkin untuk menentukan daftar yang tepat dari posisi frekuensi yang digunakan, tetapi ini tidak perlu. Informasi dari keyboard ke penerima dongle ditransmisikan dalam mode Burst (dengan menyalakan pendek pada pemancar) menggunakan modulasi frekuensi dua posisi GFSK pada kecepatan simbol 1 Mbaud:

Sinyal radio keyboard dalam representasi sementara
Penerima menggunakan prinsip korelasi penerimaan, sehingga bagian pembukaan dan alamat hadir dalam paket yang dikirimkan. Tidak ada pengkodean interferensi yang diterapkan, badan data dienkripsi dengan algoritma AES128.
Secara umum, antarmuka radio dari keyboard nirkabel Logitech dapat dikarakterisasi sebagai sepenuhnya tidak sinkron dengan multiplexing statistik dan adaptasi frekuensi. Ini berarti bahwa pemancar keyboard mengganti saluran untuk mengirimkan setiap paket baru. Baik waktu transmisi maupun saluran frekuensi tidak diketahui sebelumnya ke penerima, dan hanya daftar mereka yang diketahui. Penerima dan pemancar bertemu di saluran berkat algoritma yang disepakati untuk mem-bypass dan mendengarkan frekuensi, serta mekanisme konfirmasi Enhanced ShockBurst. Kami tidak menyelidiki apakah daftar saluran statis. Mungkin, perubahannya disebabkan oleh algoritma adaptasi frekuensi. Sesuatu yang dekat dengan metode frekuensi hopping (tuning pseudo-acak dari frekuensi operasi) ditebak dalam penggunaan sumber daya frekuensi rentang.
Dengan demikian, dalam kondisi ketidakpastian frekuensi waktu, untuk memastikan penerimaan semua sinyal keyboard, penyerang harus terus-menerus memantau seluruh grid frekuensi dari kisaran 84 posisi, yang membutuhkan waktu yang cukup lama. Di sini menjadi jelas mengapa kerentanan ekstraksi kunci melalui USB (CVE-2019-13054) di sumber diposisikan sebagai kemampuan untuk menyuntikkan penekanan tombol, daripada mendapatkan akses penyerang ke data yang dimasukkan dari keyboard. Jelas, antarmuka radio dari keyboard nirkabel cukup rumit dan menyediakan komunikasi radio yang andal antara perangkat Logitech dalam kondisi interferensi yang sulit di pita 2,4 GHz.
Melihat masalah dari dalam
Untuk penelitian, kami memilih salah satu keyboard Logitech K330 kami dan dongle Logitech Unifying.

Logitech K330
Mari kita lihat ke dalam keyboard. Elemen yang menarik untuk dipelajari di papan tulis adalah chip SoR NRF24 dari Nordic Semiconductor.

SoC NRF24 pada Keyboard Nirkabel Logitech K330
Firmware terletak di memori internal, mekanisme membaca dan debugging dimatikan. Sayangnya, firmware belum dipublikasikan di sumber terbuka. Oleh karena itu, kami memutuskan untuk mendekati masalah dari sisi lain - untuk mempelajari konten internal penerima dongle Logitech.
"Dunia batin" dari penerima dongle cukup menarik. Dongle mudah dibongkar, membawa NRF24 yang sudah dikenal dalam rilis dengan kontroler USB bawaan dan dapat diprogram ulang baik dari sisi USB dan langsung oleh programmer.

Dongle Logitech tanpa perumahan
Karena ada mekanisme pembaruan firmware reguler menggunakan aplikasi Firmware Update Tool (dari mana Anda dapat mengekstrak versi firmware yang diperbarui), tidak perlu mencari firmware di dalam dongle.
Apa yang dilakukan: firmware RQR_012_005_2.028.bin diekstraksi dari badan aplikasi Alat Pembaruan Firmware. Untuk memeriksa integritasnya, kontroler dongle dihubungkan dengan satu loop ke programmer ChipProg-48 :

Kabel dongle Logitech ke programmer ChipProg 48
Untuk mengontrol integritas firmware, itu berhasil ditempatkan di memori pengontrol dan bekerja dengan benar, keyboard dan mouse terhubung ke dongle melalui Logitech Unifying. Dimungkinkan untuk mengisi firmware yang dimodifikasi menggunakan mekanisme pembaruan standar, karena tidak ada mekanisme perlindungan kriptografis untuk firmware tersebut. Untuk tujuan penelitian, kami menggunakan koneksi fisik ke programmer, karena debugging jauh lebih cepat dengan cara ini.
Meneliti firmware dan menyerang input pengguna
Chip NRF24 dirancang berdasarkan pada inti komputasi Intel 8051 dalam arsitektur Harvard tradisional. Untuk inti, transceiver bertindak sebagai perangkat periferal dan terletak di ruang alamat sebagai satu set register. Dokumentasi chip dan contoh kode sumber dapat ditemukan di Internet, jadi membongkar firmware tidak sulit. Selama reverse engineering, kami melokalkan fungsi menerima data pada penekanan tombol dari saluran radio dan mengubahnya menjadi format HID untuk transmisi ke host melalui antarmuka USB. Di alamat memori bebas, kode injeksi ditempatkan, yang termasuk alat untuk mencegat kontrol, menyimpan dan mengembalikan konteks eksekusi asli, serta kode fungsional.
Paket untuk menekan atau melepaskan kunci yang diterima dari saluran radio didekripsi, dikonversi ke laporan HID standar dan dikirim ke antarmuka USB seperti dari keyboard biasa. Sebagai bagian dari penelitian, bagian yang paling menarik bagi kami adalah bagian dari laporan HID yang berisi byte dari flag pengubah dan array 6 byte dengan kode penekanan tombol (untuk referensi, informasi tentang HID ada di sini ).
Struktur Laporan HID:
// Keyboard HID report structure. // See https://flylib.com/books/en/4.168.1.83/1/ (last access 2018 december) // "Reports and Report Descriptors", "Programming the Microsoft Windows Driver Model" typedef struct{ uint8_t Modifiers; uint8_t Reserved; uint8_t KeyCode[6]; }HidKbdReport_t;
Tepat sebelum struktur HID ditransfer ke host, kode yang diinjeksi mengambil kendali, menyalin 8 byte data HID asli dalam memori, dan mengirimkannya ke saluran radio sisi dalam bentuk yang jelas. Dalam kode, tampilannya seperti ini:
//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~> // Profiling have shown time execution ~1.88 mSec this block of code SaveRfState(); // save transceiver state RfInitForTransmition(TransmitRfAddress); // configure for special trnsmition hal_nrf_write_tx_payload_noack(pDataToSend,sizeof(HidKbdReport_t)); // Write payload to radio TX FIFO CE_PULSE(); // Toggle radio CE signal to start transmission RestoreRfState(); // restore original transceiver state //~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~<
Saluran samping diatur pada frekuensi yang ditetapkan oleh kami dengan karakteristik tertentu dari kecepatan manipulasi dan struktur paket.
Pengoperasian transceiver dalam chip NRF24 didasarkan pada grafik keadaan, di mana protokol Enhanced ShockBurst dimasukkan secara organik. Kami menemukan bahwa segera sebelum data HID ditransfer ke antarmuka USB host, transceiver berada dalam keadaan IDLE. Ini memungkinkan konfigurasi ulang yang aman untuk bekerja di saluran samping. Kode yang disuntikkan mencegat kontrol, menyimpan konfigurasi transceiver asli secara penuh, dan mentransfernya ke mode transmisi baru di saluran samping. Mekanisme pengakuan Enhanced ShockBurst dimatikan dalam mode ini, data HID di clear ditransmisikan ke udara. Struktur paket dalam saluran samping ditunjukkan pada gambar di bawah ini, diagram bentuk gelombang diperoleh setelah demodulasi dan sebelum pemulihan sinkronisasi data jam. Nilai alamat dipilih untuk kenyamanan identifikasi visual paket.

Sinyal Demodulated Burst Burst
Setelah pengiriman paket ke saluran samping selesai, kode yang diinjeksikan mengembalikan keadaan transceiver. Sekarang dia siap lagi bekerja dalam mode normal dalam konteks firmware asli.
Di wilayah frekuensi dan waktu-frekuensi, saluran samping terlihat seperti yang ditunjukkan pada gambar:

Representasi spektral dan frekuensi waktu saluran sisi
Untuk menguji operasi chip NRF24 dengan firmware yang dimodifikasi, kami memasang dudukan yang menyertakan dongle Logitech dengan firmware yang dimodifikasi, keyboard nirkabel, dan penerima yang dipasang berdasarkan modul Cina dengan chip NRF24.

Diagram Logitech Wireless Keyboard Diagram Radio

Modul berbasis NRF24
Pada dudukan selama operasi keyboard normal setelah menghubungkannya ke dongle Logitech, kami mengamati transmisi data terbuka pada penekanan tombol di saluran radio sekunder dan transmisi normal data terenkripsi di antarmuka radio utama. Dengan demikian, kami dapat memberikan intersepsi langsung dari input keyboard pengguna:

Hasil Intersepsi Keyboard
Kode yang disuntikkan menimbulkan sedikit keterlambatan dalam pengoperasian firmware dongle. Namun, mereka terlalu kecil untuk diperhatikan oleh pengguna.
Seperti yang dapat Anda bayangkan, keyboard Logitech apa pun yang kompatibel dengan teknologi Unifying dapat digunakan untuk vektor serangan semacam itu. Karena serangan ditujukan ke penerima Unifying, yang disertakan dengan sebagian besar keyboard Logitech, itu tidak bergantung pada model keyboard tertentu.
Kesimpulan
Hasil penelitian menunjukkan bahwa penyerang dapat menggunakan skenario yang dipertimbangkan: jika hacker mengganti korban dengan penerima dongle untuk keyboard nirkabel Logitech, ia akan dapat mengetahui kata sandi untuk akun korban dengan semua konsekuensi berikutnya. Jangan lupa bahwa menyuntikkan penekanan tombol juga dimungkinkan, yang berarti tidak sulit untuk mengeksekusi kode arbitrer di komputer korban.
Bagaimana jika seorang penyerang dapat memodifikasi firmware dari dongle Logitech melalui USB? Lalu dari dongle terdekat, Anda dapat menambahkan jaringan repeater dan meningkatkan jarak rambat. Meskipun penyerang "aman secara finansial" memiliki penerimaan radio modern dengan sistem yang sangat selektif, radio sensitif dengan waktu penyetelan frekuensi pendek dan antena berorientasi sempit, mereka akan memungkinkan Anda "mendengarkan" input keyboard dan menekan tombol bahkan dari gedung tetangga.

Peralatan radio profesional
Karena saluran data nirkabel keyboard Logitech dilindungi dengan cukup baik, vektor serangan yang ditemukan memerlukan akses fisik ke penerima, yang sangat membatasi penyerang. Satu-satunya opsi perlindungan dalam hal ini adalah penggunaan mekanisme perlindungan kriptografis untuk firmware penerima, misalnya, verifikasi tanda tangan dari firmware yang diunduh di sisi penerima. Tetapi, sayangnya, NRF24 tidak mendukung ini dan tidak mungkin untuk menerapkan perlindungan dalam arsitektur perangkat saat ini. Jadi, jaga dongle Anda, karena versi serangan yang dijelaskan membutuhkan akses fisik ke dongle Anda.

Raccoon Security adalah tim ahli khusus di Volcano Scientific and Technical Center di bidang keamanan informasi praktis, kriptografi, sirkuit, rekayasa balik, dan pembuatan perangkat lunak tingkat rendah.