- Araç aküsü durumunu kontrol eden BM2 uygulaması, yalnızca GPS koordinatlarını değil, yakındaki Wi-Fi ve mobil baz istasyonu bilgilerini de toplayıp uzak bir sunucuya gönderiyordu
- Veriler, ürün/uygulama geliştiricisi Leagend'in
bm2.quicklynks.comsunucusuna ve konum hizmeti SDK geliştiricisi AMap sunucularına gidiyordu; bunların sırasıyla Alibaba Cloud Hong Kong ve Pekin ana makinelerinde barındırıldığı doğrulandı - Google Play'de 100K+ indirme seviyesindeki uygulamanın ilk uygulama mağazası gizlilik beyanlarında “veri paylaşımı yok”, “veri toplanmıyor”, “aktarım sırasında şifreleniyor” gibi ifadeler yer alıyordu, ancak bunlar gerçek davranışla uyuşmuyordu
- Android'de Bluetooth taraması için konum izni gerektiğinden, kullanıcıların cihazı kullanabilmek için fiilen konum izni vermesi gerekiyordu; iOS uygulamasında ise konum izni reddedilse bile akü monitörü işlevi çalışıyordu
- 25 Temmuz 2023 güncellemesinden sonra AMap SDK, her iki büyük uygulama mağazasındaki sürümlerden kaldırıldı; ancak GPS konum verileri hâlâ Alibaba Cloud Hong Kong sunucusuna gönderiliyor ve iPhone uygulaması kullanıcının sokak adresini de yolluyordu
Akü monitörü uygulamasının gönderdiği konum verileri
- İncelenen ürün, araç aküsü terminallerine bağlandıktan sonra akıllı telefonla eşleşerek voltaj/yüzde gösteren ve marş testi çalıştıran bir Bluetooth akü monitörü
- Analiz için Avustralyalı elektronik perakendecisi Jaycar Electronics'ten PowerTech markalı ürün satın alındı; bunun Leagend'in Bluetooth 4.0 Battery Monitor ürününün yeniden markalanmış bir sürümü olduğu görülüyor
- Aynı ürün ailesi Repco'nun Century markası altında, ayrıca
ZX-1689,Li Battery Monitorgibi adlarla da tanımlanıyor - Android uygulaması BM2, Google Play'de 100K+ indirme ve 1.55K yorum kaydına sahip
- iPhone için BM2 uygulamasının da ağ trafiği incelemesinde uzak sunuculara konum verisi gönderdiği görüldü
Gönderim hedefleri ve toplama kapsamı
- Uygulama yalnızca akü voltajını değil, GPS koordinatlarını, yakındaki mobil baz istasyonu verilerini ve yakındaki Wi-Fi erişim noktası bilgilerini de topluyor
- O sırada doğrulanan konum verisi gönderim hedefleri iki gruptu
- Leagend/BM2 uygulama sunucusu:
bm2.quicklynks.com,47.244.125.231, Alibaba Cloud Hong Kong - AMap SDK sunucusu:
dualstack-cgicol.amap.com,106.11.130.194, Alibaba Cloud Pekin
- Leagend/BM2 uygulama sunucusu:
- AMap, Alibaba'nın satın aldığı Çinli bir dijital harita sağlayıcısı ve SDK, yalnızca GPS'i değil telefonun toplayabildiği diğer konumla ilgili verileri de alıyor
- 25 Temmuz 2023 güncellemesinden sonra her iki büyük uygulama mağazasındaki uygulamalardan AMap SDK kaldırıldı
- Çin ana karasındaki AMap sunucularına giden GPS, Wi-Fi ve baz istasyonu verisi toplama durdu
- GPS konum verileri hâlâ Alibaba Cloud Hong Kong sunucusuna gönderiliyor
- iPhone uygulaması ayrıca kullanıcının sokak adresini de tespit edip gönderiyor
Uygulama mağazası gizlilik beyanları ile gerçek davranış
- 27 Haziran 2023 itibarıyla BM2 uygulamasının geliştiricisi, Google Play ve Apple App Store gizlilik beyanlarını güncelleyerek kesin konum verisi toplandığını belirtti
- Bundan önceki Google Play beyanı uygulamanın gerçek davranışıyla uyuşmuyordu
- “Veriler üçüncü taraflarla paylaşılmıyor”: enlem-boylam verileri akü istatistikleriyle birlikte
quicklynks.comsunucusuna gönderiliyordu; çökme analiziumeng.com'a, Wi-Fi/baz istasyonu/GPS koordinatları ise AMap'e gidiyordu - “Veri toplanmıyor”: konum verileri ve aküyle ilgili veriler toplanıyordu
- “Aktarım sırasında şifreleniyor”: BM2 bulut sunucusuna gönderilen veriler şifrelenmemiş HTTP üzerinden iletiliyordu
- “Veriler üçüncü taraflarla paylaşılmıyor”: enlem-boylam verileri akü istatistikleriyle birlikte
- Gizlilik politikası ayrıntılarında “Hong Kong” ve “location information” ifadeleri yer alıyordu
Android izinlerinin yarattığı yapısal sorun
- Android uygulaması çalışmak için konum izni istiyor ve bu izin verilmezse donanım cihazı kullanılamıyor
- Android 6.0'dan itibaren Bluetooth ve Wi-Fi taramalarıyla yakındaki harici cihazların donanım tanımlayıcılarına erişmek için
ACCESS_FINE_LOCATIONveyaACCESS_COARSE_LOCATIONizni gerekiyor - BM2 uygulamasının aslında ihtiyaç duyduğu şey BLE taraması, ancak geniş konum izni GPS, baz istasyonu ve Wi-Fi verilerine erişimi de mümkün kılarak kötüye kullanım alanı bırakıyor
- Android 12 ve sonrasında yalnızca BLUETOOTH_SCAN izniyle BLE taraması yapılabiliyor
- Google belgelerine göre
ACCESS_FINE_LOCATIONiçinandroid:usesPermissionFlags="neverForLocation"belirtilebiliyor, ancak bu yalnızca Bluetooth tarama sonuçları fiziksel konum çıkarsamak için kullanılmıyorsa geçerli
Ağ trafiğinde doğrulananlar
- Mobil uygulama trafiğini incelemek için Mitmproxy'nin WireGuard modu kullanıldı
- BM2, HTTPS kullanmadığı için sertifika yüklemeye gerek kalmadan hem Android hem de iOS'ta enlem-boylam aktarımı doğrulanabildi
- Uygulama akü monitörü cihazına bağlandıktan sonra
http://bm2.quicklynks.com:8080/api/bm2/userDevice/upload?adresinePOSTisteği gönderiyor - İstekte enlem-boylam alanlarının yanı sıra akü voltajı örnekleri, donanım MAC adresi,
nickname,serialNoda bulunuyor - O sıradaki DNS ve IP sorgularına göre
bm2.quicklynks.com,47.244.125.231adresine çözülüyordu ve IP bilgisi bunu Hong Kong Sham Shui Po'daki Alibaba bağlantılı bir AS olarak gösteriyordu
AMap SDK'nın işlediği konum sinyalleri
- AMap SDK; GPS, Wi-Fi ve mobil baz istasyonu verilerini topluyor
- Mobil veriler içinde Cell Global Identity yer alıyor
MCC: Mobile Country CodeMNC: Mobile Network CodeMCC + MNC: PLMN, mobil operatör tanımlayıcısıLAC: bölge içindeki baz istasyonu grubuCI: bölge içindeki baz istasyonu alıcı-verici tanımlayıcısı- 4G'de
TACkullanılıyor
- Wi-Fi verileri
BSSIDMAC adresi ileSSIDerişim noktası adını içeriyor - AMap verileri, diske yazılmadan veya internet üzerinden gönderilmeden önce şifrelenmiş serileştirilmiş ikili blob biçiminde işleniyor
- Konum verileri geçici bir AES anahtarıyla şifreleniyor ve bu AES anahtarı da açık bir RSA anahtarıyla tekrar şifreleniyor
- Bu yöntem sertifika pinning'e bağlı değil
- Uygulama değiştirilmeden veya karşılık gelen RSA özel anahtarı olmadan, ortadaki adam tipi ağ incelemesiyle içeriği görmek zor
Donanım ve test ortamı
- Donanımın iç yapısı basit; merkezde bir voltaj regülatörü ve Texas Instruments CC2541 Bluetooth Low Energy MCU bulunuyor
- CC2541 CPU, 8 bit Intel 8051 tabanlı; sonraki CC ailesi ise ARM Cortex mimarisini kullanıyor
- CC ailesi SoC'ler özel bir on-chip hata ayıklama arayüzünü destekliyor; JTAG veya SWD görünmüyor
- Cihaz OTA güncellemeyi destekliyor ve firmware'i HTTP üzerinden döndüren bir REST endpoint'i part 3'te belgelenmiş
- Akım algılama için shunt ya da başka bir akım ölçüm devresi görünmüyor; bu da donanımın çok basit bir yapıda olduğunu gösteriyor
- Testler küçük bir 12V kurşun-asit akü, BM2 akü monitörü ve root erişimli bir Android cihazla yapıldı
- AMap konum verileri yalnızca fiziksel hareket algılandığında bellekteki veritabanına yazıldığından, çalışma zamanı enstrümantasyonu için Frida ve Objection kullanıldı
Dinamik ve statik analiz süreci
- GPS koordinatları, Frida ile
android.location.Location.getLatitudevegetLongitudehook'lanarak sahte değerlerle değiştirilebiliyor - Objection'ın Wallbreaker eklentisiyle uygulamanın heap belleğinde GPS, operatör baz istasyonu ve Wi-Fi verisi örnekleri görüldü
- APK, cihazdan
adb shell pm pathile yol bilgisi alınıp çıkarıldı ve JADX ile decompile edildi AndroidManifest.xmliçindeFINE_LOCATIONdışındaCAMERA,IMAGE_CAPTURE,ACTION_VIDEO_CAPTURE,MODIFY_AUDIO_SETTINGS,RECORD_AUDIOgibi izinler de görüldü; ancak bu işlevlerin kullanılıp kullanılmadığı için ek inceleme gerekiyor- Uygulamanın giriş noktası
com.stub.StubAppveqihoo.utilticari packer'ı kullanılmış - frida-dexdump ile çalışan bellekteki özgün Dalvik yürütme bayt kodu döküldü, ardından
dex2jarve JADX ile okunabilir Java koduna dönüştürüldü - BM2 uygulamasının ana gövdesinde ek bir obfuscation yoktu, ancak
amapkonum hizmeti SDK'sı obfuscation'lıydı ve JADX'nin deobfuscation özelliğiyle bazı sınıf adları geri kazanıldı
1 yorum
Hacker News yorumları
BLE araç aküsü monitörünü tersine mühendislik ile incelemenin sonucu. Bu uygulama yalnızca Google Play’de 100 binden fazla indirilmiş.
Meğer GPS, cep telefonu baz istasyonu hücre kimliği ve Wi‑Fi beacon verilerini sürekli Hong Kong ve Çin ana karasındaki sunuculara gönderiyormuş. Google ve Apple uygulama mağazası sayfalarında kişisel veri toplamadığı ya da üçüncü taraflara göndermediği yazıyor.
Bağlı cihaz uygulamalarını analiz etmek isteyenlere birkaç ipucu olmasını umarım.
https://www.amazon.de/dp/B0BLG9Z462
Görsellerden üçüncüsüne tıklayınca bir karşılaştırma tablosu çıkıyor; bunu BM6’ya özgü özel bir özellikmiş gibi sunmaları ilginç, oysa aslında sadece uygulama özelliği.
Cihaz QR kodu [0] şu uygulamaya yönlendiriyor: https://play.google.com/store/apps/details?id=com.dc.bm6
Bu yüzden https://link.quicklynks.com/bm3.html ve https://link.quicklynks.com/bm4.html gibi diğer URL’leri de kontrol ettim; ikincisi https://www.leagend.com/ adresine yönlendiriyor ve şu YouTube kanalını işletiyor: https://www.youtube.com/channel/UCqkvyOFP5cXQ02f3h1Ns42Q
[0] http://link.quicklynks.com/bm6.html
Telefonun pilini de sürekli tüketerek, gösterge panelinin zaten söylediği şeyi telefon ekranında görmeye gerçekten değer mi bilmiyorum. Sabit bir akü ise analog bir voltmetre kadranı kullanılsa olmaz mı?
Günümüzde uygulamasız çalışan bağımsız cihaz bulmak çok zor. Örneğin, uygulama olmadan gövde üzerindeki düğmelerle renk seçilebilen bir LED lamba bulmak bile zordu; bir tane buldum ama uygulama olmadan renk döngüsü hâlâ mümkün değildi.
İnsanlar böyle saçmalıkları tercih etmeseydi, yeniden normal elektronik ürünler bulmak daha kolay olurdu.
Android’de kullanıcının bir uygulamanın 1) başlangıçta çalışmasını 2) arka planda çalışmasını neden engelleyemediğini anlamıyorum. En azından kullanıcı onayına bağlı bir izin olmalı değil mi?
Bu şekilde veri emen uygulamaların önemli bir kısmı engellenebilirdi; Google’ı da suç ortağı olarak görüyorum.
https://grapheneos.org/
Uygulamaların konum verisinin etkinleştirilmesini isteyebildiğini biliyorum ama bir uygulamanın bunu tek taraflı açabilmesine şaşırdım ve engellemenin bir yolunu da bulamadım.
Bu tür nedenlerle herhangi bir telefona güvenmenin zor olduğunu hissediyorum.
Bu tür vakalar yüzünden dijital mahremiyet ve onu koruyan yasalar için mücadeleyi bırakmamalıyız.
Mesele “saklayacak bir şeyim yok” meselesi değil; üçüncü tarafların açık farkındalık ve rıza olmadan gözetim yapmasını ve kişisel verileri satmasını engelleme meselesi.
Şu anda topyekûn bir veri savaşının ortasındayız ve sert biçimde karşı koymalıyız.
Kötü niyetli aktörler için fiilen hiçbir bedel yokken bunun standart hâline gelmiş olması sinir bozucu.
Bu yazıyı görünce GrapheneOS kullandığım için sevindim. Birkaç aydır günlük kullanımda kullanıyorum; tüm uygulamaların kurulum sırasında ağ izni açıkça onaylanıyor ya da reddediliyor.
Bu tür yerel uygulamalara asla ağ izni vermiyorum; içime hiçbir zaman sinmeyen klavye uygulamasına da vermiyorum.
Gülünç seviyede olmanın ötesinde, kullanıcı mahremiyeti ve güvenliğine açıkça düşmanca.
İşletim sistemleri internet erişimini, kullanıcının izin verebildiği veya geri alabileceği bir yetki haline getirmeli. Android’de eskiden böyle bir şey var gibiydi; iOS’ta ise mobil veri dışında yoktu sanırım.
Bluetooth kullandığını iddia eden bir cihaz satın aldıysam ama aslında internet erişimine ihtiyaç duyuyorsa iade ederim.
Kabul etmezseniz uygulamayı alamıyordunuz. Bazı izinler hâlâ böyle, pek çok izin ise izin verme/geri alma modeline geçti.
İnternet erişimi hâlâ bir izin, ancak Google Play artık bunu sormadığı için tüm uygulamalar buna sahip olabiliyor. Yine de manifest’te talep edilmemişse çalışmıyor.
https://netguard.me/
Yeni başlayanlara alan adlarını gösterebilir; Apple’ın bir şekilde izin listesine aldığı alan adları yeşil renkle işaretlenebilir. Ne izin listesinde ne de engel listesindeyse sarı renkle gösterilebilir; renkler kafa karıştırıyorsa sadece adını göstermek de yeterli olabilir.
Engel listesindeki adreslere istek atan uygulamalar, ek inceleme yapılana kadar App Store’dan engellenebilir.
İleri seviye kullanıcıların dokunarak payload ve header gibi ayrıntıları görebilmesi iyi olurdu. Bu işleve gerçekten ihtiyaç var ve eklemesi de o kadar zor görünmüyor.
[1]: https://developer.apple.com/documentation/bundleresources/en...
Uygulama mağazası sağlayıcıları “kişisel veriler toplanmaz veya üçüncü taraflara aktarılmaz” gibi ifadeleri tamamen kaldırmalı gibi geliyor.
Bunun yerine “Bu uygulamanın ağla ilgili izinleri var; istediği veriyi istediği yere gönderebilir” ya da “Uygulama geliştiricisi verileri üçüncü taraflara vermediğini iddia ediyor, ancak bizim bunu doğrulama yöntemimiz kesinlikle yok” diye uyarmalılar.
Gerçekçi olarak Apple veya Google, neyin üçüncü taraf olduğunu bilemez. Çin ve Hong Kong’daki sunucular birinci taraf da olabilir; kim bilebilir? Uygulamanın geliştiricisi dışında kimse bilemez.
Çin Komünist Partisi belirli bir bireyin verileriyle pek ilgilenmeyebilir, ancak toplu verilerle son derece ilgilenir. Ayrıca yıllar boyunca toplanmış milyonlarca ABD hükümeti çalışanının verileri gibi belirli hedeflerle birleştiğinde çok kullanışlı hale gelir [0][1].
Açık ticaret ve etkileşimin Çin’de demokrasi ve özgürlüğe yol açacağı yönündeki “büyük deney” tamamen başarısız oldu. Sonuçta sadece küresel genişleme peşindeki acımasız bir diktatörlüğü daha da güçlendirdi. Çin’le iş yapılmamalı.
[0] https://en.wikipedia.org/wiki/Office_of_Personnel_Management...
[1] https://www.nbcnews.com/tech/security/china-spent-years-coll...
İzleyen cihazın da sonunda izlediği şeyin kendisini yavaş yavaş tükettiğini fark etmek gerekiyor. Sonunda monitörü yeniden aktif biçimde izlemek zorunda kalıyorsunuz.
Bu BLE cihazı otomobil aküsünü yavaş ama kesin biçimde tüketiyor. Bir gün uyarı gönderdiğinde aküyü şarj etmeniz gerekecek; kısa süre sonra uyarı göndermeyi bile bırakacak.
Üstelik telefon verinizi de emip Çin’e gönderecek, telefonun pilini de tüketecek. Bayramlarda verilebilecek en kötü hediye olarak bundan daha iyisini düşünmek zor; nadir görülen bir üçlü tüketici tehdidi.
Ciddi konuşmak gerekirse, kendi kendine deşarj bu monitörden kabaca bir büyüklük mertebesi daha fazladır.
Android’in gerçek cihazlarda sahte GPS verisi verebilen bir özelliğe ihtiyacı var. Sebepsiz yere GPS isteyen uygulamalar için yararlı olurdu.
El feneri uygulamasının açılmak için GPS’e ihtiyacı varsa sorun değil. Şu anki konumum Kilimanjaro Dağı.
Uygulama geliştiricileri açılır pencerede kullanıcıya “Bluetooth’un çalışması için izin ver’e basın” gibi açıklamalar yapmaya da çalışıyor.
Bu noktada bu tür cihazların büyük miktarda veri toplayıp merkeze gönderdiğini varsaymak makul. TP-Link router’ların da her şeyi Çin’e gönderiyor olması şaşırtıcı olmaz.
Ancak bu yalnızca Çin’le sınırlı bir mesele değil; şu an kullandığınız iPhone’un da tüm tuş vuruşlarını ve konum verilerini ABD’ye gönderiyor olma ihtimali var.
TP-Link router’ın her şeyi uzak sunuculara gönderdiğinden şüpheleniyorsanız trafiği izlemek yeterli.
Arkadaşlarım gizlilik ve veri toplama konusundaki takıntımla dalga geçtiğinde, işte tam da böyle örnekleri gösteriyorum.
Bunu kötü niyetli nedenlerle yaptıklarına inanmak için bir dayanak yok, ama gerçekte bunu bilmenin bir yolu da yok. Belki de sadece cehalet ya da beceriksizliktir.
Cihaz üreticisinin topladığı konum verisi miktarı kayda değer. Eğer bundan para kazanıyorlarsa, son kullanıcıya açıklanmamış olsa bile bunun kötü niyetli sayılıp sayılamayacağını merak ediyorum.
Uygulamanın kullandığı AMap SDK çok daha fazla konum verisi topluyor. Burada amacın konum servislerinin ve harita yazılımının doğruluğunu artırmak olması daha olası gibi geliyor; bunu kendi başına kötü niyetli görmüyorum.
Ancak bu davranış kullanıcılara ve geliştiricilere açıklanmadıysa durum değişir. Site Çince [1]; ayrıntılı şartları okuyup bunu doğrulayacak biri çıkar mı, ondan da emin değilim.
[1] https://lbs.amap.com/api/lightweight-android-sdk/download
Bir zamanlar tüm web sitelerindeki Facebook “Like” düğmelerinin zararsız olduğunu sanıp, sonradan izinsiz olarak ne kadar geniş çapta izleme yapıldığını öğrendiğimiz günleri hatırlatıyor.
Çin’in tipik yöntemi, dışarıdan zararsız görünen yollarla bilerek veri toplamak ya da ileride kötüye kullanılabilecek güvenlik açıklarını kasıtlı olarak ardına kadar açık bırakmak. Yakalanınca da “Özür dileriz, hemen düzelteceğiz” diyorlar.
Daha da kötüsü, bu davranışların hiçbir sonucu olmaması. Google, AB ya da FTC’den biri para cezası kesmeli.