.. | ||
drozer-tutorial | ||
frida-tutorial | ||
adb-commands.md | ||
android-applications-basics.md | ||
android-task-hijacking.md | ||
apk-decompilers.md | ||
avd-android-virtual-device.md | ||
bypass-biometric-authentication-android.md | ||
content-protocol.md | ||
exploiting-a-debuggeable-applciation.md | ||
google-ctf-2018-shall-we-play-a-game.md | ||
install-burp-certificate.md | ||
intent-injection.md | ||
make-apk-accept-ca-certificate.md | ||
manual-deobfuscation.md | ||
react-native-application.md | ||
README.md | ||
reversing-native-libraries.md | ||
smali-changes.md | ||
spoofing-your-location-in-play-store.md | ||
tapjacking.md | ||
webview-attacks.md |
Android Uygulamaları Pentesting
Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- Bize katılın 💬 Discord grubunda veya telegram grubunda veya bizi Twitter 🐦 @carlospolopm'da takip edin.
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime girin
Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
En Son Duyurular
Başlatılan en yeni ödül avcılıkları ve önemli platform güncellemeleri hakkında bilgi sahibi olun
Bize katılın Discord ve bugün en iyi hackerlarla işbirliğine başlayın!
Android Uygulamaları Temelleri
Android güvenliği ile ilgili en önemli bölümler ve bir Android uygulamasındaki en tehlikeli bileşenler hakkında bilgi edinmek için bu sayfayı okumaya başlamanız şiddetle tavsiye edilir:
{% content-ref url="android-applications-basics.md" %} android-applications-basics.md {% endcontent-ref %}
ADB (Android Debug Köprüsü)
Bu, bir Android cihaza (emüle edilmiş veya fiziksel) bağlanmak için ihtiyacınız olan ana araçtır.
ADB, bir bilgisayardan cihazları USB veya Ağ üzerinden kontrol etmeyi sağlar. Bu yardımcı program, dosyaların iki yönde kopyalanmasını, uygulamaların kurulmasını ve kaldırılmasını, shell komutlarının çalıştırılmasını, verilerin yedeklenmesini, logların okunmasını ve diğer işlevleri etkinleştirir.
ADB'yi nasıl kullanacağınızı öğrenmek için ADB Komutları listesine göz atın.
Smali
Bazen uygulama kodunu değiştirmek ve gizli bilgilere erişmek ilginç olabilir (belki iyi gizlenmiş şifreler veya bayraklar). Sonra, apk'yı decompile etmek, kodu değiştirmek ve yeniden derlemek ilginç olabilir.
Bu öğreticide APK'yı nasıl decompile edeceğinizi, Smali kodunu nasıl değiştireceğinizi ve APK'yı nasıl yeniden derleyeceğinizi öğrenebilirsiniz. Bu, sunulacak dinamik analiz sırasında çeşitli testler için bir alternatif olarak çok yararlı olabilir. Bu nedenle, bu olasılığı her zaman akılda tutun.
Diğer ilginç püf noktalar
- Konumunuzu Play Store'da sahtecilik yapma
- APK'ları İndir: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/
- Cihazdan APK çıkarma:
adb shell pm list packages
com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
Statik Analiz
Öncelikle, bir APK'yı analiz etmek için bir decompiler kullanarak Java koduna bir göz atmalısınız.
Lütfen, farklı mevcut decompiler'lar hakkında bilgi edinmek için buraya bakın.
İlginç Bilgiler Arama
APK'nın strings'lerine bakarak şifreler, URL'ler (https://github.com/ndelphit/apkurlgrep), api anahtarları, şifreleme, bluetooth uuid'leri, token'lar ve ilginç herhangi bir şey arayabilirsiniz... hatta kod yürütme arka kapıları veya kimlik doğrulama arka kapıları (uygulamaya sabitlenmiş yönetici kimlik bilgileri) için bile bakabilirsiniz.
Firebase
Firebase URL'lerine özel dikkat gösterin ve yanlış yapılandırılmış olup olmadığını kontrol edin. Firebase nedir ve nasıl sömürüleceği hakkında daha fazla bilgi için buraya bakın.
Uygulamanın Temel Anlayışı - Manifest.xml, strings.xml
Bir uygulamanın Manifest.xml ve strings.xml dosyalarının incelenmesi potansiyel güvenlik açıklarını ortaya çıkarabilir. Bu dosyalara decompiler'lar kullanılarak veya APK dosya uzantısını .zip olarak değiştirip ardından açarak erişilebilir.
Manifest.xml'den belirlenen güvenlik açıkları şunları içerebilir:
- Hata Ayıklanabilir Uygulamalar: Manifest.xml dosyasında hata ayıklanabilir olarak ayarlanmış uygulamalar (
debuggable="true"
) bağlantılara izin vererek sömürülmeye yol açabileceği için risk oluşturur. Hata ayıklanabilir uygulamaların nasıl sömürüleceği hakkında daha fazla anlayış için cihazda hata ayıklanabilir uygulamaları bulma ve sömürme konusunda bir öğreticiye başvurun. - Yedekleme Ayarları: Hassas bilgilerle uğraşan uygulamalar için
android:allowBackup="false"
özelliği, özellikle usb hata ayıklama etkin olduğunda yetkisiz veri yedeklemelerini önlemek için açıkça belirtilmelidir. - Ağ Güvenliği: res/xml/ içindeki özel ağ güvenliği yapılandırmaları (
android:networkSecurityConfig="@xml/network_security_config"
) sertifika pinleri ve HTTP trafiği ayarları gibi güvenlik ayrıntılarını belirleyebilir. Örneğin, belirli alanlar için HTTP trafiğine izin verme. - Dışa Aktarılan Aktiviteler ve Servisler: Manifest'te dışa aktarılan aktiviteler ve servislerin belirlenmesi, yanlış kullanılabilecek bileşenleri vurgulayabilir. Dinamik test sırasında daha fazla analiz, bu bileşenlerin nasıl sömürüleceğini ortaya çıkarabilir.
- İçerik Sağlayıcılar ve Dosya Sağlayıcılar: Açık hale getirilmiş içerik sağlayıcılar, verilere yetkisiz erişime veya değişikliğe izin verebilir. Dosya sağlayıcıların yapılandırması da incelenmelidir.
- Yayın Alıcıları ve URL Şemaları: Bu bileşenler, özellikle URL şemalarının giriş açıklıkları için nasıl yönetildiğine özel dikkat gösterilerek sömürülebilir.
- SDK Sürümleri:
minSdkVersion
,targetSDKVersion
vemaxSdkVersion
özellikleri desteklenen Android sürümlerini belirtir ve güvenlik nedenleriyle güncellenmemiş, savunmasız Android sürümlerini desteklememenin önemini vurgular.
strings.xml dosyasından, API anahtarları, özel şemalar ve diğer geliştirici notları gibi hassas bilgiler keşfedilebilir, bu nedenle bu kaynakların dikkatli bir şekilde incelenmesi gereklidir.
Tapjacking
Tapjacking, bir kötü niyetli uygulamanın başlatıldığı ve bir kurban uygulamanın üzerine yerleştiği bir saldırıdır. Kurban uygulamayı açıkça gölgelediğinde, kullanıcı arayüzü, kullanıcıyı yanıltacak şekilde tasarlanmıştır ve kullanıcıyı etkileşime girmeye ikna etmek için tasarlanmıştırken, gerçekte kullanıcıyı kurban uygulamada eylemler gerçekleştirdiğini bilmemesini sağlar.
Etkisiyle, kullanıcıyı gerçekte kurban uygulamada eylemler gerçekleştirdiğini bilmekten alıkoyar.
Daha fazla bilgi için:
{% content-ref url="tapjacking.md" %} tapjacking.md {% endcontent-ref %}
Görev Kaçırma
launchMode
özelliği singleTask
olarak ayarlanmış bir aktivitenin tanımlanmamış taskAffinity
ile belirlenmemiş olması, görev Kaçırmaya karşı savunmasızdır. Bu, bir uygulamanın yüklenip gerçek uygulamadan önce başlatılabilir ve gerçek uygulamanın görevini kaçırabilir (bu nedenle kullanıcı, gerçek uygulamayı kullandığını düşünerek kötü niyetli uygulamayla etkileşimde olacaktır).
Daha fazla bilgi için:
{% content-ref url="android-task-hijacking.md" %} android-task-hijacking.md {% endcontent-ref %}
Güvensiz veri depolama
Dahili Depolama
Android'de dahili depolamada saklanan dosyaların, yalnızca onları oluşturan uygulama tarafından erişilebilir olması amaçlanmıştır. Bu güvenlik önlemi, Android işletim sistemi tarafından uygulanır ve genellikle çoğu uygulamanın güvenlik ihtiyaçları için yeterlidir. Ancak, geliştiriciler bazen dosyaların farklı uygulamalar arasında paylaşılmasına izin vermek için MODE_WORLD_READABLE
ve MODE_WORLD_WRITABLE
gibi modları kullanabilir. Bununla birlikte, bu modlar bu dosyalara diğer uygulamalar tarafından, potansiyel olarak kötü niyetli olanlar da dahil olmak üzere, erişimi kısıtlamaz.
- Statik Analiz:
MODE_WORLD_READABLE
veMODE_WORLD_WRITABLE
kullanımının dikkatlice incelendiğinden emin olun. Bu modlar, dosyaların istenmeyen veya yetkisiz erişime maruz kalabileceği anlamına gelebilir.
- Dinamik Analiz:
- Uygulama tarafından oluşturulan dosyalara ayarlanan izinleri doğrulayın. Özellikle, herhangi bir dosyanın dünya çapında okunabilir veya yazılabilir olup olmadığını kontrol edin. Bu, herhangi bir uygulamanın, kökeni veya niyeti ne olursa olsun, bu dosyaları okuyabileceği veya değiştirebileceği anlamına gelir.
Harici Depolama
Harici depolamadaki dosyalarla uğraşırken, SD Kartlar gibi, belirli önlemler alınmalıdır:
- Erişilebilirlik:
- Harici depolamadaki dosyalar genel olarak okunabilir ve yazılabilir. Bu, herhangi bir uygulamanın veya kullanıcının bu dosyalara erişebileceği anlamına gelir.
- Güvenlik Endişeleri:
- Erişimin kolaylığı göz önüne alındığında, harici depolamada hassas bilgileri saklamamak tavsiye edilir.
- Harici depolama çıkarılabilir veya herhangi bir uygulama tarafından erişilebilir olduğundan, daha az güvenlidir.
- Harici Depolamadan Veri İşleme:
- Harici depolamadan alınan veriler üzerinde giriş doğrulaması yapın. Bu, verinin güvenilir olmayan bir kaynaktan geldiği için hayati önem taşır.
- Harici depolamadan yürütülebilir dosyaları veya sınıf dosyalarını saklamak kesinlikle tavsiye edilmez.
- Uygulamanızın harici depolamadan yürütülebilir dosyalar alması gerekiyorsa, bu dosyaların imzalanmış ve kriptografik olarak doğrulanmış olduğundan emin olunmadan dinamik olarak yüklenmeden önce. Bu adım, uygulamanızın güvenlik bütünlüğünü korumak için hayati öneme sahiptir.
Harici depolama /storage/emulated/0
, /sdcard
, /mnt/sdcard
konumlarında erişilebilir olabilir.
{% hint style="info" %} Android 4.4 (API 17) ile başlayarak, SD kartın bir uygulamanın belirli olarak ayrılmış dizinine erişimi sınırlayan bir dizin yapısı vardır. Bu, kötü niyetli uygulamanın başka bir uygulamanın dosyalarına okuma veya yazma erişimi kazanmasını engeller. {% endhint %}
Açık metinde saklanan hassas veriler
- Paylaşılan tercihler: Android, her uygulamanın
/data/data/<paketadı>/shared_prefs/
yolunda kolayca xml dosyalarını kaydetmesine izin verir ve bazen bu klasörde açık metinde hassas bilgiler bulunabilir. - Veritabanları: Android, her uygulamanın
/data/data/<paketadı>/databases/
yolunda sqlite veritabanlarını kolayca kaydetmesine izin verir ve bazen bu klasörde açık metinde hassas bilgiler bulunabilir.
Kırık TLS
Tüm Sertifikaları Kabul Et
Bazen geliştiriciler, örneğin, hostname ile eşleşmese bile tüm sertifikaları kabul ederler:
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Kırık Şifreleme
Zayıf Anahtar Yönetimi Süreçleri
Bazı geliştiriciler hassas verileri yerel depolamada saklar ve kod içinde sabit/tahmin edilebilir bir anahtarla şifreler. Bu yapılmamalı çünkü bazı tersine mühendislik saldırıları saldırganların gizli bilgileri çıkarmasına izin verebilir.
Güvensiz ve/veya Kullanımdan Kaldırılmış Algoritmaların Kullanımı
Geliştiriciler, yetkilendirme kontrolleri, veri depolama veya gönderme işlemleri için kullanımdan kaldırılmış algoritmaları kullanmamalıdır. Bu algoritmalar arasında RC4, MD4, MD5, SHA1 gibi algoritmalar bulunmaktadır. Örneğin şifreleri depolamak için hash'ler kullanılıyorsa, hash'lerin tuz ile birlikte kullanılması gerekmektedir.
Diğer Kontroller
- APK'nin karıştırılması önerilir, bu, saldırganların tersine mühendislik çalışmalarını zorlaştırır.
- Uygulama hassas ise (örneğin banka uygulamaları), uygulamanın köklendirilmiş mobil cihazı kontrol etmesi ve buna göre hareket etmesi gerekmektedir.
- Uygulama hassas ise (örneğin banka uygulamaları), bir emülatörün kullanılıp kullanılmadığını kontrol etmelidir.
- Uygulama hassas ise (örneğin banka uygulamaları), uygulamanın değiştirilip değiştirilmediğini kontrol etmeden önce kendi bütünlüğünü kontrol etmesi gerekmektedir.
- APK'nin nasıl derlendiğini kontrol etmek için APKiD kullanın.
React Native Uygulaması
React uygulamalarının JavaScript kodlarına kolayca erişmek için aşağıdaki sayfayı okuyun:
{% content-ref url="react-native-application.md" %} react-native-application.md {% endcontent-ref %}
Xamarin Uygulamaları
Xamarin uygulamalarının C# kodlarına kolayca erişmek için aşağıdaki sayfayı okuyun:
{% content-ref url="../xamarin-apps.md" %} xamarin-apps.md {% endcontent-ref %}
Süper Paketlenmiş Uygulamalar
Bu blog yazısına göre, süper paketlenmiş, bir uygulamanın içeriğini tek bir dosyaya sıkıştıran bir Meta algoritmadır. Blog, bu tür uygulamaları açabilen bir uygulama oluşturma olasılığından bahseder... ve daha hızlı bir yol olan uygulamayı çalıştırarak dosya sistemindeki açılmış dosyaları toplamak.
Otomatik Statik Kod Analizi
mariana-trench aracı, uygulamanın kodunu tarayarak zayıflıkları bulma yeteneğine sahiptir. Bu araç, bilinen kaynaklar (kullanıcının girişini kontrol ettiği yerleri aracı belirten), sızıntılar (kötü niyetli kullanıcı girişinin zarar verebileceği tehlikeli yerleri belirten) ve kurallar içerir. Bu kurallar, bir zayıflığı belirten kaynak-sızıntı kombinasyonunu gösterir.
Bu bilgiyle, mariana-trench kodu inceleyecek ve olası zayıflıkları bulacaktır.
Sızan Sırlar
Bir uygulama, içinde (API anahtarları, şifreler, gizli URL'ler, alt alanlar...) keşfedebileceğiniz sırlar içerebilir. https://github.com/dwisiswant0/apkleaks gibi bir araç kullanabilirsiniz.
Biyometrik Kimlik Doğrulamasını Atlatma
{% content-ref url="bypass-biometric-authentication-android.md" %} bypass-biometric-authentication-android.md {% endcontent-ref %}
Diğer ilginç fonksiyonlar
- Kod yürütme:
Runtime.exec(), ProcessBuilder(), native code:system()
- SMS gönderme:
sendTextMessage, sendMultipartTestMessage
native
olarak tanımlanan yerel fonksiyonlar:public native, System.loadLibrary, System.load
- Yerel fonksiyonları tersine çevirmeyi öğrenmek için bunu okuyun: yerel kütüphaneleri tersine çevirme
Diğer İpuçları
{% content-ref url="content-protocol.md" %} content-protocol.md {% endcontent-ref %}
Deneyimli hackerlar ve hata avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime girin
Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
En Son Duyurular
Yeni hata avcılıklarını ve önemli platform güncellemelerini takip edin
Bize katılın Discord ve bugün en iyi hackerlarla işbirliğine başlayın!
Dinamik Analiz
İlk olarak, uygulamayı ve tüm ortamı (Burp CA sertifikası, Drozer ve Frida özellikle) yükleyebileceğiniz bir ortama ihtiyacınız var. Bu nedenle, köklendirilmiş bir cihaz (emüle edilmiş veya değil) kesinlikle önerilir.
Çevrimiçi Dinamik analiz
https://appetize.io/ adresinde ücretsiz bir hesap oluşturabilirsiniz. Bu platform, APK'leri yüklemenize ve çalıştırmanıza olanak tanır, bu nedenle bir APK'nin nasıl davrandığını görmek için faydalıdır.
Web'de uygulamanızın günlüklerini görebilir ve adb aracılığıyla bağlanabilirsiniz.
ADB bağlantısı sayesinde emülatörlerde Drozer ve Frida kullanabilirsiniz.
Yerel Dinamik Analiz
Bir emülatör kullanarak
- Android Studio (x86 ve arm cihazlar oluşturabilirsiniz ve bu son x86 sürümleri yavaş arm emülatörüne ihtiyaç duymadan ARM kütüphanelerini destekler).
- Kurulumunu öğrenmek için bu sayfaya bakın:
{% content-ref url="avd-android-virtual-device.md" %} avd-android-virtual-device.md {% endcontent-ref %}
- Genymotion (Ücretsiz sürüm: Kişisel Sürüm, bir hesap oluşturmanız gerekmektedir. Potansiyel hatalardan kaçınmak için VirtualBox'ı içeren sürümü indirmeniz önerilir.)
- Nox (Ücretsiz, ancak Frida veya Drozer'ı desteklemez).
{% hint style="info" %} Herhangi bir platformda yeni bir emülatör oluştururken, ekran ne kadar büyükse, emülatör o kadar yavaş çalışacaktır. Mümkünse küçük ekranları seçin. {% endhint %}
Genymotion'da Google hizmetlerini (AppStore gibi) kurmak için aşağıdaki resimdeki kırmızı işaretli düğmeye tıklamanız gerekmektedir:
Ayrıca, Genymotion'daki Android VM yapılandırmasında Köprü Ağ Modunu seçebilirsiniz (bu, araçlarla farklı bir VM'den Android VM'ye bağlanacaksanız faydalı olacaktır).
Fiziksel bir cihaz kullanın
Hata ayıklama seçeneklerini etkinleştirmeniz gerekiyor ve mümkünse cihazı root etmeniz iyi olur:
- Ayarlar.
- (Android 8.0'dan itibaren) Sistem'i seçin.
- Telefon Hakkında'yı seçin.
- Yapı numarasına 7 kez dokunun.
- Geri gidin ve Geliştirici seçeneklerini bulacaksınız.
Uygulamayı yükledikten sonra yapmanız gereken ilk şey, uygulamayı denemek ve ne yaptığını, nasıl çalıştığını araştırmak ve onunla rahat olmaktır.
Bu ilk dinamik analizi MobSF dinamik analiz + pidcat kullanarak yapmanızı öneririm, böylece MobSF uygulamanın nasıl çalıştığını öğrenirken birçok ilginç veriyi yakalayabilir ve daha sonra inceleyebilirsiniz.
İstenmeyen Veri Sızıntısı
Günlükleme
Geliştiricilerin, hassas veri sızıntılarına yol açabileceği için hata ayıklama bilgilerini dikkatlice açıklamamaları gerekmektedir. Uygulama günlüklerini izlemek ve hassas bilgileri tanımlamak ve korumak için pidcat ve adb logcat
araçları önerilir. Pidcat, kullanım kolaylığı ve okunabilirliği nedeniyle tercih edilir.
{% hint style="warning" %}
Android 4.0'dan daha yeni sürümlerinden itibaren, uygulamalar yalnızca kendi günlüklerine erişebilirler. Bu nedenle uygulamalar diğer uygulamaların günlüklerine erişemez.
Yine de hassas bilgileri günlükleme önerilir.
{% endhint %}
Kopyala/Yapıştır Arabelleği Önbelleği
Android'in pano tabanlı çerçevesi, uygulamalarda kopyala-yapıştır işlevselliğini etkinleştirirken, diğer uygulamaların panoya erişebilmesi riski oluşturur ve hassas verilerin açığa çıkmasına neden olabilir. Hassas bölümler için, örneğin kredi kartı bilgileri gibi, kopyala/yapıştır işlevlerini devre dışı bırakmak, veri sızıntılarını önlemek için hayati önem taşır.
Çökme Günlükleri
Bir uygulama çöktüğünde ve günlükler kaydedildiğinde, bu günlükler özellikle uygulama tersine mühendislik edilemediğinde saldırganlara yardımcı olabilir. Bu riski azaltmak için çökme durumunda günlükleme yapmaktan kaçının ve günlükler ağ üzerinden iletilmek zorunda kalırsa, güvenlik için bunların SSL kanalı üzerinden gönderildiğinden emin olun.
Pentester olarak, bu günlüklere bir göz atmayı deneyin.
Üçüncü Taraf Şirketlere Gönderilen Analiz Verileri
Uygulamalar genellikle Google Adsense gibi hizmetleri entegre eder, bu da geliştiriciler tarafından yanlış uygulama nedeniyle hassas veri sızıntılarına neden olabilir. Potansiyel veri sızıntılarını belirlemek için uygulamanın trafiğini sözde etmek ve üçüncü taraf hizmetlerine gönderilen hassas bilgileri kontrol etmek tavsiye edilir.
SQLite Veritabanları
Çoğu uygulama, bilgileri kaydetmek için dahili SQLite veritabanlarını kullanır. Pentest sırasında oluşturulan veritabanlarına, tablo ve sütun adlarına ve kaydedilen tüm verilere bir göz atın, çünkü hassas bilgiler içerebilir (bu bir zayıflık olabilir).
Veritabanları, /data/data/the.package.name/databases
gibi /data/data/com.mwr.example.sieve/databases
konumunda olmalıdır.
Eğer veritabanı gizli bilgileri kaydediyorsa ve şifreli ise ancak uygulama içinde şifreyi bulabilirseniz, bu yine de bir zayıflık olacaktır.
.tables
kullanarak tabloları sıralayın ve .schema <table_name>
yaparak tabloların sütunlarını sıralayın.
Drozer (Saldırı Faaliyetleri, İçerik Sağlayıcılar ve Hizmetler)
Drozer Belgelerinden: Drozer, bir Android uygulamasının rolünü üstlenmenizi ve diğer uygulamalarla etkileşimde bulunmanızı sağlar. Android'in İşlem Arası İletişim (IPC) mekanizmasından yararlanabilir ve altta yatan işletim sistemiyle etkileşimde bulunabilir.
Drozer, dışa aktarılan faaliyetleri, dışa aktarılan hizmetleri ve İçerik Sağlayıcıları sömürmek için kullanışlı bir araçtır, bu konuları aşağıdaki bölümlerde öğreneceksiniz.
Dışa Aktarılan Faaliyetleri Sömürme
Bir Android Faaliyetinin ne olduğunu hatırlamak istiyorsanız burayı okuyun.
Ayrıca bir faaliyetin kodu onCreate
yönteminde başlar.
Yetkilendirme atlatma
Bir Faaliyet dışa aktarıldığında, harici bir uygulamadan ekranını çağırabilirsiniz. Bu nedenle, hassas bilgiler içeren bir faaliyet dışa aktarıldığında, kimlik doğrulama mekanizmalarını atlayarak ona erişebilirsiniz.
Drozer ile dışa aktarılan faaliyetleri nasıl sömüreceğinizi öğrenmek için burayı okuyun.
Ayrıca adb'den dışa aktarılan bir faaliyeti başlatabilirsiniz:
- Paket Adı com.example.demo
- Dışa Aktarılan Faaliyet Adı com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
NOT: MobSF, bir aktivitede android:launchMode
olarak singleTask/singleInstance kullanımını kötü niyetli olarak algılayacaktır, ancak bu nedeniyle, bu eski sürümlerde (API sürümleri < 21) yalnızca tehlikeli olduğu görünmektedir.
{% hint style="info" %} Bir yetkilendirme atlatma her zaman bir zafiyet olmayabilir, atlatmanın nasıl çalıştığına ve hangi bilgilerin açığa çıktığına bağlı olacaktır. {% endhint %}
Hassas bilgi sızıntısı
Aktiviteler ayrıca sonuçlar döndürebilir. Eğer dışa aktarılmış ve korumasız bir aktivite bulursanız ve setResult
yöntemini çağırarak hassas bilgileri döndürüyorsa, bu bir hassas bilgi sızıntısıdır.
Tapjacking
Eğer tapjacking engellenmezse, dışa aktarılmış aktiviteyi kötüye kullanarak kullanıcının beklenmeyen eylemler gerçekleştirmesini sağlayabilirsiniz. Tapjacking nedir hakkında daha fazla bilgi için bağlantıyı takip edin.
İçerik Sağlayıcıları Sömürme - Hassas bilgilere erişme ve manipüle etme
Bir İçerik Sağlayıcının ne olduğunu tazelemek istiyorsanız burayı okuyun.
İçerik sağlayıcıları temelde veri paylaşımı için kullanılır. Bir uygulamanın mevcut içerik sağlayıcıları varsa, bunlardan hassas verileri çıkarabilirsiniz. Ayrıca mümkün SQL enjeksiyonları ve Yol Geçişleri test etmek de ilginç olabilir çünkü bunlar savunmasız olabilir.
Drozer ile İçerik Sağlayıcılarını nasıl sömürüleceğini öğrenin.
Hizmetleri Sömürme
Bir Hizmetin ne olduğunu tazelemek istiyorsanız burayı okuyun.
Bir hizmet, temelde veri alabilen, işleyebilen ve yanıt döndürebilen bir şeydir (veya döndürmeyebilir). Dolayısıyla, bir uygulama bazı hizmetleri dışa aktarıyorsa, ne yaptığını anlamak için kodu kontrol etmeli ve gizli bilgileri çıkarmak, kimlik doğrulama önlemlerini atlatmak için dinamik olarak test etmelisiniz...
Hizmetleri Drozer ile nasıl sömüreceğinizi öğrenin.
Yayın Alıcıları Sömürme
Bir Yayın Alıcısının ne olduğunu tazelemek istiyorsanız burayı okuyun.
Bir yayın alıcısı belirli bir türdeki mesajı bekleyecektir. Alıcı mesajı nasıl işlediğine bağlı olarak savunmasız olabilir.
Yayın Alıcılarını Drozer ile nasıl sömüreceğinizi öğrenin.
Şemaları / Derin bağlantıları Sömürme
Derin bağlantıları MobSF gibi araçlar veya bu gibi betikler kullanarak manuel olarak arayabilirsiniz.
Bir belirtilen şemayı adb veya bir tarayıcı kullanarak açabilirsiniz:
{% code overflow="wrap" %}
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
{% endcode %}
Not etmek gerekir ki paket adını atlayabilirsiniz ve mobil cihaz otomatik olarak o bağlantıyı açması gereken uygulamayı çağıracaktır.
{% code overflow="wrap" %}
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
{% endcode %}
Kodun çalıştırıldığı yer
Uygulamada çalıştırılacak kodu bulmak için, deeplink tarafından çağrılan aktiviteye gidin ve onNewIntent
fonksiyonunu arayın.
Hassas bilgiler
Her zaman bir derin bağlantı bulduğunuzda, URL parametreleri aracılığıyla (şifreler gibi) hassas veri almadığından emin olun, çünkü başka bir uygulama derin bağlantıyı taklit edebilir ve bu verileri çalabilir!
Yol içindeki parametreler
Herhangi bir derin bağlantının URL'nin yolunda bir parametre kullandığını mutlaka kontrol etmelisiniz örneğin: https://api.example.com/v1/users/{username}
, bu durumda şöyle bir şeye erişebilirsiniz: example://app/users?username=../../unwanted-endpoint%3fparam=value
.
Uygulama içinde doğru uç noktaları bulursanız, Açık Yönlendirme (yolun bir kısmı alan adı olarak kullanılıyorsa), hesap ele geçirme (CSRF belirteci olmadan kullanıcı detaylarını değiştirebilirseniz ve zafiyetli uç nokta doğru yöntemi kullanıyorsa) ve diğer zafiyetleri tetikleyebilirsiniz. Daha fazla bilgi burada.
Daha fazla örnek
Bağlantılarla ilgili bir ilginç ödül avı raporu (/.well-known/assetlinks.json).
Taşıma Katmanı İncelemesi ve Doğrulama Hataları
- Android uygulamaları tarafından sertifikaların her zaman doğru şekilde incelenmediği yaygındır. Bu uygulamaların genellikle uyarıları göz ardı edip öz imzalı sertifikaları kabul etmesi veya bazı durumlarda HTTP bağlantılarına geri dönmesi olağandır.
- SSL/TLS el sıkışması sırasında müzakereler bazen zayıf olabilir, güvensiz şifreleme süitleri kullanılabilir. Bu zafiyet, bağlantının ortadaki adam (MITM) saldırılarına açık hale gelmesine neden olur, saldırganların verileri şifresini çözmesine izin verir.
- Uygulamaların güvenli kanalları kullanarak kimlik doğrulaması yapmasına rağmen diğer işlemler için şifrelenmemiş kanallar üzerinden iletişim kurması durumunda özel bilgilerin sızması riski vardır. Bu yaklaşım, oturum çerezleri veya kullanıcı detayları gibi hassas verileri kötü niyetli varlıklar tarafından ele geçirilmesine karşı korumaz.
Sertifika Doğrulama
Sertifika doğrulamasına odaklanacağız. Güvenliği artırmak için sunucunun sertifikasının bütünlüğü doğrulanmalıdır. Bu, güvensiz TLS yapılandırmaları ve hassas verilerin şifrelenmemiş kanallar üzerinden iletilmesi önemli riskler oluşturabilir. Sunucu sertifikalarını doğrulama adımları ve zafiyetleri ele alma konusunda detaylı bilgi için, bu kaynak kapsamlı rehberlik sağlar.
SSL Pinning
SSL Pinning, uygulamanın sunucunun sertifikasını uygulama içinde depolanan bilinen bir kopya ile doğrulamasıdır. Bu yöntem, MITM saldırılarını önlemek için önemlidir. Hassas bilgilerle uğraşan uygulamalar için SSL Pinning uygulamak kesinlikle önerilir.
Trafik İnceleme
HTTP trafiğini incelemek için, proxy aracının sertifikasını yüklemek gerekir (örneğin, Burp). Bu sertifikayı yüklemeden, şifreli trafiği proxy üzerinden göremeyebilirsiniz. Özel bir CA sertifikasını yüklemek için kılavuz için, buraya tıklayın.
API Seviyesi 24 ve üzeri hedefleyen uygulamalar, şifreli trafiği incelemek için ağ güvenlik yapılandırmasını proxy'nin CA sertifikasını kabul edecek şekilde değiştirmeyi gerektirir. Bu adım, şifreli trafiği incelemek için kritik öneme sahiptir. Ağ Güvenlik Yapılandırmasını değiştirme konusunda talimatlar için, bu öğreticiye başvurun.
SSL Pinning'i Atlatma
SSL Pinning uygulandığında, HTTPS trafiğini incelemek için bunu atlatmak gerekebilir. Bu amaçla çeşitli yöntemler mevcuttur:
- apk-mitm ile SSLPinning'i atlamak için apk'yi otomatik olarak değiştirin. Bu seçeneğin en büyük avantajı, SSL Pinning'i atlamak için köklüye ihtiyaç duymamanızdır, ancak uygulamayı silip yeni bir tane yüklemeniz gerekebilir ve bu her zaman işe yaramayabilir.
- Bu korumayı atlamak için Frida'yı kullanabilirsiniz (aşağıda tartışılmıştır). Burada Burp+Frida+Genymotion'u kullanma kılavuzuna erişebilirsiniz: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- objection kullanarak otomatik olarak SSL Pinning'i atlamayı deneyebilirsiniz:
objection --gadget com.package.app explore --startup-command "android sslpinning disable"
- MobSF dinamik analiz kullanarak otomatik olarak SSL Pinning'i atlamayı deneyebilirsiniz (aşağıda açıklanmıştır)
- Hala yakalayamadığınız bazı trafiğin olduğunu düşünüyorsanız, trafiği iptables kullanarak burp'a yönlendirmeyi deneyebilirsiniz. Bu blogu okuyun: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62
Ortak Web Zafiyetlerini Arama
Uygulama içinde ortak web zafiyetlerini de aramak önemlidir. Bu zafiyetleri tanımlama ve bunları azaltma konusundaki detaylı bilgiler bu özetin kapsamının ötesindedir ancak başka yerlerde kapsamlı bir şekilde ele alınmaktadır.
Frida
Frida, geliştiriciler, ters mühendisler ve güvenlik araştırmacıları için dinamik enstrümantasyon aracıdır.
Çalışan uygulamalara erişebilir ve çalışma zamanında yöntemleri kancalayabilir, davranışı değiştirebilir, değerleri değiştirebilir, değerleri çıkarabilir, farklı kodları çalıştırabilirsiniz...
Android uygulamalarını pentest etmek istiyorsanız, Frida'yı nasıl kullanacağınızı bilmelisiniz.
- Frida'yı nasıl kullanacağınızı öğrenin: Frida öğretici
- Frida ile işlemler için "GUI": https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection, Frida'nın otomatik kullanımını sağlamak için harikadır: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Bazı Harika Frida komut dosyalarını burada bulabilirsiniz: https://codeshare.frida.re/
- Anti-hata ayıklama / anti-frida mekanizmalarını atlatmaya çalışırken Frida'yı yükleyerek kod enjeksiyonu yapabilirsiniz https://erfur.github.io/blog/dev/code-injection-without-ptrace (araç linjector)
Belleği Dökme - Fridump
Uygulamanın, şifreler veya mnemonikler gibi saklamaması gereken hassas bilgileri bellekte saklayıp saklamadığını kontrol edin.
Fridump3 kullanarak uygulamanın belleğini dökleyebilirsiniz:
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
Bu, belleği ./dump klasörüne dökecek ve orada aşağıdaki gibi bir şeyle grep yapabilirsiniz:
{% code overflow="wrap" %}
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
{% endcode %}
Keystore'daki Hassas Veriler
Android'de Keystore, hassas verileri saklamak için en iyi yerdir, ancak yeterli izinlerle erişmek hala mümkündür. Uygulamalar burada hassas verileri açık metin olarak sakladığından, pentestler bunu kontrol etmelidir çünkü kök kullanıcı veya cihaza fiziksel erişimi olan biri bu verileri çalabilir.
Bir uygulama keystore'da tarih saklasa bile, veriler şifrelenmelidir.
Keystore içindeki verilere erişmek için bu Frida betiğini kullanabilirsiniz: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
Parmak İzi/Biyometrik Atlatma
Aşağıdaki Frida betiği kullanılarak Android uygulamalarının belirli hassas alanları korumak için gerçekleştirebileceği parmak izi doğrulamasını atlatmak mümkün olabilir:
{% code overflow="wrap" %}
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
{% endcode %}
Arka Plan Resimleri
Uygulamayı arka plana aldığınızda, Android uygulamanın bir anlık görüntüsünü saklar, böylece uygulama öne çıkarıldığında uygulamadan önce görüntüyü yüklemeye başlar, böylece uygulamanın daha hızlı yüklendiği izlenimi oluşturulur.
Ancak, bu anlık görüntü duyarlı bilgileri içeriyorsa, bu görüntüye erişimi olan biri bu bilgileri çalabilir (unutmayın ki bunun için kök erişime ihtiyacınız vardır).
Anlık görüntüler genellikle şurada saklanır: /data/system_ce/0/snapshots
Android, FLAG_SECURE düzen parametresini ayarlayarak ekran görüntüsü alınmasını engellemenin bir yolunu sağlar. Bu bayrağı kullanarak, pencere içeriği güvenli olarak işlenir, bu da ekran görüntülerinde görünmesini veya güvensiz ekranlarda görüntülenmesini engeller.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Android Uygulama Analizcisi
Bu araç, dinamik analiz sırasında farklı araçları yönetmenize yardımcı olabilir: https://github.com/NotSoSecure/android_application_analyzer
Intent Enjeksiyonu
Geliştiriciler genellikle bu Intent'leri ele alan ve bunları startActivity(...)
veya sendBroadcast(...)
gibi yöntemlere ileten aktiviteler, servisler ve yayın alıcıları gibi proxy bileşenler oluştururlar, bu da riskli olabilir.
Tehlike, saldırganların bu Intent'leri yanıltarak non-exported uygulama bileşenlerini tetiklemesine veya hassas içerik sağlayıcılarına erişmesine izin vermesinde yatar. Dikkate değer bir örnek, WebView
bileşeninin URL'leri Intent
nesnelerine Intent.parseUri(...)
aracılığıyla dönüştürmesi ve ardından bunları yürütmesidir, bu da potansiyel olarak kötü niyetli Intent enjeksiyonlarına yol açabilir.
Temel Öğretiler
- Intent Enjeksiyonu, web'in Açık Yönlendirme sorununa benzerdir.
- Saldırılar, güvensiz işlemleri yürütmek için yönlendirilebilecek
Intent
nesnelerinin geçirilmesini içerir. - Non-exported bileşenleri ve içerik sağlayıcılarını saldırganlara açığa çıkarabilir.
WebView
'ın URL'leriniIntent
e dönüştürmesi istenmeyen eylemleri kolaylaştırabilir.
Android İstemci Tarafı Enjeksiyonları ve Diğerleri
Bu tür zayıflıkları muhtemelen Web'den biliyorsunuzdur. Bir Android uygulamasında bu tür zayıflıklara karşı özellikle dikkatli olmalısınız:
- SQL Enjeksiyonu: Dinamik sorgular veya İçerik Sağlayıcılarla uğraşırken parametreli sorgular kullandığınızdan emin olun.
- JavaScript Enjeksiyonu (XSS): JavaScript ve Eklenti desteğinin devre dışı bırakıldığından emin olun (varsayılan olarak devre dışı). Daha fazla bilgi burada.
- Yerel Dosya Dahil Etme: WebViews'in dosya sistemine erişiminin devre dışı bırakılmış olması gerekir (varsayılan olarak etkin) -
(webview.getSettings().setAllowFileAccess(false);)
. Daha fazla bilgi burada. - Kalıcı çerezler: Android uygulaması oturumu sonlandırdığında çerez iptal edilmiyor veya hatta diske kaydedilebiliyor.
- Çerezlerde Güvenli Bayrak
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime geçin
Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
En Son Duyurular
Başlatılan en yeni ödül avcılarını ve önemli platform güncellemelerini takip edin
Bize Discord katılın ve bugün en iyi hackerlarla işbirliğine başlayın!
Otomatik Analiz
MobSF
Statik analiz
Uygulamanın güvenlik açıklarını değerlendirmek için güzel bir web tabanlı ön uç kullanarak statik analiz yapabilirsiniz. Ayrıca dinamik analiz yapabilirsiniz (ancak ortamı hazırlamanız gerekebilir).
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
MobSF, Android(apk), IOS(ipa) ve Windows(apx) uygulamalarını analiz edebilir (Windows uygulamaları bir Windows ana bilgisayarında kurulu olan MobSF'den analiz edilmelidir).
Ayrıca, bir ZIP dosyası oluşturursanız ve Android veya IOS uygulamasının kaynak kodunu içeren (uygulamanın kök klasörüne gidin, her şeyi seçin ve bir ZIP dosyası oluşturun), bu da analiz edilebilir.
MobSF ayrıca diff/Karşılaştırma analizi yapmanıza ve VirusTotal entegrasyonu yapmanıza izin verir (API anahtarınızı MobSF/settings.py dosyasında ayarlamanız ve etkinleştirmeniz gerekecektir: VT_ENABLED = TRUE
VT_API_KEY = <API Anahtarınız>
VT_UPLOAD = TRUE
). Ayrıca, VT_UPLOAD
'ı False
olarak ayarlarsanız, hash dosya yerine yüklenecektir.
MobSF ile Destekli Dinamik Analiz
MobSF, Android için dinamik analizde de çok faydalı olabilir, ancak bu durumda ana bilgisayarınıza MobSF ve genymotion kurmanız gerekecektir (bir sanal makine veya Docker çalışmayacaktır). Not: Önce genymotion'da bir sanal makine başlatmanız ve ardından MobSF'yi başlatmanız gerekmektedir.
MobSF dinamik analizörü, şunları yapabilir:
- Uygulama verilerini dökme (URL'ler, günlükler, panoya kopyalanan metinler, sizin tarafından oluşturulan ekran görüntüleri, "Exported Activity Tester" tarafından oluşturulan ekran görüntüleri, e-postalar, SQLite veritabanları, XML dosyaları ve diğer oluşturulan dosyalar). Tüm bunlar otomatik olarak yapılır, ekran görüntüleri hariç, ekran görüntüsü almak istediğinizde basmanız veya tüm dışa aktarılan etkinliklerin ekran görüntülerini almak için "Exported Activity Tester"ı basmanız gerekmektedir.
- HTTPS trafiğini yakalama
- Frida kullanarak çalışma zamanı bilgileri elde etme
Android sürümlerinden > 5, Frida'yı otomatik olarak başlatacak ve global proxy ayarlarını trafiği yakalamak için ayarlayacaktır. Test edilen uygulamadan sadece trafiği yakalayacaktır.
Frida
Varsayılan olarak, ayrıca bazı Frida Komut Dosyalarını kullanarak SSL pinning'i atlatmak, root tespiti ve debugger tespiti yapacak ve ilginç API'ları izlemek için kullanacaktır.
MobSF ayrıca dışa aktarılan etkinlikleri başlatmayı, onların ekran görüntülerini yakalamayı ve rapor için onları kaydetmeyi sağlayabilir.
Dinamik testi başlatmak için yeşil düğmeye basın: "Start Instrumentation". Frida komut dosyaları tarafından oluşturulan günlükleri görmek için "Frida Live Logs" düğmesine basın ve kancalanan yöntemlere yapılan tüm çağrıları, iletilen argümanları ve döndürülen değerleri görmek için "Live API Monitor" düğmesine basın ("Start Instrumentation" düğmesine bastıktan sonra görünecektir).
MobSF ayrıca kendi Frida komut dosyalarınızı yüklemenize izin verir (Friday komut dosyalarınızın sonuçlarını MobSF'ye göndermek için send()
işlevini kullanın). Yükleyebileceğiniz çeşitli önceden yazılmış komut dosyaları da vardır (MobSF/DynamicAnalyzer/tools/frida_scripts/others/
içine daha fazlasını ekleyebilirsiniz), bunları seçin, "Yükle" düğmesine basın ve "Start Instrumentation" düğmesine basın (bu komut dosyalarının günlüklerini "Frida Live Logs" içinde görebileceksiniz).
Ayrıca, bazı Yardımcı Frida işlevleri bulunmaktadır:
- Yüklenen Sınıfları Sırala: Yüklenen tüm sınıfları yazdıracaktır
- Dizeleri Yakalama: Uygulamayı kullanırken yakalanan tüm dizeleri yazdıracaktır (çok gürültülü)
- Dize Karşılaştırmalarını Yakalama: Çok faydalı olabilir. Karşılaştırılan 2 dizeyi ve sonucun Doğru mu Yanlış mı olduğunu gösterecektir.
- Sınıf Yöntemlerini Sırala: Sınıf adını (örneğin "java.io.File") girin ve sınıfın tüm yöntemlerini yazdıracaktır.
- Sınıf Desenini Ara: Desene göre sınıfları ara
- Sınıf Yöntemlerini İzle: Bir tüm sınıfı izle (sınıfın tüm yöntemlerinin girdilerini ve çıktılarını görün). Unutmayın ki varsayılan olarak MobSF, birkaç ilginç Android Api yöntemini izler.
Kullanmak istediğiniz yardımcı modülü seçtikten sonra "Start Intrumentation" düğmesine basmanız ve tüm çıktıları "Frida Live Logs" içinde göreceksiniz.
Shell
Mobsf ayrıca dinamik analiz sayfasının alt kısmında bazı adb komutları, MobSF komutları ve yaygın shell komutları ile bir kabuk getirir. Bazı ilginç komutlar:
help
shell ls
activities
exported_activities
services
receivers
HTTP araçları
HTTP trafiği yakalandığında, yakalanan trafiğin kötü bir görünümünü "HTTP(S) Trafik" altında veya daha güzel bir görünümü "HTTP Araçları Başlat" yeşil altında görebilirsiniz. İkinci seçenekten, yakalanan istekleri Burp veya Owasp ZAP gibi proxy'lere gönderebilirsiniz.
Bunu yapmak için, Burp'u açın --> Intercept'i kapatın --> MobSB HTTP Araçları'nda isteği seçin --> "Fuzzer'a Gönder" düğmesine basın --> proxy adresini seçin (http://127.0.0.1:8080\).
MobSF ile dinamik analizi tamamladıktan sonra, zayıflıkları aramak için "Web API Fuzzer'ı Başlat" düğmesine basabilirsiniz.
{% hint style="info" %} MobSF ile dinamik analiz yapıldıktan sonra, proxy ayarları yanlış yapılandırılmış olabilir ve bunları GUI'den düzeltemeyebilirsiniz. Proxy ayarlarını düzeltmek için şunları yapabilirsiniz:
adb shell settings put global http_proxy :0
{% endhint %}
Inspeckage ile Destekli Dinamik Analiz
Araç Inspeckage adresinden temin edilebilir.
Bu araç, bir dinamik analiz gerçekleştirirken uygulamada neler olduğunu bilmenizi sağlamak için bazı Hooks kullanır.
Yaazhini
Bu, bir GUI ile statik analiz yapmak için harika bir araçtır
Qark
Bu araç, kaynak kodunda veya paketlenmiş APK'lerde çeşitli güvenlikle ilgili Android uygulama zafiyetlerini aramak için tasarlanmıştır. Araç ayrıca bazı bulunan zafiyetleri sömürmek için bir "Proof-of-Concept" dağıtılabilir APK ve ADB komutları oluşturma yeteneğine sahiptir (Açık aktiviteler, intent'ler, tapjacking...). Drozer gibi, test cihazını rootlama ihtiyacı yoktur.
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
ReverseAPK
- Kolay referans için tüm çıkarılan dosyaları gösterir
- APK dosyalarını otomatik olarak Java ve Smali formatına decompile eder
- Yaygın güvenlik açıkları ve davranışlar için AndroidManifest.xml'yi analiz eder
- Yaygın güvenlik açıkları ve davranışlar için statik kaynak kod analizi yapar
- Cihaz bilgileri
- ve daha fazlası
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER, Windows, MacOS X ve Linux'da kullanılabilen bir komut satırı uygulamasıdır ve .apk dosyalarını güvenlik açıklarını aramak için analiz eder. Bu işlemi APK'leri açarak ve bu güvenlik açıklarını tespit etmek için bir dizi kural uygulayarak yapar.
Tüm kurallar rules.json
dosyasında merkezlenmiştir ve her şirket veya testçi kendi ihtiyaçlarını analiz etmek için kendi kurallarını oluşturabilir.
En son ikili dosyaları indirme sayfasından indirebilirsiniz.
super-analyzer {apk_file}
StaCoAn
StaCoAn, mobil uygulamalarda statik kod analizi gerçekleştiren geliştiricilere, hata avcılarına ve etik hackerlara yardımcı olan çapraz platform bir araçtır.
Kavram, mobil uygulama dosyanızı (bir .apk veya .ipa dosyası) StaCoAn uygulamasına sürükleyip bıraktığınızda size görsel ve taşınabilir bir rapor oluşturacaktır. Ayarları ve kelime listelerini özelleştirebilirsiniz.
En son sürümü indirmek için en son sürümü indirin:
./stacoan
AndroBugs
AndroBugs Framework, geliştiricilere veya hackerlara Android uygulamalarındaki potansiyel güvenlik açıklarını bulmalarına yardımcı olan bir Android zafiyet analiz sistemi.
Windows sürümleri
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn, Android uygulaması tarafından geliştirilen potansiyel kötü niyetli davranışları tespit etmek ve kullanıcıyı uyarı amacıyla tasarlanmış bir araçtır.
Tespit, uygulamanın Dalvik bytecode'ının statik analizi ile gerçekleştirilir ve bu bytecode Smali olarak temsil edilir. Bu işlem için androguard
kütüphanesi kullanılır.
Bu araç, Telefoni kimlik bilgilerinin sızdırılması, Ses/video akışının dinlenmesi, PIM verilerinin değiştirilmesi, Keyfi kod yürütme gibi "kötü" uygulamaların yaygın davranışlarını arar.
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
MARA Framework
MARA, Mobil Application Reverse engineering ve Analysis Framework'üdür. Bu, mobil uygulamaları OWASP mobil güvenlik tehditlerine karşı test etmeye yardımcı olmak için yaygın olarak kullanılan mobil uygulama tersine mühendislik ve analiz araçlarını bir araya getiren bir araçtır. Amacı, bu görevi mobil uygulama geliştiricileri ve güvenlik uzmanları için daha kolay ve dostça hale getirmektir.
Şunları yapabilir:
- Farklı araçlar kullanarak Java ve Smali kodunu çıkartma
- APK'leri şu şekilde analiz etme: smalisca, ClassyShark, androbugs, androwarn, APKiD
- APK'den regexps kullanarak özel bilgileri çıkartma.
- Manifesti analiz etme.
- Bulunan alanları şu şekilde analiz etme: pyssltest, testssl ve whatweb
- APK'yi apk-deguard.com aracılığıyla deobfuscate etme
Koodous
Kötü amaçlı yazılımları tespit etmek için faydalı: https://koodous.com/
Kodu Obfuscate Etme/Deobfuscate Etme
Kodu obfuscate etmek için kullandığınız hizmet ve yapılandırmaya bağlı olarak, sırlar obfuscated olabilir veya olmayabilir.
ProGuard
Wikipedia'dan: ProGuard, Java kodunu küçülten, optimize eden ve obfuscate eden bir açık kaynaklı komut satırı aracıdır. Bytecode'ları optimize edebilir ve kullanılmayan talimatları tespit edip kaldırabilir. ProGuard, özgür yazılımdır ve GNU Genel Kamu Lisansı, sürüm 2 altında dağıtılmaktadır.
ProGuard, Android SDK'nın bir parçası olarak dağıtılır ve uygulamayı yayınlama modunda derlerken çalışır.
DexGuard
APK'nın deobfuscate edilmesi için adım adım kılavuz için https://blog.lexfo.fr/dexguard.html adresine bakın
(O kılavuzdan) Son kontrol ettiğimizde, Dexguard'ın işlem modu şöyleydi:
- Bir kaynağı bir InputStream olarak yükle;
- Sonucu şifrelemek için FilterInputStream'den türeyen bir sınıfa besle;
- Bir reverser'ın birkaç dakikasını boşa harcamak için bazı gereksiz obfuscation yap;
- Şifrelenmiş sonucu almak için bir ZipInputStream'a besle ve bir DEX dosyası al;
- Sonunda, elde edilen DEX'i
loadDex
yöntemini kullanarak bir Kaynak olarak yükle.
DeGuard
DeGuard, Android obfuscation araçları tarafından gerçekleştirilen obfuscation işlemini tersine çevirir. Bu, kod incelemesi ve kütüphaneleri tahmin etmeyi içeren birçok güvenlik analizine olanak tanır.
Obfuscated bir APK'yı platformlarına yükleyebilirsiniz.
Simplify
Bu, genel bir android deobfuscator'dür. Simplify, bir uygulamayı neredeyse yürütür ve ardından kodu aynı şekilde davranacak şekilde optimize etmeye çalışır ancak insanlar için daha anlaşılır hale getirir. Her optimizasyon türü basit ve geneldir, bu nedenle kullanılan belirli obfuscation türü önemli değildir.
APKiD
APKiD, bir APK'nın nasıl yapıldığı hakkında bilgi verir. Birçok derleyici, paketleyici, obfuscator ve diğer garip şeyleri tanımlar. Bu, Android için PEiD'dir.
Manuel
Özel obfuscation'ı tersine çevirmenin bazı püf noktalarını öğrenmek için bu kılavuzu okuyun: manual-deobfuscation.md
Lablar
Androl4b
AndroL4b, tersine mühendislik ve kötü amaçlı yazılım analizi için farklı güvenlik uzmanları ve araştırmacılardan en son çerçeve, öğreticiler ve labları içeren ubuntu-mate tabanlı bir Android güvenlik sanal makinedir.
Referanslar
- https://owasp.org/www-project-mobile-app-security/
- https://appsecwiki.com/#/ Harika bir kaynak listesi
- https://maddiestone.github.io/AndroidAppRE/ Android hızlı kursu
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
- https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
Henüz Denenmemiş
HackenProof Discord sunucusuna katılın ve deneyimli hackerlar ve ödül avcıları ile iletişim kurun!
Hacking Insights
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime girin
Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
En Son Duyurular
En yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgilenin
Bize Discord katılın ve bugün en iyi hackerlarla işbirliğine başlayın!
Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking püf noktalarınızı göndererek HackTricks](https://github.com/carlospolop/hacktricks) ve HackTricks Cloud github depolarına PR'lar göndererek paylaşın.