3 puan yazan GN⁺ 2025-09-16 | 2 yorum | WhatsApp'ta paylaş
  • 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
Reklam

Şifreleme yapısı ve varsayılan parola araştırması

  • APK decompile etme (JADX kullanarak) ve kod analizi sayesinde, admin hesabı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.py betiğ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
Reklam

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

 
helio 2025-09-17

CVE-2022-37255 puanı 7.5 gibi görünüyor.

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

    • HTTP Toolkit'in gerçekten harika bir araç olduğunu düşünüyorum; Tim çok iyi iş çıkarmış.
    • Kullandığım araçlar arasında HTTP Toolkit'in en iyisi olduğunu düşünüyorum. mitmproxy, proxyman, charles proxy de kullandım ama httptoolkit en iyisiydi ve açık kaynak.
  • Bu arada, frigate içinde iki yönlü sesi kullanmak istiyorsanız, ana akışta normal rtsp:// yerine tapo:// 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çin tapo:// 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.

    • IoT güvenliğinin kötü olduğuna katılıyorum. Benim için IoT cihazlarının sadece bağlanması yeterli; hatta bazen yalnızca çevrimiçi olma kısıtlarını aşan exploit'leri kullanmak bile isteyebiliyorum. Ama bulut bağlantılı IoT isteyen gerçek kullanım senaryoları da var. Bu yüzden ilk kurulumda cihazın kullanıcıya nasıl çalışmasını istediğini sorması ve yalnızca seçilen modda çalışması gerektiğini düşünüyorum. Bulut MFA gerekiyorsa onu seçebilmeli; sadece programatik olarak kontrol etmek istiyorsa da çevrimdışı bırakabilmeli.
    • Kullanıcı ile hedef arasında sayısız yönlendirici var ve bunların hepsini denetleyemezsiniz. Uç cihazlar zaten yönlendiricilerin ele geçirilmiş olabileceğini varsayıp tüm veriyi doğrulanmış ve şifreli şekilde gönderiyor; dolayısıyla yönlendirici DDoS ya da kripto para madenciliği gibi kötüye kullanımlar için kullanılmıyorsa güvenliğinin kendisi çok da anlamlı değil diye düşünüyorum.
    • Çoğu insan ISP'nin verdiği ve yapılandırdığı yönlendiriciyi kullanıyor; yani aslında bir kara kutuyu başka bir kara kutuya bağlıyorlar. Wi‑Fi'ye bağlanırken ISP'nin belirlediği SSID ve parolayı kullanmak zorunda kalındığını sık sık gördüğümde, ISP'ye ne kadar fazla yetki verildiğine şaşırıyorum.
    • Genel tüketici ürünleri için bu doğru olabilir ama Ubiquiti ya da Mikrotik gibi prosumer sınıfı donanımlara çıkınca hızlı güvenlik güncellemeleri ve sağlam firmware desteği alabiliyorsunuz diye 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.)

    • Ben uBlock Origin ile 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 mitmproxy gibi araçları Android uygulamalarında kullanmaya devam edip edemeyeceğimizi merak ediyorum. Gelecek yıl imza gereksinimleri devreye girince ne olacağını bilmek isterim.

    • Genel olarak mümkün olmaya devam edecek ama attestation gerektiren uygulamalar çok daha zor hale gelecek. Şu anda bile Pixel gibi OEM unlock ve root'a izin veren cihazlar geliştirici amaçlı kullanılabiliyor. Ancak bu durumda cihaz unlock durumuyla işaretleniyor ve Google attestation'dan geçemiyor. Uygulamayı patchleyip Frida enjekte ederek geliştirici hesabıyla sideload etmek de mümkün olabilir diye tahmin ediyorum (iOS'taki gibi). Ama bu da attestation başarısızlığına ve anti-tampering/anti-debugging saldırılarına açık olacak.
    • Aslında böyle bir değişikliğin doğrudan büyük etkisi olacağını sanmıyorum; çünkü tersine mühendislik çoğunlukla root'lu cihazlarda ve emülatörlerde yapılıyor. Daha nadir olan, root'suz cihazlarda Frida'yı APK'ye gadget yöntemiyle enjekte etme senaryosunda işler zorlaşır, ama yine de geliştirici modunda APK derleyip kurmanın bir yolu kalır diye düşünüyorum. Bunun tamamen engellenmesi Android uygulama geliştirmeyi fiilen imkânsız hale getirirdi; bu yüzden muhtemelen sideload'u normal kullanıcı cihazlarında kapatıp geliştirici sertifikası ekleme gibi yolları açık bırakırlar. Sonuçta en çok zorlaşacak olan gerçek uygulama dağıtımı olur; geliştirme/tersine mühendislik kullanımının ise mümkün kalacağını düşünüyorum. Asıl büyük tehdit, device attestation'ın yaygınlaşması. Root'lu ya da onaylanmamış cihazlarda giderek daha fazla uygulama, cihazın değiştirilmemiş olup olmadığını saldırgan şekilde kontrol etmeye başlayabilir. Şu an bunu daha çok büyük finans uygulamalarında görüyoruz. Bundan etkilenmesi muhtemel kişi sayısı da az (örneğin GrapheneOS kullanıcıları) ve ek sunucu kurulum maliyetleri olduğu için hızla yaygınlaşması kolay değil, ama ileride durum değişebilir.
    • Pratikte Frida kullanımı zaten kolay değil gibi geliyor. Frida kullanmak için root gerekiyor, root ise giderek daha fazla modelde imkânsız hale geliyor; ayrıca çok güçlü root tespit SDK'ları ve Play Integrity önlemleri mevcut.
  • İ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.

    • Ya da sadece üşüdüğünü hissediyordur.
  • Artık hardcoded yönetici parolasının bulunmasının çok da olay sayılmadığı bir noktaya geldiğimizi düşünüyorum.

    • Bunun kalıcı bir arka kapı değil, yalnızca hardcoded varsayılan parola olduğunu anlıyorum. Yazıda anlatıldığı kadarıyla kullanıcı onboarding sırasında parolayı değiştiriyor. Çoğu uygulama zaten böyle çalışıyor.
    • Kurulumdan sonra normal süreçte parola değiştiriliyorsa bunda büyük bir sorun görmüyorum. Son 5 yılda evime olabildiğince çok IoT/akıllı ev cihazı kurarken gördüğüm şey şu: neredeyse bütün şirketler işlevselliği şüpheli ürünler satıyor ve tek bir üreticide standardize olmadıkça genel bir akıllı ev kurmak çok zor. Üstelik bugün için iyi sayılan üreticiler bile tüm bireysel ihtiyaçları karşılamıyor. Telefonumda Ecobee, Lutron, Hue, çeşitli kamera üreticileri, Meross, Smart Life ve daha birçok uygulama yüklü; bunların içinde yalnızca Lutron ve Hue hub/HomeKit üzerinden doğrudan kontrol edilebildiği için uygulamaya ihtiyaç duymuyor. Matter ve Thread uzun süredir ortada olsa da uyumlu cihazlar yerine hâlâ ucuz Wi‑Fi tabanlı ürünler piyasayı dolduruyor; bunların çoğu kötü ve yalnızca uygulama üzerinden yönetilebiliyor, ayrıca kullanıcıyı bulut hizmetlerine yönlendirecek şekilde tasarlanmış. Dört kamera satın almış olmam biraz benim tercihim olabilir, ama gerçek şu ki her üreticinin farklı güçlü yanları var ve tüketicilerin farklı markalara bölünmesi kaçınılmaz.
    • Değiştirilmeden kullanılamayan hardcoded yönetici parolasının tek başına büyük bir mesele olduğunu düşünmüyorum.
    • Aslında bu teknolojiye gereksiz yere sinirlenilmiş gibi geliyor; burada sorun sayılmaz.
    • Hatta akıllı telefonlar asıl varsayılan olarak düşmanca cihazlardır denebilir; ağ cihazlarında en azından durumu gözlemlemek ya da keşfetmek bu şekilde mümkün olabiliyor.
  • tapo kameralarda RTSP desteği olan modellerin derli toplu bir referansını bulmak isterim. c210 idare eder şekilde çalışıyor (bulut capture yok) ve onu frigate ile entegre kullanıyorum. Bugün c402 (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.

    • Kamera rtsp:// desteklemese bile tapo:// go2rtc akış kaynağını kullanmak mümkün olabilir. Kendi frigate yapılandırmamı referans olması için buraya bıraktım.