Image 165
Android Uygulama Güvenliği: Pentest Ortamı ve Araçlar


Herkese merhaba,

Mobil uygulamaların güvenliği günümüzde büyük bir endişe kaynağı haline geldi. Bu alandaki güvenlik zafiyetlerinin tespit edilmesi ve çözülmesi gün geçtikçe daha fazla önem kazanıyor. Özellikle Android mobil uygulamalar, milyonlarca kullanıcıya hizmet verirken aynı zamanda siber tehditlere karşı da savunmasız hale gelebiliyor. Bu yazıda, Android uygulamalarda güvenlik açıklarını bulma ve değerlendirme sürecinde kullanılan temel pentest araçlarına odaklanacağız. Pentest araçları, hem geliştiricilerin hem de güvenlik uzmanlarının, potansiyel riskleri belirlemesinde ve uygulama güvenliğini sağlamasında büyük bir rol oynuyor. Şimdi, Android uygulamalarda pentest için kullanılan bu araçları ve ortamı giriş seviyesinde inceleyelim.

Pentest Ortamı ve Araçlar

Temel Kavramlar

Apk

Android uygulamaları yüklemek ve dağıtmak için kullanılan bir dosya formatıdır. apk dosyalarını rar/zip dosyası gibi açabiliriz. Örnek bir apk dosyasının uzantısını zip olarak değiştirdikten sonra içeriği aşağıdaki gibi gözükecektir.

Şekil 1. Apk paket içeriği

Dex

Uygulama kodları derlendikten sonra .class dosyaları haline getiriliyor. .class dosyalarının ART (Android Run Time) tarafından kullanılabilmesi için .dex formatına dönüştürülmeleri gerekmektedir. dex dosyaları içerisinde dalvik byte kodları bulunuyor.

.smali

dex dosyalarında bulunan byte kodların daha okunabilir bir hale getirilmesini sağlar.

int x = 42          // java kodu
13 00 2A 00        // hex kod
const/16 v0, 42    // smali

jks

Android uygulamalarını tekrar imzalamak için kullanılacak dosyadır.

cer/crt

Android cihazlarda kurulacak sertifika dosyalarıdır.

Pentest Araçları

cmd

Windows işletim sistemlerinde kullanılan bir komut satırı arayüzüdür.

adb

Android cihaz veya emulator ile iletişim kurmamızı sağlayan çok yönlü bir komut satırı aracıdır.

…\sdk\platform-tools altında adb.exe olarak bulunur.

apktool

Apktool, Android apk dosyalarını recompile, decompile etmek için kullanılan bir araç.

https://bitbucket.org/iBotPeaches/apktool/downloads/

apksigner

Değişiklik yaptığımız apk dosyasını imzalamak için kullanılır.

JADX

Dex dosyalarının java dosyalarına dönüştürülmesinde kullanılan bir araç. apk dosyasını doğrudan bu araçta açarak kodları inceleyebiliriz.

https://github.com/skylot/jadx

CyberChef

Şifreleme işlemleri, sıkıştırma, decimal/ascii/hex dönüştürücü gibi birçok özelliği bulunan ve bu işlemleri bir arada yapmaya olanak sağlayan bir web uygulaması. Aşağıdaki adresten indirebilirsiniz.

https://icyberchef.com/

Frida

Bypass/Hook işlemleri için kullanılan bir araç. Yazdığımız script’ler ile çalışma anında kodları manipüle etmemize imkan sağlıyor. Dinamik analiz sırasında sıkça kullanılır. Aşağıdaki linkten detaylara bakabilirsiniz.

https://frida.re/

Frida’yı kullanabilmek için hem bilgisayarımızda hem de hedef cihazda bazı kurulumlar ve ayarlamalar yapmamız gerekecek. Öncelikle bilgisayara frida’yı kuralım.

Aşağıdaki komutu cmd ekranında çalıştıralım. pip kullanımı için bilgisayarınızda python kurulu olduğuna emin olun.

pip install frida-tools frida

Bilgisayar için kurulum işlemi bu kadar. Şimdi cihaz/emulator için kurulumları tamamlayalım. Öncelikle cihaz/emulator işlemcisine uygun frida-server dosyasını aşağıdaki linkten indirelim.

https://github.com/frida/frida/releases

Cihaz ayarları telefon hakkında bölümünden cihazınızın işlemci türünü öğrenebilirsiniz. Ayrıca aşağıdaki komutu da kullanabilirsiniz.

adb shell getprop ro.product.cpu.abi

İndirilen dosyayı cihazda/emulatorde /tmp dizinine atacağız ve çalıştıracağız.

adb push ..\frida\frida-server-16.1.5-android-x86_64 /data/local/tmp
adb shell
su
chmod +x /data/local/tmp/frida-server-16.1.5-android-x86_64
/data/local/tmp/frida-server-16.1.5-android-x86_64

Artık frida’yı kullanabiliriz.

Frida, hooking için Java Script API sunuyor. Yazılan JS kodları frida-server tarafından runtime anında ilgili process’e enjekte ediliyor. Böylelikle ilgili metodu hem analiz hem manipüle edebiliyoruz. Hook gerçekleştireceğimiz uygulamayı açtıktan sonra aşağıdaki komutu düzenleyerek çalıştırabiliriz.

frida -U -l ’hook_script_dosyası.js’ ‘process_adı’

Android Cihaz

Çalışmaları gerçekleştirebileceğimiz bir Android cihazımızın olması gerekiyor. Emulator veya gerçek cihaz kullanabiliriz. Bu cihazların root’lu olması gerekiyor.

Burp Suite

Web proxy sunucusu işlevi gören bir pentest aracı. OSI referans modelinde uygulama katmanında çalışır. Network trafiğini incelemek için kullanılan bir araç. Aşağıdaki linkten indirebilirsiniz.

https://portswigger.net/burp

Bilgisayarda burp kurulumunu ve ayarları tamamlayalım. Trafiği dinleyebilmek için proxy ayarlarının yapılması gerekiyor. Burp açıldıktan sonra Proxy -> Proxy Settings adımlarıyla ilerleyelim ve IP – port ayarlarını yapalım. Burada port alanına dinlemek istediğimiz port numarasını yazalım. Örn. 8081. Bu port numarasını Android cihazımızda proxy ayarlarında kulllanacağız. Bind to address -> All interface seçelim. Şekil 2’de ip ve port ayarlarının nasıl yapıldığını görebilirsiniz.

Şekil 2. Burp Suite IP/Port ayarları

Android cihazın proxy ayarlarında kullanacağımız için bilgisayarın Ip adresine bakalım. cmd ekranında ipconfig yazarak ip bilgisini öğrenebilirsiniz. Bilgisayar tarafında ayarlarımız bu kadar. Bilgisayar ve android cihazın aynı ağda olduğundan emin olun.Şimdi Android cihazdaki ayarlamaları yapalım.

Arayüzler cihaz ve versionlara göre farklılık gösterebilir ama yapılan işlemler hepsinde aynı olacaktır.

Wifi ayarları ekranında düzenlemeyi açalım ve aşağıdaki bilgileri dolduralım.

  • Proxy -> Manual
  • Proxy Hostname ->192.168.1.39 (bilgisayarın ip adresi)
  • Proxy Port -> 8081 (Burp Suite proxy ayarlarında yazdığımız port numarası)

Proxy ayarlarını yaptıktan sonra wifi kapat/aç yapalım. Daha sonra tarayıcıda http://burp adresine gidelim.

CA Certificate’ butonuna basarak sertifikayı indirelim. Şekil 3’te sertifika kurulum adımlarını görebilirsiniz.

Şekil 3. Sertifika kurulum adımları

İndirilen sertifikanın uzantısını .cer veya .crt olarak değiştirelim ve sertifikayı kuralım. 

Sertifikayı kurduktan sonra tarayıcıda “android” anahtar kelimesini aratalım. Bilgisayarımızda Burp Suite arayüzünde cihazın network tarfiğini artık görebiliyorsak kurulumları başarıyla tamamlamış demektir. Şekil 4’te ağ trafiğinin içeriğini görebilirsiniz.

Şekil 4. Ağ trafiğinin incelenmesi

Ghidra

NSA tarafında geliştirilen ücretsiz, açık kaynak tersine mühendislik disassembler aracı. Binary kodları analiz etmek için kullanılır.  Biz android uygulamalarda yüklenen native kütüphaneleri analiz etmek için kullanacağız. Herhangi bir kurulum yok. Doğrudan dosyayı çalıştırmak yeterli olacaktır. Aşağıdaki linkten indirebilirsiniz.

https://ghidra-sre.org/

Şekil 5’te Ghidra arayüzünü görebilirsiniz.

Şekil 5. Ghidra arayüzü

Ghidra ile benzer amaçlar için kullanılan bir başka araç ise ücretli IDA Pro (https://hex-rays.com/ida-pro/). Göz atmak isteyebilirsiniz.

Tablo 1’de pentest araçlarını ve özelliklerini özet olarak görebilirsiniz.

Araç Özellik
cmd Komut arayüzü
adb Cihaz üzerinde işlem yapılması için gerekli komut satırı aracı
apktool Decompile/Recompile aracı
apksigner Apk imzalama aracı
JADX Kaynak kodu java formatında gösteren araç
CyberChef Hex/ascii dönüştürücü, şifreleme vb. işlemler için kullanılan araç
Frida Dinamik analiz için kullanılan bypass/hook aracı
Burp Suite Ağ trafiğini dinlemek için kullanılan araç
Ghidra Disassembler aracı
Tablo 1. Pentest araçları

Sonuç

Android uygulamaların pentest ortamı hakkında temel seviyede bilgi sahibi olduk. Temel seviyede ele aldığımız pentest araçları, uygulama güvenliğini sağlama yolculuğunda ilk adımları atmak için önemli bir başlangıç noktası sunuyor. Uygulama güvenliğini artırmak için, bu araçlar sayesinde geliştiriciler, erken aşamalardan itibaren potansiyel riskleri tespit edebilir ve bu zayıf noktaları güçlendirecek önlemler alabilirler. Bu araçların örnek uygulama üzerinde kullanımını daha detaylı incelemek isterseniz aşağıdaki linki ziyaret edebilirsiniz.

Kaynakça

Ahmet Çalışkan
Temmuz 16 , 2024
Diğer Blog İçerikleri