Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 1

Ing pungkasan video, sampeyan krungu klik - iki mbukak kunci setir mechanical, kang kita ora bisa liwat elektronik. Sampeyan kudu nggunakake soko mechanical, break silinder kunci dening tangan, utawa nindakake soko padha, kang aku iki ora arep kanggo mobil dheweke. Kabeh perangkat kukuh sing dituduhake ing video kasebut bakal kasedhiya ing GitHub sawise omonganku, mula pindhah menyang URL ing slide lan download file OpenRemoteStart.

Ayo dadi pirembagan bab apa persis mengkono nalika kita nambah Internet kanggo sistem iki, amarga iku kudu apik kanggo kita, tengen? Kaya sing dakkandhakake, aku tuku modul kontrol weker remot sing diarani MyCar. Nerangake ing macem-macem modifikasi, Aku duwe model Linkr LT-1.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

MyCar mung merek lan modul kasebut didol kanthi jeneng Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6), lsp. Ternyata, sawetara wektu, dealer KIA ing Kanada wis nginstal sistem iki, utawa paling ora aplikasi sing diarani MyCar KIA, ing mobil. Apike, app iki wis ora kasedhiya kanggo download ing AppStore. Aku uga pengin dicathet yen aku milih produk Fortin lan MyCar, nanging miturut review pangguna ing forum tematik weker mobil freelance, sistem liyane ora tumindak luwih apik lan duwe masalah sing padha.

Aku duwe pitakonan penting: Napa pasar weker mobil aftermarket ngedol produk kanthi masalah keamanan lan ora ana sing peduli? Mulane, yen ana sing kasengsem ing sistem wiwitan remot, mbayar manungsa waé kanggo sawetara kahanan penting. Kaping pisanan, kaya sing wis dakcritakake sadurunge, yen sistem DS ora diinstal kanthi bener ing mobil kanthi transmisi manual, bisa uga yen sawise miwiti mesin saka jarak jauh, mobil mung bakal nyopir tanpa driver yen sawetara pindah ing transmisi. . Pancen mbebayani. Bebaya kapindho yaiku yen ana wong sing parkir mobil ing garasi sing dipasang lan ora sengaja nguripake mesin saka jarak adoh, mula bisa sesak amarga akumulasi karbon monoksida. Dadi yen sampeyan duwe sistem CO lan garasi sing dipasang, sampeyan kudu duwe detektor karbon monoksida.

Yen sampeyan nggunakake sistem DS, aja nyoba miwiti mesin mobil tanpa ngerti persis ing ngendi, amarga akibate bisa mbebayani.

Piranti MyCar, kothak ireng cilik karo loro kabel metu saka iku, wis 8 bandar, loro kang darmabakti kanggo antarmuka debugger. Nyambung menyang antarmuka iki nuduhake yen piranti nganggo Linux, sing pabrikan ora bisu. Gampang mlebu ing cangkang perangkat kukuh nggunakake tembung sandhi oelinux 123, nanging sampeyan bisa nggunakake AE Engine tanpa mlebu log, sing ngidini sampeyan ngetik perintah AT saka baris perintah, kalebu prentah kanggo ngganti alamat IP piranti kasebut. modul iki komunikasi.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Yen kita ndeleng garis ing ngisor iki, kita bisa ndeleng alamat IP server saka modul MyCar nampa nganyari perangkat kukuh. Piranti kasebut dilengkapi L-port, sing ngidini sampeyan "ngrungokake" perintah sing ditampa dening modul kasebut. Nggunakake AE Engine lan ngganti IP piranti sing dipasangake, aku bisa nemtokake manawa piranti iki komunikasi karo DS nggunakake protokol UDP sing ora dienkripsi.

Aku wis ora katon menyang kakehan, nanging aku iku kasunyatan cantik pinunjul lan menarik. Yen sampeyan kasengsem ing informasi luwih lengkap babagan piranti iki, deleng slide iki - nuduhake voltase sumber daya 3,3V, tingkat transfer data 115200 baud, alamat server kanggo nganyari perangkat kukuh, sandhi ROOT lan link. menyang manual pangguna.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Piranti kasebut bisa "ngidinke" voltase pasokan sing luwih dhuwur.

Kaya sing dakkandhakake, kene dadi adhem banget. About sasi sawise aku wasis sistem iki kanggo gendakan, Aku mutusaké kanggo njupuk unit metu saka mobil lan menehi roto apik. Kasunyatane yaiku kabeh wulan iki aku wis ngilangi pikirane babagan kerentanan piranti iki. Dheweke prédhiksi suhu mudhun nganti -30F ° kanggo minggu ngarep, mula aku kudu cepet-cepet. Aku nyambung menyang cangkang lan njaluk iku bisa digunakake, nanging wiwit reception mRNA ing Lab ngarep ora apik banget, Aku mutusaké kanggo bisa karo kothak ing komputer liyane. Unit FTDI sing aku gunakake duwe kabel sing cendhak, mula aku nemokake sing luwih dawa, dipasang ing unit DS, dipasang ing komputer, lan sanalika aku nguripake, unitku wiwit ngrokok!

Piwulang sing bisa disinaoni saka iki yaiku: yen sampeyan hacking hardware, siapake unit cadangan! Pacarku menehi moral crita kanthi cara iki: Yen wong penting sampeyan peretas, aja nganti dheweke main karo hadiah Natal! Saiki ayo kang katon ing piranti lunak, Aku ora bakal ngrokok kene.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Aku miwiti proxy man-in-the-middle, verifikasi SSL mateni ing telpon, lan mirsani lalu lintas apa app dikirim menyang backend. Nalika ndhaptar, aku weruh yen sistem njupuk alamat emailku lan dikirim menyang layanan web kanggo mesthekake yen alamat kasebut digandhengake karo akun sing wis ana. Iku menarik yen sistem nggunakake Otentikasi Dasar amarga aku durung nggawe akun. Aku ora ngerti apa sing kudu ditindakake babagan informasi iki, mula aku nulis ing notebook lan nerusake. Aku nggawe akun lan mlebu, lan perkara pisanan sing ditindakake aplikasi nalika mlebu yaiku nelpon layanan web kanggo verifikasi pangguna saiki. Dadi aku mung nelpon webserver iki kanthi kapercayan sing wis dakdeleng sadurunge, sing digunakake kanggo mriksa yen alamat emailku ana, lan diwenehi akses Admin Mycar kanggo nanggepi.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Aku mangu-mangu sing iki akun administrator sistem nyata amarga, senadyan muni banter, iku hak istimewa kurang. Sawise kabeh, kita kabeh ngerti wong kaya iki.

Mulane, aku nggawe panjalukan liyane - printah EngineStart, kanggo miwiti mobil saka akun iki, klik "Kirim", nampa status printah - "200 OK", lan sawise bab telung detik mobil wiwit obah.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Pranyata, akun Admin Mycar pancen dadi akun admin sing di-hardcode menyang aplikasi seluler. Nanging ora mung kuwi. Ing salah sawijining slide sadurunge sampeyan ndeleng barang kaya kunci API. Maneh, saka ngawasi lalu lintas server proxy palsu, aku ngerti yen kunci API iki bisa digunakake kanggo ngganti jeneng pangguna lan sandhi. Yen sampeyan nggunakake "API" minangka jeneng panganggo lan salah siji saka tombol iki, sampeyan bisa keasliane pangguna.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Dadi aku nyalin isi baris "APIKey", nempelake menyang baris Sandi aplikasi POST, lan ngeklik tombol "Kirim".

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Nanging, ora bisa lan aku ora ngerti sebabe suwene 5 menit. Pungkasan, aku ngerti yen aku kelalen mbusak kuotasi lan koma ing kunci API sing disalin, sing dakkandhakake: "Sampeyan nggawe kesalahan ing sintaks SQL." Dadi jelas kanggo aku yen sampeyan mung bisa nggunakake injeksi SQL dhasar kanggo ngliwati kabeh proses login lan dadi administrator utawa pangguna sing dikarepake. Aku ora mikir wong wis tau nyoba kanggo nyolong mobil nggunakake injeksi SQL, supaya kita nyoba.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Umumé, aku mlebu menyang akun, ngeklik "Kirim" lan nampa status "200 OK" kanggo nanggepi. Wektu iki aku mikir kanggo ngrekam video. Rada peteng amarga aku lagi syuting wengi saka jendela kantorku. Dadi, aku ngetik printah, lan sampeyan ndeleng liwat jendhela lampu mobil sumunar ing plataran ngisor. Ing kawitan cahya sing ringkih, nanging lampu ngarep wiwiti sumunar ing daya lengkap - iki engine nguripake. Dadi, aku miwiti mobil nggunakake injeksi SQL (tepuk tangan penonton).

Nanging ora mung kuwi. Injeksi SQL bisa digunakake ora mung kanggo wewenang, nanging uga kanggo ngganti paramèter liyane kayata URL, paramèter awak string query, lsp. Nyatane, sistem iki nggunakake injeksi SQL ing endi wae. Nggoleki pesen kesalahan, kita bisa ndeleng manawa apa sing dilebokake minangka sandhi dibandhingake langsung karo kolom sandi ing database.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Iki tegese padha nggunakake tembung sandhi teks kosong ing injeksi SQL. Kaya sing dikandhakake, "iki ora apik, malah ala banget!" Nanging cukup babagan SQL, ayo ndeleng apa maneh sing bisa ditindakake kanggo miwiti mobil saka jarak jauh. Sampeyan mung ngirim printah "EngineStart" lan nanggepi sampeyan nampa pengenal integer makili pengenal saka printah iki, ing kasus iki ID = 3. Ngerti pengenal, sampeyan bisa "narik" layanan sing bakal laporan status iki. dhawuh.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Dadi kanthi nambah utawa nyuda nilai ID, aku "narik" status perintah apa wae sing wis dikirim ing sistem kasebut.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Ana apa-apa utamané menarik babagan, sanadyan, lan aku wonder yen ana referensi langsung kanggo obyek kene sing bisa digunakake kanggo miwiti mobil. Dadi aku mbukak printah "EngineStart" minangka pangguna sing sah saka akunku, lan banjur nyoba nelpon liwat akun pangguna liyane, sing ora duwe akses menyang sistem kasebut. Kanggo nanggepi, aku nampa pesen kesalahan: "Akun iki ora ana ing konteks hierarki." Dadi mungkin hack iki ora bisa. Nanging, yen sampeyan ndeleng API iki, sampeyan bakal weruh manawa ana duplikat informasi - alamat email pangguna wis dipetakan menyang ID akun.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Yen sampeyan lagi ngembangake API utawa hacking API, jinis duplikasi informasi sing kita deleng ing URL iki bisa dadi sumber kesalahan. Ing kasus iki, bug API bisa diwujudake kanthi patang cara.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Yen katon ing kasus 2 lan 3, mbatesi ing abang, sampeyan bisa ndeleng referensi langsung kanggo obyek. Ing kasus kasebut, sistem ora mriksa manawa sampeyan duwe wewenang kanggo nglakokake perintah kasebut. Aku nyoba kasus 2 lan ora bisa, apa kasus 3? Ing kene kita kudu ngganti ID akun USER_EMAIL ing URL amarga ana hubungane langsung karo ID akun ACCOUNT_ID. Sadurunge kita nggunakake ID akun korban, nanging saiki nggunakake akun panyerang. Dadi aku nggunakake ID akun peretas lan ID piranti korban, dikirim printah lan samesthine nampa status printah "200 OK" lan gained kontrol app MyCar.
Dadi, kanthi telung vektor serangan sing beda-beda, kita bisa nindakake kabeh sing bisa ditindakake pangguna sing sah saka aplikasi kasebut. Iki tegese sampeyan bisa nemokake mobil apa wae ing kutha, nyetel merek lan model ing aplikasi kasebut, banjur mbukak kunci mobil kanthi jarak jauh lan miwiti. Kita bisa mateni utawa nguripake weker, ngganti menu layanan mobil lan mriksa status printah sembarang. Lan kabeh iki bisa ditindakake kanthi telung cara.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Cetha manawa pangembang MyCar nyoba ndandani bug sistem kasebut. Dadi, ing kasus sandi hardcoded, padha mung sijine proxy mbalikke ing ngarepe aplikasi kanggo ndhelikake kredensial sing digunakake kanggo wewenang. Masalahe yaiku proxy mbalikke ora sihir lan ora bisa ndandani kabeh masalah. Dheweke nyimpen injeksi SQL ing layanan pihak katelu supaya sanajan tanpa sandhi, aku isih bisa nggunakake liwat prosedur verifikasi pangguna.

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Aku mutusake kanggo ndeleng kanthi luwih rinci babagan struktur URL. Sampeyan bisa uga wis ngelingi yen kabeh alamat sing digunakake dening sistem ngemot m2m. Nemtokake manawa iki minangka sawetara jinis interaksi internal kanggo mekanisme wewenang ing aplikasi MyCar, aku ngetik huruf kasebut menyang Google lan nemokake situs web M2M Suite. Ing bab mung sampeyan bisa nindakake nalika sampeyan ndeleng wangun iki sijine saperangan kuotasi siji ing ana lan ndeleng apa mengkono. Apa sing bakal kedadeyan yaiku sampeyan bakal entuk injeksi SQL sing dikarepake (tepuk tangan penonton).

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Lan iki teka sawetara sasi sawise pangembang nglaporake masalah karo injeksi SQL. Yen app duwe masalah kaya iki, kudu didandani sanalika bisa, nanging sampeyan bisa ndeleng, pangembang durung nindakake apa-apa. Aku nemokake iki jenis disregard kanggo pangguna nyerang.

Modul MyCar duwe unit GPS supaya bisa nglacak lokasi mobil sampeyan lan nampilake ing aplikasi kasebut. Nanging, kang nguripake metu, padha nyimpen ora mung lokasi saiki mobil. Dheweke nyimpen akeh informasi, luwih akeh tinimbang sing dibutuhake kanggo nglacak lokasi mobil saiki. Ing kasusku, luwih saka 13 dina nggunakake aplikasi kasebut, dheweke nglumpukake kurang saka rong ewu titik geolokasi ing papan sing ditekani mobilku. Kabijakan privasi perusahaan pangembang MyCar ora ujar babagan koleksi informasi kasebut.

Nanging, dadi luwih elek. Sampeyan bisa mbantah manawa iki mung efek samping saka implementasi layanan lokasi. Nanging masalahe, tinimbang mung nggawe dhaptar panggonan sing dituju mobil sampeyan, dheweke nggunakake API liyane sing nganalisa data kasebut lan nemtokake panggonan sing paling kerep dituju mobil sampeyan. Maneh, kanggo kawruhku, ora ana tandha babagan fitur kasebut ing kabijakan privasi. Mbok menawa iki ora nggumunake amarga sawise ton nggoleki, aku nemokake perusahaan induk MyCar sing diarani Procon Analytics, menyang situs web lan ngunjungi bagean FAQ. Ing kene aku nemokake pitakonan: "Kepiye sampeyan njamin keamanan data?" Tanggepan perusahaan yaiku: "Ora kaya awan umum sing bersaing kanggo prioritas ing panyimpenan data, Procon Analytics nggunakake maya virtual dhewe, sing digunakake khusus kanggo pangguna aplikasi kita lan dilindhungi saka gangguan dening pangguna liyane. Iki minangka lingkungan maya khusus kanthi tingkat keamanan sing dhuwur, sing njamin kasedhiyan gampang lan kecepatan pangiriman layanan. Kanthi kemitraan karo Procon Analytics, sampeyan bisa yakin manawa data sampeyan dilindhungi kanthi aman. Aku malah ora ngerti arep ngomong apa iki ...

Konferensi DEFCON 27. Mobil sampeyan mobilku. Bagean 2

Yen sampeyan pindhah menyang kaca Facebook, sampeyan bisa nemokake sing luwih menarik. Ing kene dheweke mung nulis: "Nlindhungi informasi babagan kendaraan sampeyan penting!" Inggih, aku mung bisa setuju karo statement kuwi.

Dadi, bali menyang pitakonan sing aku wiwiti: "Kepiye kedadeyan iki lan kepiye carane bisa nyingkiri"? Lan sing luwih penting, kepiye carane kita minangka komunitas nyegah kedadeyan kasebut?

Iki nyimpulake laporanku, nanging aku isih bisa mangsuli sawetara pitakon (tepuk tangan penonton).

Apa sampeyan takon yen padha ndandani kabeh? Ing wektu iki, aku mikir dheweke wis ndandani kabeh kewan omo sing daklaporake, kajaba cacat kabijakan privasi sing dakkandhakake ing pungkasan obrolan. Wektu pungkasan aku mriksa, kabeh ora owah. Nalika ditakoni apa aku bisa ngowahi paramèter unit kontrol mesin elektronik (ECU) mobil kanthi cara sing padha, aku bakal mangsuli manawa tugasku yaiku ngowahi paramèter mobil mung ing aplikasi MyCar. Iki nyimpen perwakilan digital saka kendaraan sing diowahi liwat akses obyek langsung, injeksi SQL, utawa vektor serangan liyane.

Pitakonan pungkasan yaiku: apa aku duwe sistem wiwitan mesin tanpa tombol ing mobil kanthi tombol "Mulai" lan apa kahanan kunci setir ing kasus iki? Wangsulanku yaiku MyCar duwe tombol kaya ngono, mula sistem iki ora duwe kunci setir. Aku curiga yen sampeyan nginstal sistem iki, sampeyan mesthi ora bisa gumantung ing kunci setir.

Sawetara iklan 🙂

Matur nuwun kanggo tetep karo kita. Apa sampeyan seneng karo artikel kita? Pengin ndeleng konten sing luwih menarik? Ndhukung kita kanthi nggawe pesenan utawa menehi rekomendasi menyang kanca, cloud VPS kanggo pangembang saka $4.99, analog unik saka server level entri, sing diciptakake kanggo sampeyan: Bebener kabeh babagan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps saka $ 19 utawa carane nuduhake server? (kasedhiya karo RAID1 lan RAID10, munggah 24 intine lan nganti 40GB DDR4).

Dell R730xd 2 kaping luwih murah ing pusat data Equinix Tier IV ing Amsterdam? Mung kene 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV saka $199 ing Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - saka $99! Maca babagan Carane mbangun infrastruktur corp. kelas karo nggunakake Dell R730xd E5-2650 v4 server worth 9000 euro kanggo Penny?

Source: www.habr.com

Add a comment