15 Nisan 2014

iOS Tabanlı Uygulamalar İçin Sızma Testi Metodu - 2. Bölüm 3. Kısım

Bu makalede, daha önce giriş yaptığımız iOS tabanlı uygulamalarda mahremiyet konusuna devam edeceğiz.

Daha önceki bölüm iOS Tabanlı Uygulamalar İçin Sızma Testi Metodu - 2. Bölüm 2. Kısım'dı. Bu bölümde kaldığımız yerden (Keychain'de Saklanan Verilere Erişim) devam ediyoruz.



Uygulamaya ait yetkiler, uygulama ikili(binary) dosyalarına gömülüdür ve kriptosuz olarak saklanmaktadır. Bu nedenle  Jailbreaked cihazlarda, uygulamalara ait yetkiler grep ya da sed(stream editor – Cydia’dan indirilebilir) komutları kullanılarak uygulama ikili(binary) dosyalarından çıkartılabilmektedir.

Uygulama yetkilerini görüntülemek için, cihaza SSH ile bağlanıp uygulama dizinine geçerek aşağıdaki komutu yazıyoruz. Örnek olarak kullandığımız uygulama Snapchat uygulamasıdır.

sed -n '/<dict>/,/<\/dict>/p'  Snapchat.app/Snapchat






Oluşan bu çıktıda görüldüğü üzere Snapchat uygulaması, keychain’de veri saklama amacıyla “3MY7A92V5W.com.toyopagroup.picaboo” erişim grubunu kullanmaktadır.

Bir uygulama keychain veritabanına bir girdi eklediğinde, uygulamaya ait uygulama tanımlayıcı(application identifier) ya da keychain erişim grup(keychain access group) bilgisi de ilgili girdinin agrp(access group) kolonuna eklenmektedir. Daha sonra uygulama bu girdiye ulaşmak istediğinde, keychain servisi bu iki bilgiden birini doğrulayarak  erişim izni verir. Örnek bir keychain dosyası aşağıda bulunmaktadır. Snapchat uygulamasına ait girdi de işaretlenmiştir.


iOS simülatörlerinde, tüm uygulamalar ortak bir keychain erişim grubuna dahil olduğundan, uygulamalar keychain’de bulunan tüm veriye erişebilmektedir.

iOS cihazlara veri koruma mekanizmasının gelmesiyle birlikte, keychainde tutulan hassas verilerin korunmasına yönelik ek bir koruma katmanı eklenmiştir. Bu katman, verilerin, cihaz donanım anahtarı ile kullanıcı parolasından türetilen bir kripto anahtarıyla kriptolanması işlemini içermektedir. Dolayısıyla kullanıcı parolasının güçlü oluşuyla veri koruma mekanizmasının güçlülüğü doğru ortantılı hâle gelmektedir. Bu mekanizma, cihazın kayıp/çalıntı durumuna düşmesi durumunda kullanıcı verilerini korumaya yöneliktir.

3.2.3.4.     Keychain’de Saklanan Verilerin İncelenmesi

iOS uygulamalarının, kullanıcı bilgilerinin tekrar tekrar girilmesini önlemek ve uygulamanın yeniden kurulması ya da uygulama sürümünün yükseltilmesi ihtiyaçlarından dolayı hassas bilgileri keychain veritabanında sakladığını söylemiştik. Ancak bu uygulamalardan bazıları, bu hassas bilgileri keychainde kriptosuz olarak tutmaktadır. Bu nedenle sızma testleri sırasında, keychain değerlerinin dikkatle incelenmesi gereklidir. Keychain veritabanına erişim kısıtı olduğundan bahsetmiştik. Jailbreaked bir cihazda bu kısıt aşılarak keychain veritabanının dökümü alınabilir ve içeriği incelenebilir.

Bu kısıtın nasıl aşılabileceğine ilişkin çok fazla ayrıntıya girmeden, kısıtı açmaktan kastımızın ne olduğunu ifade etmekle yetineceğiz. 

keychain_dumper isimli araç, “*” jokerini(wildcard) kullanarak imzalandığı için, keychain veritabanındaki tüm verilere erişebilmektedir. 

Bu araca ulaşabileceğiniz adres şu şekildedir:
https://github.com/ptoomey3/Keychain-Dumper/downloads

Aracı indirdikten sonra, iOS cihazımıza WinSCP gibi bir programla bağlanıp /private/var/root dizinine aracı kopyalayıp çalıştırma iznini verdikten sonra çalıştıracağız.

 

 

Aracı çalıştırdıktan sonra genp(jenerik parola) ve inet(internet parolası) tablolarındaki tüm veriler görüntülenecektir.


cert ve keys tablosundaki verileri görüntülemek için aracı –c parametresi ile çalıştırmak yeterlidir.

 


<<Önceki Bölüm                                                                                                      Sonraki Bölüm>>