3 poin oleh GN⁺ 2025-09-16 | 2 komentar | Bagikan ke WhatsApp
  • 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

2 komentar

 
helio 2025-09-17

CVE-2022-37255 nilainya 7,5 ya.

 
GN⁺ 2025-09-16
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

    • Menurut saya HTTP Toolkit benar-benar alat yang bagus, karya Tim sangat hebat
    • Dari semua alat yang pernah saya pakai, Http toolkit menurut saya yang terbaik; saya juga sudah mencoba mitmproxy, proxyman, dan charles proxy, tetapi httptoolkit yang paling bagus dan juga open source
  • Sebagai referensi, untuk memakai audio dua arah di frigate, pada stream utama di konfigurasi go2rtc Anda harus memakai tapo:// alih-alih rtsp:// 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 stream tapo:// → jalankan klien onvif/atur pan·tilt → tutup onvif → mulai lagi tapo://

  • 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

    • Setuju bahwa keamanan IoT buruk; bagi saya pribadi, saya cuma ingin perangkat IoT bisa tersambung dengan baik, dan kadang malah ingin bisa memakai exploit untuk menembus pembatasan online-only; tetapi memang ada use case nyata untuk IoT yang terhubung ke cloud, jadi menurut saya saat penyiapan awal perangkat seharusnya menanyakan ke pengguna model yang diinginkan lalu hanya beroperasi dalam mode itu; kalau butuh MFA cloud, pengguna bisa memilih itu, dan kalau cuma ingin mengendalikannya lewat pemrograman, harus bisa dibiarkan offline
    • Ada tak terhitung banyaknya router di antara pengguna dan tujuan, dan kita tidak bisa memantau semuanya; perangkat endpoint sudah mengasumsikan router bisa saja sudah dikompromikan dan karena itu mengirim semua data dalam bentuk tervalidasi dan terenkripsi, jadi selama router tidak dipakai untuk penyalahgunaan seperti DDoS atau mining kripto, saya merasa dari sisi keamanan hal itu tidak terlalu berarti
    • Kebanyakan orang memakai router yang disediakan dan dikonfigurasi oleh ISP, jadi rasanya seperti menyambungkan satu black box ke black box lain; saya sering melihat orang menerima SSID dan kata sandi yang ditentukan ISP saat menyambungkan Wi‑Fi, dan itu membuat saya sadar betapa banyak kuasa yang diserahkan ke ISP
    • Untuk produk konsumen umum memang begitu, tetapi kalau naik ke hardware kelas prosumer seperti Ubiquiti atau Mikrotik, menurut saya Anda bisa mendapat update keamanan yang cepat dan dukungan firmware yang stabil
  • 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 pribadi memakai uBlock Origin untuk memblokir file media besar secara default demi menghemat sumber daya; gambar sampul sejak awal sering kali sudah ikut terblokir dan hampir tidak ada gunanya; akhir-akhir ini saya malah merasa sayang melihat orang menghabiskan sumber daya hanya untuk membuatnya
  • 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

    • Secara umum kemungkinan masih bisa, tetapi aplikasi yang membutuhkan attestation akan menjadi jauh lebih sulit; bahkan sekarang pun perangkat yang mengizinkan OEM unlock dan root seperti Pixel masih bisa dipakai sebagai perangkat developer, hanya saja perangkat itu akan ditandai sebagai unlock dan gagal pada Google attestation; mungkin juga akan tetap memungkinkan untuk membongkar aplikasi, menyuntikkan Frida, lalu melakukan sideload dengan akun developer seperti di iOS; tetapi ini juga akan tetap gagal attestation dan rentan terhadap serangan anti-tampering/anti-debugging
    • Saya sebenarnya memperkirakan perubahan itu tidak akan berdampak langsung sebesar itu, karena reverse engineering kebanyakan dilakukan pada perangkat yang sudah di-root atau emulator; pada kasus yang lebih jarang, yaitu menyuntikkan Frida ke APK dengan metode gadget di perangkat non-root, memang akan jadi lebih sulit, tetapi saya rasa masih akan ada jalur untuk membangun dan memasang APK dalam developer mode; kalau itu diblok sepenuhnya, pengembangan aplikasi Android sendiri akan menjadi mustahil, jadi kemungkinan sideload akan diblok di perangkat pengguna umum sementara mekanisme seperti penambahan sertifikat developer tetap dibuka; pada akhirnya yang paling sulit adalah distribusi aplikasi nyata, sedangkan untuk pengembangan/reverse engineering kemungkinan tetap bisa; justru ancaman yang lebih besar adalah meluasnya device attestation; semakin banyak aplikasi bisa jadi akan makin agresif memeriksa apakah perangkat benar-benar unmodified pada perangkat root/tidak resmi; saat ini itu terutama terjadi pada aplikasi finansial besar, dan jumlah orang yang benar-benar perlu khawatir (pengguna GrapheneOS) juga masih sedikit, ditambah lagi perlu biaya seperti membangun server tambahan, jadi mungkin belum akan cepat meluas, meski ke depan bisa berubah
    • Dalam praktiknya, memakai Frida saja sekarang sudah tidak mudah; untuk memakai Frida perlu root, sementara root sendiri makin tidak memungkinkan pada semakin banyak model, dan sekarang sudah ada SDK deteksi root yang sangat kuat serta langkah penanggulangan terhadap Play Integrity
  • 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

    • Atau mungkin saja karena dia merasa kedinginan
  • Rasanya kita sudah sampai pada titik di mana menemukan kata sandi admin yang di-hardcode bukan lagi hal yang mengejutkan

    • Pemahaman saya, itu hanya kata sandi default yang di-hardcode, bukan backdoor permanen; seperti dijelaskan di tulisan itu, strukturnya memang meminta pengguna mengganti kata sandi saat proses onboarding; kebanyakan aplikasi bekerja seperti ini
    • Karena kata sandinya diganti lewat proses normal setelah instalasi, saya rasa itu bukan masalah; selama lima tahun terakhir saya berusaha membangun rumah penuh perangkat IoT/smart home sebanyak mungkin, dan kesan saya adalah hampir semua vendor menjual produk dengan fungsionalitas yang meragukan, sementara membangun smart home secara menyeluruh sangat sulit jika tidak menyeragamkan vendor; dan bahkan vendor yang lumayan bagus pun belum bisa memenuhi semua kebutuhan individu; di ponsel saya terpasang berbagai aplikasi seperti Ecobee, Lutron, Hue, beberapa vendor kamera, Meross, Smart Life, dan lainnya; dari semuanya itu, hanya Lutron dan Hue yang bisa dikendalikan langsung lewat hub/HomeKit sehingga saya tidak perlu membuka aplikasinya; standardisasi Matter dan Thread sudah ada cukup lama, tetapi tetap saja pasar dibanjiri produk murah berbasis Wi‑Fi alih-alih perangkat yang benar-benar kompatibel, dan kebanyakan kualitasnya buruk sehingga hanya bisa dikelola lewat aplikasi serta didesain untuk menggiring pengguna ke layanan cloud; memang membeli empat kamera itu juga salah saya, tetapi kenyataannya tiap vendor punya kelebihan berbeda sehingga konsumen mau tak mau terpecah pembeliannya
    • Kata sandi admin yang di-hardcode dan memang wajib diganti sebelum bisa dipakai sendiri menurut saya bukan isu besar
    • Sejujurnya saya rasa saya cuma sedang kesal pada teknologi ini; dalam konteks ini itu tidak bisa dibilang masalah
    • Ada juga sudut pandang bahwa justru smartphone-lah perangkat yang sejak awal paling bersifat memusuhi pengguna; setidaknya pada perangkat jaringan, situasinya masih bisa diselidiki atau ditemukan seperti ini
  • 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

    • Walaupun kameranya tidak mendukung rtsp://, kemungkinan Anda tetap bisa memakai sumber stream tapo:// di go2rtc; saya meninggalkan konfigurasi frigate saya sebagai referensi di sini