Mobil Güvenlik Ve Sızma Teknikleri

ibrahimcanerdogan
3 min readSep 18, 2023

--

Photo by Privecstasy on Unsplash

OWASP Top 10

Improper Platform Usage

Yanlış ya da doğru olmayan platform kullanımıdır. minSdkVersion değerine dikkat et bu değer önceki sürümlerdeki güvenlik açığını da beraberinde getirir. Exported=”true” değeri veya izinlerin toplu alınması gibi güvenlik açıklarına dikkat edilmesi gerekmektedir.

Insecure Data Storage

Güvenli olmayan veri tutulması güvenlik açığı olarak görülmektedir. Her uygulamanın kendi klasörü vardır. Kişisel verilerin bu klasörlere yazılması veri ihlaline yol açmaktadır.

Insecure Communication

Tamamen “http” olarak giden “https” olmayan bağlantıları kapsamaktadır. Uygulama içerisinde http açılmaması ve açıldığı durumda kontrollü gidilmesi ve kontrol edilmesi gerekmektedir.

Insecure Authentication

Güvensiz kimlik doğrulama işlemleri güvenlik açığı olarak listelenmektedir. Kullanıcının verilerinin arka tarafta sunucuya giderken ortaya çıkan güvenlik problemidir. Web ve mobil ortak olduğunda kimlik doğrulaması gerektiren ve gerektirmeyen işlemler ortak olmalıdır. Aynı işlemler kimlik gerekliliği açısından da aynı olması gerekmektedir.

Insufficient Cryptography

Yetersiz kriptografik algoritmalar olarak karşımıza çıkmaktadır. Statik olarak tutulan anahtar değerleri veya zayıf olarak kurulan algoritmaları kapsamaktadır. Projenin içinde anahtarların tutulması bu kapsamda incelenen bir açıktır.

Insecure Authorization

Mobil uygulamada kimlik doğrulandığında yapılan aksiyonlar web üzerinde yönetici düzeyinde açılabilmektedir. Bu durum web ve mobil servislerinin ayrı olması ancak kimlik doğrulamasının doğru yapılmasından ziyade yetkilendirmelerdeki farklılıklardır. İstekler manipüle edilebilmektedir. Yetkilendirme konusunda güvenlik açıkları bu kapsamda incelenmektedir.

Client Code Quality

Kullanıcı adı, parola, key değerleri projeye gömüldüğünde son kullanıcıya gönderilen “apk” ve “ipa” dosyalarının içinin açılıp bakılarak görülebildiğini bilmemiz gerekmektedir.

Code Tampering

Kodların baypass ederek içerisindeki “reklam özelliği”, “puan” gibi özelliklerin değiştirilmesi kullanılması ve yeniden imzalanması ile birlikte imzalanmış yeni bir apk üretilebilmektedir. Bu şekilde güvenlik önlemlerinin alınması gerekmektedir. Spotify, reklamların kapatılmasının saldırganlar tarafından kapatılması ile savaşmaktadır.

Reverse Engineering

Tersine mühendislik bir ürünün nasıl çalıştığını inceleme pratiğidir. Kaynak kodları, ipa dosyalarını inceleyerek çalışma mantığına bakılmaktadır. Yeterli zaman ve kaynağı olan kişiler tersien mühendislik ile her uygulamanın çalışma mantığını ve yapısını anlayabilmektedir. Uygulamanın korunması için “perdeleme” denilen yöntem kullanılabilmektedir. Bu yöntem değişken isimlerinin “aaa” “bbcc” gibi anlaşılmayacak ve tersine mühendislik yapan kişinin zorlanacağı yöntemleri içermektedir.

Extraneous Functionality

Fonksiyonellik en düşük güvenlik açığı olarak listelede karşımıza çıkmaktadır. Kod içerisinde kritik verilerin loglanması, fonksiyonların unutulması veya kapatılması gibi durumlar güvenlik açığına yol açmaktadır.

Photo by Fleur on Unsplash

Analiz Araçları

apktool: Dex derlenmiş ve daha sonra imzalanmış apk dosyalarının içine erişimi sağlamaktadır.

dex2jar: Dex kodunu java’ya jar olarak geri döndürmektedir.

cfr — procyon — jd-gui — jadx: Jar ile Java’ya döndürülmüş halini elde etmemizi sağlamaktadır.

Burp: Bu araç ile arkaplanda sunucu manipülasyonları gerçekleştirilebilmektedir.

x86 Sanal Telefon: Günümüzde ARM olmasına rağmen cihazların daha hızlı olması için x86 olarak tercih edilmektedir. Google API yazmayan.

MobSF: Statik ve dinamik olarak güvenlik testleri gerçekleştirmektedir. Docker ile çalışması daha iyidir.

Android Debug Bridge (ADB): Telefon içindeki işlemlerin yönetmemizi sağlayan araçtır.

Photo by Brett Jordan on Unsplash

Uygulama

Geliştirici Analizi: Geliştirici tarafından kütüphanelerin yenilenmemesi, zaafiyeti olan sürümlerin kullanılması gibi durumlar aslında konfor alanından çıkmamasından kaynaklı durumlar güvenlik açığı meydana getirmektedir.

Statik Analiz (apktool-dex2jar-cfr)

  • Hedefim Ne Hedefi belirlemek amaçtan sapmamak için çok önemlidir. Sızma testi, Tersine Mühendislik gibi hangi konuda çalışacaksa yapılacak adımlar ve adım değişmektedir.
  • API Çağrılarını Tespit Etmek Hedefe yönelik yapılan incelemeler genellikle ilginç API çağrılarının tespit edilmesine ve takibine döner. Network bağlantıları, kullanılan veritabanı ile API denilen Android özelinde kullanılan araçlara yapılan çağrıları kapsamaktadır.
  • Uygulamanın Giriş Noktalarını Bulmak Tersine mühendislikle bizi ilgilendiren kodlar çalışan ve işlevi olan kodlardır. Uygulamanın giriş noktalarını tespit etmek kod akışını çıkarmanın ilk adımı olmalıdır. Uygulama açıldığında noluyor, ne çağrılıyor, bileşenleri nedir?
  • Kodu Anlamlandırmak Obfuscation ya da decryption rutinlerini anlamlandırmak, kodları anlamlandırmak için gerekebilir. Örneğin perdeleme yönteminde verilen veri tipleri veya isimleri kağıt-kalem ile çözülmeye, ilişki kurulmaya çalışılmalıdır.

Dinamik Analiz

Statik analiz yapıldığında alınan notları canlı görmek ve mümkünse istismar etmek için kullanılan yöntemdir.

Burp, x86 Sanal Telefon, Android Debug Bridge (ADB) ile dinamik analiz gerçekleştirilmektedir.

İBRAHİM CAN ERDOĞAN

Linkedin: https://www.linkedin.com/in/ibrahimcanerdogan/

--

--

ibrahimcanerdogan
ibrahimcanerdogan

Written by ibrahimcanerdogan

Hi, My name is Ibrahim, I am developing ebebek android app within Ebebek. I publish various articles in the field of programming and self-improvement.

No responses yet