
Sinyal
bus CAN mentah Bus CAN (Controller Area Network) telah menjadi standar dalam industri otomotif: semua mobil baru harus mendukung CAN (sejak 2001 di Eropa dan sejak 2008 di AS). Selain mobil, CAN digunakan di berbagai perangkat lain. Produsen peralatan diagnostik untuk CAN mengiklankan penggunaannya, selain berbagai peralatan otomotif, pada sepeda motor, truk forklif, kapal, kereta tambang, batiskaf, pesawat tak berawak, dll. Mari kita lihat apa itu CAN.
Beberapa CAN digunakan dalam kendaraan; Misalnya, di Ford Focus ada empat ban seperti itu - tiga kecepatan tinggi (500 kbps) untuk mengendalikan mesin, rem, dasbor, dll., Dan satu kecepatan rendah (125 kbps) untuk mengendalikan pintu, lampu depan, kantung udara, sistem audio, AC dan semuanya hal-hal lain. Dengan menyambungkan ke CAN, Anda dapat mensimulasikan sinyal dari perangkat apa pun di dalam mobil - misalnya, mengontrol AC dari aplikasi di ponsel atau memutarkan odometer tanpa menggerakkan mobil. Dengan menghubungkan ke bus Arduino dan relai, Anda dapat mengontrol kamera parkir tambahan dari dasbor . Bahkan perusahaan rintisan mandiri seperti Voyage, mulai membuat prototipe dengan menghubungkan ke CAN di mobil produksi reguler dan belajar mensimulasikan sinyal dari pedal dan roda kemudi.
Untuk menyambungkan ke CAN di mobil, biasanya ada konektor OBD-II (On-Board Diagnostics) di dekat roda kemudi.
Adaptor OBD2-USB untuk menghubungkan komputer ke CAN berharga mulai $ 5 dan memungkinkan Anda melacak semua lalu lintas di dalam mobil. Kadang-kadang konektor OBD-II dilindungi oleh "firewall perangkat keras" yang memungkinkan Anda menerima paket dari perangkat yang terhubung ke CAN, tetapi tidak mengizinkan paket untuk dikirim kembali ke bus. Dalam hal ini, cukup melepas konektor dan menghubungkan ke kabel CAN sebagai gantinya.

Setiap paket yang dikirimkan pada bus CAN terdiri dari ID perangkat pengirim (11 atau 29 bit), dan hingga 8 byte data yang ditransmisikan. Lalu lintas yang melewati bus ketika kunci kontak dihidupkan mungkin terlihat seperti ini:

Ada banyak alat untuk menganalisis lalu lintas CAN, baik komersial maupun OpenSource. Paket can-utils untuk Linux menyertakan utilitas
cansnifferyang hanya menampilkan untuk setiap CAN ID paket terkirim terakhir, dan dengan demikian memungkinkan Anda untuk melacak perubahan dalam pembacaan setiap sensor di bus:

Untuk rekayasa balik lalu lintas CAN, para peneliti Singapura, yang dari laporannya saya mengambil jejak ini, merekam dasbor mobil eksperimental di video, lalu menghubungkan perubahan di dasbor dengan perubahan lalu lintas secara bersamaan. Setelah menentukan CAN ID dari sensor kecepatan dan format data yang dikirimkan olehnya, mereka belajar untuk "memalsukan" paketnya, mengirimkan pembacaan yang salah ke speedometer dan takometer.
Harus dipahami bahwa secara paralel dengan transmisi paket "palsu", sinyal nyata dari sensor kecepatan terus dipancarkan melalui bus. Agar tachometer menunjukkan pembacaan yang dibuat-buat, transmisi pembacaan sebenarnya di bus perlu dipantau, dan disembunyikan dengan cara tertentu - misalnya, segera setelah mendeteksi transmisi CAN ID dari sensor kecepatan, secara fisik "meredam" bus dengan menyingkat jalur data. Metode perangkat lunak yang lebih sederhana dan murni untuk menekan pembacaan yang sebenarnya adalah dengan mengirimkan paket "palsu" segera setelah transmisi mereka, sementara tachometer belum sempat bereaksi. Misalnya, skrip shell sederhana berikut memantau transmisi dengan CAN ID = 0x0C9, dan segera setelah itu mentransmisikan paket yang dibuat menggunakan utilitas
cansenddari can-utils yang sama:
tempat lilin can0 | grep "0C9" | saat membaca baris; lakukan cansend can0 0C9 # 8021C0071B101000; selesai
Meskipun semua perangkat di dalam mobil terhubung ke CAN, tidak semua fungsinya dikontrol melalui CAN. Misalnya, sinyal tentang tingkat penekanan pedal gas dan rem dikirim ke CAN di Ford Escape - tetapi sinyal ini hanya digunakan oleh unit ABS, sedangkan aktuator throttle dan rem langsung terhubung ke pedal, melewati CAN.
Dari sudut pandang keamanan, tidak ada pertanyaan tentang kerentanan dalam laporan warga Singapura, karena akses fisik ke bus diperlukan untuk mengirimkan paket CAN "palsu". Selain itu, paket dapat dilindungi dengan checksum - misalnya, di kendaraan Toyota, byte terakhir dari setiap paket harussama dengan jumlah dari semua yang sebelumnya (modulo 256). Selain itu, Toyota menggunakan filter penerima untuk melindungi dari paket yang tidak diinginkan - misalnya, mengabaikan putaran kemudi lebih dari 5% dari nilai saat ini.
Namun demikian, peneliti keamanan berhasil mendapatkan akses jarak jauh ke CAN: pertama, pada jarak pendek - melalui kerentanan dalam modul Bluetooth yang terhubung ke bus yang sama; dan kemudianmelalui jaringan seluler Sprint, di mana SUV dari beberapa pabrikan Amerika menerima data lalu lintas. Para peneliti yang mendemonstrasikan intersepsi kendali Jeep Cherokee dari jarak beberapa mil menerima hadiah $ 80.000 dari Badan Proyek Penelitian Lanjutan Pertahanan (DARPA). Sejak itu, banyak pembuat mobil telah mengumumkan program bounty mereka sendiri yang menjanjikan pembayaran $ 1.500 atau lebih untuk setiap kerentanan yang ditemukan. Dengan demikian, rekayasa balik lalu lintas pada bus CAN tidak hanya dapat menambah kemungkinan baru ke mobil Anda, tetapi juga mengisi kembali dompet Anda secara signifikan.
