Android Applications 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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Android Uygulamaları Temelleri
Bu sayfayı okumaya başlamanız şiddetle tavsiye edilir; Android güvenliğiyle ilgili en önemli bölümleri ve bir Android uygulamasındaki en tehlikeli bileşenleri öğrenmek için:
ADB (Android Debug Bridge)
Bu, bir Android cihaza (emüle edilmiş veya fiziksel) bağlanmak için gereken ana araçtır.
ADB, bir bilgisayardan cihazları USB veya Network üzerinden kontrol etmeye olanak tanır. Bu yardımcı program, dosyaların her iki yönde kopyalanmasını, uygulamaların yüklenmesini ve kaldırılmasını, shell komutlarının çalıştırılmasını, verilerin yedeklenmesini, logların okunmasını ve diğer fonksiyonları sağlar.
adb kullanmayı öğrenmek için aşağıdaki ADB Commands listesine göz atın.
Smali
Bazen uygulama kodunu değiştirmek, gizli bilgilere (örneğin iyi obfuske edilmiş parolalar veya flag’ler) erişmek için ilginç olabilir. Bu durumda, apk’yi decompile edip kodu değiştirip yeniden 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 yapılacak birkaç test için bir alternatif olarak çok faydalı olabilir. Bu olasılığı her zaman aklınızda tutun.
Diğer ilginç teknikler
- Spoofing your location in Play Store
- Play Integrity attestation spoofing (SafetyNet replacement)
- Android app-level virtualization / app cloning abuse & detection
- Shizuku Privileged API (ADB-based non-root privileged access)
- Exploiting Insecure In-App Update Mechanisms
- Abusing Accessibility Services (Android RAT)
- Android IME / InputMethodService Abuse (Malicious Keyboards)
- NFC/EMV Relay via HCE (Android Tap-to-Pay abuse)
- Download APKs: 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
Otomatik çok kaynaklı APK edinimi (justapk)
pip install justapk (Python 3.11+). CLI, çıktıyı JSON olarak stdout’a ve ilerlemeyi stderr’e yazdırır (pipe-dostu). Belirli bir fallback zinciri üzerinden denemeler yapar: APK20 → F-Droid → APKPure (mobile API) → APKMirror (HTML scrape) → Uptodown (mobile API) → APKCombo (HTML scrape). Cloudflare korumalı kaynaklar, gerçek istemcileri taklit etmek ve bot-tespit bloklarını azaltmak için TLS fingerprint impersonation ile curl_cffi kullanır.
justapk download <package> # auto fallback
justapk download <package> -s apkpure # pin a source / version / output dir
justapk search telegram
justapk info org.telegram.messenger
justapk convert app.xapk -o output/ # merges splits, re-signs with debug key
convert XAPK/split APK’leri birleştirir ve bunları bir debug key ile imzalar, böylece ortaya çıkan APK imzası/kaynak bilgisi orijinalden farklı olur (test/analiz için kullanın, üretim kurulumları için değil).
- Cihazdan APK çıkar:
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 splits ve base apks’i APKEditor ile birleştir:
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 malware tradecraft (loaders, fileless DEX, persistence)
Native staging + fileless DEX loaders
Some Android droppers embed a native library (lib*.so) that decrypts and writes a second ELF (e.g., l.so) to a temp path, loads it via JNI, and then loads the real logic as DEX only in memory using dalvik.system.InMemoryDexClassLoader. This reduces static visibility of the payload and avoids writing classes*.dex to disk.
Practical triage points:
- Çok erken
dlopenyapan veyaSystem.loadLibraryçağıran native lib’leri arayın; ardından Java methodlarını obfuscated stack strings aracılığıyla çözebilirler (ör. yığında XOR ile decode edilmiş). - Loglarda/strings veya hook’larda
InMemoryDexClassLoader’ı izleyin; bu fileless DEX yürütmesini gösterir.
Quick Frida hook to dump the in‑memory DEX buffer:
Java.perform(() => {
const IM = Java.use('dalvik.system.InMemoryDexClassLoader');
IM.$init.overload('java.nio.ByteBuffer','java.lang.ClassLoader').implementation = function(buf, parent){
const arr = Java.array('byte', buf.array());
const fos = Java.use('java.io.FileOutputStream').$new("/sdcard/memdex.dex");
fos.write(arr); fos.close();
return this.$init(buf, parent);
};
});
Anti-analysis kill-switch
Packed loaders genellikle emülatör veya analiz kontrolleri başarısız olduğunda (ör. CPU_ABI doğrulaması) self-terminate olmak için şu çağrıyı yaparlar:
android.os.Process.killProcess(android.os.Process.myPid());
Foreground service + MediaPlayer döngüsü ile kalıcılık
Hafif bir persistence deseni, bir foreground service’i pinned notification ile canlı tutmak ve MediaPlayer aracılığıyla neredeyse duyulmaz bir ses döngüsünü sürekli çalmaktır. Bu, işlemi “aktif” tutar ve OS’nin inaktiflik nedeniyle öldürmelerini azaltır. Küçük bir varlığı (genellikle birkaç saniye uzunluğunda) döndüren ForegroundService + MediaPlayer kullanımına bakın.
Accessibility overlay + ACTION_SET_TEXT hijacking
Kullanıcı Accessibility’yi verdiğinde, banking trojans foreground app’i izleyebilir, gerçekçi bir overlay render edebilir (genellikle Base64 olarak saklanan WebView HTML) ve işlem alanlarını AccessibilityNodeInfo.ACTION_SET_TEXT kullanarak değiştirebilir. Bu, kurban muhtemel bir UI görürken alıcı adresinin sessizce değiştirilmesine olanak tanır.
Minimal text replacement example:
Bundle args = new Bundle();
args.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
"ATTACKER_USDT_ADDRESS");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, args);
Meşru push altyapısı olarak C2 gating
Özel soketler yerine, bazı malware’ler C2 kanalı olarak Firebase Cloud Messaging (FCM) kullanır. FCM mesajları telemetri kontrollerini tetikleyebilir (şarj durumu, pil %, sıcaklık, kullanıcı hareketsizliği) ve gizlenme için mining veya fraud gibi eylemleri gate edebilir.
Dosya adından türetilen anahtarlarla şifrelenmiş native payload hazırlama
Native payload’lar şifrelenmiş ELF blob’ları olarak teslim edilebilir ve CipherInputStream() ile decrypt edilir; indirilmiş dosya adının SHA‑1’inden türetilmiş bir anahtar kullanılır. Her dosya adı/sürüm farklı bir anahtar üretir, bu da statik IOC yeniden kullanımını zorlaştırır.
Jezail rooted Android pentesting toolkit (REST API + web UI)
- rooted device (Magisk/rootAVD) üzerinde çalışır ve HTTP server on tcp/8080 başlatır; bir Flutter web UI ve REST API sağlar.
- Sürüm APK’sını izinlerle yükleyin:
adb install -g -r jezail.apk, sonra uygulamayı başlatın (server otomatik başlar). - Uç noktalar:
http://<device-ip>:8080/(UI),http://<device-ip>:8080/api/json(API listing),http://<device-ip>:8080/api/swagger(Swagger). - Host’tan UI/API’ye erişmek için emulator port-forward:
adb forward tcp:8080 tcp:8080sonrahttp://localhost:8080adresini tarayın.
Android Enterprise & Work Profile Attacks
Android Enterprise Work Profile Bypass
Case Studies & Vulnerabilities
Air Keyboard Remote Input Injection
Android Rooting Frameworks Manager Auth Bypass Syscall Hook
Abusing Android Media Pipelines Image Parsers
Firmware Level Zygote Backdoor Libandroid Runtime
Statik Analiz
Öncelikle, bir APK’yı analiz ederken bir decompiler kullanarak Java koduna bakmalısınız.
Lütfen, farklı kullanılabilir decompiler’lar hakkında bilgi bulmak için burayı okuyun.
İlginç Bilgiler Arama
APK’nin strings’ine bakarak passwords, URLs (https://github.com/ndelphit/apkurlgrep), api anahtarları, encryption, bluetooth uuids, tokens ve diğer ilginç şeyleri arayabilirsiniz… ayrıca kod yürütme backdoors veya kimlik doğrulama backdoor’larına (uygulamaya gömülü admin kimlik bilgileri) bakın.
Firebase
Özellikle firebase URLs’e dikkat edin ve kötü yapılandırılıp yapılandırılmadığını kontrol edin. Firebase’in ne olduğu ve nasıl istismar edileceği hakkında daha fazla bilgi için buraya bakın.
Uygulamayı temel olarak anlama - 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 kullanarak veya APK dosya uzantısını .zip olarak değiştirip açarak erişilebilir.
Manifest.xml’den tespit edilebilen zayıflıklar şunlardır:
- Debuggable Applications: Manifest.xml içinde debuggable (
debuggable="true") olarak ayarlanmış uygulamalar risk taşır; bu, bağlantılara izin vererek istismara yol açabilir. Debuggable uygulamaların nasıl istismar edileceğini öğrenmek için ilgili bir rehbere bakın. - Backup Settings: Hassas bilgilerle çalışan uygulamalar için
android:allowBackup="false"özniteliğinin açıkça ayarlanması gerekir; aksi takdirde adb ile yetkisiz yedekleme yapılabilir, özellikle usb debugging etkinse. - Network Security:
android:networkSecurityConfig="@xml/network_security_config"gibi özel network security konfigürasyonları res/xml/ içinde sertifika pinleri ve HTTP trafiği ayarları gibi güvenlik detaylarını belirtebilir. Örneğin belirli domainler için HTTP trafiğine izin vermek gibi. - Exported Activities and Services: Manifest’te dışa açık (exported) aktiviteler ve servislerin belirlenmesi, kötüye kullanılabilecek bileşenleri ortaya çıkarabilir. Dinamik testler sırasında daha ileri analiz, bu bileşenlerin nasıl istismar edilebileceğini gösterebilir.
- Content Providers and FileProviders: Açıkta bırakılmış content provider’lar yetkisiz erişime veya veri değiştirmeye izin verebilir. FileProvider konfigürasyonu da dikkatle incelenmelidir.
- Broadcast Receivers and URL Schemes: Bu bileşenler input ile ilgili zayıflıklar açısından istismar edilebilir; URL scheme’lerin nasıl yönetildiğine özellikle dikkat edilmelidir.
- SDK Versions:
minSdkVersion,targetSDKVersion, vemaxSdkVersionöznitelikleri desteklenen Android sürümlerini gösterir; güvenlik açısından eski ve zafiyetli Android sürümlerini desteklememek önemlidir.
strings.xml dosyasından API anahtarları, custom schema’lar ve diğer geliştirici notları gibi hassas bilgiler bulunabilir; bu kaynakların dikkatle incelenmesi gerektiğini vurgular.
Tapjacking
Tapjacking, kötü amaçlı bir uygulamanın başlatılıp mağdur uygulamanın üstüne konumlandırıldığı bir saldırıdır. Mağdur uygulamayı görünür şekilde örttüğünde, kötü amaçlı uygulamanın kullanıcı arayüzü kullanıcıyı kandıracak şekilde tasarlanır; etkileşimleri mağdur uygulamaya iletmeye devam eder.
Sonuç olarak, kullanıcı aslında mağdur uygulama üzerinde işlem yaptığı gerçeğinden gözleri kamaştırılarak uzak tutulur.
Daha fazla bilgi için bakın:
Task Hijacking
launchMode’u singleTask olarak ayarlanmış ve herhangi bir taskAffinity tanımlanmamış bir activity, task Hijacking’e karşı savunmasızdır. Bu, kötü amaçlı 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şimde bulunacaktır).
Daha fazla bilgi:
Güvensiz veri depolama
Internal Storage
Android’de dahili depolamada saklanan dosyalar, onları 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 yeterlidir. Ancak geliştiriciler bazen dosyaların farklı uygulamalar arasında paylaşılıp erişilmesine izin veren MODE_WORLD_READABLE ve MODE_WORLD_WRITABLE gibi modları kullanır. Bu modlar bu dosyalara diğer uygulamalar (potansiyel olarak kötü amaçlı olanlar da dahil) tarafından erişimi kısıtlamaz.
- Static Analysis:
MODE_WORLD_READABLEveMODE_WORLD_WRITABLEkullanımı dikkatle incelenmelidir. Bu modlar dosyaların istenmeyen veya yetkisiz erişime açılmasına neden olabilir.
- Dynamic Analysis:
- Uygulama tarafından oluşturulan dosyaların izinlerini 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 bu dosyaları okuyup değiştirmesine izin verebileceği için ciddi bir güvenlik riski oluşturur.
External Storage
SD Kart gibi external storage üzerindeki dosyalar için alınması gereken önlemler:
- Erişilebilirlik:
- External storage üzerindeki dosyalar global olarak okunabilir ve yazılabilir. Yani herhangi bir uygulama veya kullanıcı bu dosyalara erişebilir.
- Güvenlik Endişeleri:
- Erişimin kolay olması nedeniyle hassas bilgileri external storage’da saklamamak tavsiye edilir.
- External storage çıkarılabilir veya herhangi bir uygulama tarafından erişilebilir olduğundan daha az güvenlidir.
- External Storage’dan Veri İşleme:
- External storage’dan alınan veriler üzerinde her zaman giriş doğrulaması yapın. Çünkü bu veriler güvenilmeyen bir kaynaktan gelmektedir.
- External storage’da yürütülebilir veya sınıf dosyalarının dinamik yüklenmesi için saklanması şiddetle tavsiye edilmez.
- Uygulamanız external storage’dan yürütülebilir dosyalar almak zorundaysa, bu dosyaların dinamik olarak yüklenmeden önce imzalı ve kriptografik olarak doğrulanmış olmasını sağlayın. Bu adım uygulamanızın güvenlik bütünlüğü için hayati önem taşır.
External storage şu konumlardan erişilebilir: /storage/emulated/0 , /sdcard , /mnt/sdcard
Tip
Android 4.4 (API 17) ile başlayarak, SD kartın bir dizin yapısı vardır ve bu yapı bir uygulamanın yalnızca o uygulamaya özel dizine erişimini sınırlar. Bu, kötü amaçlı bir uygulamanın başka bir uygulamanın dosyalarına okuma veya yazma erişimi kazanmasını engeller.
Açık metin olarak saklanan hassas veriler
- Shared preferences: Android her uygulamanın
/data/data/<packagename>/shared_prefs/yolunda kolayca xml dosyaları kaydetmesine izin verir ve bazen bu klasörde açık metin olarak hassas bilgiler bulunabilir. - Databases: Android her uygulamanın
/data/data/<packagename>/databases/yolunda sqlite veritabanları kaydetmesine izin verir ve bazen bu klasörde açık metin olarak hassas bilgiler bulunabilir.
Bozuk TLS
Accept All Certificates
Bazı nedenlerden dolayı geliştiriciler bazen hostname eşleşmesi gibi kontroller sağlanmasa 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 yakalamayı denemektir. Ayrıca, Burp ile farklı bir hostname için bir sertifika üretebilir ve bunu kullanabilirsiniz.
Kırık Kriptografi
Zayıf Anahtar Yönetimi Süreçleri
Bazı geliştiriciler hassas verileri local storage’da saklar ve kod içinde hardcoded/tahmin edilebilir bir anahtar ile şifreler. Bu yapılmamalıdır çünkü bazı reversing işlemleri saldırganların gizli bilgileri çıkarmasına izin verebilir.
Güvensiz ve/veya Kullanımdan Kalmış Algoritmaların Kullanımı
Geliştiriciler yetkilendirme kontrolleri, veri saklama veya veri gönderme işlemleri için kullanımdan kalmış algoritmaları kullanmamalıdır. Bu algoritmalardan bazıları: RC4, MD4, MD5, SHA1… Örneğin parolaları saklamak için hashes kullanılıyorsa, salt ile birlikte brute-force’a karşı dirençli hashes kullanılmalıdır.
Diğer kontroller
- Saldırganların reverse engineer işini zorlaştırmak için APK’yi obfuscate etmek önerilir.
- Uygulama hassassa (ör. bankacılık uygulamaları) cihazın root olup olmadığını kendi içinde kontrol etmeli ve duruma göre davranmalıdır.
- Uygulama hassassa (ör. bankacılık uygulamaları) bir emulator kullanılıp kullanılmadığını kontrol etmelidir.
- Uygulama hassassa (ör. bankacılık uygulamaları) çalıştırmadan önce kendi bütünlüğünü kontrol etmeli ve değiştirilip değiştirilmediğini doğrulamalıdır.
- Hangi compiler/packer/obfuscator ile APK’nin derlendiğini 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:
Xamarin Applications
Bir xamarin uygulamasının C# koduna kolayca nasıl erişileceğini öğrenmek için aşağıdaki sayfayı okuyun:
Superpacked Applications
Bu blog post’a 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ı açan bir uygulama oluşturma olasılığından bahsediyor… ve daha hızlı bir yol olarak uygulamayı çalıştırıp filesystem’den açılmış dosyaları toplamak yönteminden söz ediyor.
Automated Static Code Analysis
mariana-trench aracı, uygulamanın codeunu scanning yaparak vulnerabilities bulabilir. Bu araç, arka planda known sources (aracın input’un kullanıcı tarafından kontrol edildiği yerleri belirttiği), sinks (zararlı kullanıcı girdisinin zarar verebileceği dangerous places) ve rules içeren bir dizi tanıma sahiptir. Bu kurallar, bir zafiyeti gösteren sources-sinks kombinasyonlarını belirtir.
Bu bilgilerle, mariana-trench kodu inceleyip olası vulnerabilities bulacaktır.
Secrets leaked
Bir uygulama içinde keşfedebileceğiniz secrets (API keys, passwords, hidden urls, subdomains…) bulunabilir. Bunun için https://github.com/dwisiswant0/apkleaks gibi bir araç kullanabilirsiniz.
Bypass Biometric Authentication
Bypass Biometric Authentication (Android)
Diğer ilginç fonksiyonlar
- 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
- In-memory native code execution via JNI (downloaded shellcode → mmap/mprotect → call):
In Memory Jni Shellcode Execution
Other tricks
Dinamik Analiz
Öncelikle, uygulamayı ve tüm ortamı (Burp CA cert, Drozer ve Frida başta olmak üzere) kurabileceğiniz bir çevreye ihtiyacınız var. Bu nedenle, rooted bir cihaz (emüle edilmiş ya da değil) şiddetle tavsiye edilir.
Online Dinamik analiz
Şurada ücretsiz bir hesap oluşturabilirsiniz: https://appetize.io/. Bu platform APK’leri upload edip execute etmenize izin verir; bu yüzden bir APK’nin nasıl davrandığını görmek için faydalıdır.
Web üzerinden uygulamanızın loglarını görebilir ve adb ile bağlanabilirsiniz.
.png)
ADB bağlantısı sayesinde emülatörlerin içinde Drozer ve Frida kullanabilirsiniz.
Yerel Dinamik Analiz
Bir emulator kullanmak
- Android Studio (x86 ve arm cihazlar oluşturabilirsiniz; ve this gezisinde belirtildiği üzere güncel x86 sürümleri yavaş arm emulator’a ihtiyaç duymadan ARM kütüphanelerini destekler).
- Kurulumunu bu sayfada öğrenin:
- Genymotion (Free version: Personal Edition, bir hesap oluşturmanız gerekiyor. Hataları önlemek için VirtualBox ile GELEN sürümü download etmeniz önerilir._)
- Nox (Ücretsiz, ancak Frida veya Drozer’ı desteklemiyor).
Tip
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ş düğmeye tıklamanız gerekir:
.png)
Ayrıca, Genymotion’daki Android VM konfigürasyonunda Bridge Network mode seçebileceğinizi unutmayın (bu, Android VM’ye farklı bir VM’den araçlarla bağlanacaksanız faydalı olacaktır).
Fiziksel bir cihaz kullanmak
debugging seçeneklerini aktifleştirmeniz gerekir ve mümkünse cihazı root yapmanız faydalı olacaktır:
- Settings.
- (Android 8.0 ve sonrası) System seçin.
- About phone seçin.
- Build number üzerine 7 kez basın.
- Geri dönün ve Developer options’ı göreceksiniz.
Uygulamayı yükledikten sonra yapmanız gereken ilk şey uygulamayı çalıştırıp ne yaptığını, nasıl çalıştığını incelemek ve uygulamaya alışmaktır.
İlk dinamik analiz için MobSF dynamic analysis + pidcat kullanmanızı öneririm; böylece uygulamanın nasıl çalıştığını öğrenirken MobSF birçok ilginç veriyi yakalayacak ve daha sonra inceleyebileceksiniz.
Magisk/Zygisk hızlı notlar (Pixel cihazlarda önerilir)
- systemless root elde etmek için Magisk uygulaması ile boot.img’i patchleyip fastboot ile flash edin
- Root gizlemek için Zygisk + DenyList’i etkinleştirin; daha güçlü gizleme gerektiğinde LSPosed/Shamiko’yu düşünün
- OTA güncellemelerinden geri dönebilmek için orijinal boot.img’i saklayın; her OTA’dan sonra yeniden patchleyin
- Ekran aynalama için host üzerinde scrcpy kullanın
İstenmeyen Veri Sızıntısı
Logging
Geliştiriciler debugging information’ı kamuya açarken dikkatli olmalıdır, çünkü bu hassas veri sızıntılarına yol açabilir. Uygulama loglarını izlemek ve hassas bilgilerin açığa çıkıp çıkmadığını tespit etmek için pidcat ve adb logcat araçları önerilir. Pidcat kolay kullanımı ve okunabilirliği nedeniyle tercih edilir.
Warning
Android 4.0’dan daha yeni sürümlerde uygulamaların sadece kendi log’larına erişebildiğini unutmayın. Yani uygulamalar diğer uygulamaların log’larına erişemez.
Yine de hassas bilgileri loglamamaya dikkat etmek tavsiye edilir.
Copy/Paste Buffer Caching
Android’in clipboard-based framework’ü uygulamalarda kopyala-yapıştır işlevselliğini mümkün kılar, ancak diğer uygulamaların panoya erişebilmesi nedeniyle hassas verilerin açığa çıkma riski vardır. Kredi kartı bilgileri gibi hassas bölümler için kopyala/yapıştır fonksiyonlarını devre dışı bırakmak önemlidir.
Crash Logs
Bir uygulama çöküp logları kaydederse, bu loglar özellikle uygulama tersine mühendislik yapılamıyorsa saldırganlara yardımcı olabilir. Bu riski azaltmak için çökmelerde log tutmamaya çalışın; eğer loglar ağ üzerinden gönderilecekse SSL kanalı üzerinden gönderildiğinden emin olun.
Pentester olarak, bu loglara bakmaya çalışın.
Analytics Data Sent To 3rd Parties
Uygulamalar genellikle Google Adsense gibi hizmetleri entegre eder; geliştiricinin hatalı uygulaması nedeniyle bu tür hizmetlere hassas veri sızdırılabilir. Potansiyel veri sızıntılarını tespit etmek için uygulamanın trafiğini intercept edip üçüncü taraflara gönderilen hassas bilgileri kontrol etmek önerilir.
SQLite DBs
Çoğu uygulama bilgi saklamak için internal SQLite databases kullanır. Pentest sırasında oluşturulan databases’lere, tables ve columns isimlerine ve kaydedilen tüm verilere bakın; çünkü burada hassas bilgi bulabilirsiniz (bu bir vulnerability olur).
Databases genellikle /data/data/the.package.name/databases gibi bir konumda olmalıdır; örneğin /data/data/com.mwr.example.sieve/databases
Eğer veritabanı gizli bilgi saklıyor ve encrypted ise fakat uygulama içinde password’u bulabiliyorsanız bu yine bir vulnerability’dir.
Tabloları .tables ile listeleyin ve tabloların sütunlarını .schema <table_name> ile inceleyin.
Drozer (Exploit Activities, Content Providers and Services)
Drozer Docs’a göre (https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): Drozer, kendinizi bir Android uygulaması gibi varsaymanızı ve diğer uygulamalarla etkileşimde bulunmanızı sağlar. Yüklü bir uygulamanın yapabileceği her şeyi yapabilir; Android’in Inter-Process Communication (IPC) mekanizmasını kullanabilir ve alt işletim sistemi ile etkileşime girebilir.
Drozer, exported activities, exported services ve Content Providers’ı exploit etmek için kullanışlı bir araçtır; bunu aşağıdaki bölümlerde öğreneceksiniz.
Exported Activities’ı İstismar Etme
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.
Yetkilendirme atlatma
Bir Activity exported ise dışarıdan bir uygulama tarafından ekranı invoke edilebilir. Bu nedenle, eğer hassas bilgi içeren bir activity exported ise yetkilendirme mekanizmalarını bypass edip ona erişebilirsiniz.
Learn how to exploit exported activities with Drozer.
Ayrıca adb üzerinden exported bir activity 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
NOT: MobSF, bir activity’de android:launchMode olarak singleTask/singleInstance kullanımını kötü amaçlı olarak algılar, ancak this, görünüşe göre bu yalnızca eski sürümlerde (API sürümleri < 21) tehlikelidir.
Tip
Bir authorisation bypass her zaman bir zafiyet değildir; bunun nasıl çalıştığına ve hangi bilgilerin açığa çıktığına bağlıdır.
Sensitive information leakage
Activity’ler aynı zamanda sonuç döndürebilir. Eğer exported ve korunmasız bir activity bulup setResult metodunu çağırdığını ve hassas bilgi döndürdüğünü tespit ederseniz, hassas bilgi sızıntısı meydana gelebilir.
Tapjacking
Eğer tapjacking engellenmemişse, exported activity’yi kötüye kullanarak kullanıcının beklenmeyen işlemler yapmasını sağlayabilirsiniz. Tapjacking hakkında daha fazla bilgi için what is Tapjacking follow the link’e bakın.
Exploiting Content Providers - Accessing and manipulating sensitive information
Read this if you want to refresh what is a Content Provider.
Content providers esasen veri paylaşmak için kullanılır. Bir uygulamanın erişilebilir content provider’ları varsa, bunlardan hassas verileri çıkarabiliyor olabilirsiniz. Ayrıca potansiyel SQL injections ve Path Traversals için test yapmak ilginçtir, çünkü bunlar zafiyetli olabilir.
Learn how to exploit Content Providers with Drozer.
Exploiting Services
Read this if you want to refresh what is a Service.
Unutmayın ki bir Service’in eylemleri onStartCommand metodunda başlar.
Service esasen veri alabilen, onu işleyebilen ve (veya) bir yanıt döndürebilen bir bileşendir. Bu nedenle, bir uygulama bazı service’leri export ediyorsa, ne yaptığını anlamak için kodu incelemeli ve gizli bilgileri çıkarmak, yetkilendirme önlemlerini bypass etmek vb. için dinamik olarak test etmelisiniz.
Learn how to exploit Services with Drozer.
Exploiting Broadcast Receivers
Read this if you want to refresh what is a Broadcast Receiver.
Unutmayın ki bir Broadcast Receiver’ın eylemleri onReceive metodunda başlar.
Bir broadcast receiver belirli bir türde mesajı bekler. Alıcının mesajı nasıl işlediğine bağlı olarak zafiyetli olabilir.
Learn how to exploit Broadcast Receivers with Drozer.
Exploiting Schemes / Deep links
Deep link’leri elle arayabilirsiniz; MobSF gibi araçları veya this one gibi script’leri kullanabilirsiniz.
İlan 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 cihaz, o bağlantıyı açması gereken uygulamayı otomatik olarak ç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>
Code executed
Uygulamada çalıştırılacak kodu bulmak için, deeplink tarafından çağrılan activity’ye gidin ve onNewIntent fonksiyonunu arayın.
 (1) (1) (1).png)
Hassas bilgiler
Her bulduğunuz deep link’te URL parametreleriyle hassas veri (ör. şifreler) almadığını kontrol edin, çünkü başka bir uygulama deep link’i taklit edip bu veriyi çalabilir!
Parameters in path
Her deep link’in URL path’inde bir parametre kullanıp kullanmadığını da kontrol etmelisiniz; örneğin: https://api.example.com/v1/users/{username} . Bu durumda şu şekilde bir path traversal zorlayabilirsiniz: example://app/users?username=../../unwanted-endpoint%3fparam=value .
Uygulama içinde doğru endpoint’leri bulursanız, path’in bir bölümü domain adı olarak kullanılıyorsa Open Redirect (eğer path’in bir kısmı domain olarak kullanılıyorsa), account takeover (CSRF token olmadan kullanıcı detaylarını değiştirebiliyorsanız ve zafiyetli endpoint doğru HTTP metodunu kullandıysa) ve diğer çeşitli vuln’lara neden olabilirsiniz. Daha fazla bilgi için buraya bakın.
More examples
Bağlantılarla ilgili ilginç bir bug bounty raporu (/.well-known/assetlinks.json).
Taşıma Katmanı İncelemesi ve Doğrulama Hataları
- Sertifikalar her zaman düzgün şekilde incelenmez Android uygulamaları tarafından. Bu uygulamaların uyarıları göz ardı edip self-signed sertifikaları kabul etmesi veya bazı durumlarda HTTP’ye dönmesi yaygındır.
- SSL/TLS el sıkışması sırasında yapılan müzakereler bazen zayıftır, güvenli olmayan 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 verileri deşifre etmesine olanak sağlar.
- Leakage of private information; uygulamalar güvenli kanallarla kimlik doğrulaması yapıp diğer işlemler için güvenli olmayan kanallar üzerinden iletişim kurduğunda bir risktir. Bu yaklaşım session cookies veya kullanıcı bilgileri gibi hassas verileri kötü niyetli tarafların ele geçirmesine karşı korumaz.
Certificate Verification
Biz certificate verification üzerine odaklanacağız. Sunucunun sertifikasının bütünlüğü güvenliği artırmak için doğrulanmalıdır. Bu önemlidir çünkü güvensiz TLS yapılandırmaları ve hassas verilerin şifrelenmemiş kanallarda iletilmesi ciddi riskler doğurabilir. Sunucu sertifikalarının doğrulanması ve zafiyetlerin giderilmesiyle ilgili ayrıntılı adımlar için, bu kaynak kapsamlı rehberlik sağlar.
SSL Pinning
SSL Pinning, uygulamanın sunucunun sertifikasını uygulama içinde saklanan bilinen bir kopyayla doğruladığı bir güvenlik önlemidir. Bu yöntem MITM saldırılarını önlemek için önemlidir. Hassas bilgilerle uğraşan uygulamalar için SSL Pinning uygulamak ş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üklenmeden, ş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 yapmayı gerektirir. Bu adım şifreli trafiği incelemek için kritiktir. Network Security Config’i değiştirmekle ilgili talimatlar için, bu eğitime bakın.
Eğer Flutter kullanılıyorsa, bu sayfadaki talimatları izlemeniz gerekir. Çünkü sadece sertifikayı store’a eklemek işe yaramaz; Flutter’ın kendi geçerli CA listesi vardır.
Static detection of SSL/TLS pinning
Runtime bypass’lara çalışmadan önce, pinning’in APK’da nerede uygulandığını hızlıca haritalayın. Statik keşif, hook’lar/patch’leri planlamanıza ve doğru kod yollarına odaklanmanıza yardımcı olur.
Tool: SSLPinDetect
- Açık kaynaklı, APK’yı Smali’ye (apktool aracılığıyla) decompile eden ve SSL/TLS pinning uygulamalarına ait küratörlü regex desenlerini tarayan bir statik analiz aracıdır.
- Her eşleşme için tam dosya yolu, satır numarası ve bir kod snippet’i raporlar.
- Yaygın 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
- Gereksinimler: Python >= 3.8, Java on PATH, 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 pattern kuralları (JSON)
Signatures kullanarak veya genişleterek proprietary/custom pinning stillerini tespit edin. Kendi JSON’unuzu yükleyip geniş ölçekte scan 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 çoklu iş parçacığı ve bellek-eşlemeli I/O ile hızlı tarama; önceden derlenmiş regex aşırı yükü/yanlış pozitifleri 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 özel manager’lar
- res/xml network security config içindeki deklaratif pinler ve manifest referansları
- Eşleşen konumları dinamik testten önce Frida hook’ları, statik yamalar veya konfigürasyon incelemeleri planlamak için kullanın.
SSL Pinning’i Atlatma
SSL Pinning uygulandığında, HTTPS trafiğini incelemek için atlatılması gerekir. Bu amaçla çeşitli yöntemler mevcuttur:
- Automatically modify the apk to bypass SSLPinning with apk-mitm. Bu seçeneğin en büyük avantajı, SSL Pinning’i atlatmak için root’a ihtiyaç duymamanızdır; ancak uygulamayı silip yeni sürümünü yeniden yüklemeniz gerekir ve bu her zaman işe yaramayabilir.
- You could use Frida (discussed below) to bypass this protection. Burp+Frida+Genymotion kullanımı için bir rehber: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- Ayrıca otomatik olarak SSL Pinning’i atlatmayı objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable" - Ayrıca otomatik olarak SSL Pinning’i atlatmayı MobSF dynamic analysis kullanarak deneyebilirsiniz (aşağıda açıklanmıştır)
- 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 tanımlama ve hafifletme ile ilgili ayrıntılar bu özetin kapsamı dışında olmakla birlikte başka kaynaklarda geniş olarak ele alınmıştır.
Frida
Frida geliştiriciler, reverse-engineer’lar 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 metodları hook’layarak davranışı değiştirebilir, değerleri değiştirebilir, değerleri çıkarabilir, farklı kod ç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 tutorial
- Frida ile işlemler için bazı “GUI“ler: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection, Frida kullanımını otomatikleştirmek için harikadır: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Bazı Awesome Frida script’lerini burada bulabilirsiniz: https://codeshare.frida.re/
- Frida olmadan ptrace kullanmadan Frida yükleyerek anti-debugging / anti-frida mekanizmalarını atlatmayı deneyin: https://erfur.github.io/blog/dev/code-injection-without-ptrace (tool linjector)
Anti-instrumentation & SSL pinning atlatma iş akışı
Android Anti Instrumentation And Ssl Pinning Bypass
Belleği dökme - Fridump
Uygulamanın şifreler veya mnemonic’ler gibi bellekte saklamaması gereken hassas bilgileri saklayıp saklamadığını kontrol edin.
Fridump3 kullanarak uygulamanın belleğini şu şekilde 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ökecek ve orada şu gibi 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 saklamak için en iyi yerdir; ancak yeterli ayrıcalıkla yine de erişmek mümkün. Uygulamalar genelde burada hassas verileri clear text olarak saklama eğiliminde olduğundan, pentests bunu root user olarak kontrol etmelidir; aksi takdirde cihaza fiziksel erişimi olan biri bu verileri çalabilir.
Bir uygulama keystore’da veri saklamış olsa bile, veriler şifrelenmiş olmalıdır.
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
Fingerprint/Biometrics Bypass
Aşağıdaki Frida script’ini kullanarak, Android uygulamalarının belirli hassas alanları korumak için uygulayabileceği bypass fingerprint authentication 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 attığınızda, Android bir snapshot of the application depolar; uygulama tekrar ön plana getirildiğinde, uygulamadan önce bu görüntüyü yükleyerek uygulamanın daha hızlı açılmış gibi görünmesini sağlar.
Ancak bu snapshot hassas bilgiler içeriyorsa, snapshot’a erişimi olan biri bu bilgileri çalabilir (erişim için root gerektiğini unutmayın).
Snapshot’lar genellikle şu konumda saklanır: /data/system_ce/0/snapshots
Android, layout parametresi olarak FLAG_SECURE ayarlayarak ekran görüntüsü alınmasını önleme imkanı sağlar. Bu flag kullanıldığında, pencere içeriği güvenli kabul edilir; böylece 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önetmenize yardımcı olabilir: https://github.com/NotSoSecure/android_application_analyzer
Intent Injection
Geliştiriciler sıklıkla bu Intents’leri işleyen ve startActivity(...) veya sendBroadcast(...) gibi metodlara ileten activities, services ve broadcast receivers gibi proxy bileşenleri oluştururlar; bu riskli olabilir.
Tehlike, bu Intents’leri yanlış yönlendirerek saldırganların non-exported uygulama bileşenlerini tetiklemesine veya hassas content providers’lara erişmesine izin verilmesinde yatar. Önemli bir örnek, WebView bileşeninin URL’leri Intent.parseUri(...) aracılığıyla Intent nesnelerine dönüştürmesi ve ardından bunları çalıştırmasıdır; bu durum potansiyel olarak kötü amaçlı Intent enjeksiyonlarına yol açabilir.
Önemli Noktalar
- Intent Injection web’deki Open Redirect sorununa benzerdir.
- Exploitler, ekstra olarak
Intentnesneleri geçirilmesini ve bunların tehlikeli işlemleri çalıştırmak için yönlendirilebilmesini içerir. - Bu, non-exported bileşenleri ve content providers’ı saldırganların erişimine açabilir.
WebView’in URL’denIntent’e dönüşümü istenmeyen işlemleri kolaylaştırabilir.
Android İstemci Tarafı Enjeksiyonları ve diğerleri
Muhtemelen bu tür zafiyetleri Web’den biliyorsunuzdur. Bir Android uygulamasında bu zafiyetlere özellikle dikkat etmelisiniz:
- SQL Injection: Dinamik sorgular veya Content-Providers ile uğraşırken parametreli sorgular kullanmaya özen gösterin.
- 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şimi devre dışı bırakılmalıdır (varsayılan olarak etkin) -
(webview.getSettings().setAllowFileAccess(false);). More info here. - Eternal cookies: Birçok durumda, android uygulama oturumu sonlandırıldığında çerez iptal edilmez ya da diske kaydedilmiş olabilir.
- Secure Flag in cookies
Otomatik Analiz
MobSF
Statik analiz
.png)
Uygulamanın zafiyet değerlendirmesini kullanışlı bir web tabanlı ön yüz aracılığıyla yapar. 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 Android için dynamic analysis sırasında da çok yardımcı olabilir, ancak bu durumda hostunuza MobSF ve genymotion kurmanız gerekir (VM veya Docker çalışmaz). Not: Önce genymotion’da bir VM başlatmanız ve sonra MobSF’yi başlatmanız gerekir.
The MobSF dynamic analyser şunları yapabilir:
- 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”).
.png)
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 th 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 ayrıca dynamic analysis sayfasının altında bazı adb komutları, MobSF commands ve yaygın shell commands içeren bir shell sağlar. Bazı ilginç komutlar:
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” alt kısmında veya daha hoş bir görünümü “Start HTTPTools” yeşil butonunda görebilirsiniz. İkinci seçenekten, yakalanan istekleri Burp veya Owasp ZAP gibi proxies’e gönderebilirsiniz.
Bunu yapmak için, power on Burp –> turn off Intercept –> in MobSB HTTPTools select the request –> press “Send to Fuzzer” –> select the proxy address (http://127.0.0.1:8080\).
Once you finish the dynamic analysis with MobSF you can press on “Start Web API Fuzzer” to fuzz http requests an look for vulnerabilities.
Tip
MobSF ile dinamik analiz yaptıktan sonra proxy ayarları yanlış yapılandırılmış olabilir ve GUI’den düzeltemeyebilirsiniz. Proxy ayarlarını düzeltmek için şu komutu çalıştırabilirsiniz:
adb shell settings put global http_proxy :0
Assisted Dynamic Analysis with Inspeckage
Aracı Inspeckage üzerinden edinebilirsiniz.
Bu araç, dinamik analiz yaparken uygulamada nelerin olduğunu size bildirmek için bazı Hooks kullanır.
Yaazhini
Bu, GUI ile statik analiz yapmak için harika bir araçtır
.png)
Qark
This tool is designed to look for several security related Android application vulnerabilities, either in source code or packaged APKs. The tool is also capable of creating a “Proof-of-Concept” deployable APK and ADB commands, to exploit some of the found vulnerabilities (Exposed activities, intents, tapjacking…). As with Drozer, there is no need to root the test device.
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
- Tüm çıkarılan dosyaları kolay inceleme için gösterir
- APK dosyalarını otomatik olarak Java ve Smali formatına decompile eder
- AndroidManifest.xml’i yaygın zafiyetler ve davranış açısından analiz eder
- Yaygın zafiyetler ve davranışlar için statik kaynak kodu analizi
- 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ı aramak için analiz eder. Bunu APK’leri dekomprese ederek 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 uzmanı ihtiyaçlarına göre kendi kurallarını oluşturabilir.
En son ikili dosyaları download page adresinden indirin
super-analyzer {apk_file}
StaCoAn
.png)
StaCoAn, geliştiricilere, bugbounty hunters ve ethical hackers’a mobil uygulamalar üzerinde static code analysis yapmalarında yardımcı olan bir crossplatform araçtır.
Kavram şudur: mobil uygulama dosyanızı (.apk veya .ipa dosyası) StaCoAn uygulamasına sürükleyip bıraktığınızda sizin için görsel ve taşınabilir bir rapor oluşturur. Özelleştirilmiş bir deneyim için ayarları ve wordlists’i değiştirebilirsiniz.
İndir latest release:
./stacoan
AndroBugs
AndroBugs Framework, geliştiricilerin veya hackers’ın Android uygulamalarındaki potansiyel güvenlik açıklarını bulmasına yardımcı olan bir güvenlik açığı analiz sistemidir.
Windows releases
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn Android bir uygulamanın oluşturabileceği potansiyel kötü amaçlı davranışları tespit etmek ve kullanıcıyı uyarmak amacıyla geliştirilmiş bir araçtır.
Tespit, uygulamanın Dalvik bytecode’u, Smali olarak temsil edilen kodun androguard kütüphanesi ile yapılan static analysis ile gerçekleştirilir.
Bu araç “kötü” uygulamaların ortak davranışları gibi şunları 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
.png)
MARA, bir Mobil Uygulama Tersine Mühendislik ve Analiz Çerçevesidir. Bu araç, yaygın olarak kullanılan mobil uygulama tersine mühendislik ve analiz araçlarını bir araya getirir ve OWASP mobil güvenlik tehditlerine karşı mobil uygulamaları test etmede yardımcı olur. Amacı, bu görevi mobil uygulama geliştiricileri ve güvenlik profesyonelleri için daha kolay ve kullanıcı dostu hâle getirmektir.
Şunları yapabilir:
- Farklı araçlar kullanarak Java ve Smali kodu çıkarmak
- APK’leri şu araçlarla analiz etmek: smalisca, ClassyShark, androbugs, androwarn, APKiD
- APK’den regex’ler kullanarak özel bilgileri çıkarmak.
- Manifest’i analiz etmek.
- Bulunan domainleri şu araçlarla analiz etmek: pyssltest, testssl ve whatweb
- APK’yi [apk-deguard.com] üzerinden Deobfuscate etmek
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
Wikipedia’dan (https://en.wikipedia.org/wiki/ProGuard_(software)): ProGuard, Java kodunu küçülten, optimize eden ve obfuscate eden açık kaynaklı bir komut satırı aracıdır. 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ılır.
ProGuard, Android SDK’nin bir parçası olarak dağıtılır ve uygulama release modunda build edilirken çalıştırılır.
DexGuard
APK’yi deobfuscate etmek için adım adım kılavuzu şu adreste bulabilirsiniz: https://blog.lexfo.fr/dexguard.html
(O kılavuzdan) En son kontrol ettiğimizde, Dexguard’ın çalışma modu şuydu:
- Bir kaynağı InputStream olarak yükler;
- Sonucu decrypt etmek için FilterInputStream’ten türeyen bir sınıfa verir;
- Bir reverser’ın birkaç dakikasını çalmak için bazı gereksiz obfuscation işlemleri yapar;
- Decrypted sonucu ZipInputStream’e vererek bir DEX dosyası elde eder;
- Son olarak oluşan DEX’i bir Resource olarak
loadDexmethodu kullanarak yükler.
DeGuard
DeGuard, Android obfuscation araçları tarafından gerçekleştirilen obfuscation sürecini tersine çevirir. Bu, kod incelemesi ve kütüphane tahmini dahil olmak üzere birçok güvenlik analizine olanak tanır.
Obfuscated bir APK’yi platformlarına yükleyebilirsiniz.
[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
Bu, android uygulamalardaki potansiyel güvenlik açıklarını bulmak ve android uygulama kodunu deobfuscate etmek için bir LLM aracıdır. Google’s Gemini public API’sini kullanır.
Simplify
Bu, generic bir android deobfuscator’dır. Simplify, bir uygulamayı virtually executes ederek davranışını anlar ve ardından kodu optimize etmeye çalışır; böylece davranış aynı kalır ama insan tarafından anlaşılması daha kolay olur. Her optimizasyon türü basit ve genel olduğundan, kullanılan spesifik obfuscation türü önemli değildir.
APKiD
APKiD, bir APK’nin nasıl yapıldığı hakkında bilgi verir. Birçok compiler, packer, obfuscator ve diğer tuhaf şeyleri tespit eder. Android için [PEiD] gibidir.
Manual
Bu eğitimi okuyarak custom obfuscation’ı nasıl tersine çevireceğinizi öğrenin
Labs
Androl4b
AndroL4b, ubuntu-mate tabanlı bir Android güvenlik sanal makinesidir; reverse engineering ve malware analizi için farklı güvenlik meraklıları ve araştırmacılardan en güncel framework, eğitim ve lab’lerin bir koleksiyonunu içerir.
References
- Play Integrity API: How It Works & How to Bypass It
- 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
- SSLPinDetect: Advanced SSL Pinning Detection for Android Security Analysis
- SSLPinDetect GitHub
- smali-sslpin-patterns
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
- CoRPhone — Android in-memory JNI execution and packaging pipeline
- justapk — multi-source APK downloader with Cloudflare bypass
- Jezail rooted Android pentesting toolkit (REST API + Flutter UI)
- BeatBanker: A dual‑mode Android Trojan
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


