Pada artikel ini saya ingin berbicara tentang keamanan sistem pembayaran parkir otomatis. Kira-kira seperti pada gambar ini.
Di pintu masuk, tiket parkir dikeluarkan, di pintu keluar didorong kembali ke terminal. Pada dasarnya, ada dua jenis kupon: kertas dengan barcode / kode QR dan kartu plastik tanpa kontak, yang terakhir akan dibahas.
Seperti biasa, saya ingin membuat reservasi segera bahwa semua informasi disajikan untuk tujuan informasi saja dan tidak membawa tujuan mensponsori terorisme dan membangun dominasi dunia.
Suatu hari, dengan menggunakan parkir pusat perbelanjaan metropolitan, saya terinspirasi oleh artikel tentang
Troika dan
Podorozhnik , juga karena sangat penasaran, meluncurkan aplikasi
MifareClassicTool pada
ponsel berkemampuan NFC
saya dan mencoba membaca isi peta. Akan logis untuk mengasumsikan bahwa verifikasi pembayaran dilakukan secara online, dan kartu hanya digunakan sebagai ID pengguna. Dalam hal ini, tidak akan ada yang bisa dilakukan tanpa akses ke jaringan internal dan artikel ini tidak akan ada, tetapi kenyataannya ternyata lebih menarik. Mataku melihat sesuatu seperti ini:
Tangkapan layar sedikit dikurangi untuk kenyamanan pembaca. Kartu ini adalah Mifare Classic 1K, dibagi menjadi 16 sektor. Di sektor 1-9, beberapa informasi dicatat dan kunci untuknya tidak diketahui. Sisanya kosong dan gunakan kunci default. Sangat ingin tahu. Untungnya bagi kami, protokol enkripsi crypto1 eksklusif yang digunakan dalam kartu ini dipahami dengan baik dan memiliki kerentanan.
Kami membutuhkan laptop, pembaca kartu tanpa kontak seperti ACR122U dan aplikasi
mfoc , yang memungkinkan Anda untuk mengembalikan yang lainnya hanya dengan satu kunci dari sektor apa pun dalam waktu yang wajar. Kami akan melewati tahap perakitan dan konfigurasi hal-hal ini, mari kita langsung ke intinya. Kami meletakkan kartu pada pembaca, menjalankan program, meninggalkan laptop di dalam mobil dan pergi berbelanja, karena untuk ini kami datang ke sini. Satu jam telah berlalu, semua kunci telah dipulihkan, kami mencoba membaca kartu lagi.
Itu menjadi semakin aneh, tetapi tidak terlalu jelas apa yang tertulis di sini. Kami meninggalkan tempat parkir dan segera menelepon lagi. Kami sudah memiliki kunci dan Anda dapat segera membandingkan perbandingan dump.
Tidak banyak perbedaan, tetapi seperti apa bentuknya? Ya, ini adalah waktu masuk dalam format BCD, 11:25:47. Di sebelahnya adalah tanggal, 11/12/2018. Kami mengubah tanggal beberapa hari yang lalu, pergi ke terminal pembayaran dan dia dengan senang hati melaporkan bahwa kami berutang banyak padanya. Kami mengubah tanggal kembali, mengatur waktu saat ini dan meninggalkan tempat parkir gratis.
Pada prinsipnya, ini bisa dihentikan, tetapi cinta penelitian mengalahkan kemalasan, kami pergi ke pusat perbelanjaan lain dan mengulangi operasi di sana. Kunci berbeda, tetapi format datanya serupa. Setelah mengunjungi beberapa pusat perbelanjaan dan satu stasiun dan setelah melakukan beberapa percobaan, menjadi jelas apa. Di sektor pertama, masa berlaku kartu disimpan, dalam contoh kita hingga 12/31/2050. Yang kedua - waktu masuk, waktu dan jumlah pembayaran, waktu sampai keberangkatan diizinkan. Blok sektor ketiga dan selanjutnya harus dibaca sebagai 4 angka dalam little-endian. Mari kita coba mendekripsi data dalam contoh kita.
Blok dengan deskripsi tarif berbeda antara tempat parkir, blok pertama sektor 3 digunakan sebagai tajuk, tetapi formatnya tidak diketahui, dokumentasi tidak dapat ditemukan di domain publik, dan ini tidak begitu penting.
Mungkin, di sini perlu untuk menarik beberapa kesimpulan. Pengembang sistem dapat menggunakan verifikasi online, dapat menggunakan kartu jenis Desfire / Ultralight C yang tidak memiliki kerentanan, tetapi bergantung pada keamanan teknologi yang sudah usang. Di sisi lain, ini bukan kartu bank dan kerugian di sini tidak signifikan, meskipun pengemudi taksi di stasiun akan senang.