Android Uygulamaları Pentesting
Reading time: 31 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Android Uygulamaları Temelleri
Android güvenliği ile ilgili en önemli kısımlar ve bir Android uygulamasındaki en tehlikeli bileşenler hakkında bilgi edinmek için bu sayfayı okumaya başlamanız şiddetle tavsiye edilir:
ADB (Android Debug Bridge)
Bu, bir android cihazına (emüle edilmiş veya fiziksel) bağlanmak için ihtiyaç duyduğunuz ana araçtır.
ADB, cihazları bir bilgisayardan USB veya Ağ üzerinden kontrol etmeyi sağlar. Bu yardımcı program, dosyaların her iki yönde kopyalanması, uygulamaların yüklenmesi ve kaldırılması, kabuk komutlarının çalıştırılması, verilerin yedeklenmesi, günlüklerin okunması gibi birçok işlevi yerine getirir.
ADB'yi nasıl kullanacağınızı öğrenmek için aşağıdaki ADB Komutları listesine göz atın.
Smali
Bazen gizli bilgilere erişmek için uygulama kodunu değiştirmek ilginç olabilir (belki iyi obfuscate edilmiş şifreler veya bayraklar). Bu durumda, apk'yı decompile etmek, kodu değiştirmek ve yeniden compile etmek ilginç olabilir.
Bu eğitimde APK'yı decompile etmeyi, Smali kodunu değiştirmeyi ve APK'yı yeni işlevsellik ile yeniden compile etmeyi öğrenebilirsiniz. Bu, sunulacak dinamik analiz sırasında birkaç test için alternatif olarak çok faydalı olabilir. Bu nedenle, her zaman bu olasılığı aklınızda bulundurun.
Diğer ilginç ipuçları
- Play Store'da konumunuzu sahtelemek
- APK'ları İndirin: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/, https://github.com/kiber-io/apkd
- Cihazdan APK çıkarın:
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
- Tüm bölümleri ve temel apk'ları APKEditor ile birleştirin:
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk
# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
Statik Analiz
Öncelikle, bir APK'yı analiz etmek için Java koduna göz atmalısınız bir decompiler kullanarak.
Lütfen, farklı mevcut decompiler'lar hakkında bilgi bulmak için burayı okuyun.
İlginç Bilgiler Arama
APK'nın string'lerine bakarak şifreler, URL'ler (https://github.com/ndelphit/apkurlgrep), api anahtarları, şifreleme, bluetooth uuids, token'lar ve ilginç olabilecek her şeyi arayabilirsiniz... hatta kod yürütme arka kapıları veya kimlik doğrulama arka kapıları (uygulama için hardcoded admin kimlik bilgileri) için bile bakın.
Firebase
firebase URL'lerine özel dikkat gösterin ve kötü yapılandırılıp yapılandırılmadığını kontrol edin. Firebase nedir ve nasıl istismar edilir hakkında daha fazla bilgi burada.
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 kullanarak veya APK dosya uzantısını .zip olarak değiştirip ardından açarak erişilebilir.
Manifest.xml dosyasından tespit edilen açıklar şunlardır:
- Debuggable Uygulamalar: Manifest.xml dosyasında debuggable olarak ayarlanmış (
debuggable="true"
) uygulamalar, bağlantılara izin vererek istismar riskini artırır. Debuggable uygulamaları nasıl istismar edeceğinizi anlamak için bir cihazda debuggable uygulamaları bulma ve istismar etme üzerine bir eğitime başvurun. - Yedekleme Ayarları: Hassas bilgilerle ilgilenen uygulamalar için
android:allowBackup="false"
niteliği açıkça ayarlanmalıdır, böylece usb hata ayıklama etkinleştirildiğinde yetkisiz veri yedeklemeleri önlenir. - 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 detaylarını belirtebilir. Örneğin, belirli alanlar için HTTP trafiğine izin vermek. - Dışa Aktarılan Aktiviteler ve Servisler: Manifestte dışa aktarılan aktiviteleri ve servisleri tanımlamak, kötüye kullanılabilecek bileşenleri vurgulayabilir. Dinamik test sırasında daha fazla analiz, bu bileşenleri nasıl istismar edeceğinizi ortaya çıkarabilir.
- İçerik Sağlayıcıları ve Dosya Sağlayıcıları: Açıkta olan içerik sağlayıcıları, yetkisiz erişim veya veri değişikliği sağlayabilir. Dosya sağlayıcılarının yapılandırması da incelenmelidir.
- Broadcast Alıcıları ve URL Şemaları: Bu bileşenler istismar için kullanılabilir, URL şemalarının giriş açıkları için nasıl yönetildiğine özel dikkat gösterilmelidir.
- SDK Sürümleri:
minSdkVersion
,targetSDKVersion
vemaxSdkVersion
nitelikleri desteklenen Android sürümlerini belirtir, güvenlik nedenleriyle eski, savunmasız Android sürümlerinin desteklenmemesinin önemini vurgular.
strings.xml dosyasından, API anahtarları, özel şemalar ve diğer geliştirici notları gibi hassas bilgiler keşfedilebilir, bu da bu kaynakların dikkatli bir şekilde gözden geçirilmesi gerekliliğini vurgular.
Tapjacking
Tapjacking, kötü niyetli bir uygulamanın başlatıldığı ve bir kurban uygulamasının üzerine yerleştirildiği bir saldırıdır. Kurban uygulamasını görünür bir şekilde gizlediğinde, kullanıcı arayüzü, kullanıcının onunla etkileşimde bulunmasını sağlamak için tasarlanmıştır, bu arada etkileşimi kurban uygulamasına iletmektedir.
Sonuç olarak, bu durum kullanıcının aslında kurban uygulamasında eylem gerçekleştirdiğini bilmesini engellemektedir.
Daha fazla bilgi için:
Görev Ele Geçirme
launchMode
'u singleTask
olarak ayarlanmış ve herhangi bir taskAffinity
tanımlanmamış bir aktivite, görev ele geçirmeye karşı savunmasızdır. Bu, bir uygulamanın kurulabileceği ve gerçek uygulamadan önce başlatılırsa, gerçek uygulamanın görevini ele geçirebileceği anlamına gelir (bu durumda kullanıcı, gerçek olanı kullanıyormuş gibi kötü niyetli uygulama ile etkileşimde bulunacaktır).
Daha fazla bilgi için:
Güvensiz Veri Depolama
Dahili Depolama
Android'de, dahili depolamada saklanan dosyalar yalnızca oluşturan uygulama tarafından erişilebilir olacak şekilde tasarlanmış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 MODE_WORLD_READABLE
ve MODE_WORLD_WRITABLE
gibi modları kullanarak dosyaların farklı uygulamalar arasında paylaşılmasına izin verir. Ancak, 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 incelenmesini sağlayın. Bu modlar, dosyaları istenmeyen veya yetkisiz erişime açabilir.
- Dinamik Analiz:
- Uygulama tarafından oluşturulan dosyaların üzerindeki izinleri doğrulayın. Özellikle, herhangi bir dosyanın dünya çapında okunabilir veya yazılabilir olarak ayarlanıp ayarlanmadığını kontrol edin. Bu, cihazda yüklü olan herhangi bir uygulamanın, kökeni veya niyeti ne olursa olsun, bu dosyaları okumasına veya değiştirmesine izin vereceğinden önemli bir güvenlik riski oluşturabilir.
Dış Depolama
Dış depolama ile ilgili dosyalarla çalışırken, belirli önlemler alınmalıdır:
- Erişilebilirlik:
- Dış 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şim kolaylığı göz önüne alındığında, hassas bilgileri dış depolamada saklamamanız önerilir.
- Dış depolama, herhangi bir uygulama tarafından çıkarılabilir veya erişilebilir, bu da onu daha az güvenli hale getirir.
- Dış Depolamadan Veri İşleme:
- Dış depolamadan alınan veriler üzerinde her zaman giriş doğrulaması yapın. Bu, verilerin güvenilir bir kaynaktan gelmediği için kritik öneme sahiptir.
- Dinamik yükleme için dış depolamada yürütülebilir veya sınıf dosyaları saklamak kesinlikle önerilmez.
- Uygulamanızın dış depolamadan yürütülebilir dosyaları alması gerekiyorsa, bu dosyaların dinamik olarak yüklenmeden önce imzalanmış ve kriptografik olarak doğrulanmış olduğundan emin olun. Bu adım, uygulamanızın güvenlik bütünlüğünü korumak için hayati öneme sahiptir.
Dış depolama, /storage/emulated/0
, /sdcard
, /mnt/sdcard
konumlarında erişilebilir.
note
Android 4.4 ile birlikte (API 17), SD kartın bir dizin yapısı vardır ve bu, bir uygulamanın yalnızca o uygulama için özel olan dizine erişimini sınırlar. Bu, kötü niyetli uygulamaların başka bir uygulamanın dosyalarına okuma veya yazma erişimi kazanmasını engeller.
Açık metin olarak saklanan hassas veriler
- Paylaşılan tercihleri: Android, her uygulamanın
/data/data/<packagename>/shared_prefs/
yolunda xml dosyalarını kolayca kaydetmesine izin verir ve bazen o klasörde açık metin olarak hassas bilgilerin bulunması mümkündür. - Veritabanları: Android, her uygulamanın
/data/data/<packagename>/databases/
yolunda sqlite veritabanlarını kolayca kaydetmesine izin verir ve bazen o klasörde açık metin olarak hassas bilgilerin bulunması mümkündür.
Kırık TLS
Tüm Sertifikaları Kabul Etme
Bazı nedenlerden dolayı, bazen geliştiriciler tüm sertifikaları kabul eder, örneğin, ana bilgisayar adı kod satırlarıyla eşleşmediğinde bile:
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
İyi bir test yöntemi, Burp gibi bir proxy kullanarak trafiği yakalamaya çalışmaktır, ancak cihaz içinde Burp CA'yı yetkilendirmeden. Ayrıca, Burp ile farklı bir hostname için bir sertifika oluşturabilir ve bunu kullanabilirsiniz.
Kırık Kriptografi
Zayıf Anahtar Yönetim Süreçleri
Bazı geliştiriciler hassas verileri yerel depolamada saklar ve bunu kodda hardcoded/tahmin edilebilir bir anahtar ile şifreler. Bu yapılmamalıdır çünkü bazı tersine mühendislik çalışmaları, saldırganların gizli bilgileri çıkarmasına olanak tanıyabilir.
Güvensiz ve/veya Kullanımdan Kaldırılmış Algoritmaların Kullanımı
Geliştiriciler, yetkilendirme kontrolleri, veri saklama veya gönderme işlemleri için kullanımdan kaldırılmış algoritmalar kullanmamalıdır. Bu algoritmalardan bazıları: RC4, MD4, MD5, SHA1... Örneğin, şifreleri saklamak için hash'ler kullanılıyorsa, tuz ile birlikte brute-force saldırılarına dayanıklı hash'ler kullanılmalıdır.
Diğer Kontroller
- APK'yı obfuscate etmek saldırganların tersine mühendislik çalışmalarını zorlaştırmak için önerilir.
- Uygulama hassas ise (örneğin banka uygulamaları), mobilin köklenip köklenmediğini kontrol etmelidir ve buna göre hareket etmelidir.
- Uygulama hassas ise (örneğin banka uygulamaları), bir emülatör kullanılıp kullanılmadığını kontrol etmelidir.
- Uygulama hassas ise (örneğin banka uygulamaları), çalıştırmadan önce kendi bütünlüğünü kontrol etmelidir.
- APK'yı oluşturmak için hangi derleyici/paketleyici/obfuscator kullanıldığını kontrol etmek için APKiD kullanın.
React Native Uygulaması
React uygulamalarının javascript koduna kolayca erişmek için aşağıdaki sayfayı okuyun:
Xamarin Uygulamaları
Xamarin uygulamalarının C# koduna kolayca erişmek için aşağıdaki sayfayı okuyun:
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çan bir uygulama oluşturma olasılığından bahsediyor... ve uygulamayı çalıştırıp dosya sisteminden açılmış dosyaları toplamak gibi daha hızlı bir yol.
Otomatik Statik Kod Analizi
mariana-trench aracı, uygulamanın kodunu tarayarak zayıflıkları bulma yeteneğine sahiptir. Bu araç, kullanıcı tarafından kontrol edilen giriş yerlerini gösteren bir dizi bilinen kaynak (kaynaklar), kötü niyetli kullanıcı girişinin zarar verebileceği tehlikeli yerleri gösteren sinkler ve kurallar içerir. Bu kurallar, bir zayıflığı gösteren kaynak-sink kombinasyonlarını belirtir.
Bu bilgiyle, mariana-trench kodu gözden geçirecek ve olası zayıflıkları bulacaktır.
Sızdırılan Gizli Bilgiler
Bir uygulama, içinde keşfedebileceğiniz gizli bilgiler (API anahtarları, şifreler, gizli URL'ler, alt alan adları...) içerebilir. https://github.com/dwisiswant0/apkleaks gibi bir araç kullanabilirsiniz.
Biyometrik Kimlik Doğrulama Atlatma
Bypass Biometric Authentication (Android)
Diğer İlginç 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 mühendislik yapmayı öğrenmek için bunu okuyun
Diğer Hileler
Dinamik Analiz
Öncelikle, uygulamayı ve tüm ortamı (özellikle Burp CA sertifikası, Drozer ve Frida) kurabileceğiniz bir ortama ihtiyacınız var. Bu nedenle, köklü bir cihaz (emüle edilmiş veya değil) son derece önerilir.
Çevrimiçi Dinamik Analiz
https://appetize.io/ adresinde ücretsiz bir hesap oluşturabilirsiniz. Bu platform, APK'ları yüklemenize ve çalıştırmanıza olanak tanır, bu nedenle bir APK'nın nasıl davrandığını görmek için faydalıdır.
Ayrıca, uygulamanızın loglarını webde görebilir ve adb üzerinden bağlanabilirsiniz.
ADB bağlantısı sayesinde, emülatörler içinde Drozer ve Frida kullanabilirsiniz.
Yerel Dinamik Analiz
Bir emülatör kullanarak
- Android Studio (x86 ve arm cihazlar oluşturabilirsiniz ve buen son x86 sürümleri ARM kütüphanelerini yavaş bir arm emülatörüne ihtiyaç duymadan destekler).
- Kurulumunu bu sayfada öğrenin:
- Genymotion (Ücretsiz sürüm: Kişisel Sürüm, bir hesap oluşturmanız gerekir. Potansiyel hataları önlemek için VirtualBox ile birlikte sürümü indirin önerilir.)
- Nox (Ücretsiz, ancak Frida veya Drozer'ı desteklemez).
note
Herhangi bir platformda yeni bir emülatör oluştururken, ekran ne kadar büyükse, emülatör o kadar yavaş çalışır. Bu nedenle, mümkünse küçük ekranlar seçin.
Genymotion'da Google hizmetlerini (AppStore gibi) kurmak için aşağıdaki resmin kırmızı ile işaretlenmiş butonuna tıklamanız gerekir:
Ayrıca, Genymotion'daki Android VM yapılandırmasında Bridge Network mode seçeneğini seçebileceğinizi unutmayın (bu, Android VM'ye farklı bir VM'den bağlanıyorsanız faydalı olacaktır).
Fiziksel bir cihaz kullanma
Hata ayıklama seçeneklerini etkinleştirmeniz gerekir ve cihazı root yapabilirseniz harika olur:
- Ayarlar.
- (Android 8.0'dan itibaren) Sistem'i seçin.
- Telefon Hakkında'yı seçin.
- Build numarasına 7 kez basın.
- Geri dönün ve Geliştirici seçeneklerini bulacaksınız.
Uygulamayı kurduktan sonra yapmanız gereken ilk şey, onu denemek ve ne yaptığını, nasıl çalıştığını araştırmak ve onunla rahat olmaktır.
MobSF dinamik analizi + pidcat kullanarak bu ilk dinamik analizi yapmanızı öneririm, böylece uygulamanın nasıl çalıştığını öğrenebiliriz ve MobSF ilginç verileri toplarken daha sonra gözden geçirebilirsiniz.
İstenmeyen Veri Sızıntısı
Günlükleme
Geliştiriciler, hata ayıklama bilgilerini kamuya açık bir şekilde ifşa etme konusunda dikkatli olmalıdır, çünkü bu hassas veri sızıntılarına yol açabilir. Uygulama günlüklerini izlemek ve hassas bilgileri korumak için pidcat ve adb logcat
araçları önerilir. Pidcat, kullanım kolaylığı ve okunabilirliği nedeniyle tercih edilmektedir.
warning
Android 4.0'dan sonraki yeni sürümlerden itibaren, uygulamalar yalnızca kendi günlüklerine erişebilir. Yani uygulamalar diğer uygulamaların günlüklerine erişemez.
Yine de, hassas bilgileri günlüğe kaydetmemek önerilir.
Kopyala/Yapıştır Tamponu Önbellekleme
Android'in panoya dayalı çerçevesi, uygulamalarda kopyala-yapıştır işlevselliği sağlar, ancak diğer uygulamalar panoya erişebildiği için hassas verilerin açığa çıkma riski taşır. Hassas bölümler için kopyala/yapıştır işlevlerini devre dışı bırakmak, kredi kartı bilgileri gibi veri sızıntılarını önlemek için kritik öneme sahiptir.
Çökme Günlükleri
Bir uygulama çökerse ve günlükleri kaydederse, bu günlükler saldırganlara yardımcı olabilir, özellikle uygulama tersine mühendislik yapılamıyorsa. Bu riski azaltmak için, çökme durumunda günlüğe kaydetmekten kaçının ve eğer günlükler ağ üzerinden iletilmesi gerekiyorsa, güvenlik için SSL kanalı üzerinden gönderildiğinden emin olun.
Pentester olarak, bu günlükleri gözden geçirmeye çalışın.
Üçüncü Taraflara Gönderilen Analitik Veriler
Uygulamalar genellikle Google Adsense gibi hizmetleri entegre eder, bu da geliştiricilerin yanlış uygulaması nedeniyle hassas verilerin sızmasına neden olabilir. Potansiyel veri sızıntılarını belirlemek için, uygulamanın trafiğini yakalamak ve üçüncü taraf hizmetlere gönderilen hassas bilgileri kontrol etmek önerilir.
SQLite DB'leri
Çoğu uygulama, bilgileri saklamak için içsel SQLite veritabanları kullanır. Pentest sırasında oluşturulan veritabanlarına, tabloların ve sütunların adlarına ve saklanan tüm verilere bir göz atın çünkü hassas bilgiler bulabilirsiniz (bu bir zayıflık olacaktır).
Veritabanları /data/data/the.package.name/databases
gibi /data/data/com.mwr.example.sieve/databases
konumunda bulunmalıdır.
Eğer veritabanı gizli bilgileri saklıyorsa ve şifrelenmişse ancak uygulama içinde şifreyi bulabiliyorsanız, bu hala bir zayıflıktır.
Tabloları .tables
ile listeleyin ve tabloların sütunlarını .schema <table_name>
ile listeleyin.
Drozer (Saldırı Etkinlikleri, İçerik Sağlayıcıları ve Hizmetler)
Drozer Belgeleri'nden: Drozer, bir Android uygulamasının rolünü üstlenmenizi ve diğer uygulamalarla etkileşimde bulunmanızı sağlar. Yüklenmiş bir uygulamanın yapabileceği her şeyi yapabilir, örneğin Android’in Araçlar Arası İletişim (IPC) mekanizmasını kullanabilir ve temel işletim sistemi ile etkileşimde bulunabilir.
Drozer, ihracat edilen etkinlikleri, ihracat edilen hizmetleri ve İçerik Sağlayıcıları istismar etmek için yararlı bir araçtır, bunu aşağıdaki bölümlerde öğreneceksiniz.
İhracat Edilen Etkinlikleri İstismar Etme
Bir Android Etkinliği'nin ne olduğunu tazelemek istiyorsanız bunu okuyun.
Ayrıca, bir etkinliğin kodunun onCreate
metodunda başladığını unutmayın.
Yetkilendirme atlatma
Bir Etkinlik ihracat edildiğinde, dış bir uygulamadan ekranını çağırabilirsiniz. Bu nedenle, hassas bilgileri içeren bir etkinlik ihracat edildiğinde, ona erişmek için kimlik doğrulama mekanizmalarını atlatabilirsiniz.
Drozer ile ihracat edilen etkinlikleri nasıl istismar edeceğinizi öğrenin.
Ayrıca, adb'den bir ihracat edilen etkinliği başlatabilirsiniz:
- Paket Adı com.example.demo
- İhracat Edilen Etkinlik 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 tespit edecektir, ancak bu nedeniyle, görünüşe göre bu yalnızca eski sürümlerde (API sürümleri < 21) tehlikelidir.
not
Bir yetkilendirme atlamanın her zaman bir zafiyet olmadığını unutmayın, bu atlamanın nasıl çalıştığına ve hangi bilgilerin açığa çıktığına bağlıdır.
Hassas bilgi sızıntısı
Aktiviteler ayrıca sonuç döndürebilir. Eğer setResult
metodunu çağıran ve hassas bilgi döndüren bir dışa aktarılmış ve korunmasız aktivite bulursanız, burada bir hassas bilgi sızıntısı vardır.
Tapjacking
Eğer tapjacking engellenmezse, dışa aktarılmış aktiviteyi kullanıcının beklenmedik eylemler gerçekleştirmesi için kötüye kullanabilirsiniz. Daha fazla bilgi için Tapjacking nedir, bağlantıyı takip edin.
İçerik Sağlayıcılarını Sömürme - Hassas bilgilere erişim ve manipülasyon
Bir İçerik Sağlayıcının ne olduğunu tazelemek istiyorsanız bunu okuyun.
İçerik sağlayıcıları temelde veri paylaşmak için kullanılır. Eğer bir uygulamanın mevcut içerik sağlayıcıları varsa, onlardan hassas verileri çıkartma imkanınız olabilir. Ayrıca, olası SQL enjeksiyonlarını ve Path Traversals'ı test etmek de ilginçtir çünkü bunlar zayıf olabilir.
Drozer ile İçerik Sağlayıcılarını nasıl sömüreceğinizi öğrenin.
Hizmetleri Sömürme
Bir Servisin ne olduğunu tazelemek istiyorsanız bunu okuyun.
Bir Servisin eylemlerinin onStartCommand
metodunda başladığını unutmayın.
Servis, temelde veri alabilen, işleyebilen ve bir yanıt döndüren (ya da döndürmeyen) bir şeydir. Dolayısıyla, bir uygulama bazı hizmetleri dışa aktarıyorsa, ne yaptığını anlamak için kodunu kontrol etmeli ve gizli bilgileri çıkartmak, kimlik doğrulama önlemlerini atlamak... için dinamik olarak test etmelisiniz.
Drozer ile Hizmetleri nasıl sömüreceğinizi öğrenin.
Broadcast Alıcılarını Sömürme
Bir Broadcast Alıcının ne olduğunu tazelemek istiyorsanız bunu okuyun.
Bir Broadcast Alıcının eylemlerinin onReceive
metodunda başladığını unutmayın.
Bir yayın alıcısı bir tür mesaj bekleyecektir. Alıcının mesajı nasıl işlediğine bağlı olarak, zayıf olabilir.
Drozer ile Broadcast Alıcılarını nasıl sömüreceğinizi öğrenin.
Şemaları / Derin bağlantıları Sömürme
Derin bağlantıları manuel olarak, MobSF gibi araçlar veya bu gibi betikler kullanarak arayabilirsiniz.
Bir tanımlanmış şemayı adb veya bir tarayıcı kullanarak açabilirsiniz:
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
Not edin ki paket adını atlayabilirsiniz ve mobil otomatik olarak o bağlantıyı açması gereken uygulamayı çağıracaktır.
<!-- 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>
Kod çalıştırıldı
Uygulamada çalıştırılacak kodu bulmak için, derin bağlantıyla çağrılan aktiviteye gidin ve onNewIntent
fonksiyonunu arayın.
Hassas bilgi
Her derin bağlantı bulduğunuzda, URL parametreleri aracılığıyla hassas veri (şifreler gibi) almadığından emin olun, çünkü başka bir uygulama derin bağlantıyı taklit edebilir ve bu veriyi çalabilir!
Yolda parametreler
URL'nin yolunda bir parametre kullanıp kullanmadığını da kontrol etmelisiniz: https://api.example.com/v1/users/{username}
, bu durumda bir yol geçişi zorlayarak şuna erişebilirsiniz: example://app/users?username=../../unwanted-endpoint%3fparam=value
.
Uygulama içinde doğru uç noktaları bulursanız, Açık Yönlendirme (eğer yolun bir kısmı alan adı olarak kullanılıyorsa), hesap ele geçirme (eğer kullanıcı detaylarını CSRF token olmadan değiştirebiliyorsanız ve zayıf uç nokta doğru yöntemi kullanıyorsa) ve diğer zayıflıkları tetikleyebilirsiniz. Daha fazla bilgi burada.
Daha fazla örnek
Bir ilginç hata ödül raporu bağlantılar hakkında (/.well-known/assetlinks.json).
Taşıma Katmanı İncelemesi ve Doğrulama Hataları
- Sertifikalar her zaman düzgün bir şekilde incelenmez Android uygulamaları tarafından. Bu uygulamaların uyarıları göz ardı etmesi ve kendinden imzalı sertifikaları kabul etmesi veya bazı durumlarda HTTP bağlantılarına geri dönmesi yaygındır.
- SSL/TLS el sıkışması sırasında müzakereler bazen zayıftır, güvensiz şifreleme takımları kullanır. Bu zayıflık, bağlantıyı adam ortada (MITM) saldırılarına karşı savunmasız hale getirir ve saldırganların verileri şifrelerini çözmesine olanak tanır.
- Özel bilgilerin sızması, uygulamalar güvenli kanallar kullanarak kimlik doğrulaması yaparken ancak diğer işlemler için güvenli olmayan kanallar üzerinden iletişim kurduğunda bir risk oluşturur. Bu yaklaşım, oturum çerezleri veya kullanıcı detayları gibi hassas verilerin kötü niyetli varlıklar tarafından ele geçirilmesini korumaz.
Sertifika Doğrulama
Sertifika doğrulama üzerine odaklanacağız. Sunucunun sertifikasının bütünlüğü, güvenliği artırmak için doğrulanmalıdır. Bu, güvensiz TLS yapılandırmaları ve hassas verilerin şifrelenmemiş kanallar üzerinden iletilmesi önemli riskler oluşturabileceğinden kritik öneme sahiptir. Sunucu sertifikalarını doğrulama ve zayıflıkları giderme ile ilgili ayrıntılı adımlar için, bu kaynak kapsamlı rehberlik sağlamaktadır.
SSL Pinning
SSL Pinning, uygulamanın sunucunun sertifikasını uygulama içinde saklanan bilinen bir kopya ile doğruladığı bir güvenlik önlemidir. Bu yöntem, MITM saldırılarını önlemek için gereklidir. Hassas bilgi işleyen uygulamalar için SSL Pinning uygulamak şiddetle önerilir.
Trafik İncelemesi
HTTP trafiğini incelemek için, proxy aracının sertifikasını yüklemek gereklidir (örneğin, Burp). Bu sertifikayı yüklemeden, şifreli trafik proxy üzerinden görünmeyebilir. Özel CA sertifikası yükleme rehberi için, buraya tıklayın.
API Seviye 24 ve üzeri hedefleyen uygulamalar, proxy'nin CA sertifikasını kabul etmek için Ağ Güvenliği Yapılandırmasında değişiklikler gerektirir. Bu adım, şifreli trafiği incelemek için kritik öneme sahiptir. Ağ Güvenliği Yapılandırmasını değiştirme talimatları için, bu eğitime başvurun.
SSL Pinning'i Aşma
SSL Pinning uygulandığında, HTTPS trafiğini incelemek için bunu aşmak gerekli hale gelir. Bu amaçla çeşitli yöntemler mevcuttur:
- apk'yi otomatik olarak değiştirerek SSL Pinning'i aşmak için apk-mitm kullanabilirsiniz. Bu seçeneğin en iyi avantajı, SSL Pinning'i aşmak için root'a ihtiyaç duymamanızdır, ancak uygulamayı silip yeni olanı yeniden yüklemeniz gerekecek ve bu her zaman işe yaramayabilir.
- Bu korumayı aşmak için Frida kullanabilirsiniz (aşağıda tartışılmıştır). Burp+Frida+Genymotion kullanma rehberiniz burada: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- SSL Pinning'i otomatik olarak aşmak için objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable"
- SSL Pinning'i otomatik olarak aşmak için MobSF dinamik analizi (aşağıda açıklandığı gibi) deneyebilirsiniz.
- Hala yakalamadığı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
Yaygın Web Zayıflıklarını Arama
Uygulama içinde yaygın web zayıflıklarını da aramak önemlidir. Bu zayıflıkları tanımlama ve hafifletme ile ilgili ayrıntılı 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 araç takımıdır.
Çalışan uygulamaya erişebilir ve çalışma zamanında yöntemleri bağlayarak 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 eğitimi
- Frida ile eylemler için bazı "GUI": https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection, Frida kullanımını otomatikleştirmek için harika: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Burada bazı harika Frida betikleri bulabilirsiniz: https://codeshare.frida.re/
- Frida'yı https://erfur.github.io/blog/dev/code-injection-without-ptrace adresinde belirtildiği gibi yükleyerek anti-debugging / anti-frida mekanizmalarını aşmayı deneyin (araç linjector)
Belleği Dökme - Fridump
Uygulamanın, saklamaması gereken hassas bilgileri (şifreler veya mnemonikler gibi) bellekte saklayıp saklamadığını kontrol edin.
Fridump3 kullanarak uygulamanın belleğini dökebilirsiniz:
# 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ökecektir ve burada şunlarla grep yapabilirsiniz:
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]+$"
Keystore'daki Hassas Veriler
Android'de Keystore, hassas verileri saklamak için en iyi yerdir, ancak yeterli ayrıcalıklara sahip olunduğunda erişim sağlamak mümkündür. Uygulamalar burada genellikle hassas verileri düz metin olarak sakladığı için pentestler, bu verileri çalabilecek fiziksel erişime sahip birinin veya root kullanıcısının kontrolünde kontrol edilmelidir.
Bir uygulama verileri keystore'da saklasa bile, verilerin şifrelenmiş olması gerekir.
Keystore içindeki verilere erişmek için bu Frida script'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 Bypass
Aşağıdaki Frida script'ini kullanarak, Android uygulamalarının belirli hassas alanları korumak için gerçekleştirebileceği parmak izi kimlik doğrulamasını atlamak mümkün olabilir:
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
Arka Plan Görüntüleri
Bir uygulamayı arka plana aldığınızda, Android uygulamanın bir anlık görüntüsünü saklar, böylece ön plana geri döndüğünde, uygulama yüklenmeden önce görüntüyü yüklemeye başlar, bu da uygulamanın daha hızlı yüklendiği izlenimini verir.
Ancak, bu anlık görüntü hassas bilgiler içeriyorsa, anlık görüntüye erişimi olan biri bu bilgileri çalıp alabilir (erişim için root gereklidir).
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ımını önlemenin bir yolunu sağlar. Bu bayrağı kullanarak, pencere içeriği güvenli olarak kabul edilir, bu da ekran görüntülerinde görünmesini veya güvenli olmayan ekranlarda görüntülenmesini engeller.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Android Uygulama Analizörü
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 Intents'leri işleyen ve startActivity(...)
veya sendBroadcast(...)
gibi yöntemlere ileten proxy bileşenleri, aktiviteleri, hizmetleri ve yayın alıcıları oluştururlar; bu da riskli olabilir.
Tehlike, saldırganların bu Intents'leri yanlış yönlendirerek dışa aktarılmamış uygulama bileşenlerini tetiklemelerine veya hassas içerik sağlayıcılarına erişmelerine izin vermekte yatmaktadır. Dikkate değer bir örnek, URL'leri Intent
nesnelerine dönüştüren WebView
bileşenidir; Intent.parseUri(...)
aracılığıyla bunları işleyip çalıştırabilir, bu da kötü niyetli Intent enjeksiyonlarına yol açabilir.
Temel Çıkarımlar
- Intent Enjeksiyonu, webin Açık Yönlendirme sorununa benzer.
- Sömürü,
Intent
nesnelerini ekstra olarak geçirmeyi içerir; bu da güvensiz işlemleri yürütmek için yönlendirilebilir. - Dışa aktarılmamış bileşenleri ve içerik sağlayıcılarını saldırganlara açabilir.
WebView
’in URL'denIntent
dönüşümü, istenmeyen eylemleri kolaylaştırabilir.
Android İstemci Tarafı Enjeksiyonları ve Diğerleri
Bu tür zafiyetler hakkında Web'den haberdar olmalısınız. Android uygulamasında bu zafiyetlere karşı özellikle dikkatli olmalısınız:
- SQL Enjeksiyonu: Dinamik sorgular veya İçerik Sağlayıcılarla çalışırken, parametreli sorgular kullandığınızdan emin olun.
- JavaScript Enjeksiyonu (XSS): Herhangi bir WebView için JavaScript ve Eklenti desteğinin devre dışı olduğundan emin olun (varsayılan olarak devre dışıdır). Daha fazla bilgi burada.
- Yerel Dosya Dahil Etme: WebView'lerin dosya sistemine erişimi devre dışı olmalıdır (varsayılan olarak etkindir) -
(webview.getSettings().setAllowFileAccess(false);)
. Daha fazla bilgi burada. - Sonsuz çerezler: Android uygulaması oturumu bitirdiğinde çerez iptal edilmez veya hatta diske kaydedilebilir.
- Çerezlerde Güvenli Bayrak
Otomatik Analiz
MobSF
Statik analiz
Uygulamanın güvenlik açığı değerlendirmesi, güzel bir web tabanlı ön yüz kullanarak yapılır. Ayrıca dinamik analiz de gerçekleştirebilirsiniz (ancak ortamı hazırlamanız gerekir).
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ı (Windows uygulamaları, Windows ana bilgisayarında kurulu bir MobSF'den analiz edilmelidir) analiz edebilir.
Ayrıca, bir Android veya IOS uygulamasının kaynak koduyla bir ZIP dosyası oluşturursanız (uygulamanın kök klasörüne gidin, her şeyi seçin ve bir ZIP dosyası oluşturun), bunu da analiz edebilecektir.
MobSF ayrıca diff/Compare analizi yapmanıza ve VirusTotal ile entegre olmanıza olanak tanır (API anahtarınızı MobSF/settings.py dosyasına ayarlamanız ve etkinleştirmeniz gerekecek: VT_ENABLED = TRUE
VT_API_KEY = <Your API key>
VT_UPLOAD = TRUE
). Ayrıca VT_UPLOAD
'ı False
olarak ayarlayabilirsiniz, bu durumda hash dosya yerine yüklenir.
MobSF ile Yardımlı Dinamik Analiz
MobSF, Android'de dinamik analiz için de çok yardımcı olabilir, ancak bu durumda MobSF ve genymotion'ı ana bilgisayarınıza kurmanız gerekecek (bir VM veya Docker çalışmayacaktır). Not: Önce genymotion'da bir VM başlatmalısınız ve sonra MobSF'yi başlatmalısınız.
MobSF dinamik analizörü şunları yapabilir:
- Uygulama verilerini dökme (URL'ler, günlükler, panoya kopyalananlar, sizin yaptığınız ekran görüntüleri, "Exported Activity Tester" tarafından yapılan 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 için istediğinizde basmanız veya tüm dışa aktarılan etkinliklerin ekran görüntülerini almak için "Exported Activity Tester" butonuna basmanız gerekir.
- HTTPS trafiğini yakalama
- Çalışma zamanı bilgilerini elde etmek için Frida kullanma
Android sürümleri > 5'ten itibaren, Frida'yı otomatik olarak başlatacak ve trafiği yakalamak için global proxy ayarlarını ayarlayacaktır. Sadece test edilen uygulamadan gelen trafiği yakalayacaktır.
Frida
Varsayılan olarak, SSL pinning'i bypass etmek, root tespiti ve hata ayıklayıcı tespiti yapmak ve ilginç API'leri izlemek için bazı Frida Script'lerini de kullanacaktır.
MobSF ayrıca dışa aktarılan etkinlikleri çağırabilir, bunların ekran görüntülerini alabilir ve rapor için kaydedebilir.
Dinamik testi başlatmak için yeşil butona basın: "Start Instrumentation". Frida script'leri tarafından üretilen günlükleri görmek için "Frida Live Logs" butonuna basın ve bağlı yöntemlere yapılan tüm çağrıları, geçirilen argümanları ve döndürülen değerleri görmek için "Live API Monitor" butonuna basın (bu, "Start Instrumentation" butonuna bastıktan sonra görünecektir).
MobSF ayrıca kendi Frida script'lerinizi yüklemenize olanak tanır (Frida script'lerinizin sonuçlarını MobSF'ye göndermek için send()
fonksiyonunu kullanın). Ayrıca yükleyebileceğiniz birçok önceden yazılmış script vardır (daha fazlasını MobSF/DynamicAnalyzer/tools/frida_scripts/others/
dizinine ekleyebilirsiniz), sadece seçin, "Load" butonuna basın ve "Start Instrumentation" butonuna basın (bu script'lerin günlüklerini "Frida Live Logs" içinde görebileceksiniz).
Ayrıca, bazı Yardımcı Frida işlevsellikleriniz var:
- Yüklenen Sınıfları Sayma: Tüm yüklenen sınıfları yazdırır
- Dizeleri Yakalama: Uygulamayı kullanırken tüm yakalanan dizeleri yazdırı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 True veya False olup olmadığını gösterir.
- Sınıf Yöntemlerini Sayma: Sınıf adını (örneğin "java.io.File") yazın ve sınıfın tüm yöntemlerini yazdırır.
- Sınıf Deseni Arama: Desene göre sınıfları arar
- Sınıf Yöntemlerini İzleme: Bütün bir sınıfı izler (sınıfın tüm yöntemlerinin giriş ve çıkışlarını görür). 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" butonuna basmanız gerekir ve tüm çıktıları "Frida Live Logs" içinde göreceksiniz.
Shell
Mobsf ayrıca dinamik analiz sayfasının altında bazı adb komutları, MobSF komutları ve yaygın shell komutları ile bir shell sunar. Bazı ilginç komutlar:
help
shell ls
activities
exported_activities
services
receivers
HTTP araçları
HTTP trafiği yakalandığında, "HTTP(S) Trafik" altındaki yakalanan trafiğin çirkin bir görünümünü veya "HTTP Araçlarını Başlat" yeşil butonundaki daha güzel bir görünümünü görebilirsiniz. İkinci seçenekten, yakalanan istekleri Burp veya Owasp ZAP gibi proxy'lere gönderebilirsiniz.
Bunu yapmak için, Burp'ı açın --> Intercept'i kapatın --> MobSB HTTP Araçları'nda isteği seçin --> "Fuzzer'a Gönder" butonuna basın --> proxy adresini seçin (http://127.0.0.1:8080\).
MobSF ile dinamik analizi tamamladıktan sonra, http isteklerini fuzzlamak ve güvenlik açıklarını aramak için "Web API Fuzzer'ı Başlat" butonuna basabilirsiniz.
note
MobSF ile dinamik bir analiz gerçekleştirdikten sonra proxy ayarları yanlış yapılandırılmış olabilir ve bunları GUI'den düzeltemezsiniz. Proxy ayarlarını düzeltmek için:
adb shell settings put global http_proxy :0
Inspeckage ile Yardımlı Dinamik Analiz
Aracı Inspeckage adresinden edinebilirsiniz.
Bu araç, dinamik analiz gerçekleştirirken uygulamada neler olduğunu anlamanızı sağlamak için bazı Hooks kullanacaktır.
Yaazhini
Bu, GUI ile statik analiz gerçekleştirmek için harika bir araçtır.
Qark
Bu araç, kaynak kodunda veya paketlenmiş APK'larda çeşitli güvenlik ile ilgili Android uygulama açıklarını aramak için tasarlanmıştır. Araç ayrıca, bulunan bazı güvenlik açıklarını (Açık aktiviteler, intentler, tapjacking...) istismar etmek için "Proof-of-Concept" dağıtılabilir APK ve ADB komutları oluşturma yeteneğine de sahiptir. Drozer ile olduğu gibi, test cihazını root etmenize gerek 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örüntüler
- 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'i analiz eder
- Yaygın güvenlik açıkları ve davranışlar için statik kaynak kodu analizi
- Cihaz bilgisi
- ve daha fazlası
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER, Windows, MacOS X ve Linux'ta kullanılabilen bir komut satırı uygulamasıdır ve güvenlik açıklarını aramak için .apk dosyalarını analiz eder. Bunu, APK'ları sıkıştırmasını 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 toplanmıştır ve her şirket veya testçi, ihtiyaç duydukları şeyleri analiz etmek için kendi kurallarını oluşturabilir.
En son ikili dosyaları indirme sayfasından indirin.
super-analyzer {apk_file}
StaCoAn
StaCoAn, geliştiricilere, bugbounty avcılarına ve etik hackerlara mobil uygulamalar üzerinde statik kod analizi yapmalarında 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ırakmanız ve bunun için size görsel ve taşınabilir bir rapor oluşturmasıdır. Özelleştirilmiş bir deneyim elde etmek için ayarları ve kelime listelerini değiştirebilirsiniz.
İndir en son sürüm:
./stacoan
AndroBugs
AndroBugs Framework, geliştiricilerin veya hackerların Android uygulamalarındaki potansiyel güvenlik açıklarını bulmalarına yardımcı olan bir Android zafiyet analiz sistemidir.
Windows sürümleri
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn, bir Android uygulaması tarafından geliştirilen potansiyel kötü niyetli davranışları tespit etmek ve kullanıcıyı uyarmak amacıyla tasarlanmış bir araçtır.
Tespit, uygulamanın Dalvik bytecode'unun statik analizi ile gerçekleştirilir ve bu, Smali olarak temsil edilir; androguard
kütüphanesi kullanılır.
Bu araç, aşağıdaki gibi "kötü" uygulamaların yaygın davranışlarını arar: Telefon kimliklerinin sızdırılması, Ses/görüntü akışının kesilmesi, PIM verilerinin değiştirilmesi, Rastgele kod yürütme...
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
MARA Framework
MARA, Mobil Uygulama Tersine Mühendislik ve Analiz Çerçevesidir. 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 profesyonelleri için daha kolay ve daha dostane hale getirmektir.
Şunları yapabilir:
- Farklı araçlar kullanarak Java ve Smali kodunu çıkarmak
- APK'ları analiz etmek için: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Regex kullanarak APK'dan özel bilgileri çıkarmak.
- Manifest'i analiz etmek.
- Bulunan alan adlarını analiz etmek için: pyssltest, testssl ve whatweb
- APK'yı apk-deguard.com üzerinden deşifre etmek.
Koodous
Kötü amaçlı yazılımları tespit etmek için kullanışlı: https://koodous.com/
Kodun Obfuscation/Deobfuscation'ı
Kodu obfuscate etmek için kullandığınız hizmet ve yapılandırmaya bağlı olarak, gizli bilgiler obfuscate edilmiş veya edilmemiş olabilir.
ProGuard
Wikipedia'dan: ProGuard, Java kodunu küçülten, optimize eden ve obfuscate eden açık kaynaklı bir komut satırı aracıdır. Bytecode'u optimize etmenin yanı sıra kullanılmayan talimatları tespit edip kaldırabilir. ProGuard, ücretsiz bir 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 uygulama yayın modunda derlenirken çalışır.
DexGuard
APK'yı deşifre etmek için adım adım bir kılavuzu https://blog.lexfo.fr/dexguard.html adresinde bulabilirsiniz.
(Bu kılavuzdan) En son kontrol ettiğimizde, Dexguard çalışma modu şuydu:
- Bir kaynağı InputStream olarak yüklemek;
- Sonucu deşifre etmek için FilterInputStream'den türetilen bir sınıfa beslemek;
- Bir tersine mühendislik uzmanının birkaç dakikasını boşa harcamak için gereksiz obfuscation yapmak;
- Deşifre edilmiş sonucu bir ZipInputStream'e beslemek ve bir DEX dosyası almak;
- Son olarak, elde edilen DEX'i
loadDex
yöntemi kullanarak bir Kaynak olarak yüklemek.
DeGuard
DeGuard, Android obfuscation araçları tarafından gerçekleştirilen obfuscation sürecini tersine çevirir. Bu, kod incelemesi ve kütüphaneleri tahmin etme gibi birçok güvenlik analizini mümkün kılar.
Obfuscate edilmiş bir APK'yı platformlarına yükleyebilirsiniz.
Deobfuscate android App
Bu, Android uygulamalarındaki potansiyel güvenlik açıklarını bulmak ve Android uygulama kodunu deşifre etmek için bir LLM aracıdır. Google'ın Gemini kamu API'sini kullanır.
Simplify
Bu, genel bir android deobfuscator'dır. Simplify, bir uygulamayı sanallaştırarak çalıştırır ve davranışını anlamaya çalışır, ardından kodun optimize edilmesini sağlar, böylece aynı şekilde davranır ancak bir insanın anlaması daha kolaydır. Her optimizasyon türü basit ve genel olduğundan, kullanılan obfuscation türü önemli değildir.
APKiD
APKiD, bir APK'nın nasıl yapıldığını size bilgi verir. Birçok derleyici, paketleyici, obfuscator ve diğer garip şeyleri tanımlar. Android için PEiD gibidir.
Manual
Özel obfuscation'ı nasıl tersine mühendislik yapacağınızı öğrenmek için bu eğitimi okuyun
Labs
Androl4b
AndroL4b, ubuntu-mate tabanlı bir Android güvenlik sanal makinesidir ve 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, eğitim ve laboratuvar koleksiyonunu içerir.
References
- 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
Yet to try
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.