Kisah tentang bagaimana Anda tidak perlu melakukan otorisasi, terutama di bidang-bidang yang penting untuk kehidupan dan properti, seperti, misalnya, mengelola sistem alarm keamanan melalui aplikasi dari telepon.

Pengantar singkat
Semuanya berawal dari fakta bahwa saya membangun sebuah rumah, dan sebuah rumah tanpa alarm pencuri tentu saja bisa ada dalam kenyataan kita, tetapi tidak ada yang lebih atau kurang berharga yang bisa ditinggalkan di sana (kasus sedih tetangga mengkonfirmasi hal ini). Saat selesai di dalam dan di luar, pengaturan dan pelucutan kunci tidak menyebabkan ketidaknyamanan.
Rumah itu memiliki garasi, gerbang terbuka dari remote control dan, karenanya, mobil diletakkan di sana. Jika rumah sedang dijaga, maka membuka dari remote control memicu "alarm" di gerbang dan setelah 2-3 menit kedatangan orang-orang serius. Untuk menghindari hal ini, Anda harus terlebih dahulu menghapus pelindung (buka ruang depan, pasang kunci, tutup ruang depan, masuk ke mobil lagi) dan kemudian buka pintu gerbang. Dan entah bagaimana prosedur ini sedikit mengganggu, terutama di musim dingin, dan secara umum semua "sihir" entah bagaimana hilang.
Tentu saja, Anda dapat dengan cerdik memastikan bahwa pembukaan gerbang menghilangkan alarm, tetapi saya masih belum mencapai titik ini.
Tetapi saya mengetahui bahwa agen keamanan kami memiliki aplikasi ajaib "Phoenix Mobile Keyboard". Aplikasi ini bukan hanya mereka, tetapi mereka bekerja dengannya. Dengannya, Anda dapat mengontrol alarm dari telepon, yang kurang lebih mengembalikan kegembiraan karena menggunakan semua ini.
Dan sekarang ceritanya sendiri
Untuk menghubungkan manajemen keamanan dari aplikasi, Anda harus datang ke kantor agen keamanan, menemukan insinyur yang Anda butuhkan, membayar 400 rubel untuk "pengaturan" di kasir dan Anda akan diberikan akun yang mendorong ke pengaturan pada telepon dan voila, Anda dapat mengarahkan keamanan yang Anda inginkan, menerima mendorong pemberitahuan dan tidak tahu kesedihan.
Semuanya akan baik-baik saja, tetapi ketika Anda mendaftar, Anda diberi login dalam bentuk tiga huruf, misalnya abb (inisial), dan kata sandi dibuat dari empat digit terakhir nomor telepon (seperti kata insinyur, sehingga mereka tidak lupa), yaitu, misalnya, 0808. Sedikit terkejut dari apa yang Anda dengar, ditanya apakah kata sandi dapat diatur berbeda, mereka mengatakan itu mungkin, tetapi hanya angka. Baiklah, ok, saya menetapkan kata sandi yang tepat untuk diri saya dan pergi untuk menguji bagaimana semuanya bekerja.

Sementara itu, sebuah ide muncul di kepalaku - tetapi haruskah aku mencoba ...
Kami mengambil iPhone, menghubungkannya ke poppy, menjalankan: rvictl -s iPhone_UDID
, melekat pada antarmuka baru melalui Wireshark dan melihat cara kerjanya dan apa yang dikirim aplikasi kami. Anda dapat mengambil perangkat / alat lain, tetapi saya punya satu.

Berhasil, ternyata, melalui protokol wamp - ini pada dasarnya adalah soket web yang sama. Secara alami, tidak ada yang dienkripsi dan Anda dapat melihat persis bagaimana permintaan dikirim dan benar-benar mengulanginya.
Sekarang kami mencoba mereproduksi permintaan yang diterima. Semua ini untuk kecepatan tes, Anda dapat meletakkan ekstensi untuk tipe chrome "Web Socket Client" dan coba di sana.

Setelah memastikan bahwa semuanya berfungsi persis seperti yang diharapkan, kami dengan cepat menulis klien, misalnya, ke simpul.
Kami perhatikan bahwa API merespons dengan pesan yang berbeda ketika pengguna tidak ditemukan sama sekali dan ketika kata sandi salah. Ini akan mempercepat proses.
Klien kami akan sangat bodoh, tetapi tetap efektif. Klien menghitung semua login yang terdiri dari 3 huruf. Jika nama pengguna ada, ia mulai menghitung kata sandi untuknya, jika tidak, kami melanjutkan ke yang berikutnya. Kata sandi diurutkan dalam kisaran dari 0000 hingga 9999.
Kami memulai semua ini dan menunggu. Login berhasil dengan cukup cepat (10 menit), ternyata sekitar 150 buah (layanan ini tidak begitu banyak digunakan). Kata sandi untuk setiap login adalah sekitar 8 menit. Tidak ada batasan verifikasi di IPA. Dan Anda bisa melubangi multithreaded.
Kata sandi dipilih dalam 100% kasus. Setelah pemilihan kata sandi yang berhasil, API mengeluarkan informasi seperti: nama pemilik, alamat (mungkin ada banyak objek), beberapa token (tampaknya untuk mengirim dorongan), id sesi, dan sebagainya.
Setelah masuk, Anda dapat melucuti seluruh objek. Benda-benda itu sendiri datang cukup jauh dari kota. Jika informasi ini jatuh ke tangan "orang jahat", maka otopsi objek yang dijaga akan berlalu tanpa masalah, dan kemudian mungkin untuk mempersenjatai diri dengan aman dan tidak ada yang akan memperhatikan.
Menyadari bahwa saya sendiri adalah klien dari kantor ini - saya merasa sedikit tidak nyaman.
Satu hal yang baik, ternyata perusahaan masih memiliki semacam pemantauan, atau mungkin telah diketahui secara tidak sengaja, tetapi setelah beberapa saat aplikasi berhenti menerima kata sandi, dan menawarkan untuk menghubungi kantor.
Akibatnya, semua orang mengubah nama pengguna mereka dan membuat kata sandi normal. Protokol, bagaimanapun, karena tidak terenkripsi, tetap sama, tetapi setidaknya sesuatu.
Kenapa ini semua? Mungkin seseorang setelah ini ingin membuat sistem mereka sedikit lebih aman, dan seseorang yang menggunakan layanan serupa dengan kata sandi yang sama akan melihatnya dari sisi lain dan meminta tindakan. Dengan tindakan sederhana seperti itu, tingkat keamanan akan sedikit meningkat.
Saya secara khusus tidak memberikan nama di sini dan sebanyak mungkin menghapus semua data, sehingga orang yang mengenali dirinya sendiri menarik kesimpulan :)
PS Artikel ini hanya untuk tujuan informasi, masalah yang dijelaskan di sini pada saat publikasi tidak lagi relevan - perusahaan telah mengambil tindakan.