Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 1

Pada penghujung video, anda mendengar bunyi klik - ini ialah membuka kunci kunci stereng mekanikal, yang tidak boleh kami pintas menggunakan elektronik. Anda perlu menggunakan sesuatu yang mekanikal, memecahkan silinder kunci dengan tangan, atau melakukan sesuatu yang serupa, yang saya tidak akan lakukan pada keretanya. Semua perisian tegar yang ditunjukkan dalam video ini akan tersedia di GitHub selepas ceramah saya, jadi hanya pergi ke URL pada slaid dan muat turun fail OpenRemoteStart.

Mari kita bercakap tentang apa sebenarnya yang berlaku apabila kita menambah Internet pada sistem ini, kerana ia mesti baik untuk kita, bukan? Seperti yang saya katakan, saya membeli modul kawalan penggera jauh yang dipanggil MyCar. Ia datang dalam pelbagai pengubahsuaian, saya mempunyai model Linkr LT-1.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

MyCar hanyalah jenama dan modul sebegini dijual di bawah nama Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6), dll. Ternyata, buat sementara waktu sekarang, pengedar KIA di Kanada telah memasang sistem ini, atau sekurang-kurangnya aplikasi yang dipanggil MyCar KIA, pada kereta mereka. Menariknya, aplikasi ini tidak lagi tersedia untuk dimuat turun di AppStore. Saya juga ingin ambil perhatian bahawa saya memilih produk Fortin dan MyCar, tetapi menurut ulasan pengguna di forum tematik penggera kereta bebas, sistem lain tidak berkelakuan lebih baik dan mempunyai masalah yang sama.

Saya mempunyai soalan penting: Mengapa pasaran penggera kereta selepas jualan menjual produk dengan masalah keselamatan dan tiada siapa yang peduli? Oleh itu, jika mana-mana daripada anda berminat dengan sistem pemula jauh, beri perhatian kepada beberapa keadaan penting. Pertama, seperti yang saya nyatakan sebelum ini, jika sistem DS tidak dipasang dengan betul pada kereta dengan transmisi manual, agak mungkin selepas menghidupkan enjin dari jauh, kereta itu hanya akan memandu tanpa pemandu jika beberapa gear digunakan dalam transmisi. . Ia benar-benar berbahaya. Bahaya kedua ialah jika seseorang meletakkan kereta di garaj yang dipasang dan secara tidak sengaja menghidupkan enjin dari jauh, mereka boleh lemas akibat karbon monoksida terkumpul. Oleh itu, jika anda mempunyai sistem CO dan garaj yang dipasang, anda semestinya mempunyai pengesan karbon monoksida.

Jika anda menggunakan sistem DS, jangan sekali-kali cuba menghidupkan enjin kereta anda tanpa mengetahui dengan tepat di mana ia berada, kerana akibatnya boleh membawa bencana.

Peranti MyCar, kotak hitam kecil dengan dua wayar yang keluar daripadanya, mempunyai 8 port, dua daripadanya dikhaskan untuk antara muka penyahpepijat. Menyambung ke antara muka ini menunjukkan bahawa peranti itu menjalankan Linux, yang pengeluarnya senyap. Mudah untuk masuk ke dalam shell firmware menggunakan kata laluan oelinux 123, tetapi anda boleh menggunakan Enjin AE tanpa log masuk, yang membolehkan anda memasukkan arahan AT dari baris arahan, termasuk arahan untuk menukar alamat IP peranti yang digunakan. modul ini berkomunikasi.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jika kita melihat baris di bawah, kita boleh melihat alamat IP pelayan dari mana modul MyCar menerima kemas kini perisian tegar. Peranti ini dilengkapi dengan L-port, yang membolehkan anda "mendengar" arahan yang diterima oleh modul. Menggunakan Enjin AE dan menukar IP peranti yang digandingkan, saya dapat menentukan bahawa peranti ini berkomunikasi dengan DS menggunakan protokol UDP yang tidak disulitkan.

Saya tidak melihatnya terlalu banyak, tetapi saya fikir ia adalah fakta yang cukup penting dan menarik. Jika anda berminat untuk mendapatkan maklumat lanjut tentang peranti ini, lihat slaid ini - ia menunjukkan voltan bekalan kuasa 3,3V, kadar pemindahan data 115200 baud, alamat pelayan untuk mengemas kini perisian tegar, kata laluan akar dan pautan kepada manual pengguna.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Peranti boleh "bertolak ansur" dengan voltan bekalan yang lebih tinggi.

Seperti yang saya katakan, ia menjadi agak sejuk di sini. Kira-kira sebulan selepas saya menghadiahkan sistem ini kepada teman wanita saya, saya memutuskan untuk mengeluarkan unit itu dari kereta dan menjalankannya dengan baik. Hakikatnya ialah sepanjang bulan ini saya telah menolak pemikiran tentang kelemahan peranti ini. Mereka meramalkan suhu turun kepada -30FΒ° untuk minggu depan, jadi saya terpaksa bergegas. Saya menyambung ke cangkerang dan memastikan ia berfungsi, tetapi memandangkan penerimaan selular di makmal rumah saya tidak begitu baik, saya memutuskan untuk menggunakan kotak itu pada komputer lain. Unit FTDI yang saya gunakan mempunyai kord pendek, jadi saya dapati yang lebih panjang, pasangkannya ke unit DS, pasangkannya ke dalam komputer, dan sebaik sahaja saya menghidupkan kuasa, unit saya mula berasap!

Pengajaran yang boleh dipelajari daripada ini ialah: jika anda menggodam perkakasan, sediakan unit ganti! Teman wanita saya meletakkan moral cerita seperti ini: Jika pasangan anda seorang penggodam, jangan biarkan dia bermain dengan hadiah Krismas anda! Sekarang mari kita lihat perisian, saya rasa tiada apa yang akan berasap di sini.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Saya memulakan proksi man-in-the-middle, melumpuhkan pengesahan SSL pada telefon saya dan melihat trafik yang dihantar apl ke bahagian belakang. Semasa mendaftar, saya perasan bahawa sistem mengambil alamat e-mel saya dan menghantarnya ke perkhidmatan web untuk memastikan alamat itu dikaitkan dengan akaun sedia ada. Menariknya sistem menggunakan Pengesahan Asas kerana saya belum membuat akaun lagi. Saya tidak tahu apa yang perlu dilakukan dengan maklumat ini, jadi saya hanya menulisnya dalam buku nota dan meneruskan. Saya mencipta akaun saya dan log masuk, dan perkara pertama yang dilakukan oleh aplikasi semasa log masuk ialah memanggil perkhidmatan web untuk mengesahkan pengguna semasa. Jadi saya hanya memanggil pelayan web ini dengan bukti kelayakan yang saya lihat sebelum ini, yang digunakan untuk menyemak sama ada alamat e-mel saya wujud, dan diberi akses Pentadbir Mycar sebagai balasan.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Saya meragui bahawa ini adalah akaun pentadbir sistem sebenar kerana, walaupun kedengaran kuat, ia mempunyai keistimewaan yang rendah. Lagipun, kita semua tahu orang seperti ini.

Oleh itu, saya membuat permintaan lain - arahan EngineStart, untuk memulakan kereta dari akaun ini, klik "Hantar", terima status arahan sebagai tindak balas - "200 OK", dan selepas kira-kira tiga saat kereta saya mula bergerak.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Ternyata, akaun Pentadbir Mycar sememangnya akaun pentadbir yang dikod keras ke dalam aplikasi mudah alih. Tetapi bukan itu sahaja. Pada salah satu slaid sebelumnya anda melihat perkara sedemikian sebagai kunci API. Sekali lagi, daripada memantau trafik pelayan proksi palsu saya, saya mengetahui bahawa kunci API ini boleh digunakan sebagai ganti nama pengguna dan kata laluan. Jika anda menggunakan "API" sebagai nama pengguna dan salah satu daripada kunci ini, anda boleh mengesahkan pengguna.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jadi saya menyalin kandungan baris "APIKey", menampalnya ke dalam baris Kata Laluan aplikasi POST dan mengklik butang "Hantar".

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Walau bagaimanapun, ia tidak berjaya dan saya tidak tahu mengapa selama 5 minit. Akhirnya, saya sedar bahawa saya terlupa untuk mengalih keluar petikan dan koma dalam kunci API yang disalin, iaitu apa yang saya diberitahu: "Anda membuat kesilapan dalam sintaks SQL." Menjadi jelas kepada saya bahawa anda hanya boleh menggunakan suntikan SQL asas untuk memintas keseluruhan proses log masuk dan menjadi pentadbir atau mana-mana pengguna yang anda inginkan. Saya tidak fikir sesiapa pernah cuba mencuri kereta menggunakan suntikan SQL, jadi mari kita mencubanya.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Secara umum, saya melog masuk ke akaun saya, mengklik "Hantar" dan menerima status "200 OK" sebagai balasan. Kali ini saya terfikir untuk merakam video. Keadaan agak gelap kerana saya membuat penggambaran pada lewat malam dari tingkap pejabat saya. Jadi, saya masukkan arahan, dan anda melihat melalui tingkap bahawa lampu kereta berkelip di halaman di bawah. Pada mulanya cahaya mereka lemah, tetapi kemudian lampu depan mula bersinar pada kuasa penuh - ini adalah enjin dihidupkan. Jadi, saya menghidupkan kereta menggunakan suntikan SQL (tepuk tangan penonton).

Tetapi bukan itu sahaja. Suntikan SQL boleh digunakan bukan sahaja untuk kebenaran, tetapi juga untuk menggantikan parameter lain seperti URL, parameter badan rentetan pertanyaan, dsb. Malah, sistem ini menggunakan suntikan SQL di mana-mana sahaja. Melihat kepada mesej ralat, kita dapat melihat bahawa apa yang kita masukkan sebagai kata laluan dibandingkan terus dengan lajur kata laluan dalam pangkalan data.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Ini bermakna mereka menggunakan kata laluan teks biasa dalam suntikan SQL. Seperti yang mereka katakan, "ini tidak baik sama sekali, malah sangat buruk!" Tetapi cukup mengenai SQL, mari lihat apa lagi yang boleh anda lakukan untuk menghidupkan kereta anda dari jauh. Anda hanya menghantar arahan "EngineStart" dan sebagai tindak balas anda menerima pengecam integer yang mewakili pengecam arahan ini, dalam kes ini ialah ID = 3. Mengetahui pengecam, anda boleh "menarik" perkhidmatan yang akan melaporkan status ini perintah.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jadi dengan menambah atau mengurangkan nilai ID, saya "menarik" status mana-mana arahan yang pernah dihantar pada sistem itu.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Walau bagaimanapun, tiada apa-apa yang menarik mengenainya, dan saya tertanya-tanya sama ada terdapat rujukan langsung kepada objek di sini yang boleh saya gunakan untuk menghidupkan kereta saya. Jadi saya menjalankan perintah "EngineStart" sebagai pengguna yang sah dari akaun saya, dan kemudian cuba memanggilnya melalui akaun pengguna lain, yang sepatutnya tidak mempunyai akses kepada sistem. Sebagai balasan, saya menerima mesej ralat: "Akaun ini bukan dalam konteks hierarki." Jadi mungkin hack ini tidak akan berfungsi. Walau bagaimanapun, jika anda melihat API ini, anda akan melihat bahawa ia menduplikasi maklumat - alamat e-mel pengguna dipetakan ke ID akaun mereka.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jika anda sedang membangunkan API atau menggodam API, jenis pertindihan maklumat yang kami lihat dalam URL ini boleh menjadi punca ralat. Dalam kes ini, pepijat API boleh nyata dalam empat cara berbeza.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jika anda melihat kes 2 dan 3, yang digariskan dalam warna merah, anda boleh melihat rujukan langsung kepada objek. Dalam kedua-dua kes, sistem tidak menyemak sama ada anda dibenarkan untuk melaksanakan arahan. Saya cuba kes 2 dan ia tidak berjaya, bagaimana dengan kes 3? Di sini kita hanya perlu menggantikan ID akaun USER_EMAIL dalam URL kerana ia berkaitan secara langsung dengan ID akaun ACCOUNT_ID. Sebelum ini kami menggunakan ID akaun mangsa, tetapi kini kami menggunakan akaun penyerang. Jadi saya menggunakan ID akaun penggodam dan ID peranti mangsa, menghantar arahan dan dijangka menerima status arahan "200 OK" dan mendapat kawalan ke atas aplikasi MyCar.
Jadi, dengan tiga vektor serangan yang berbeza, kami dapat melakukan segala-galanya yang boleh dilakukan oleh pengguna sah aplikasi itu. Ini bermakna anda boleh menemui mana-mana kereta di bandar, menetapkan jenama dan modelnya dalam aplikasi, kemudian membuka kunci kereta dari jauh dan menghidupkannya. Kami boleh mematikan atau menghidupkan penggera, membuat perubahan pada menu servis kereta dan menyemak status sebarang arahan. Dan semua ini boleh dilakukan dalam tiga cara yang berbeza.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jelas sekali bahawa pembangun MyCar cuba untuk membetulkan pepijat sistem. Jadi, dalam kes kata laluan berkod keras, mereka hanya meletakkan proksi terbalik di hadapan aplikasi untuk menyembunyikan bukti kelayakan yang digunakan untuk kebenaran. Masalahnya ialah proksi terbalik bukan sihir dan tidak dapat menyelesaikan semua masalah. Mereka menyimpan suntikan SQL dalam perkhidmatan pihak ketiga supaya walaupun tanpa kata laluan saya masih boleh menggunakannya melalui prosedur pengesahan pengguna.

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Saya memutuskan untuk melihat lebih dekat pada struktur URL. Anda mungkin perasan bahawa semua alamat yang digunakan oleh sistem mengandungi m2m. Memutuskan bahawa ini adalah beberapa jenis interaksi dalaman untuk mekanisme kebenaran dalam aplikasi MyCar, saya memasukkan surat ini ke dalam Google dan menemui tapak web M2M Suite. Satu-satunya perkara yang boleh anda lakukan apabila anda melihat borang ini ialah meletakkan beberapa petikan tunggal di sana dan melihat apa yang berlaku. Apa yang akan berlaku ialah anda akan mendapat suntikan SQL yang dikehendaki (tepuk tangan penonton).

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Dan ini berlaku beberapa bulan selepas pembangun melaporkan masalah dengan suntikan SQL. Jika apl mempunyai masalah seperti ini, ia perlu diperbaiki secepat mungkin, tetapi seperti yang anda lihat, pembangun tidak melakukan apa-apa. Saya mendapati sikap tidak menghiraukan pengguna seperti ini menyinggung perasaan.

Modul MyCar mempunyai unit GPS supaya ia boleh menjejaki lokasi kereta anda dan memaparkannya dalam aplikasi. Tetapi, ternyata, mereka menyimpan bukan sahaja lokasi semasa kereta. Mereka menyimpan banyak maklumat, lebih daripada yang diperlukan untuk menjejaki lokasi semasa kereta. Dalam kes saya, selama 13 hari menggunakan aplikasi, mereka mengumpul kurang daripada dua ribu titik geolokasi tempat yang dilawati oleh kereta saya. Dasar privasi syarikat pembangun MyCar tidak menyatakan sepatah pun mengenai pengumpulan maklumat sedemikian.

Walau bagaimanapun, ia menjadi lebih teruk. Anda boleh berhujah bahawa ini hanyalah kesan sampingan daripada pelaksanaan perkhidmatan lokasi. Tetapi masalahnya, bukannya hanya membuat senarai tempat yang dituju oleh kereta anda, mereka menggunakan API lain yang menganalisis data tersebut dan menentukan tempat yang paling kerap dituju oleh kereta anda. Sekali lagi, untuk pengetahuan saya, tiada tanda ciri sedemikian dalam dasar privasi. Mungkin ini tidak begitu menghairankan kerana selepas satu tan mencari, saya dapati syarikat induk MyCar bernama Procon Analytics, pergi ke laman web mereka dan melawat bahagian Soalan Lazim. Di sini saya terjumpa soalan: "Bagaimana anda memastikan keselamatan data?" Maklum balas syarikat ialah: β€œTidak seperti awan awam yang bersaing untuk keutamaan dalam penyimpanan data, Procon Analytics menggunakan awan mayanya sendiri, yang digunakan secara eksklusif untuk pengguna aplikasi kami dan dilindungi daripada gangguan oleh pengguna lain. Ini ialah persekitaran awan khas dengan tahap keselamatan yang tinggi, yang memastikan ketersediaan mudah dan kelajuan penyampaian perkhidmatan. Dengan bekerjasama dengan Procon Analytics, anda boleh yakin bahawa data anda dilindungi dengan selamat.” Saya pun tak tahu nak cakap apa ni...

Persidangan DEFCON 27. Kereta awak kereta saya. Bahagian 2

Jika anda pergi ke halaman Facebook mereka, anda boleh mengetahui perkara yang lebih menarik. Di sini mereka hanya menulis: "Melindungi maklumat tentang kenderaan anda adalah penting!" Nah, saya hanya boleh bersetuju dengan kenyataan sedemikian.

Jadi, kembali kepada soalan yang saya mulakan dengan: "Bagaimana ini berlaku dan bagaimana ia boleh dielakkan"? Dan yang lebih penting, bagaimanakah kita sebagai masyarakat dapat mengelakkan perkara ini daripada berlaku?

Ini mengakhiri laporan saya, tetapi saya masih dapat menjawab beberapa soalan (tepuk tangan penonton).

Adakah anda bertanya sama ada mereka membetulkan semuanya? Pada ketika ini, saya rasa mereka telah membetulkan semua pepijat yang saya laporkan kepada mereka, kecuali kelemahan dasar privasi yang saya nyatakan pada penghujung ceramah. Kali terakhir saya menyemaknya, semuanya tidak berubah. Apabila ditanya sama ada saya boleh mengedit parameter unit kawalan enjin elektronik (ECU) kereta dengan cara yang sama, saya akan menjawab bahawa tugas saya adalah untuk mengedit parameter kereta hanya dalam aplikasi MyCar. Ia menyimpan perwakilan digital kenderaan yang disunting melalui akses objek langsung, suntikan SQL atau vektor serangan lain.

Soalan terakhir ialah: adakah saya mempunyai sistem permulaan enjin tanpa kunci dalam kereta saya dengan butang "Mula" dan apakah keadaan dengan kunci stereng dalam kes ini? Jawapan saya ialah MyCar mempunyai butang sedemikian, jadi sistem ini tidak mempunyai kunci stereng. Saya mengesyaki bahawa jika anda memasang sistem ini, anda pasti tidak akan dapat bergantung pada kunci stereng.

Beberapa iklan πŸ™‚

Terima kasih kerana tinggal bersama kami. Adakah anda suka artikel kami? Ingin melihat kandungan yang lebih menarik? Sokong kami dengan membuat pesanan atau mengesyorkan kepada rakan, cloud VPS untuk pembangun dari $4.99, analog unik pelayan peringkat permulaan, yang kami cipta untuk anda: Keseluruhan kebenaran tentang VPS (KVM) E5-2697 v3 (6 Teras) 10GB DDR4 480GB SSD 1Gbps daripada $19 atau bagaimana untuk berkongsi pelayan? (tersedia dengan RAID1 dan RAID10, sehingga 24 teras dan sehingga 40GB DDR4).

Dell R730xd 2 kali lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya disini 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV daripada $199 di Belanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - daripada $99! Baca tentang Bagaimana untuk membina infrastruktur corp. kelas dengan penggunaan pelayan Dell R730xd E5-2650 v4 bernilai 9000 euro untuk satu sen?

Sumber: www.habr.com

Tambah komen