İçeriğe geçmek için "Enter"a basın

Android Nougat Uygulamalarının Trafiğini Yakalama

Google, Android 7.0 “Nougat” sürümü ile birlikte kullanıcılara güvenlik için bazı yeni özellikler sunmaya başlamıştır. Bu yeni özelllikle beraber Android 7.0 sürümünden sonraki cihazlarda uygulamalar varsayılan olarak kullanıcı sertifikalarına güvenmezler.

Bu, örneğin Burp gibi bir proxy’nin oluşturduğu CA sertifikasının cihaza kurularak uygulamanın iletişim kurduğu uç nokta ile arasında gerçekleşen trafiği durdurup inceleyemeyeceğimiz anlamına gelebilir. HTTPS ile şifreli olarak gerçekleşen iletişimi düz metin yani şifresiz bir halde görüntülemek için ise bu sertifikayı cihazımıza tanımlamamız gerekir.

Neden trafiği durdurup incelemek isteyelim?

On yıl öncesine kadar bankada bir işlem yapmak için sırada beklemek zorundaydık, ancak şimdi bankayı bizzat ziyaret etmek, sıra beklemek veya ATM’lerde bizi bekleyen tehditler yerine bankacılık işlemlerimizi interneti kullanarak yapmayı tercih ediyoruz. Ancak para söz konusu olduğunda hiçbir zaman güvende hissetmeyiz. İşte tam bu noktada kullandığımız uygulamaları bazı güvenlik kontrollerinden geçirmek isteyebiliriz. Günümüzde her şeyin bir mobil uygulamayla halledilebildiğini düşündüğümüzde aslında nedenini daha iyi anlayacak ve belki arka planda neler döndüğünü merak edeceğiz. Çoğu uygulamanın geliştirilmesi aşamasında farklı güvenlik özellikleri (örneğin SSL Pinning) kullanılıyor olsa da, bu hepsi için geçerli değildir o yüzden şimdi bir uygulamanın trafiğini nasıl inceleyebileceğimize bir göz atalım.

Peki Android 7.0 (API level 24) sonrası için geliştirilen bir uygulamanın trafiğini nasıl inceleyebiliriz?

Adım 1: Android Cihazınızın Proxy Ayarlarını Yapın

  • Cihazınızın Ayarlar kısmını açın, Kablosuz ve Ağlar > Kablosuz’a dokunun.
  • Kablosuz durumunu açık duruma getirdikten sonra bağlandığınız ağın üzerine uzun bir süre dokunun.
  • “Gelişmiş seçenekler”in yanındaki Aşağı ok’a dokunun.
  • “Proxy” bölümünün altındaki Aşağı ok’a dokunun ve Proxy yapılandırma türünü el ile seçin.
  • Burp için gerekli proxy ayarlarını girin ve Kaydet’e dokunun.

Adım 2: Burp CA Sertifikasını Android Cihazınıza Kurun

  • Bilgisayarınızdaki web tarayıcınızdaki proxy ayarlarını değiştirdikten sonra http://burp adresine gidin ve “CA Certificate” bağlantısına tıklayarak sertifika dosyasını kaydedin.
  • İndirdiğiniz dosyayının uzantısını .cer olarak değiştirdikten sonra, dosyanın son halini e-posta yoluyla Android cihazınıza gönderin. (e-posta filtrenizin .cer dosyalarını engellemediğinden emin olun)
  • E-postanızı kontrol edin ve sertifika dosyasını indirin. (Sertifika dosyası Android cihazınızın “Downloads (İndirilenler)” klasörüne kaydedilmiş olmalı)
  • Ayarlar’dan Gizlilik kısmına gidin ve Güvenlik bölümünden Sertifikaları SD Karttan Yükle veya Depolama Biriminden Yükle seçeneklerinden birine dokunun
  • Sertifikayı kaydettiğiniz alana gidin ve ve dosyaya dokunun. Daha sonra sertifika için bir isim belirleyin.
  • VPN ve Uygulamalar’ı seçip Tamam’a dokunun.

Adım 3: Uygulamanın APK Dosyasına Ulaşın

Bunun için evozi’nin sunduğu çevrimiçi APK indirici aracı kullanabilirsiniz.

Web tarayıcısı ile https://apps.evozi.com/apk-downloader/ adresine gittikten sonra tek yapmanız gereken APK dosyasına ulaşmak istediğiniz uygulamanın benzersiz paket adını veya Google Play Store’daki URL’sini karşılaştığınız metin alanına girip Generate Download Link düğmesine tıklayarak bir istekte bulunmak.

İşleminiz başarılı olursa APK dosyasının indirme linkine ulaşabilirsiniz.

Adım 4: İncelemek İstediğiniz Uygulamayı Kaynak Koduna Dönüştürün

Bu işlem için apktool aracı kullanılacaktır. Aracı sisteminize dahil etmek için Debian tabanlı Linux dağıtımlarında aşağıdaki komutu yürütebilirsiniz.

apt install apktool 

apktool aracı sisteminize kurulduktan sonra aşağıdaki komutu kullanarak indirdiğiniz uygulamayı kaynak koda dönüştürün.

apktool d {paket_adi}.apk 

Bu komut belirttiğiniz apk dosyasını paket_adi altında bir dizine açacak ve bu dizinde uygulamaya ait tüm kaynak dosyaları bulabileceksiniz.

Adım 6: Android Ağ Güvenliği Yapılandırmasını Yeniden Yapın

Şimdi asıl ihtiyacımız olan değişikleri gerçekleştirmek için apktool aracı ile dışa aktarılan kaynak dosyalarının bulunduğu dizine gidin.

Uygulama kaynaklarının olduğu res/xml dizini altında network_security_config.xml adında bir dosya ile karşılaşacaksınız. Eğer bu dosya mevcut değilse yeni bir tane oluşturabilirsiniz.

Bu dosyada yapacağınız değişiklik sayesinde analiz etmek istediğiniz uygulamanın güvenli bağlantılarda (HTTPS) hangi sertifika otoritelerine güveneceğini özelleştirmiş olacaksınız.

Dosyanın içeriği aşağıdaki şekilde olmalı ve 127.0.0.1 alanı sizin proxy (vekil) sunucunuzun adresi ile değiştirilmelidir.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    ...
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">127.0.0.1</domain>
    </domain-config>
    ...
</network-security-config>

Dosyayı kaydettikten sonra oluşturduğunuz bu yeni dosyayı uygulamanızın Android Manifest dosyasında tanımlamanız gerekir.

Bunun için manifest dosyasındaki application düğümü üzerinde aşağıdaki değişikliği yapmalısınız.

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                    ... >
        ...
    </application>
</manifest>

manifest dosyasındaki application düğümü genellikle aşağıdaki şekildedir.

<application android:name=”UygulamaAdi” 
 android:icon=”@mipmap/ic_launcher” 
 android:label=”@string/paket_adi”    
 ”>

Bu düğüme android:networkSecurityConfig=”@xml/network_security_config” ifadesini eklemeniz gerekir.

Yani bu durumda dosyanızın son hali şu şekilde olmalıdır:

<application android:name=”UygulamaAdi" 
 android:icon=”@mipmap/ic_launcher” 
 android:label=”@string/paket_adi”    
 android:networkSecurityConfig=”@xml/network_security_config”>
Not: Bu değişiklikleri herhangi bir metin düzenleyicisini kullanarak gerçekleştirebilirsiniz.

Adım 7: Uygulamayı Tekrar Derleyin

Gerekli düzenlemeleri yaptıktan ve değişiklikleri kaydettikten sonra uygulamayı tekrar APK dosyası haline getirmek yani derlemek için aşağıdaki komutu yürütün.

apktool b paket_adi

Bu aşamadan sonra bir sürpriz ile karşılaşmazsanız artık uygulamanın gerçekleştirdiği iletişimleri görüntüleyebilir ve analizlerinizi gerçekleştirebilirsiniz.

Not: Bilindiği kadarıyla kök kullanıcı (root) haklarına sahip cihazlarda ve öykünücülerde bu işlemlere ihtiyaç yoktur. Bu anlatılanlar cihazındaki trafiği normal kullanıcı olarak (rootsuz cihaz ile) dinlemek isteyenler içindir ve SSL pinning önlemini aşma aşamalarını içermez.

Referanslar:

  • https://serializethoughts.com/2016/09/10/905/
  • https://medium.com/@elye.project/android-nougat-charlesing-ssl-network-efa0951e66de
  • https://support.portswigger.net/customer/portal/articles/1841101-configuring-an-android-device-to-work-with-burp
  • https://support.portswigger.net/customer/portal/articles/1841102-Mobile%20Set-up_Android%20Device%20-%20Installing%20CA%20Certificate.html

İlk yorum yapan siz olun

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir