- Membeli kamera Tapo untuk memantau anjing di rumah, tetapi tanpa diduga malah melakukan reverse engineering terhadap cara kerja perangkat dan aplikasi TP-Link
- Untuk menganalisis proses onboarding dan struktur komunikasi API yang terenkripsi, digunakan berbagai teknik seperti MITM, dekompilasi APK, hingga pembuatan skrip dekripsi
- Dengan menemukan kata sandi admin awal dan proses derivasi session key, ia berhasil mendekripsi pesan terenkripsi dan memahami masalah sinkronisasi yang tidak andal antara perangkat dan akun cloud
- Dengan menganalisis seluruh alur onboarding, ia mengotomatiskan proses pemanggilan API utama, pembuatan akun, perubahan kata sandi, dan koneksi Wi-Fi dengan skrip Bash
- Menunjukkan celah dalam desain keamanan firmware Tapo, implementasi enkripsi yang kurang rapi, serta sinkronisasi akun yang tidak konsisten—ciri khas perangkat IoT murah
Gambaran proyek
- Penulis membeli dan menggunakan kamera Tapo berbiaya rendah untuk memantau anjing di dalam rumah
- Karena proses pengaturan yang merepotkan dan minimnya informasi online, ia terdorong untuk menggali lebih dalam cara kerja produk tersebut
- Saat mencoba integrasi frigate dan mengaktifkan 2way audio, muncul masalah tak terduga, sehingga ia tertarik pada metode onboarding langsung tanpa integrasi cloud
Analisis struktur onboarding dan autentikasi
- Untuk menganalisis prosedur koneksi kamera Tapo, penulis mencegat trafik antara aplikasi dan kamera menggunakan MITM proxy serta alat dynamic hooking frida
- Karena aplikasi modern memiliki fitur tahan-bypass seperti pengabaian proxy dan certificate pinning, pendekatan dengan alat dinamis terbukti efektif
- Setelah menyiapkan skema bypass ini, ia dapat mengonfirmasi secara tepat proses login akun admin default dalam alur onboarding kamera
- Ia menemukan bahwa API login default berjalan dengan kata sandi bawaan unik milik perangkat, terpisah dari kata sandi akun cloud
Menelusuri struktur enkripsi dan kata sandi default
- Melalui dekompilasi APK (menggunakan JADX) dan analisis kode, ia memperoleh kata sandi default untuk akun
admin (TPL075526460603)
- Dari fakta bahwa perangkat kamera yang sudah terhubung tidak menyadari perubahan kata sandi cloud, ia memastikan bahwa sinkronisasi kata sandi antara aplikasi dan kamera tidak akurat
- Karena sudah mengetahui kata sandi default, ia mengimplementasikan logika derivasi session key (
lsk, ivb) sehingga dapat mendekripsi pesan API terenkripsi secara real-time
Skrip mitmproxy dan analisis API
- Dengan merujuk pada proyek open source PyTapo, ia menganalisis secara rinci alur API prosedur onboarding Tapo yang sebenarnya
- Melalui skrip
tapo_decrypt_pretty.py, ia dapat:
- mendeteksi login handshake
- mengekstrak session key
- mendekripsi API terenkripsi, menampilkannya dengan format yang mudah dibaca, dan menyimpan JSON
- Dari seluruh log pemanggilan API onboarding, ia memilih hanya proses utama yang benar-benar penting untuk membangun workflow otomatis
- mengambil daftar Wi-Fi (
scanApList)
- mengaktifkan akun RTSP/ONVIF
- mengubah kata sandi admin
- menyambungkan Wi-Fi
Otomatisasi dan hasil
- Dengan skrip Bash (
tapo_onboard.sh), ia menyusun seluruh proses onboarding di atas agar dapat dijalankan otomatis
- login admin default
- memilih dan menyambungkan Wi-Fi
- menghapus logo pada feed kamera
- mengizinkan penggunaan RTSP/ONVIF
- mereset kata sandi admin
- Dari struktur firmware kamera, ia menemukan karakteristik dan kelemahan berikut
- beberapa API menggunakan hash SHA-256, tetapi sebagian lain masih mempertahankan skema lama seperti MD5
- terdapat 2 public key, namun tidak jelas kunci mana yang harus dipakai dalam kondisi tertentu
- sinkronisasi kata sandi antara aplikasi dan perangkat sangat tidak stabil
Kesimpulan dan kesan
- Struktur keamanan firmware dan API kamera Tapo terasa seperti tambal sulam dan desain yang kurang matang
- Penulis secara tidak langsung merasakan realitas celah keamanan dan sistem onboarding yang tidak sempurna pada perangkat IoT murah
- Tujuan utama proyek ini, yaitu memeriksa kondisi anjing peliharaannya, tetap berhasil dicapai; dan ternyata anjing itu paling sering terlihat tidur di sofa atau tempat tidur
Belum ada komentar.