Köpeğimi izlemeye çalışırken TP-Link’i izlemeye başladım
(kennedn.com)- Evdeki köpeği gözlemlemek için bir Tapo kamera satın aldı, ancak beklenmedik şekilde TP-Link cihazları ve uygulamasının nasıl çalıştığını tersine açıklamış oldu
- Onboarding süreci ile şifrelenmiş API iletişimi yapısını analiz etmek için MITM, APK decompile etme, şifre çözme betikleri oluşturma gibi çeşitli teknikler kullandı
- İlk yönetici parolasını bulup oturum anahtarı türetme sürecini çözerek şifrelenmiş mesajları deşifre etti ve cihaz ile bulut hesabı arasındaki güvenilmez senkronizasyon sorununu tespit etti
- Onboarding’in tüm akışını analiz ederek başlıca API çağrıları, hesap oluşturma, parola değiştirme ve Wi‑Fi bağlantısı süreçlerini Bash betikleriyle otomatikleştirdi
- Tapo firmware güvenlik tasarımındaki açıkları, daha az rafine şifreleme uygulamalarını ve düzensiz hesap senkronizasyonunu ortaya koyarak düşük maliyetli IoT cihazlarının tipik özelliklerine işaret etti
Proje özeti
- Yazar, ev içindeki köpeğini gözlemlemek için uygun fiyatlı bir Tapo kamera satın alıp kullandı
- Kullanım sırasında yaşanan kurulum zorlukları ve internette bilgi azlığı, ürünün çalışma mantığını derinlemesine inceleme motivasyonu yarattı
- frigate entegrasyonu ve 2way audio etkinleştirme gibi konularda beklenmedik sorunlar çıkınca, bulut bağlantısı olmadan doğrudan onboarding yöntemine ilgi duymaya başladı
Onboarding ve kimlik doğrulama yapısının analizi
- Tapo kameranın bağlantı sürecini analiz etmek için MITM proxy ve frida dinamik hooking aracını kullanarak uygulama ile kamera arasındaki trafiği ele geçirdi
- Güncel uygulamalar proxy yok sayma ve certificate pinning gibi engel aşmayı zorlaştıran özellikler içerdiğinden, dinamik araçlarla yapılan bu yöntem etkili oldu
- Bu engel aşma düzenini kurduktan sonra, kamera onboarding akışındaki varsayılan yönetici hesabı giriş sürecini net biçimde doğruladı
- Varsayılan giriş API’sinin, bulut hesabı parolasından bağımsız olarak cihaza özgü varsayılan bir parola ile çalıştığını keşfetti
Şifreleme yapısı ve varsayılan parola araştırması
- APK decompile etme (JADX kullanarak) ve kod analizi sayesinde,
adminhesabının varsayılan parolasını (TPL075526460603) elde etti - Bulut parolası değiştirilse bile daha önce eşleştirilmiş kamera cihazlarının bu değişikliği fark etmemesi, uygulama ile kamera arasında parola senkronizasyonunun hatalı olduğunu gösterdi
- Varsayılan parolayı öğrendiği için, oturum anahtarı (
lsk,ivb) türetme mantığını uygulayıp şifrelenmiş API mesajlarını gerçek zamanlı olarak deşifre edebilir hale geldi
mitmproxy betikleri ve API analizi
- PyTapo açık kaynak projesini referans alarak, gerçek Tapo onboarding sürecinin API akışını ayrıntılı biçimde analiz etti
tapo_decrypt_pretty.pybetiği aracılığıyla- giriş handshake’ini tespit etti
- oturum anahtarlarını çıkardı
- şifrelenmiş API’leri çözüp okunabilir çıktı üretti ve JSON olarak kaydetti
- Tüm onboarding API çağrıları içinden anlamlı başlıca adımları seçerek otomatik bir iş akışı oluşturdu
- Wi‑Fi listesini alma (
scanApList) - RTSP/ONVIF hesabını etkinleştirme
- yönetici parolasını değiştirme
- Wi‑Fi bağlantısını kurma
- Wi‑Fi listesini alma (
Otomasyon ve sonuçlar
- Bash betiği (
tapo_onboard.sh) ile yukarıdaki tüm onboarding sürecini otomatik çalışacak şekilde yapılandırdı- varsayılan admin girişi
- Wi‑Fi seçimi ve bağlantısı
- kamera görüntüsündeki logoyu kaldırma
- RTSP/ONVIF kullanımına izin verme
- yönetici parolasını sıfırlama
- Kamera firmware yapısında şu özellikler ve açıklar bulundu
- Bazı API’ler SHA-256 hash kullanırken, bazıları MD5 gibi eski şifreleme yöntemlerini koruyor
- İki adet public key bulunuyor ve hangi durumda hangi anahtarın kullanılacağı belirsiz
- Uygulama ile cihaz arasındaki parola senkronizasyonu son derece kararsız
Sonuç ve izlenimler
- Tapo kamera firmware’i ve API güvenlik yapısı, geçici çözümlerle kurulmuş ve yeterince rafine edilmemiş bir tasarım hissi veriyor
- Düşük maliyetli IoT cihazlarının güvenlik açıklarını ve eksik onboarding sistemlerinin gerçekliğini dolaylı biçimde deneyimledi
- Projenin nihai amacı olan köpeği kontrol etme hedefine ulaştı; köpeğini çoğunlukla kanepede ya da yatakta uyurken gördü
2 yorum
CVE-2022-37255 puanı 7.5 gibi görünüyor.
Hacker News yorumu
Frida scriptimin kullanıldığını görmek hoşuma gitti; ilgili script burada bulunabiliyor. Gerçek dünyada iyi çalışıyor gibi görünmesine sevindim. Eklediğin ya da değiştirdiğin bir şey varsa duymak isterim.
mitmproxy,proxyman,charles proxyde kullandım amahttptoolkiten iyisiydi ve açık kaynak.Bu arada, frigate içinde iki yönlü sesi kullanmak istiyorsanız, ana akışta normal
rtsp://yerinetapo://go2rtc yapılandırmasını uygulamanız gerekiyor. TP-Link iki yönlü sesi yalnızca kendi API'sinde sunuyor. Bunu yapınca ONVIF (açık kaynak araçlarla kamera pan/tilt kontrolü) çalışmıyor, bu da can sıkıcı. İkisini birden kullanmak içintapo://akışını okumayı durdurma → ONVIF istemcisini çalıştırıp pan/tilt ayarı yapma → ONVIF'i kapatma →tapo://yu yeniden başlatma şeklinde oldukça agresif bir iş akışı gerekiyor.IoT güvenliğinin genel olarak berbat olduğunu düşünüyorum. Özellikle tüketici yönlendiricilerinin tüm ağ trafiğini işleyen, denetlenemeyen kara kutular olması endişe verici. Çoğu insan yönlendirici firmware'inin yıllardır güncellenmediğini ve zaten bilinen açıklar içerdiğini fark etmiyor. Ağ donanımındaki tedarik zinciri güven modelinin tamamen çöktüğünü düşünüyorum.
Bu blog yazısının olağanüstü iyi yazıldığını düşündüm. Bugünlerde bu tarz yazıların çoğu LLM üretimi oluyor ve okumak rahatsız edici olabiliyor; bu yazının teknik olup aynı zamanda rahat okunur bir denge kurması etkileyiciydi. (Kapak görselinin yapay zeka üretimi olduğunu biliyorum ama bunun yazının özüyle ilgisi olmadığını düşünüyorum.)
uBlock Originile büyük medya dosyalarını varsayılan olarak engelleyip kaynak kullanımından tasarruf ediyorum. Kapak görselleri zaten çoğu zaman engelleniyor ve neredeyse hiç faydası yok. İnsanların bunları üretmek için ayrıca kaynak harcaması bana üzücü geliyor.Frida ve
mitmproxygibi araçları Android uygulamalarında kullanmaya devam edip edemeyeceğimizi merak ediyorum. Gelecek yıl imza gereksinimleri devreye girince ne olacağını bilmek isterim.İlgili örnekler olarak The Tapo C200 Research Project ve PyTapo: Tapo kameralar için Python kütüphanesi var.
Bir başka ilgili kaynak olarak, (TP-Link firmware şifre çözümü ve C210 V2 bulut kamera bootloader analizi) burada yer alıyor.
OP'nin köpeğinin yataktan yere geçmesinin nedeni acaba radyatörün açılması olabilir mi diye düşündüm. Ek sensör verisi gerekebilir.
Artık hardcoded yönetici parolasının bulunmasının çok da olay sayılmadığı bir noktaya geldiğimizi düşünüyorum.
tapokameralarda RTSP desteği olan modellerin derli toplu bir referansını bulmak isterim.c210idare eder şekilde çalışıyor (bulut capture yok) ve onu frigate ile entegre kullanıyorum. Bugünc402(dış mekân modeli) aldım ama bunda gelişmiş ayarlarda kamera hesabı yok, bu da hayal kırıklığı yarattı. Düşük fiyatı cazip ama özelliklerde tutarlılık yok gibi. Ucuz, RTSP akışı destekleyen ve güneş paneli de olan iyi bir dış mekân kamera varsa öneri almak isterim.rtsp://desteklemese biletapo://go2rtc akış kaynağını kullanmak mümkün olabilir. Kendi frigate yapılandırmamı referans olması için buraya bıraktım.