- 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
- mengambil daftar 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
2 komentar
CVE-2022-37255 nilainya 7,5 ya.
Komentar Hacker News
Senang melihat skrip Frida buatan saya dipakai, skripnya bisa dilihat di sini, saya juga senang karena tampaknya skrip itu bekerja dengan baik di lingkungan nyata, kalau ada bagian yang ditambah atau diubah saya ingin mendengarnya
Sebagai referensi, untuk memakai audio dua arah di frigate, pada stream utama di konfigurasi go2rtc Anda harus memakai
tapo://alih-alihrtsp://biasa; TP-Link hanya menyediakan audio dua arah lewat API miliknya sendiri; masalahnya, dengan pengaturan ini ONVIF (kontrol pan/tilt kamera lewat alat open source) tidak berfungsi, jadi cukup merepotkan; kalau ingin memakai keduanya, perlu workflow yang agresif: hentikan pembacaan streamtapo://→ jalankan klien onvif/atur pan·tilt → tutup onvif → mulai lagitapo://Saya merasa keamanan IoT secara umum kacau; yang особенно mengkhawatirkan adalah router konsumen menjadi black box yang tidak bisa diaudit padahal menangani seluruh traffic jaringan; kebanyakan orang bahkan tidak tahu bahwa firmware router mereka tidak diperbarui selama bertahun-tahun dan sudah memiliki kerentanan yang diketahui; menurut saya model kepercayaan rantai pasok untuk hardware jaringan sudah benar-benar rusak
Saya merasa tulisan blog ini ditulis dengan sangat baik; belakangan ini banyak tulisan bergaya seperti ini ternyata dibuat oleh LLM dan jadi tidak nyaman dibaca, tetapi tulisan ini mengesankan karena berhasil menjaga keseimbangan antara teknis dan santai; (saya tahu gambar sampulnya dibuat AI, tetapi menurut saya itu tidak relevan dengan inti tulisannya)
Saya penasaran apakah alat seperti Frida dan mitmproxy akan tetap bisa dipakai pada aplikasi Android; saya ingin tahu apa yang akan terjadi tahun depan ketika persyaratan penandatanganan mulai diberlakukan
Sebagai referensi, contoh terkait lainnya adalah The Tapo C200 research project dan PyTapo: pustaka Python untuk kamera Tapo
Materi terkait lainnya, (dekripsi firmware TP-Link dan analisis bootloader kamera cloud C210 V2) ada di sini
Ada dugaan bahwa alasan anjing OP berpindah dari tempat tidur ke lantai mungkin karena pemanas (radiator) menyala; sepertinya perlu data sensor tambahan
Rasanya kita sudah sampai pada titik di mana menemukan kata sandi admin yang di-hardcode bukan lagi hal yang mengejutkan
Saya ingin mencari referensi yang merangkum model kamera tapo mana saja yang mendukung RTSP; c210 berjalan lumayan baik (meski cloud capture tidak berfungsi) dan saya memakainya terhubung ke frigate; hari ini saya membeli c402 (model outdoor), tetapi sayangnya di pengaturan advanced tidak ada camera account; harganya memang menarik, tetapi saya merasa konsistensi fiturnya kurang; kalau ada rekomendasi kamera outdoor yang murah, mendukung stream RTSP, dan bisa dipasangi panel surya, saya ingin mendengarnya
rtsp://, kemungkinan Anda tetap bisa memakai sumber streamtapo://di go2rtc; saya meninggalkan konfigurasi frigate saya sebagai referensi di sini