Android Uygulamaları Pentesting

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) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Android Uygulamaları Temelleri

Bu sayfayı okumaya başlamanız, Android güvenliğiyle ilgili en önemli kısımlar ve bir Android uygulamasındaki en tehlikeli bileşenler hakkında bilgi sahibi olmanız açısından şiddetle tavsiye edilir:

Android Applications Basics

ADB (Android Debug Bridge)

Bu, bir Android cihaza (emüle edilmiş veya fiziksel) bağlanmak için ihtiyaç duyduğunuz ana araçtır.
ADB, bir bilgisayardan USB veya Network üzerinden cihazları kontrol etmeye olanak tanır. Bu yardımcı araç, dosyaların her iki yönde kopyalanmasını, uygulamaların kurulumunu 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 sağlar.

adb kullanmayı öğrenmek için aşağıdaki ADB Commands listesine göz atın.

Smali

Bazen uygulama code’unu değiştirmek gizli bilgilere (ör. iyi obfuskelenmiş parolalar veya flag’ler) erişmek için ilginç olabilir. Bu durumda apk’yı decompile edip, code’u değiştirmek ve tekrar derlemek ilginç olabilir.
In this tutorial you can learn how to decompile and APK, modify Smali code and recompile the APK with the new functionality. Bu, sunulacak dinamik analiz sırasında gerçekleştirilecek çeşitli testler için bir alternatif olarak çok yararlı olabilir. Bu olasılığı her zaman aklınızda bulundurun.

Diğer ilginç püf noktaları

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 split’leri ve base 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

Android Enterprise & Work Profile Attacks

Android Enterprise Work Profile Bypass

Vaka Çalışmaları & Zayıflıklar

Air Keyboard Remote Input Injection

Android Rooting Frameworks Manager Auth Bypass Syscall Hook

Statik Analiz

Her şeyden önce, bir APK’yı analiz etmek için bir decompiler kullanarak Java koduna bakmalısınız.
Lütfen, farklı kullanılabilir decompilerlar hakkında bilgi bulmak için burayı okuyun.

İlginç Bilgiler Arama

Sadece APK’nın strings’lerine bakarak şifreler, URLs (https://github.com/ndelphit/apkurlgrep), api anahtarları, encryption, bluetooth uuids, tokens ve ilginç olabilecek her şeyi arayabilirsiniz… hatta kod yürütme için backdoors veya kimlik doğrulama backdoor’ları (uygulamaya gömülü admin kimlik bilgileri) için bile bakın.

Firebase

Özellikle firebase URL’lerine dikkat edin ve kötü yapılandırılmış olup olmadığını kontrol edin. Firebase’in ne olduğu ve nasıl sömürülebileceği hakkında daha fazla bilgi için buraya bakın.

Uygulamayı Temel Düzeyde Anlamak - Manifest.xml, strings.xml

Bir uygulamanın Manifest.xml ve strings.xml dosyalarının incelenmesi potansiyel güvenlik zafiyetlerini ortaya çıkarabilir. Bu dosyalara decompilerlar ile erişilebileceği gibi APK dosya uzantısını .zip olarak değiştirip açarak da ulaşılabilir.

Manifest.xml dosyasından tespit edilebilecek zayıflıklar şunlardır:

  • Debuggable Applications: Manifest.xml dosyasında debuggable="true" olarak ayarlanmış uygulamalar risk oluşturur çünkü bağlantılara izin vererek sömürüye yol açabilir. Debuggable uygulamaların nasıl sömürüleceği hakkında daha fazla bilgi için debuggable uygulamaları cihaz üzerinde bulma ve sömürme ile ilgili bir eğitime bakın.
  • Backup Settings: Hassas bilgilerle uğraşan uygulamalar için android:allowBackup="false" özelliğinin açıkça ayarlanması gerekir; aksi takdirde özellikle usb debugging etkinse adb üzerinden yetkisiz veri yedeklemelerine izin verilebilir.
  • Network Security: res/xml/ içindeki özel ağ güvenlik yapılandırmaları (android:networkSecurityConfig="@xml/network_security_config") certificate pinleri ve HTTP trafiği ayarları gibi güvenlik detaylarını belirtebilir. Örneğin belirli domainler için HTTP trafiğine izin verme gibi.
  • Exported Activities and Services: Manifestte dışa açılmış activity ve servisleri belirlemek, kötüye kullanılabilecek bileşenleri ortaya çıkarabilir. Dinamik testler sırasında bu bileşenlerin nasıl sömürülebileceği daha fazla analizle görülebilir.
  • Content Providers and FileProviders: Açıkta bırakılmış content provider’lar yetkisiz erişime veya veri değişikliğine izin verebilir. FileProvider yapılandırmaları da dikkatle incelenmelidir.
  • Broadcast Receivers and URL Schemes: Bu bileşenler sömürü için kullanılabilir; özellikle URL şemalarının giriş doğrulaması açısından nasıl yönetildiğine dikkat edilmelidir.
  • SDK Versions: minSdkVersion, targetSDKVersion, ve maxSdkVersion öznitelikleri desteklenen Android sürümlerini gösterir; artık desteklenmeyen, zafiyetli Android sürümlerine destek verilmemesinin önemi burada ortaya çıkar.

strings.xml dosyasından API anahtarları, özel şemalar ve diğer geliştirici notları gibi hassas bilgiler keşfedilebilir; bu kaynakların dikkatle incelenmesi gerekir.

Tapjacking

Tapjacking, kötü niyetli bir uygulamanın başlatılarak victim application’ın üstüne konumlandırılması ile yapılan bir saldırıdır. Bir kere victim uygulamayı görünür şekilde örttüğünde, kullanıcıyı kandıracak şekilde tasarlanmış bir kullanıcı arayüzü ile etkileşim sağlamaya çalışır; bu etkileşim aynı zamanda victim uygulamaya iletilir.
Sonuç olarak, kullanıcı aslında victim uygulama üzerinde işlem yaptığını bilmeyecek şekilde körleştirilir.

Daha fazla bilgi için:

Tapjacking

Task Hijacking

Bir activity’nin launchMode değeri singleTask olup herhangi bir taskAffinity tanımlanmamışsa task Hijacking’e karşı savunmasızdır. Bu, kötü niyetli bir uygulamanın kurulup gerçek uygulamadan önce başlatılması durumunda gerçek uygulamanın task’ını ele geçirebileceği anlamına gelir (yani kullanıcı gerçek uygulamayı kullandığını düşünerek kötü amaçlı uygulama ile etkileşime girecektir).

Daha fazla bilgi:

Android Task Hijacking

Güvensiz veri depolama

Dahili Depolama

Android’de dahili depolamada saklanan dosyalar, bunları 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 çoğu uygulamanın güvenlik ihtiyaçları için genellikle 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 verirler. Bu modlar, bu dosyalara diğer uygulamalar tarafından, potansiyel olarak kötü amaçlı olanlar dahil, erişimi kısıtlamaz.

  1. Statik Analiz:
  • MODE_WORLD_READABLE ve MODE_WORLD_WRITABLE kullanımının dikkatle incelenmesini sağlayın. Bu modlar dosyaların istem dışı veya yetkisiz erişime maruz kalmasına yol açabilir.
  1. Dinamik Analiz:
  • Uygulama tarafından oluşturulan dosyalara ayarlanmış izinleri doğrulayın. Özellikle herhangi bir dosyanın dünya tarafından okunabilir veya yazılabilir olarak ayarlanıp ayarlanmadığını kontrol edin. Bu, cihazda yüklü herhangi bir uygulamanın, kaynağı veya amacı ne olursa olsun, bu dosyaları okumasına veya değiştirmesine izin verebileceği için ciddi bir güvenlik riski oluşturur.

Harici Depolama

SD Kart gibi harici depolamadaki dosyalarla uğraşırken bazı önlemler alınmalıdır:

  1. Erişilebilirlik:
  • Harici depolamadaki dosyalar global olarak okunabilir ve yazılabilirdir. Bu, herhangi bir uygulamanın veya kullanıcının bu dosyalara erişebileceği anlamına gelir.
  1. Güvenlik Endişeleri:
  • Erişimin kolaylığı nedeniyle hassas bilgileri harici depolamada saklamamanız önerilir.
  • Harici depolama çıkarılabilir veya herhangi bir uygulama tarafından erişilebilir olduğundan daha az güvenlidir.
  1. Harici Depolamadan Veri İşleme:
  • Harici depolamadan alınan veriler üzerinde her zaman girdi doğrulaması yapın. Bu önemlidir çünkü veri güvenilmeyen bir kaynaktan gelmektedir.
  • Harici depolamada yürütülebilir veya class dosyalarının dinamik olarak yüklenmesi için saklanması şiddetle tavsiye edilmez.
  • Uygulamanızın harici depolamadan yürütülebilir dosyalar alması gerekiyorsa, bu dosyaların dinamik olarak yüklenmeden önce imzalanmış ve kriptografik olarak doğrulanmış olmasını sağlayın. Bu adım uygulamanızın güvenlik bütünlüğü için hayati önemdedir.

Harici depolamaya /storage/emulated/0, /sdcard, /mnt/sdcard üzerinden erişilebilir.

Tip

Android 4.4 (API 17) ile başlayarak, SD kartın dizin yapısı bir uygulamanın yalnızca o uygulamaya özel dizine erişimini sınırlayan bir yapı içerir. Bu, kötü niyetli bir uygulamanın başka bir uygulamanın dosyalarına okuma veya yazma erişimi kazanmasını engeller.

Düz metin olarak saklanan hassas veriler

  • Shared preferences: Android her uygulamanın kolayca xml dosyaları /data/data/<packagename>/shared_prefs/ yoluna kaydetmesine izin verir ve bazen bu klasörde düz metin olarak hassas bilgiler bulunabilir.
  • Databases: Android her uygulamanın kolayca sqlite veritabanlarını /data/data/<packagename>/databases/ yoluna kaydetmesine izin verir ve bazen bu klasörde düz metin olarak hassas bilgiler bulunabilir.

Broken TLS

Accept All Certificates

Bazı nedenlerden dolayı geliştiriciler bazen hostname eşleşmese bile tüm sertifikaları kabul ederler; örneğin aşağıdaki gibi kod satırlarıyla:

SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

Bunu test etmenin iyi bir yolu, cihaz içinde Burp CA’yı yetkilendirmeden Burp gibi bir proxy kullanarak trafiği yakalamaya çalışmaktır. Ayrıca Burp ile farklı bir hostname için bir sertifika oluşturup onu kullanabilirsiniz.

Broken Cryptography

Poor Key Management Processes

Bazı geliştiriciler hassas verileri local storage’da saklayıp kod içinde hardcoded/öngörülebilir bir anahtarla encrypt eder. Bu yapılmamalıdır çünkü bazı reversing teknikleri saldırganların gizli bilgileri çıkarmasına izin verebilir.

Use of Insecure and/or Deprecated Algorithms

Geliştiriciler yetkilendirme checks yapmak, veriyi store etmek veya send etmek için deprecated algorithms kullanmamalıdır. Bu algoritmalardan bazıları: RC4, MD4, MD5, SHA1… Örneğin şifreleri saklamak için hashes kullanılıyorsa, salt ile birlikte brute-force resistant hash’ler kullanılmalıdır.

Other checks

  • APK’yı ters mühendislik işini zorlaştırmak için obfuscate the APK yapmanız önerilir.
  • Uygulama hassassa (örn. bankacılık uygulamaları gibi), mobilin rooted olup olmadığını kontrol etmelidir ve duruma göre davranmalıdır.
  • Uygulama hassassa (örn. bankacılık uygulamaları gibi), bir emulator kullanılıp kullanılmadığını kontrol etmelidir.
  • Uygulama hassassa (örn. bankacılık uygulamaları gibi), çalıştırmadan önce kendi integrity’sini check etmelidir; böylece değiştirildiğini anlayabilir.
  • Hangi compiler/packer/obfuscator kullanılarak APK oluşturulduğunu kontrol etmek için APKiD kullanın

React Native Application

React uygulamalarının javascript koduna kolayca nasıl erişileceğini öğrenmek için aşağıdaki sayfayı okuyun:

React Native Application

Xamarin Applications

Bir xamarin uygulamasının C# koduna kolayca nasıl erişeceğinizi öğrenmek için aşağıdaki sayfayı okuyun:

Xamarin Apps

Superpacked Applications

Bu blog post göre superpacked, bir uygulamanın içeriğini tek bir dosyaya sıkıştıran bir Meta algoritmasıdır. Blog, bu tür uygulamaları dekompres eden bir uygulama oluşturma ihtimalinden ve dosyaları elde etmek için uygulamayı çalıştırıp filesystem’ten dekompres edilmiş dosyaları toplama gibi daha hızlı bir yöntemden bahsediyor.

Automated Static Code Analysis

mariana-trench aracı, uygulamanın kodunu scanning yaparak vulnerabilities bulabilir. Bu araç, araca input’un kullanıcı tarafından kontrol edildiği yerleri gösteren bir dizi known sources, kötü niyetli kullanıcı girdisinin zarara yol açabileceği dangerous places gösteren sinks ve rules içerir. Bu kurallar, bir vulnerability’yi gösterecek sources-sinks kombinasyonlarını belirtir.

Bu bilgi ile mariana-trench kodu gözden geçirir ve olası vulnerability’leri bulur.

Secrets leaked

Bir uygulama içinde keşfedebileceğiniz sırlar (API keys, şifreler, gizli url’ler, subdomain’ler…) olabilir. Böyle bir durumda https://github.com/dwisiswant0/apkleaks gibi bir araç kullanabilirsiniz.

Bypass Biometric Authentication

Bypass Biometric Authentication (Android)

Other interesting functions

  • Code execution: Runtime.exec(), ProcessBuilder(), native code:system()
  • Send SMSs: sendTextMessage, sendMultipartTestMessage
  • Native functions declared as native: public native, System.loadLibrary, System.load
  • Read this to learn how to reverse native functions
  • JNI aracılığıyla bellek içi native kod çalıştırma (indirilen shellcode → mmap/mprotect → çağır):

In Memory Jni Shellcode Execution

Other tricks

content:// protocol



Dynamic Analysis

Öncelikle uygulamayı ve tüm ortamı (Burp CA sertifikası, Drozer ve Frida başta olmak üzere) kurabileceğiniz bir ortama ihtiyacınız var. Bu yüzden bir rooted cihaz (emüle edilmiş veya değil) kesinlikle önerilir.

Online Dynamic analysis

Ücretsiz bir hesap oluşturabilirsiniz: https://appetize.io/. Bu platform APK yüklemeye ve çalıştırmaya izin verir; bu da bir apk’nın nasıl davrandığını görmek için faydalıdır.

Web üzerinden uygulamanızın log’larını bile görebilir ve adb ile bağlanabilirsiniz.

ADB bağlantısı sayesinde emülatör içinde Drozer ve Frida kullanabilirsiniz.

Local Dynamic Analysis

Using an emulator

  • Android Studio (x86 ve arm cihazlar oluşturabilirsiniz; ve this göre latest x86 sürümleri ARM kütüphanelerini yavaş arm emülatörüne gerek kalmadan destekler).
  • Kurulumunu bu sayfada öğrenin:

AVD - Android Virtual Device

  • Genymotion (Free version: Personal Edition, bir hesap oluşturmanız gerekir. POTANSİYEL HATALARDAN KAÇINMAK İÇİN VirtualBox İLE birlikte olan sürümü download etmeniz önerilir.)
  • Nox (Ücretsiz, ancak Frida veya Drozer’ı desteklemiyor).

Tip

Herhangi bir platformda yeni bir emulator oluştururken ekran ne kadar büyükse emulator o kadar yavaş çalışır. Mümkünse küçük ekranları seçin.

Genymotion’da google servislerini (ör. AppStore) install etmek için aşağıdaki görüntüde kırmızı ile işaretlenmiş butona tıklamanız gerekir:

Ayrıca, Genymotion içindeki Android VM konfigürasyonunda Bridge Network mode seçebileceğinizi unutmayın (bu, araçların bulunduğu farklı bir VM’den Android VM’ye bağlanacaksanız faydalı olacaktır).

Use a physical device

Debugging seçeneklerini etkinleştirmeniz gerekir ve mümkünse cihazı root etmeniz iyi olur:

  1. Settings.
  2. (Android 8.0 ve sonrası) System seçin.
  3. About phone seçin.
  4. Build number üzerine 7 kez basın.
  5. Geri dönün ve Developer options’ı bulacaksınız.

Uygulamayı yükledikten sonra yapmanız gereken ilk şey onu çalıştırmak, ne yaptığını ve nasıl çalıştığını araştırmak ve rahat olmaktır.
İlk dynamic analysis’i MobSF dynamic analysis + pidcat kullanarak yapmanızı öneririm; böylece uygulamanın nasıl çalıştığını öğrenirken MobSF birçok ilginç veriyi capture eder ve daha sonra inceleyebilirsiniz.

Magisk/Zygisk kısa notlar (Pixel cihazlarda önerilir)

  • systemless root elde etmek için Magisk uygulamasıyla boot.img’yi patch’leyip fastboot ile flashlayın
  • root gizlemek için Zygisk + DenyList’i etkinleştirin; daha güçlü gizleme gerektiğinde LSPosed/Shamiko düşünün
  • OTA güncellemelerinden kurtulmak için orijinal boot.img’yi saklayın; her OTA’dan sonra yeniden patch’leyin
  • ekran yansıtma için host üzerinde scrcpy kullanın

Unintended Data Leakage

Logging

Geliştiriciler, debugging information’ı açıkça ortaya çıkarmakta dikkatli olmalıdır; çünkü bu hassas verilerin leak olmasına yol açabilir. Uygulama loglarını izlemek ve hassas bilgileri tespit etmek için pidcat ve adb logcat araçları önerilir. Pidcat kullanım kolaylığı ve okunabilirliği nedeniyle tercih edilir.

Warning

Android 4.0’dan daha yeni sürümlerde uygulamalar sadece kendi loglarına erişebilir. Yani uygulamalar diğer uygulamaların loglarına erişemez.
Yine de, hassas bilgileri loglamamak hala önerilir.

Copy/Paste Buffer Caching

Android’in clipboard-based framework’ü uygulamalarda kopyala-yapıştır işlevselliği sağlar, ancak diğer uygulamaların clipboard’a erişebilmesi nedeniyle hassas verilerin ifşa edilmesi riski vardır. Kredi kartı bilgileri gibi hassas uygulama bölümlerinde kopyala/yapıştır fonksiyonlarını devre dışı bırakmak önemlidir, böylece veri leaks önlenir.

Crash Logs

Bir uygulama crash yapıp log kaydederse, bu loglar özellikle uygulama tersine mühendislik yapılamıyorsa saldırganlara yardımcı olabilir. Bu riski azaltmak için crash durumlarında log tutmaktan kaçının; eğer loglar network üzerinden gönderilecekse güvenlik için SSL kanalı ile gönderildiğinden emin olun.

Bir pentester olarak, bu loglara bakmaya çalışın.

Analytics Data Sent To 3rd Parties

Uygulamalar sıklıkla Google Adsense gibi servisleri entegre eder; geliştiriciler yanlış uygulama yaparsa bu servisler hassas verileri istemeden leak edebilir. Olası veri leaks’lerini tespit etmek için uygulamanın trafiğini intercept edip üçüncü taraf servislere hassas bilgi gönderilip gönderilmediğini kontrol etmek önerilir.

SQLite DBs

Çoğu uygulama bilgi saklamak için internal SQLite databases kullanır. Pentest sırasında oluşturulan databaseları, table ve column isimlerini ve saklanan tüm datayı inceleyin; çünkü hassas bilgi (bu bir vulnerability olur) bulabilirsiniz.
Databaseler genellikle /data/data/the.package.name/databases içinde bulunur, örneğin /data/data/com.mwr.example.sieve/databases

Eğer database gizli bilgileri saklıyor ve encrypted ise fakat şifreyi uygulama içinde bulabiliyorsanız, bu yine bir vulnerability’dir.

Tabloları .tables ile, tabloların kolonlarını ise .schema <table_name> ile enumerate edin.

Drozer (Exploit Activities, Content Providers and Services)

Drozer Docs’tan: Drozer DocsDrozer, size bir Android uygulaması rolünü üstlenme ve diğer uygulamalarla etkileşim kurma imkanı verir. Yüklü bir uygulamanın yapabileceği her şeyi yapabilir; örneğin Android’in Inter-Process Communication (IPC) mekanizmasını kullanabilir ve alt işletim sistemi ile etkileşime girebilir. .
Drozer, ihraç edilmiş activities, exported services ve Content Providers’ı exploit etmek için faydalı bir araçtır; bunu sonraki bölümlerde öğreneceksiniz.

Exploiting exported Activities

Read this if you want to refresh what is an Android Activity.
Ayrıca bir activity’nin kodunun onCreate metodunda başladığını unutmayın.

Authorisation bypass

Bir Activity exported ise ekranını dış bir uygulamadan çağırabilirsiniz. Bu nedenle, eğer hassas bilgi içeren bir activity exported ise, ona erişmek için authentication mekanizmalarını bypass edebilirsiniz.

Learn how to exploit exported activities with Drozer.

Ayrıca adb’den bir exported activity’i başlatabilirsiniz:

  • PackageName is com.example.demo
  • Exported ActivityName is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity

NOTE: MobSF will detect as malicious the use of singleTask/singleInstance as android:launchMode in an activity, but due to this, apparently this is only dangerous on old versions (API versions < 21).

Tip

Yetkilendirme bypass’ının her zaman bir güvenlik açığı olmadığını unutmayın; bunun nasıl çalıştığına ve hangi bilgilerin açığa çıktığına bağlıdır.

Hassas bilgi sızıntısı

Activity’ler aynı zamanda sonuç döndürebilir. Eğer dışa açılmış ve korunmasız bir activity bulup setResult metodunu çağırıp hassas bilgileri döndürdüğünü tespit ederseniz, bu bir hassas bilgi sızıntısıdır.

Tapjacking

Eğer Tapjacking önlenmemişse, dışa açılmış activity’yi kötüye kullanarak kullanıcının beklenmeyen işlemler yapmasını sağlayabilirsiniz. Tapjacking’in ne olduğunu öğrenmek için daha fazla bilgiye buradan ulaşabilirsiniz.

Exploiting Content Providers - Hassas bilgilerin erişimi ve manipülasyonu

Content Provider’ın ne olduğunu tazelemek istiyorsanız bunu okuyun.
Content providers temelde veri paylaşmak için kullanılır. Eğer bir uygulamanın kullanılabilir content provider’ları varsa, bunlardan hassas verileri çıkarmayı başarabilirsiniz. Ayrıca olası SQL injections ve Path Traversals’ı test etmek ilginçtir çünkü zafiyetli olabilirler.

Drozer ile Content Providers nasıl exploit edilir öğrenin.

Exploiting Services

Service nedir hatırlamak isterseniz bunu okuyun.
Unutmayın ki bir Service’in işlemleri onStartCommand metodunda başlar.

Service esasen veri alabilen, işleyebilen ve (veya) bir yanıt döndürebilen bir bileşendir. Bu nedenle, bir uygulama bazı service’leri export ediyorsa kodu kontrol etmeli, ne yaptığını anlamalı ve gizli bilgileri çıkarmak, yetkilendirme önlemlerini bypass etmek gibi amaçlarla dinamik olarak test etmelisiniz.
Drozer ile Services nasıl exploit edilir öğrenin.

Exploiting Broadcast Receivers

Broadcast Receiver nedir hatırlamak isterseniz bunu okuyun.
Unutmayın ki bir Broadcast Receiver’ın işlemleri onReceive metodunda başlar.

Bir broadcast receiver belirli bir mesaj türünü bekler. Alıcının mesajı nasıl ele aldığına bağlı olarak zafiyetli olabilir.
Drozer ile Broadcast Receivers nasıl exploit edilir öğrenin.

Deep links’i manuel olarak, MobSF gibi araçlar veya bu script gibi scriptlerle arayabilirsiniz.
Beyan edilmiş bir scheme’i adb veya bir browser ile açabilirsiniz:

adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]

Unutmayın ki paket adını atlayabilirsiniz ve mobil otomatik olarak bu bağlantıyı açacak uygulamayı çağırı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>

Çalıştırılan kod

Uygulamada çalıştırılacak kodu bulmak için, deeplink tarafından çağrılan activity’ye gidin ve onNewIntent fonksiyonunu arayın.

Hassas bilgi

Her deep link bulduğunuzda, URL parametreleri aracılığıyla hassas veri (ör. şifreler) almadığından emin olun, çünkü herhangi başka bir uygulama deep link’i taklit edip bu veriyi çalabilir!

Path içindeki parametreler

Ayrıca herhangi bir deep link’in URL’nin path bölümünde bir parametre kullanıp kullanmadığını kontrol etmelisiniz; örneğin: https://api.example.com/v1/users/{username}. Bu durumda path traversal zorlayarak şu şekilde erişim sağlayabilirsiniz: example://app/users?username=../../unwanted-endpoint%3fparam=value.
Doğru endpoint’leri uygulama içinde bulursanız Open Redirect (path’in bir kısmı domain adı olarak kullanılıyorsa), account takeover (kullanıcı detaylarını CSRF token olmadan değiştirebiliyorsanız ve zafiyetli endpoint doğru yöntemi kullanıyorsa) ve diğer zafiyetlere neden olabilirsiniz. Daha fazla bilgi burada.

More examples

Bir interesting bug bounty report linklerle ilgili (/.well-known/assetlinks.json).

Transport Layer Inspection and Verification Failures

  • Sertifikalar her zaman düzgün şekilde incelenmez Android uygulamaları tarafından. Bu uygulamaların uyarıları göz ardı edip kendi imzalı (self-signed) sertifikaları kabul etmeleri veya bazı durumlarda HTTP bağlantılarına geri dönmeleri yaygındır.
  • SSL/TLS el sıkışması sırasında müzakereler bazen zayıftır, güvensiz cipher suite’ler kullanılabilir. Bu zafiyet bağlantıyı man-in-the-middle (MITM) saldırılarına karşı savunmasız bırakır ve saldırganların veriyi deşifre etmesine olanak tanır.
  • Leakage of private information uygulamaların güvenli kanallarla kimlik doğrulaması yapıp diğer işlemler için güvenli olmayan kanallar üzerinden iletişim kurması durumunda bir risktir. Bu yaklaşım session cookies veya kullanıcı bilgileri gibi hassas verileri kötü niyetli aktörlerin ele geçirmesinden korumaz.

Certificate Verification

Bu bölümde sertifika doğrulama üzerine odaklanacağız. Sunucunun sertifikasının bütünlüğü güvenliği artırmak için doğrulanmalıdır. Güvensiz TLS konfigürasyonları ve hassas verilerin şifrelenmemiş kanallar üzerinden iletilmesi ciddi riskler oluşturabilir. Sunucu sertifikalarını doğrulama ve zafiyetleri giderme adımları için detaylı rehber bu kaynakta mevcuttur.

SSL Pinning

SSL Pinning, uygulamanın sunucunun sertifikasını uygulama içinde saklanan bilinen bir kopyaya karşı doğruladığı bir güvenlik önlemidir. Bu yöntem MITM saldırılarını önlemek için kritiktir. Hassas bilgi işleyen uygulamalar için SSL Pinning uygulanması şiddetle tavsiye edilir.

Traffic Inspection

HTTP trafiğini incelemek için proxy aracının sertifikasını yüklemeniz gerekir (ör. Burp). Bu sertifika yüklenmezse, şifreli trafik proxy üzerinden görünmeyebilir. Özel bir CA sertifikasının nasıl yükleneceğine dair rehber için buraya tıklayın.

API Level 24 and above hedefleyen uygulamalar, proxy’nin CA sertifikasını kabul etmek için Network Security Config’te değişiklik yapılmasını gerektirir. Bu adım şifreli trafiği incelemek için kritiktir. Network Security Config’i nasıl değiştireceğinize dair talimatlar için bu eğitime bakın.

Eğer Flutter kullanılıyorsa, bu sayfadaki talimatları takip etmelisiniz. Bunun sebebi sadece sertifikayı store’a eklemenin yeterli olmaması; Flutter’ın kendi geçerli CA listesi olmasıdır.

Static detection of SSL/TLS pinning

Çalışma zamanı bypass denemelerine başlamadan önce, pinlemenin APK içinde nerelerde uygulandığını hızlıca haritalayın. Statik keşif, hook/patch planlamanıza ve doğru kod yollarına odaklanmanıza yardımcı olur.

Tool: SSLPinDetect

  • Açık kaynaklı statik analiz aracı; APK’yı Smali’ye decompile eder (apktool aracılığıyla) ve SSL/TLS pinning uygulamalarına ait özenle seçilmiş regex kalıplarını tarar.
  • Her eşleşme için tam dosya yolu, satır numarası ve bir kod snippet’i raporlar.
  • Ortak framework’leri ve özel kod yollarını kapsar: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init with custom TrustManagers/KeyManagers, ve Network Security Config XML pinleri.

Install

  • Önkoşullar: Python >= 3.8, Java PATH üzerinde, apktool
git clone https://github.com/aancw/SSLPinDetect
cd SSLPinDetect
pip install -r requirements.txt

Kullanım

# Basic
python sslpindetect.py -f app.apk -a apktool.jar

# Verbose (timings + per-match path:line + snippet)
python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v

Örnek desen kuralları (JSON) Özel/özelleştirilmiş pinning stillerini tespit etmek için signatures kullanın veya genişletin. Kendi JSON’unuzu yükleyebilir ve geniş ölçekli tarama yapabilirsiniz.

{
"OkHttp Certificate Pinning": [
"Lcom/squareup/okhttp/CertificatePinner;",
"Lokhttp3/CertificatePinner;",
"setCertificatePinner"
],
"TrustManager Override": [
"Ljavax/net/ssl/X509TrustManager;",
"checkServerTrusted"
]
}

Notlar ve ipuçları

  • Büyük uygulamalarda fast scanning için multi-threading ve memory-mapped I/O kullanın; önceden derlenmiş regex overhead/false positive’ları azaltır.
  • Pattern collection: https://github.com/aancw/smali-sslpin-patterns
  • Sonraki önceliklendirme için tipik tespit hedefleri:
  • OkHttp: CertificatePinner kullanımı, setCertificatePinner, okhttp3/okhttp paket referansları
  • Özel TrustManager’lar: javax.net.ssl.X509TrustManager, checkServerTrusted override’ları
  • Özel SSL context’leri: SSLContext.getInstance + SSLContext.init ile custom managers
  • res/xml network security config içindeki deklaratif pin’ler ve manifest referansları
  • Eşleşen konumları, dinamik testten önce Frida hook’ları, statik patch’ler veya konfigürasyon incelemeleri planlamak için kullanın.

SSL Pinning’i Bypass Etme

SSL Pinning uygulandığında, HTTPS trafiğini incelemek için bunu bypass etmek gerekir. Bu amaçla çeşitli yöntemler mevcuttur:

  • Otomatik olarak apk’yi apk-mitm ile modify edip SSLPinning’i bypass edebilirsiniz. Bu seçeneğin en büyük avantajı SSL Pinning’i bypass etmek için root gerekmemesi, ancak uygulamayı silip yeniden yüklemeniz gerekecek ve her zaman işe yaramayabilir.
  • Bu korumayı bypass etmek için Frida (aşağıda tartışılıyor) kullanabilirsiniz. Burp+Frida+Genymotion kullanımı için kılavuz: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
  • Ayrıca objection kullanarak otomatik olarak SSL Pinning’i bypass etmeyi deneyebilirsiniz:: objection --gadget com.package.app explore --startup-command "android sslpinning disable"
  • Ayrıca MobSF dynamic analysis (aşağıda açıklanıyor) kullanarak otomatik olarak SSL Pinning’i bypass etmeyi deneyebilirsiniz
  • Hâlâ yakalayamadığınız trafik 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 Zafiyetlerini Arama

Uygulama içinde yaygın web zafiyetlerini aramak da önemlidir. Bu zafiyetleri tespit etme ve hafifletme konusundaki ayrıntılı bilgiler bu özetin kapsamı dışında olup başka yerlerde genişçe ele alınmıştır.

Frida

Frida geliştiriciler, reverse-engineers ve güvenlik araştırmacıları için dinamik enstrümantasyon araç takımıdır.
Çalışan uygulamaya erişip çalışma zamanında method’lara hook atarak davranışı değiştirebilir, değerleri değiştirebilir, değer çıkarabilir, farklı kod çalıştırabilirsiniz…
Android uygulamalarını pentest etmek istiyorsanız Frida’yı kullanmayı bilmeniz gerekir.

Anti-instrumentation & SSL pinning bypass workflow

Android Anti Instrumentation And Ssl Pinning Bypass

Bellek Dökümü - Fridump

Uygulamanın şifreler veya mnemonics gibi bellekte saklanmaması gereken hassas bilgileri bellekte saklayıp saklamadığını kontrol edin.

Fridump3 kullanarak uygulamanın belleğini şu komutla 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 dump edecek ve orada şöyle bir şeyle 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 depolamak için en iyi yerdir, ancak yeterli ayrıcalıklara sahip olunursa yine de erişmek mümkün olabilir. Uygulamalar burada genellikle hassas verileri açık metin olarak depolamaya eğilimli olduğundan, pentests bunu kontrol etmelidir; aksi takdirde root user veya cihaza fiziksel erişimi olan kişiler bu verileri çalabilir.

Bir uygulama Keystore’a veri depolasa bile, veriler şifrelenmiş olmalıdır.

Keystore içindeki verilere erişmek için şu 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

Fingerprint/Biometrics Bypass

Aşağıdaki Frida script’ini kullanarak Android uygulamalarının belirli hassas alanları korumak için gerçekleştirdiği bypass fingerprint authentication işlemini 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 uygulama öne alındığında uygulamadan önce bu görüntüyü yüklemeye başlar ve uygulama daha hızlı yüklenmiş gibi görünür.

Ancak bu anlık görüntü hassas bilgiler içeriyorsa, anlık görüntüye erişimi olan biri bu bilgileri çalabilir (erişim için root gerektiğini unutmayın).

Anlık görüntüler genellikle şu konumda saklanır: /data/system_ce/0/snapshots

Android, FLAG_SECURE ayarlanarak ekran görüntüsü alınmasını engelleme yolu sağlar. Bu flag kullanıldığında, pencere içeriği güvenli kabul edilir; böylece içeriğin ekran görüntülerinde görünmesi veya güvenli olmayan ekranlarda görüntülenmesi engellenir.

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

Android Application Analyzer

Bu araç, dinamik analiz sırasında farklı araçları yönetmende yardımcı olabilir: https://github.com/NotSoSecure/android_application_analyzer

Intent Injection

Geliştiriciler genellikle bu Intents’i işleyen ve bunları startActivity(...) veya sendBroadcast(...) gibi yöntemlere ileten activities, services ve broadcast receivers gibi proxy bileşenler oluşturur; bu riskli olabilir.

Tehlike, saldırganların bu Intents’i yanlış yönlendirerek non-exported uygulama bileşenlerini tetiklemesine veya hassas content providers’a erişmesine izin verilmesindedir. Önemli bir örnek, WebView bileşeninin URL’leri Intent.parseUri(...) ile Intent nesnelerine dönüştürmesi ve sonra bunları çalıştırmasıdır; bu da potansiyel olarak kötü amaçlı Intent enjeksiyonlarına yol açabilir.

Essential Takeaways

  • Intent Injection web’in Open Redirect sorununa benzer.
  • Exploit’ler, Intent nesnelerinin extras olarak geçirilmesini içerir; bunlar yönlendirilerek güvensiz işlemleri çalıştırabilir.
  • Bu, non-exported bileşenleri ve content providers’ı saldırganlara maruz bırakabilir.
  • WebView’in URL’den Intent dönüşümü istenmeyen eylemleri kolaylaştırabilir.

Android Client Side Injections and others

Muhtemelen bu tür zafiyetleri Web’den biliyorsunuzdur. Android uygulamalarında bu zafiyetlere özellikle dikkat etmelisiniz:

  • SQL Injection: Dinamik sorgular veya Content-Providers ile uğraşırken parameterized queries kullandığınızdan emin olun.
  • JavaScript Injection (XSS): Herhangi bir WebView için JavaScript ve Plugin desteğinin devre dışı olduğundan emin olun (varsayılan olarak devre dışıdır). More info here.
  • Local File Inclusion: WebView’lerin dosya sistemine erişiminin devre dışı olması gerekir (varsayılan olarak etkin) - (webview.getSettings().setAllowFileAccess(false);). More info here.
  • Eternal cookies: Bazı durumlarda android uygulama oturumu kapattığında cookie iptal edilmez veya hatta diske kaydedilebilir
  • Secure Flag in cookies

Otomatik Analiz

MobSF

Statik analiz

Uygulamanın zayıflık değerlendirmesi güzel bir web tabanlı frontend kullanılarak yapılır. 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

Notice that MobSF can analyse Android(apk), IOS(ipa) and Windows(apx) applications (Windows applications must be analyzed from a MobSF installed in a Windows host).
Also, if you create a ZIP file with the source code if an Android or an IOS app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also.

MobSF also allows you to diff/Compare analysis and to integrate VirusTotal (you will need to set your API key in MobSF/settings.py and enable it: VT_ENABLED = TRUE VT_API_KEY = <Your API key> VT_UPLOAD = TRUE). You can also set VT_UPLOAD to False, then the hash will be upload instead of the file.

Assisted Dynamic analysis with MobSF

MobSF can also be very helpful for dynamic analysis in Android, but in that case you will need to install MobSF and genymotion in your host (a VM or Docker won’t work). Note: You need to start first a VM in genymotion and then MobSF.
The MobSF dynamic analyser can:

  • Dump application data (URLs, logs, clipboard, screenshots made by you, screenshots made by “Exported Activity Tester”, emails, SQLite databases, XML files, and other created files). All of this is done automatically except for the screenshots, you need to press when you want a screenshot or you need to press “Exported Activity Tester” to obtain screenshots of all the exported activities.
  • Capture HTTPS traffic
  • Use Frida to obtain runtime information

From android versions > 5, it will automatically start Frida and will set global proxy settings to capture traffic. It will only capture traffic from the tested application.

Frida

By default, it will also use some Frida Scripts to bypass SSL pinning, root detection and debugger detection and to monitor interesting APIs.
MobSF can also invoke exported activities, grab screenshots of them and save them for the report.

To start the dynamic testing press the green bottom: “Start Instrumentation”. Press the “Frida Live Logs” to see the logs generated by the Frida scripts and “Live API Monitor” to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing “Start Instrumentation”).
MobSF also allows you to load your own Frida scripts (to send the results of your Friday scripts to MobSF use the function send()). It also has several pre-written scripts you can load (you can add more in MobSF/DynamicAnalyzer/tools/frida_scripts/others/), just select them, press “Load” and press “Start Instrumentation” (you will be able to see the logs of that scripts inside “Frida Live Logs”).

Moreover, you have some Auxiliary Frida functionalities:

  • Enumerate Loaded Classes: It will print all the loaded classes
  • Capture Strings: It will print all the capture strings while using the application (super noisy)
  • Capture String Comparisons: Could be very useful. It will show the 2 strings being compared and if the result was True or False.
  • Enumerate Class Methods: Put the class name (like “java.io.File”) and it will print all the methods of the class.
  • Search Class Pattern: Search classes by pattern
  • Trace Class Methods: Trace a whole class (see inputs and outputs of all methods of the class). Remember that by default MobSF traces several interesting Android Api methods.

Once you have selected the auxiliary module you want to use you need to press “Start Intrumentation” and you will see all the outputs in “Frida Live Logs”.

Shell

Mobsf also brings you a shell with some adb commands, MobSF commands, and common shell commands at the bottom of the dynamic analysis page. Some interesting commands:

help
shell ls
activities
exported_activities
services
receivers

HTTP araçları

HTTP trafiği yakalandığında, yakalanan trafiğin çirkin bir görünümünü “HTTP(S) Traffic” butonunda veya daha düzgün bir görünümü “Start HTTPTools” yeşil butonunda görebilirsiniz. İkinci seçenekten, captured requests’i Burp veya Owasp ZAP gibi proxies’e send edebilirsiniz.
Bunu yapmak için, power on Burp –> turn off Intercept –> in MobSB HTTPTools select the request –> basın “Send to Fuzzer” –> proxy adresini seçin (http://127.0.0.1:8080\).

MobSF ile dinamik analizi bitirdiğinizde “Start Web API Fuzzer” tuşuna basarak fuzz http requests yapabilir ve zafiyet arayabilirsiniz.

Tip

MobSF ile dinamik analiz yaptıktan sonra proxy ayarları yanlış yapılandırılabilir ve bunları GUI üzerinden düzeltemeyebilirsiniz. Proxy ayarlarını düzeltmek için şu komutu çalıştırabilirsiniz:

adb shell settings put global http_proxy :0

Inspeckage ile Yardımlı Dinamik Analiz

Aracı Inspeckage adresinden edinebilirsiniz.
Bu araç, dinamik analiz yaparken uygulamada neler olduğunu size bildirmek için bazı Hooks kullanır.

Yaazhini

Bu, GUI ile statik analiz yapmak için harika bir araçtır.

Qark

Bu araç, hem source code’da hem de packaged APKs’ta çeşitli security related Android application vulnerabilities’ı aramak üzere tasarlanmıştır. Araç ayrıca bulunan bazı zafiyetleri istismar etmek için deploy edilebilir bir “Proof-of-Concept” APK ve ADB commands oluşturma konusunda da yeteneklidir (Exposed activities, intents, tapjacking…). Drozer’da olduğu gibi, test cihazını rootlamaya 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 başvuru için çıkarılan tüm dosyaları gösterir
  • APK dosyalarını otomatik olarak Java ve Smali formatına decompile eder
  • AndroidManifest.xml’i yaygın vulnerabilities ve davranışları için analiz eder
  • Statik kaynak kodu analizi ile yaygın vulnerabilities ve davranışları tespit eder
  • Cihaz bilgileri
  • 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; .apk dosyalarını güvenlik açıkları açısından analiz eder. Bunu, 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 toplanmıştır; her şirket veya test uzmanı ihtiyaçlarına göre kendi kurallarını oluşturabilir.

En son ikili dosyaları download page üzerinden indirin.

super-analyzer {apk_file}

StaCoAn

StaCoAn, mobil uygulamalarda [static code analysis] yapan geliştiriciler, bugbounty hunters ve ethical hackers için yardımcı bir çapraz platform araçtır.

Kavram şu: mobil uygulama dosyanızı (bir .apk veya .ipa dosyası) StaCoAn uygulamasına sürükleyip bırakırsınız ve uygulama sizin için görsel ve taşınabilir bir rapor oluşturur. Ayarları ve wordlists üzerinde değişiklik yaparak özelleştirilmiş bir deneyim elde edebilirsiniz.

İndir latest release:

./stacoan

AndroBugs

AndroBugs Framework, geliştiricilere veya hackers gibi kişilere Android uygulamalarındaki potansiyel güvenlik açıklarını bulmalarında yardımcı olan bir Android zafiyet analiz sistemidir.
Windows releases

python androbugs.py -f [APK file]
androbugs.exe -f [APK file]

Androwarn

Androwarn bir araçtır; ana amacı bir Android uygulaması tarafından geliştirilen potansiyel kötü amaçlı davranışları tespit etmek ve kullanıcıyı uyarmaktır.

Tespit, uygulamanın Dalvik bytecode’unun Smali olarak temsil edilen halinin androguard kütüphanesi ile yapılan static analysis ile gerçekleştirilir.

Bu araç şu gibi “kötü” uygulamaların ortak davranışlarını arar: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution…

python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3

MARA Framework

MARA is a Mobile Application Reverse engineering and Analysis Framework. Yaygın kullanılan mobil uygulama reverse engineering ve analysis araçlarını bir araya getiren bir araçtır; OWASP mobile security tehditlerine karşı mobile uygulamaların test edilmesine yardımcı olur. Amacı, bu görevi mobil uygulama geliştiricileri ve güvenlik uzmanları için daha kolay ve daha erişilebilir kılmaktır.

It is able to:

Koodous

Malware tespiti için kullanışlı: https://koodous.com/

Obfuscating/Deobfuscating code

Kodu obfuscate etmek için kullandığınız servis ve yapılandırmaya bağlı olarak secrets obfuscated olabilir veya olmayabilir.

ProGuard

From Wikipedia: ProGuard is an open source command-line tool that shrinks, optimizes and obfuscates Java code. Bytecode’u optimize edebilir ve kullanılmayan talimatları tespit edip kaldırabilir. ProGuard ücretsiz yazılımdır ve GNU General Public License, version 2 altında dağıtılmaktadır.

ProGuard, Android SDK’nın bir parçası olarak dağıtılır ve uygulama release modunda derlenirken çalışır.

DexGuard

APK’ı deobfuscate etmek için adım adım rehbere bakın: https://blog.lexfo.fr/dexguard.html

(Bu rehberden) En son kontrol ettiğimizde, Dexguard’ın çalışma modu şöyleydi:

  • Bir kaynağı InputStream olarak yükle;
  • Sonucu decrypt etmek için FilterInputStream’ten türeyen bir sınıfa ver;
  • reverser’ın birkaç dakikasını harcatmak için gereksiz obfuscation yap;
  • Şifre çözülmüş sonucu ZipInputStream’e vererek bir DEX dosyası elde et;
  • Son olarak ortaya çıkan DEX’i loadDex metodunu kullanarak bir Resource olarak yükle.

DeGuard

DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.

Obfuscated bir APK’yı platformlarına upload edebilirsiniz.

[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app

Bu, android uygulamalardaki potansiyel security vulnerabilities’leri bulmak ve android uygulama kodunu deobfuscate etmek için bir LLM aracıdır. Google’ın Gemini public API’sini kullanır.

Simplify

Genel bir android deobfuscator’dır. Simplify, bir uygulamayı virtually executes ederek davranışını anlar ve ardından kodu aynı davranışı koruyacak şekilde ama insan tarafından anlaşılması daha kolay olacak biçimde optimize etmeye çalışır. Her optimizasyon türü basit ve genel olduğu için hangi spesifik obfuscation türünün kullanıldığı önemli değildir.

APKiD

APKiD size bir APK’nın nasıl yapıldığı hakkında bilgi verir. Birçok compilers, packers, obfuscators ve diğer tuhaf şeyleri tespit eder. Android için PEiD gibidir.

Manual

Read this tutorial to learn some tricks on how to reverse custom obfuscation

Labs

Androl4b

AndroL4b, ubuntu-mate tabanlı bir Android security virtual machine’dir; reverse engineering ve malware analysis için farklı security meraklıları ve araştırmacıların en son framework, tutorial ve lab koleksiyonunu içerir.

References

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) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin