Bu bölümde iOS uygulamalarında mahremiyet konusuna değineceğiz. Bu bölüm, iki kısımdan oluşmaktadır.
3. Mahremiyet
3.1. UDID Bilgisi
Her iOS cihazın, üzerinde bulunan donanımlarının kimi özellikleri kullanılarak oluşturulan, sadece o cihaza özel olan ve UDID adı verilen özel bir kimlik bilgisi mevcuttur. Bu bilgi, her cihazda gömülü olarak bulunmaktadır ve değiştirilmesi ya da silinmesi mümkün değildir. Yine de bazı araçlar yardımıyla bu bilgi spoof edilebilir ( örn. UDID Faker).
UDID bilgisinin örnek bir hesaplanma formülü şu şekildedir:
UDID = SHA1(Serial Number + ECID + LOWERCASE (WiFi Address) + LOWERCASE(Bluetooth Address))
Bu bilgi, yeni gelen iOS sürümleriyle birlikte değişiklik gösterebilir. UDID bilgisine, bir API yardımıyla cihaz kullanıcısının iznine gerek kalmaksızın uygulama geliştiricilerce erişilebilir. Kullanıcı davranışlarını izlemeye yardımcı olabilecek bu bilgiyi elde etmek amacıyla aşağıdaki küçük kod parçası kullanılmaktadır.
NSString *uniqueIdentifier = [device uniqueIdentifier]
UDID bilgisi kullanılarak kullanıcılara ait kimi davranışsal örüntüler (pattern), coğrafi konum bilgileri gibi hassas bilgilerin elde edilebildiği ve bu bilgilerin kullanıcı mahremiyetini ihlâl eden hâllere sebep olabileceği, kimi güvenlik araştırmacılarınca örnekleriyle ortaya konulmuştur.
Belirtilen nedenlerden dolayı sızma testi sırasında dinlenen ağ trafiği, UDID bilgisinin iletilip iletilmediği bakımından da dikkatle incelenmelidir. Bu bilginin, uygulamanın kendisi tarafından kullanılmak üzere kendi tarafından toplanıp toplanmadığına ya da üçüncü parti firmalara iletilip iletilmediğine dikkat edilmelidir. Kullanıcı davranışlarının takibi için cihaz UDID bilgisinden ziyade uygulamaya özgü bir tanımlayıcı bilgisinin kullanılmasında yarar vardır. UDID bilgisinin haricinde, kullanıcının izni olmaksızın iletilen ve kullanıcı mahremiyetini ihlâl eden diğer bilgilerin (isim, soyisim, yaş, adres vs.) de iletilip iletilmediğine dikkat edilmelidir.
3.2. Yerelde Tutulan Veriler
Mobil uygulamalar, birtakım gerekçelerle (uygulama işletimi, yüksek başarım, çevrimdışı erişim) mobil cihazlar üzerinde hassas olan ve olmayan kimi bilgileri saklamaktadırlar. Yine geliştiriciler, kullanıcı tercihi, uygulama yapılandırma ayarları gibi bilgileri yerelde saklanacak şekilde uygulamalarını geliştirmektedirler. Mobil cihazların çalınması olaylarının artmasıyla birlikte mobil uygulamalara yönelik gelişen tehditler sıralamasında, mobil cihazlar üzerinde saklanan bilgilerin üçüncü kişilerin eline geçmesi riski öne çıkmaktadır. Bu nedenle cihaz üzerinde açık olarak tutulan hassas bilgiler büyük bir risk oluşturmaktadır.
Hassas bilgilerin elde edilebileceği yöntemlerden bir kısmına değinmek gerekirse;
· Yedekler
iOS cihaz iTunes’a bağlandığında, kullanıcı seçimine bağlı olarak, iCloud ve/veya çalışılan cihaza (örneğin kişisel bilgisayar) otomatik olarak cihaz üzerindeki verileri yedeklemektedir. Yedek alınan yere saldırgan kişilerce erişimin bulunması hâlinde, hassas bilgilere de erişim mümkün olabilecektir.
· Cihaza Fiziksel Erişim
· Kötü Amaçlı Yazılımlar
iOS cihazlar üzerinde bulunan güvenlik açıklarından yararlanılarak geliştirilen kötü niyetli
yazılımlar yardımıyla cihaz üzerindeki dosya ve bilgiler çalınabilir.
3.2.1. iOS Uygulama Dizin Yapısı
iOS uygulamaları belirli bir dizin içinde, uygulama kaynaklarının, ikili(binary) dosyaların ve ilgili diğer dosyaların birarada bulunduğu paketler hâlinde yer almaktadır. Uygulamalar, “jailed environment” adı verilen bir tür sandbox içerisinde, mobil kullanıcı hakları ile çalışmaktadır. Android cihazlarda bulunan UID tabanlı yapıdan farklı olarak iOS uygulamaları yalnız bir kullanıcı tarafından çalıştırılabilir. Sandbox yapısı, uygulamanın, sadece kendi ihtiyacı olan kaynaklara ulaşmasını garantileyen, başka uygulamaların kullandığı kaynaklara ise erişmesini engelleyen bir yapıdır. Uygulama kurulurken oluşturulan dizinlerin yanısıra, sandbox’a erişim yetkileri de tanımlanmaktadır. iOS cihazlara uygulanan “Jailbreak” işlemi, bahsedilen sandbox korumasını devre dışı bırakmaktadır.
Uygulamalar, tekil bir tanımlayıcı kimlikle(unique identifier) /var/mobile/Applications dizinine kurulmaktadır. Uygulamanın ihtiyaç duyabileceği her türlü kaynak, bu dizin altında bulunmaktadır. Bu dizin yapısı, genel anlamda şu şekildedir:
Alt Dizin | Açıklama |
uygulamaadi.app | Uygulama kodu ve statik veriyi içerir. |
Documents | iTunes yoluyla paylaşılabilecek veriyi içerir. |
Library | Uygulama destek dosyalarını içerir. |
Library/Preferences | Uygulamaya özgü dosyaları içerir. |
Library/Caches | Ardışık uygulama açılışlarında ihtiyaç duyulan(önbelleğe alınmayı gerektiren) dosyalar bulunur. |
tmp | Ardışık uygulama açılışlarında ihtiyaç duyulmayan geçici dosyaları içerir. |
Hassas bilgi barındırması muhtemel olan dosya türleri/konumları ise şu şekildedir:
- Plist uzantılı dosyalar
- Keychain dosyaları
- Uygulama ev(home) dizini
- Önbellek(Cache)
- Loglar
3.2.2. Plist Uzantılı Dosyalar
Plist ya da Property List dosyaları, ilgili uygulamanın yapılandırma bilgileri, kullanıcı istatistikleri, kullanıcı tercihleri(preferences) gibi bilgileri tutan, Windows’taki .ini uzantılı dosyaların bir benzeri olarak ifade edilebilecek dosyalardır. Örneğin bir oyun uygulaması düşünüldüğünde, skor istatistikleri, oyun seviye bilgileri gibi bilgiler bu dosyalarda bulunabilir. Genel olarak plist dosyaları uygulama ev dizini/documents/preferences dizininde bulunmaktadır. Bu dosyalar XML biçiminde olabileceği gibi ikili(binary) biçimde de bulunanbilir. XML biçiminin veri saklama anlamında çok etkin olmaması nedeniyle, genelde plist dosyaları ikili biçimdedir. İkili biçimde bulunan plist dosyaları, Plist Editor adı verilen yazılımlarla açılıp içeriği incelenebilir ve değiştirilebilir.
Bu tür zafiyetlere karşı uygulanabilecek en uygun çözüm yöntemi, plist dosyalarında bu tür hassas bilgilerin tutulmasının önüne geçilmesi olacaktır. Plist dosyaları, son kullanıcı kontrolünde olduğundan dolayı, bu dosyaların içerdiği girdiler uygun şekilde ele alınmalı ve duruma göre onaylanmalıdır.
Plist dosyaları hem Jailed hem de Jailbreaked iOS cihazlarda incelenebilir. Jailbreaked cihazlara yüklenecek plutil aracıyla SSH bağlantısı üzerinden cihaz üzerinde plist dosyaları incelenebileceği gibi Jailed cihazlarda, ilgili plist dosyasını kendi bilgisayarımıza kopyalarak gerekli inceleme ve değişiklikleri yapabiliriz.
Örnek olarak kullanacağımız uygulama Stick Cricket isimli bir oyun uygulamasıdır. Bu uygulama, kullanıcıların istatistiksel verilerini plist dosyalarında tutmaktadır ve bu bilgi manipüle edilecektir.
Görülen skor değerini manipüle etmek için iFunBox isimli bir araç yardımıyla iOS cihazımıza bağlanacağız ve uygulama dosyalarını bilgisayarımıza kopyalayacağız.
Dosyaları seçip bilgisayarımıza kopyalıyoruz.
<<Önceki Bölüm Sonraki Bölüm>>