Mobil (Android) Sızma Testine Giriş

Bu yazıda Android uygulamalarda Mobil Sızma Testinde  kullanılan araçlardan bahsedeceğim. Araçlara geçmeden önce Android dünyasını tanıyalım. Android cihazlarda uygulamaların çalışabilmesi için .apk uzantılı dosyalar ile uygulamalar yüklenir ve cihazlara dağıtabilir. Günümüzde Native ve  Hybrid uygulamalardan söz edilmekte. Native uygulama dediğimiz C++ veya Java dilini temel alan Android ile yazılan uygulamalar Native fakat HTML,CSS, JavaScript tabanlı kodu yazıp bir çok platforma çıktı veren frameworkler ile geliştirildiğinde Hybrid uygulama olarak geçmektedir.

 

Şimdi gelelim sızma testine, yazılmış bir uygulama apk haline getirildikten sonra android cihazlarda çalışmaya başlar. Bu çalışan uygulamada güvenlik testlerinde kullanılan popüler araçlar vardır. Bunlardan bazılarını şimdi uygulamalı olarak gerçekleştireceğiz.

Bu araçları anlatırken kendim farklı platformlar ve işletim sistemleri kullanacağım sizde kendinize istediğiniz gibi bir test ortamı kurabilirsiniz. İster ana makineniz üzerine bu araçları kurarsınız isterseniz sanal bir cihaz üzerine kurarsınız karar sizin. Fakat bunun dışında testi gerçek bir cihaz ile yapmayacaksanız Android Emulator kurmalısınız. Ben Genymotion  kullanacağım. Genymotion üzerine istediğiniz bir cihaz kurup konfigürasyonunu yapabilirsiniz. Fakat başlangıç için benim size önerim MobSF VM 0.3 ova dosyası. MobSF VM dosyasını indirip VirtualBox ile açarak rootlu hazır bir test cihazı elde edebilirsiniz. Bu yazıda ben de onu kullanacağım.

MobSF VM imizi import edip çalıştırdığımızda böyle bir sayfa ile karşılaşıyoruz. Default parolası 1234 tür.

 

Araçları öğrenirken örnek bir apk dosyasına ihtiyacımız var. Bunun içinde InsecureBankv2 uygulamasının apk sını kullanacağız. Apk dosyasını Genymotion üzerine sürükleyerek atabilirsiniz.

Kullanılan araçların hepsini tek tek kurmaya üşenirseniz birçok aracı barındıran San Toku veya Vezir Project adlı VM leri indirip hazır olarak kullanabilirsiniz. Bu sanal makineler  Mobile Security için hazırlanmıştır.

San Toku:

Vezir Project : 

Şimdi apk dosyamızı indirdik ve Genymotion’ ın üzerine sürükleyerek apk mızı yükledik.

Şimdi Android cihazımızda uygulama dosyalarına bir göz atalım. Uygulama dosyalarını /data/data nın altında görebilmekteyiz.

   

Görüldüğü gibi veritabanı dosyaları, uygulamanın kullandığı kütüphaneler ve paylaşımlı dosyalarının klasörlerini gördük. Bunlar mobil uygulama testlerinde önemlidir.

MobSF VM i kullanmamızdaki en büyük rahatlık hazır bir test ortamı sağlamasıydı. Rootlu bir cihaz olması içinde Xposed  Modüllerinin kurulu gelmesi işimizi hızlandırıyor.

Xposed Modülleri ne işe yarar ?

Xposed Modülleri Android cihazda uygulamaları özelleştirmek değiştirmek için kullanılır. Uygulama geliştirilirken yazılan kontrollerin, izinlerin değiştirilmesine imkan verebiliyor. Mesela yukarıda gördüğümüz RootCloak modülü bir uygulama cihaz root lumu diye kontrol edip, çalışmıyorsa bu kontrolü engelleme/atlatmaya yaramaktadır ve güvenlik testleri için önemli bir yer tutmaktadır. Bunun gibi birçok modül bulunmaktadır.

1- ADB 

Simülatör (sanal cihaz) ya da bilgisayarınıza bağlı gerçek cihazınızla iletişim kurulmasını sağlar. Bu sayede bağlanılan cihazı komut satırında kullanabilir, dosya yükleyebilir, cihaz içinden dosya çekebilir, hatta uygulama içinde bulunan Activityleri çalıştırabiliriz. Temel kullanımı aşağıdaki gibidir. canyoupwnme.apk dosyasını yükledik. InsecureBankv2 uygulamasının veritabanı dosyasını çektik ve adb shell komutu ile cihazımızın komut satırına düştük. Daha detaylı adb için tıklayınız.

2- APKTool 

APKTool apk dosyalarını decompile ederek smali kodlarına dönüştürür. İndirmek için tıklayınız. Kullanımı oldukça basit aşağıdaki resimde görüldüğü üzere b parametresi ile decompile etmekte.

 

3- Dex2Jar

Adından da anlaşılacağı üzere dex dosyalarını jar dosyalarına çevirmektedir. Resimde görüldüğü üzere apk dosyamızı jar haline getirdik.

4- JD-GUI

JAR haline getirdiğimiz dosyamızı görüntülemek için kullanacağız.

5- AndroGuard 

AndroGuard python ile geliştirilen statik kod analizi  yapan bir araçtır. San Toku nun içinde kurulu olarak gelmektedir. Kendiniz indirmek isterseniz tıklayınız. Tüm parametreler ve kullanımı için tıklayınız.

 

AmdroGuard Santoku üzerinde bu şekilde çalıştırılmaktadır. İlk olarak kurulu olduğu dizine gittik ve apk dosyamızı da oraya taşıdık. ./androlyze.py -s ile çalıştırdık. İlk satırımıza  a,d,dx= AnalyzeAPK(“Insecurebankv2.apk”, decompiler=”dad”) komutunu yazarak apk dosyamızı göstererek decompile ediyoruz. Daha sonra programın parametreleri ile birçok analiz edebilmekteyiz. Resimde uygulamanın activitylerini ve izinlerini getirdik.

6- Burp Suite

Tabii ki efsane aracımız Burp Suite 🙂 Burp gelişmiş bir proxy yazılımıdır. Bunun dışında birçok teste yardımcı olmakta ve imkan tanımaktadır. Web Testlerinin olmazsa olmazı Burp Mobil testlerimizde de o kadar önemli. Şimdi Burp Suite Emulatorümüzden bağlanmayı bakalım beraber.

  

Ayarlara ( Settings) e girerek daha sonra Wi-Fi ye tıklayarak WiredSSID nin üzerine basılı tutarak Modify network diyerek Proxy belirliyoruz. Burada IP adresi test yaptığınız makinenin IPsidir kendi ana makineniz ya da yukarıda bahsettiğim makinelari indirdiyseniz onun IP adresidir.

Burp Suite açarak, Proxy’e tıklayıp, oradan Options sekmesine gelip, Add e basıyoruz ve resimdeki gibi kendi IP adresinizi ve port numaranızı giriyorsunuz.

Artık Burp Suite hazır mobil testimizde kullanabilirsiniz. Resimde gördüğünüz gibi emulatordeki isteği yakalamakta.

7- Sqlite Veritabanı incelemede Sqlite Browser ve Sqlite3 Kullanımı

Uygulamayı cihazımıza aktardıktan sonra veritabanı dosyalarını yukarıda ADB ile kendi bilgisayarımıza indirmiştik. Bu database dosyalarının içeriğini Sqlite Browser ile görüntüleyebiliriz. Bunun dışında da Sqlite3 ile veritabanını seçerek sorgular yazıp bununla da görüntüleyebilmekteyiz.

Bilgisayarımıza indirdiğimiz database dosyasının Sqlite Brower ile incelenmesi yukarıdaki gibidir. Grafiksel arayüzü vardır ve oldukça kolay bir kullanıma sahiptir.

sqlite3 de ise consol üzerinden işlem yapılmaktadır. Boşluk bırakıp database dosyamızı vererek çalıştırıyoruz. Daha sonra .tables sorgusu ile veritabanı tablolarını getirebiliriz. Seçilen tabloda istediğimiz gibi sorgular çalıştrabilmekteyiz. Database dosyası şimdilik boş olduğu için hiç bir names tablosundan veri gelmedi.

8- AndroBugs Framework

AndroBugs Framework, Android uygulamalarda güvenlik testi gerçekleştiren frameworklerden bir tanesidir. Buraya tıklayarak kaynak kodlarına ve buradan da sitesine ulaşabilirsiniz.

Kullanımı oldukça basittir. Konsol üzerinden biz androbugs -f apk_dosyasi şeklinde kullanarak frameworkumuzu çalıştırdık. Bunun sonucunda kendi klasörünün altında Reports klasörünün altında detaylı rapor oluşturmaktadır.

9- Mobile Security Framework (MobSF) 

AndroBugs gibi  MobSF de mobil uygulama analizi yapan bir frameworktur. Şu an en kullanışlı ve sağlam araç denebilir. Oldukça popüler ve güzel bir araçtır. Yazının başında da zaten MobSF in Android Ova sını kullanmıştık. Buraya tıklayarak MobSF in Github sayfasına ulaşabilirsiniz. MobSF i indirdikten sonra Windows, Linux ve OSX e kurabilirsiniz. Kurulum dökümantasyonu için tıklayınız. Kurduktan sonra localhostunuzda tarayıcıda çalışmakta ve apk dosyasını seçerek direk çalışmakta. Oldukça basit bir kullanımı vardır. Adres olarak 127.0.0.1:8000 adresinde çalışmaktadır.

Kurduktan sonra açılışta önümüze gelen MobSF giriş sayfası budur. Bizden analiz edilecek uygulamamızı istemekte.

Uygulamayı verdikten sonra analize başlıyor ve bittiğinde önümüze sonuçları getiriyor.

 

10- Drozer 

Drozerda mobil testlerde kullanılan dinamik analiz yapan bir frameworktur. Uygulama çalışırken test etme imkanı verir. Diğer AndroBugs ve MobSF de ise statik analizi yaptık fakat uygulama çalışmıyordu. Drozer’da uygulama çalışırken testlerimizi gerçekleştiriyoruz. Drozer’ı kendi test pc nize kurduktan sonra aynı zamanda emulatordeki mobil cihaza da yükleyerek birbirleri ile haberleşmesini sağlıyoruz. Buraya tıklayarak kaynak kodlarına ve kurulumuna ulaşabilirsiniz. Kendi test pc nize drozeri kurduktan sonra agent.apk yı emulatore atmayı unutmayınız. Bunu ister sürükle bırak ile istersenizde adb. install agent.apk komutu ile yapabilirsiniz. Yükledikten sonra agent.apk yı emulatorde açarak off dan on a alınız. Daha sonra kurulum sayfasında gösterdiği gibi adb  forward tcp:31415 tcp:31415 komutunu verip drozer console connect diyerek drozerin komut satırına düşebilirsiniz.

run app.package.list -f insecurebank komutu ile kurulu paketler arasında adı insecurebank olan paketi arıyoruz.

Yukarıdaki resimlerde gördüğünüz run app.package.info -a  com.android.insecurebankv2 komutu ile paket bilgilerini getirdik. Bulunduğu dizin, izinleri gibi bilgiler geldi.

Gördüğünüz gibi drozer çok gelişmiş bir araç. Birçok modülü ve komutu var. Bunların tamamına buraya tıklayarak ulaşabilirsiniz.

Mobil (Android) sızma testi hakkında elimden geldiğince temel bilgiler vermeye, en çok kullanılan 10 aracı size tanıtmaya ve temel kullanımını anlatmaya çalıştım. Mobil güvenlik ve diğer birçok aracın tam listesine https://mobilesecuritywiki.com/ adresinden ulaşabilirsiniz.

 

Bonus:

Şimdi yukarıda örnek olarak Insecurebankv2 uygulamasını baz aldık ve her araçta bunu çalıştırdık. Bu çalışmalar sırasında birçok bilgi edindik. AndroGuard ile activityleri getirdiğimizde tüm aktivityleri gördük. Burada com.android.insecurebankv2.PostLogin adındaki activity dikkatimizi çekti. Bunu direk çalıştırdığımızda bize girişte sorulan username ve password kısmını geçerek uygulama bizi karşılayacaktır.

Drozer in komut satırında run app.activity.start –component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin komutunu çalıştırdığımızda dediğimiz işlemi gerçekleştirmiş oluyoruz.

Evet gördüğünüz üzere login ekranını geçerek uygulamamız açıldı. Fakat uygulama cihazın rootlu olup olmadığını kontrol ediyormuş ve bizim cihazımızı yakaladı. Rootlu olarak bunun için yazının başında bahsettiğim Xpossed modüllerinden RootCloak ı kullanacağız.

Buradan Add/Remove Apps diyerek Insecurebankv2 uygulamasını seçmemiz gerekmekte.

Ve uygulamamızı bi daha açtığımızda gördüğünüz gibi Cihaz Rootlu değil diyor yani bypasslamış olduk.

Bu activity i drozer ile çalıştırdığımız gibi ADB  ile de çalıştırabiliriz. adb.exe shell am start -n  com.android.insecurebankv2/com.android.insecurebankv2.PostLogin komutu ile aynı işlemi gerçekleştirebiliyoruz.

Araçlar genel olrak bunlar daha fazla örnek ve uygulama için Mobil Sızma Testi dökümanıma göz atabilirsiniz.

Başka bir yazıda görüşmek üzere 🙂

Mobil Sızma Testi ile ilgili  her soruma bıkmadan  cevap veren dostum Hakan Eryavuz‘a çok teşekkür ederim.

Ahmet Gürel

Cyber Security Researcher | Penetration Tester

1 Comment

  1. murat demir Reply to murat

    Öncelikle makale için çok teşekkürler kısa bir süre önce web app pentestten sonra işin mobil kısmına yönelmeye karar verdim genymotion üzerinde elimden geldiği kadar kendimi geliştirmeye çalışıyorum ancak drozer aracına windows terminal üzerinden bağlanmaya çalıştığımda şöylebir hata alıyorum

    Traceback (most recent call last):
    File “drozer”, line 30, in
    __import__(“drozer.cli.%s” % (sys.argv[1]))
    ImportError: No module named drozer.cli.console

    bu sorunu nasıl çözebilirim teşekkürler.

Leave a Reply