Mobil Güvenlik Nasıl Sağlanır Ve Sızma Teknikleri Nelerdir?
Mobil güvenlikte zararlı yazılımlar kadar kullanıcıların ve normal uygulamaların da risk oluşturabildiği belirtilmektedir; bu nedenle güvenlik politikaları, alınacak önlemler ve zafiyet kaynakları belirlenirken insan faktörü ve mobil uygulamaların potansiyel açıklıkları da göz önünde bulundurulmalıdır.
Eğitimimize başlamadan önce biraz akıllı telefon dünyasından bahsedelim.

Akıllı telefon dünyası dediğimizde herkesin aklına Android ve İOS işletim sistemleri geliyor. Peki Android ve İOS işletim sisteminin bu kadar popüler kılan neydi ? bunu neden bu kadar öne çıkardı tüketiciler? birazda bundan bahsedelim. Android işletim sistemine baktığımız zaman google tarafından geliştirilmiş açık kaynaklı bir işletim sistemi. açık kaynaklı olmasının yararı herkesin bunu alıp derleyip kullanabilmesidir. İOS işletim sisteminin tutmasının sebebi ise Apple’ın güzel pazarlama teknikleri ve güvenlikli olması denebilir.

2018 yılında yapılan istatiksel araştırmaya göre ;
Apple işletim sistemi veya apple’ın ürettiği İOS işletim sistemli cihazlar donanım ve yazılım olarak apple tarafından geliştirildiğinden dolayı yamaları daha bütünleşik alır. güncelleme desteğinin kesilmesi gibi bi şey söz konusu değildir. Fakat Android cihazlarda 4-5 yıllık bir telefonunuz varsa belkide şu anki yeni güncellemeleri almıyor olabilir.
Akıllı telefon alırken veya şirketiniz için telefon seçileceği zaman bu hususlara dikkat etmek gerekiyor çünkü sizin yapmadığınız her güncelleştirme belkide bir güvenlik açığı bulunduran bir versiyondur. Bu güncelleştirmeleri alamıyor olmanız sizin için büyük bir risk oluşturacaktır.
Mobil Güvenlik Nasıl Sağlanır Ve Sızma Teknikleri Nelerdir?

ANDROİD İŞLETİM SİSTEMİ

Android işletim sisteminin katmanlı bir yapısı bulunmakta, yukarıda gördüğünüz bir Android işletim sisteminin üstten görünümü.
Android işletim sistemleri, Günümüz masaüstü işletim sistemlerinde de bir derece bulunan fakat kendisini burda daha öne çıkaran Hardware Abstraction Layer dediğimiz başka bir katman daha eklediler. Bu katman aşağıda Linux çekirdeği içerisinde gördüğünüz ses , görüntü , klavye , kamera gibi çekirdek üzerinde bulunan özellikleri kullanıcının kullanımına direkt olarak sunulmuş bir ara katman olarak karşımıza çıkıyor.
Örneğin;
siz bir son kullanıcı olarak kamera fonksiyonunu kullanmak istediğinizde gördüğünüz gibi System Apps katmanında bulunan kamera uygulaması ile fotoğraf çekmek istedğinizde bu fotoğrafın çekileceği fonksyon çekirdekte neyse siz buna direkt olarak erişmiyorsunuz aradaki sanallaştırma katmanına (Hardware Abstraction Layer) iletiyorsunuz bu katman gidip çekirdekle konuşuyor ve size cevabı getiriyor.
Peki bu ayrım neden var?
Çünkü siz direkt olarak çekirdeğe erişebildiğiniz bir işletim sisteminde, çekirdek üzerinde çıkacak bir güvenlik açığı ile çekirdeğe direkt olarak müdahale edebilirsiniz. bu katmanın varlığı sizin çekirdek üzerinde direkt olarak müdahale edebilmenizi engelliyor.
Bu katmanın üzerinde de yine gördüğünüz gibi Android Runtime yani Android’in koştuğu, çalıştığı ortam ve Native C/C++ (Libraries) kütüphanelerini görüyoruz. Native denmesinin sebebi direkt olarak kendi Android uygulamalarınız içerisinde C/C++ kütüphaneleri yazarak yada yazılı olan kütüphaneleri çağırıp kullanarak bazı işlemler yapabiliyor olmanız. Yinede Android işletim sistemi Java dilinde, C/C++ ne alaka diyebilirsiniz 🙂
Performans ile alakalı işleri Java ile yapmak yerine direkt olarak C veya C++ kütüphaneleri üzerinde yapılırsa en azından performans gerektiren uygulamaları yavaşlatmamış oluyorsunuz. Çünkü günümüzde hız çok önemli birşey.
Android Runtime katmanından biraz daha bahsetmek gerekirse şöyle özetleyebilirim;
Siz bir Android uygulama geliştirip bir kod yazdığınız zaman veya derlediğinizde işletim sistemi derlenmiş Android kodu Android Runtime içerisinde çalışıyor. Bu katmanın üzerinde ise Java Framework bulunuyor. Google işletim sisteminin, uygulamalarının yazılacağı dil olarak Java’yı kullanıyor.
Java Framework içerisinde de Content Providers veya Manager’ ın altında bulunan aktive , lokasyon gibi birçok bileşen bulunmakta. Bunları Google Java Framework üzerinden size belirli kütüphaneleri sağlıyor sizde bu kütüphaneleri, fonksiyonları kullanarak Java diliyle geliştirdiğiniz uygulamaları daha sonradan markete koyarak uygulamalarınızı yayınlamış oluyorsunuz.
System Apps katmanı ise sizin gerek Native C/C++ kütüphanleri ile yazıp geliştirdiğiniz gerek Java Framework kullanark geliştirdiğiniz uygulamaların çalıştığı katmadır. bunlar tamamen günlük hayatta kullandığımız uygulamalardır. Fakat unutmamak gerekir ki bu katmanlarda çalışan uygulamaların hepsi Android Runtime içerisinde çalışıyor.
Android, çeşitli çekirdek işlemleri (güvenlik, bellek yönetimi, ağ yönetimi, sürücü modeli) için Linux 2.6 versiyonunu kullanır. Kernel, donanım ile yazılım arasında soyut bir katman olarak yer alır.
Neden Linux Çekirdeği Kullanılıyor?
Linux Kernel kullanılmasındaki temel neden kullanıcı tabanlı izin modeli ve Inter process communication (IPC) arası iletişim özellikleridir.
Inter process communication (IPC) Nedir?
Bilgisayar bilimlerinde süreçler arası iletişim (Inter Process Communication) veya işlemler arası iletişim (IPC), bir işletim sistemde işlemlerin birbiri ile haberleşmesi ve paylğaşılan verilerin yönetilmesine izin verildiği teknolojiyi tanımlamaktadır.
Linux işletim sisteminde kullanıcı tabanlı izin modeli ne işe yarıyor?
Telefonunuza yüklediğiniz galeri yetkisi almayan bir uygulamanızın galerinizdeki fotoğrafları çalıp internete yüklememesini garanti eden özelliktir.
Android Runtime
Java programlama dilinde olan birçok fonksiyonel özellik Androidde de mevcuttur.
Her Android uygulaması, kendi sürecinde ve kendi Dalvik sanal makinesi örneğinde çalışır. Dalvik sanal makinesi sayesinde çok sayıda sanal makine birlikte çalışabilir. Dalvik sanal makinası programları Dalvik Executable (.dex) formatında çalıştırır ve çok az iz bırakma optimizasyonu sağlar. Sanal makine kayıt bazlıdır ve sınınfları Java dili derleyicisinde çalıştırır ve .dex formatına dönüştürülür.
Android Uygulama Arayüzü
Uygulama geliştiricileri, çeşitli uygulamalar tarafından kullanılan APIye full erişim hakkına sahiptir. Bu tip bir mimari, içeriklerin yeniden kullanılması için tasarlanmıştır, herhangi bir uygulama kendi yeteneklerini yayınlayabilir ve bu yetenekler diğer uygulamalar tarafından kullanılabilir. Böyle bir yapı sayesinde kullanıcılar, içerikleri istedikleri gibi değiştirebilirler.
Uygulama geliştirilirken, geniş ve zengin Views kullanılır. Bu yapı, listeleri, textleri, butonları hatta gömülü web tarayıcısını içerir.
aşağıda verilen uygulamaların hepsi, sistem ve servis kümesi olup Android de yer almaktadır.
Content Providers, uygulamaların birbirlerinin verilerine erişmelerini ve verilerinin paylaşmalarını izin verir.
Resource Manager, kodlama gerekmeyen verilere erişim sağlar.
Notification Manager,status barda tüm uygulamaların uyarılarının gözükmesini sağlar.
Activity Manager,uygulamaların yaşam döngüsünü yönetir ve navigasyon sağlar.

İOS İŞLETİM SİSTEMİ
Android işletim sisteminde olduğu gibi İOS işletim sisteminde de katmanlı bir yapı bulunmaktadır.

iOS işletim sistemi mimarisini incelediğimiz zaman 4 katmandan oluşmaktadır.
Core OS Katmanı
Core OS katmanında bulunan teknolojiler ve frameworkler; donanım ve network (ağ) ile alakalı alt seviye (low level) servisler sunar. Bu servisler Kernel ve cihaz sürücü katmanlarında yer alır.

Core OS Katmanınında bulunan teknolojiler aşağıdaki gibidir:
Gatekeeper
Kullanıcıların App Store’da yayınlanan uygulamalar haricinde uygulama yüklemesini engeller. Sadece geçerli geliştirici kimliği (Developer ID) ile imzalanmış uygulamaların indirilebilmesini sağlar.
App Sandbox
Zararlı bir kod uygulamanızı ihlal ettiği durumda devreye giren verilerinizin çalınmasını, silinmesini ve bozulmasını önleyen son savunma hattı App Sandbox’dır.
App Sandbox uygulamanızın işletim sistemi ile nasıl etkileşim halinde olacağını tanımlar. Böylece sistem uygulamanın sadece ihtiyaç duyduğu özelliklere erişim verir.
Code Signing
Apple code signing (kod imzalama) teknolojisi ile uygulamanın kimin tarafından oluşturulduğunu sertifikalar. Bir uygulama kod imzalı olduktan sonra; sistem uygulamaya yapılan değişiklikleri tespit edebilir. Böylece uygulamada ki değişikliğin zararlı bir kod ya da hata ile mi gerçekleştiği anlaşılır.
Core OS Frameworkleri
Aşağıdaki teknoloji ve frameworkler Core OS katmanında yer almaktadır:
Accelerate
Accelerate framework komplike işlemleri hızlandırmaya sağlayan API’ları(Application Programming Interface) bulundurur ve performansı arttırır. Donanım tabanlı vektör birimler kullanılarak veri paralelliğini hızlandırarak uygulama performansı yükseltilir. Böylelikler 3D grafik gösterimi, görüntü işleme, ses sıkıştırma ve yazılım tabanlı iletişim hızlanır.
Disk Arbitration
Disk Arbitration framework bildirimlerin hayat döngüsünü ve durumunu kontrol eder.
OpenCL
OpenCL (Open Computing Language) ekran kartının yüksek performans paralel işlem gücünü genel hesaplama işlemleri için kullanılmasını sağlar. Sinyal işleme, görüntü manipülasyonu ve çok boyutlu dizi üzerinde işlemler yapmak için kullanılır.
Open Directory (Directory Services)
Network ve yerel cihaz veri tabanında bulunan bilgilerin/verilerin elde edilmesini sağlayan dizin/klasör servis mimarisidir
System Configuration
Uygulamaların ağ (network) konfigürasyonlarını sağlar ve ağa bağlanmadan önce erişilebilir olup olmadığına karar verir. Wi-fi, hotspot gibi ağlara bağlanmadan önce kullanıcı izni alınmasını yönetir. Uygulamaları ağ konfigürasyonlarında ve erişilebilirliklerinde olan değişiklikler hakkında bilgilendirir.
Core Services Katmanı
Bu katmanda bulunan teknolojiler çekirdek servis olarak adlandırılır. Çünkü uygulamaların ihtiyaç duyduğu temel servisleri sağlar fakat kullanıcı ara yüzüne doğrudan bir etkisi yoktur. Çekirdek katmanı ve kernel ile bağıntılı çalışır.

Core Data
Uygulamaların veri modelini MVC (Model-View-Controller) tasarım mimarisini kullanarak yönetir. Veri yapılarını kod kullanarak oluşturmak yerine XCode içerisindeki görsel araçları kullanarak şema oluşturulması buna bir örnektir. XML’ den SQLite’a kadar farklı yapılarda verinin yerel hafıza da saklanabilmesini sağlar. İşlemi geri alma veya tekrar yapma gibi hamlelere olanak sağlar.
Core Foundation ve Foundation
2 framework’ün de temel hedefleri aynıdır.
Nesne davranışlarını, nesne sıkıştırılması, bildirimlerin tanımlanması. Nesne devamlılığını sağlamak. String, ates, data, numbers, collections gibi temel nesne tiplerini tanımlamak.
Security
Güvenlik çözümlerini basitleştirmek için yüksek seviyeli servis sağlayan frameworktür. Kodu bozmadan güvenlik önlemleri alınmasını sağlar. Certificate, key chain, key, trust services gibi özellikleri bizlere sunar.
WebKit
WebKit frameworkü uygulamanın HTML içerik göstermesine olanak sağlar. Web Core ve JavaScript Core olmak üzere 2 alt frameworkten oluşur. Web Core HTML içeriği gösterirken JavaScript Core ise javascript kodlarını çalıştırır.
Social Framework
Social frameworkü http çağrı yapısını tanımlayıp bizlere sunarak uygulamalarda sosyal ağ servislerinin entegre edilmesini sağlar. Bu framework sayesinde uygulamaya sosyal ağ hesap verilerinin çekilmesi sağlanır.
Media Katmanı
2D ve 3D grafikleri, animasyonları, görsel efektleri, yüksek kalite ses ve video özelliklerini uygulamaya entegre edilmesini sağlar. OS X 100’e yakın medya dosya tipini destekler. Bu listenin bir kısmı aşağıdaki gibidir:
Image formats | PICT, BMP, GIF, JPEG, TIFF, PNG, DIB, ICO, EPS, PDF |
Audio file and data formats | AAC, AIFF, WAVE, uLaw, AC3, MPEG-3, MPEG-4 (.mp4, .m4a), .snd, .au, .caf, Adaptive multi-rate (.amr) |
Video file formats | AVI, AVR, DV, M-JPEG, MPEG-1, MPEG-2, MPEG-4, AAC, OpenDML, 3GPP, 3GPP2, AMC, H.264, iTunes (.m4v), QuickTime (.mov, .qt) |
Web streaming protocols | HTTP, RTP, RTSP |

Core Animation
Komplike 2D render ve animasyon için kullanılan Objective-C sınıflarıdır. Core Animation kullanarak basit bir pencereden, slaytta kadar kullanıcı ara yüzleri oluşturulabilir.
Core Image
Core Image uygulamaların komplex görsel davranışları yapmasını sağlayan framework’ü sunar. Kırpma, blurlama, renk efektleri, resim ve video geçiş efektleri, yüz tanıma gibi özellikleri destekler.
AV Foundation
Görsel ve işitsel medya elemanlarını oynatma, düzenleme, inceleme ve yönetme erişimlerini sağlar.
OpenGL
Endüstride sıkça kullanılan 3 boyutlu uygulamaların geliştirilmesinde büyük rol oynar. Performans ve güç gerektiren uygulamalar da genellikle oyunlarda kullanılması için tasarlanmış bir frameworktür.
Cocoa Application Katmanı
Cocoa Application katmanı uygulamanın görünümünden ve kullanıcı aksiyonlarından asıl sorumlu katmandır.

AppKit
Cocoa’nın en önemli framework’dür. Bu framework içerisindeki sınıflar pençelere, dialoglar, kontroller, menüler ve eventler gibi kullanıcı ara yüzünü tanımlar. AppKit engelliler için API sunar ve uygulamayı engellilerin kullanabileceği şekilde geliştirilmesine olanak tanır.
Bu işletim sistemindeki bazı bilgiler Apple dokümanından referans alınarak yazılmıştır. Detayla bilgi için apple dokümanını inceleyebilirsiniz.
Mobil Güvenlik Nasıl sağlanır Ve Sızma Teknikleri Nelerdir?
ANDROİD/İOS ANALİZ ARAÇLARI
ÖNEMLİ OLAN ARAÇLAR DEĞİL ONLARLA NE YAPTIĞINIZDIR.
MERTCAN ÇOŞKUNER
ANDROİD ANALİZ ARAÇLARI
- apktool : https://ibotpeaches.github.io/Apktool/
- dex2jar : https://sourceforge.net/projects/dex2jar/
- burp : https://portswigger.net/burp
- API 23,24 x86 sanal telefon : https://developer.android.com/studio
- Mobsf : https://github.com/MobSF/Mobile-Security-Framework-MobSF
- Android Debug Bride (ADB)
Analiz araçları ile ilgili detaylı anlatımı bir başka yazımda anlatacağım.
İOS ANALİZ ARAÇLARI
- XCode command line tools : xcode-select –install
- Cydia Impactor : http://www.cydiaimpactor.com/
- burp : https://portswigger.net/burp
- jailbreak desteği olan bir iphone : https://canijailbreak.com/
Android için analiz ekranı kurulumunu, uygulama analizini anlatmamı istiyorsanız yorumlarda belirtin. Owasp Mobil Top 10 adlı yazıma bu linkten ulaşabilirsiniz.
Eğitimimiz burada son bulmuştur, umarım sizlere bir şeyler katabilmişimdir. Sorularınızı ve yorumlarınızı bekliyorum, sağlıcakla kalın 🙂
- Epic Games’in 15 gün boyunca vereceği ücretsiz oyunlar sızdırıldı! - 16/12/2020
- Mobil Güvenlik Ve Sızma Teknikleri Nelerdir? - 15/12/2020
- Siber Terörizm - 27/10/2020