iPhone, ilk kez Ocak 2007'de Steve Jobs tarafından, kendi işletim sistemine sahip (iPhone OS), çoklu dokunmatik bir cihaz olarak tüm dünyaya tanıtılmıştır.
iOS işletim sistemi; Apple tarafından Mac OS X işletim sistemi temel alınarak geliştirilmiş, mobil cihazlara özgü kısıtlar göz önünde bulundurularak Mac OS X işletim sisteminin modifiye edilmiş bir versiyonudur. İlk yıllarda Apple tarafından iPhone OS olarak adlandırılan işletim sisteminin adi, aslında iPhone, iPad ve iPod olmak üzere her üç platformda da kullanılmasından dolayı 7 Haziran 2010’da kullanıldığı tüm platformları kapsayacak şekilde iOS olarak değiştirilmiştir.
Bu yazıda, iPhone dosya sistemi, sistemdeki bölümlemeler ve dosya sistemi içerisinde kullanıcılara özel hassas veriler içerebilecek SQLite veri tabanları ve property listler detaylı bir şekilde anlatılacaktır.
iOS Mimarisi
iOS işletim sistemi mimarisi, MAC OS X temel mimarisine oldukça benzerdir. En üst katmanda iOS, ekranda görünen uygulamalar ve cihazın temelini oluşturan donanım bileşenlerinin etkileşimi için aracılık yapmaktadır. Cihaz için geliştirilen uygulamalar, donanım ile doğrudan iletişime nadiren geçerler.
Bu iletişim genellikle, uygulamaların donanımdaki değişikliklerden etkilenmesini engelleme vazifesi gören ara yüzler aracılığı ile yapılmaktadır. Bu soyutlama ayni zamanda, geliştirilen uygulamaların farklı donanım özelliklerine sahip cihazlarda da çalıştırılabilmesine olanak sağlamaktadır. iOS işletim sisteminde kullanılan katmanlar Cocoa Touch Katmanı, Medya Katmanı, Çekirdek Servisleri Katmanı, Çekirdek işletim Sistemi Katmanıdır.
Apple uygulama geliştiricilere, üst seviye katmanlara ait yapıları kullanmalarını tavsiye etmekle beraber, alt seviye katmanlara ait yapıların da kullanımı engellememiştir. Üst seviyelerde ele alınmamış bazı özellikleri kullanmak isteyen uygulama geliştiricilerin bu tür durumlarda alt seviye yapılara başvurabilmesi mümkündür.
CocoaTouch katmanı
Bu katman, iOS uygulamaları geliştirilirken en sik kullanılan yapıları içermektedir. Temel uygulama altyapısını tanımlayan ve çoklu görev, dokunuşa bağlı girdiler, anında bildirim gibi birçok sistem servisi için destek sağlayan katmandır.
Bu katmanın sunduğu ana teknolojiler şu şekilde sıralanabilir:
• Grafiksel taslaklar
• Dokuman işleme desteği
• Çoklu görev
• Yazdırma desteği
• Veri koruma
• Apple anında bildirim servisi
• Lokal bildirimler
• Şekil ve işaret tanımlayıcılar
• Dosya paylaşım desteği
• Peer-to-Peer servisleri
• Standart sistem görüntü yöneticileri
• Harici gösterim desteği
Medya katmanı
Mobil cihazda multimedya deneyimi sunabilmek için gerekli olan teknolojileri içeren katmandır. Grafik, ses ve video teknolojileri ve AirPlay, bu katmanın sunduğu teknolojiler arasında yer almaktadır.
Çekirdek servisleri katmanı
Çekirdek servisleri katmanı, tüm uygulamaların kullanması gereken temel sistem servislerini içermektedir. Bu servisler uygulamalarda doğrudan kullanılmasa bile, sistemin birçok parçası bu servisler üzerine kurulmuştur. iCloud depolama, otomatik referans sayımı, blok objeler, genel merkezi dağıtım, uygulama içi satın alma, SQLite, XML desteği bu katmanın sunduğu ana teknolojiler arasında yer almaktadır.
Çekirdek işletim sistemi katmanı
Çekirdek işletim sistemi katmanı, diğer teknolojilerin üzerine bina edildiği temel özellikleri içeren katmandır. Bu katmana ait teknolojiler uygulamalarda doğrudan kullanılmasa da, diğer katmanlara ait yapılar tarafından genellikle kullanılmaktadır. Güvenlikle ilgili teknolojileri doğrudan kullanmak veya harici bir donanım aygıtı ile haberleşmek gerektiğinde bu katmana ait yapılar kullanılabilmektedir.
Bu katmanın sunduğu teknolojilerden bazıları; accelerate yapısı, core bluetooth, harici aygıt yapısı ve güvenlik yapısıdır.
Bu katman, çekirdek bileşenlerini, sürücüleri ve işletim sisteminin alt seviye UNIX ara yüzlerini çevrelemekte ve tüm bunlara erişimi sinirli ve kontrollü hale getirmektedir. Çekirdek, işletim sisteminin her tur görevinden sorumludur. Sanal bellek sistemini, iş parçacıklarını, dosya sistemini, ağı ve işlemler arası iletişimi yönetir. Yine bu katmanda bulunan sürücüler, donanım aygıtları ve sistem 9atilari arasında ara yüz görevi görür. Güvenlik sebebiyle, 9ekirdek ve sürücülere erişim ancak belirli sayida sistem 9atisi ile yapılabilecek şekilde sınırlandırılmıştır. iOS, işletim sisteminin bir 9ok alt seviye özelliklerine erişebilmek i9in birtakım ara yüzler sunmaktadır. Uygulama geliştiriciler bu özeliklere "LibSystem" kütüphanesi ile ulaşabilmektedirler.
iOS veri bölümü
Dosya sisteminin hem yazılabilir, hem okunabilir olan bölümüdür. Kullanıcıya ait hassas olarak nitelendirilebilecek ve saldırganların 1.derecede hedef alacakları tüm bilgiler veri bölümünde bulunmaktadır. Mobil cihazın iTunes ile yedeklemesi yapılırken, yedeklenecek bilgiler "Mobile" dizininden alınmaktadır.
SQLite Veri tabanları
iOS işletim sistemi, mobil cihazlarda veri kaydı yapmak için SQLite veri tabanı formatını kullanmaktadır. Bu amaçla kullanılan üç büyük veri tabanı; Kişiler, SMS ve Arama Geçmişi veri tabanlarıdır. Bunlar alt başlıklarda kısaca açıklanacaktır.
- Killer veri tabanı
Kişiler veri tabanı 18 tablodan oluşmaktadır.
- SMS veri tabanı
Mesajlar uygulaması ile gönderilen ve alınan mesaj kayıtlarının tutulduğu veri tabanı SMS veri tabanıdır.
- Arama geçmişi verit abani
Arama ge9mişi, diğerlerine kıyasla daha basit ve sinirli bir veri tabanıdır. Bu veri tabanında yalnızca son 100 arama kaydı tutulur. Fakat buna rağmen son arama kayıtları, saldırganlar için değerli olabilecek verilerdir.
- Property Listler
Property listler, standart OS X sistemlerinde yaygın olarak kullanılan XML dosyalarıdır. iOS veri bölümünde, değerli bilgiler içerebilecek çok sayıda property list bulunmaktadır.
Hard Disk | USB Bellek |
SSD |
Server |
RAID |
DVR-Kayıt Cihazı |
Mobil Cihaz | |||||||