From 4a36ae0c7d4aa02520bea043952948e121d19ad1 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 28 Jul 2025 10:28:27 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/android-app-pentesting/bypass-biometr --- ...bypass-biometric-authentication-android.md | 57 +++++++++++++++++-- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/src/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md b/src/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md index 1d3794db0..e2cd4c5bb 100644 --- a/src/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md +++ b/src/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md @@ -3,9 +3,9 @@ {{#include ../../banners/hacktricks-training.md}} -## **Yöntem 1 – Kripto Nesne Kullanımı Olmadan Atlatma** +## **Yöntem 1 – Kripto Nesnesi Kullanımı Olmadan Atlatma** -Burada odak, kimlik doğrulama sürecinde kritik öneme sahip olan _onAuthenticationSucceeded_ geri çağrısına yöneliktir. WithSecure'daki araştırmacılar, _onAuthenticationSucceeded(...)_ içindeki NULL _CryptoObject_'in atlatılmasını sağlayan bir [Frida scripti](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js) geliştirdiler. Script, metodun çağrılmasıyla birlikte parmak izi kimlik doğrulamasının otomatik olarak atlatılmasını zorlar. Aşağıda, bir Android Parmak İzi bağlamında atlatmayı gösteren basitleştirilmiş bir kod parçası bulunmaktadır; tam uygulama ise [GitHub](https://github.com/St3v3nsS/InsecureBanking) üzerinde mevcuttur. +Burada odak, kimlik doğrulama sürecinde kritik öneme sahip olan _onAuthenticationSucceeded_ geri çağrısındadır. WithSecure'daki araştırmacılar, _onAuthenticationSucceeded(...)_ içindeki NULL _CryptoObject_'in atlatılmasını sağlayan bir [Frida scripti](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js) geliştirdiler. Script, metodun çağrılmasıyla birlikte parmak izi kimlik doğrulamasının otomatik olarak atlatılmasını zorlar. Aşağıda, bir Android Parmak İzi bağlamında atlatmayı gösteren basitleştirilmiş bir kod parçası bulunmaktadır; tam uygulama [GitHub](https://github.com/St3v3nsS/InsecureBanking)'da mevcuttur. ```javascript biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() { @Override @@ -20,7 +20,7 @@ frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-byp ``` ## **Yöntem 2 – İstisna Yönetimi Yaklaşımı** -Another [Frida script](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) by WithSecure, güvensiz kripto nesne kullanımını atlatmayı ele alıyor. Script, parmak izi ile yetkilendirilmemiş bir _CryptoObject_ ile _onAuthenticationSucceeded_ çağrısını yapar. Uygulama farklı bir şifreleme nesnesi kullanmaya çalışırsa, bir istisna tetiklenecektir. Script, _onAuthenticationSucceeded_ çağrısını yapmaya ve _Cipher_ sınıfındaki _javax.crypto.IllegalBlockSizeException_ ile başa çıkmaya hazırlanır, böylece uygulama tarafından kullanılan sonraki nesnelerin yeni anahtar ile şifrelenmesini sağlar. +Another [Frida script](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) by WithSecure addresses bypassing insecure crypto object usage. Script, parmak izi ile yetkilendirilmemiş bir _CryptoObject_ ile _onAuthenticationSucceeded_ çağrısını yapar. Uygulama farklı bir şifreleme nesnesi kullanmaya çalışırsa, bir istisna tetiklenecektir. Script, _onAuthenticationSucceeded_ çağrısını yapmaya ve _Cipher_ sınıfındaki _javax.crypto.IllegalBlockSizeException_ ile başa çıkmaya hazırlanır, böylece uygulama tarafından kullanılan sonraki nesnelerin yeni anahtar ile şifrelenmesini sağlar. Frida script'ini çalıştırmak için komut: ```bash @@ -38,7 +38,7 @@ Hooking FingerprintManager.authenticate()... Xposed veya Frida gibi enstrümantasyon çerçeveleri, uygulama yöntemlerine çalışma zamanında bağlanmak için kullanılabilir. Parmak izi kimlik doğrulaması için bu çerçeveler: -1. **Kimlik Doğrulama Geri Aramalarını Taklit Etme**: `BiometricPrompt.AuthenticationCallback`'ın `onAuthenticationSucceeded`, `onAuthenticationFailed` veya `onAuthenticationError` yöntemlerine bağlanarak, parmak izi kimlik doğrulama sürecinin sonucunu kontrol edebilirsiniz. +1. **Kimlik Doğrulama Geri Çağrılarını Taklit Etme**: `BiometricPrompt.AuthenticationCallback`'ın `onAuthenticationSucceeded`, `onAuthenticationFailed` veya `onAuthenticationError` yöntemlerine bağlanarak, parmak izi kimlik doğrulama sürecinin sonucunu kontrol edebilirsiniz. 2. **SSL Pinning'i Atlatma**: Bu, bir saldırganın istemci ile sunucu arasındaki trafiği kesip değiştirmesine olanak tanır, bu da kimlik doğrulama sürecini değiştirebilir veya hassas verileri çalabilir. Frida için örnek komut: @@ -50,7 +50,7 @@ frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in Tersine mühendislik araçları olan `APKTool`, `dex2jar` ve `JD-GUI`, bir Android uygulamasını decompile etmek, kaynak kodunu okumak ve kimlik doğrulama mekanizmasını anlamak için kullanılabilir. Adımlar genellikle şunları içerir: 1. **APK'yı Decompile Etme**: APK dosyasını daha okunabilir bir formata (Java kodu gibi) dönüştürme. -2. **Kodu Analiz Etme**: Parmak izi kimlik doğrulamasının uygulanışını arama ve potansiyel zayıflıkları (yedekleme mekanizmaları veya uygunsuz doğrulama kontrolleri gibi) belirleme. +2. **Kodu Analiz Etme**: parmak izi kimlik doğrulamasının uygulanışını arama ve potansiyel zayıflıkları (geri dönüş mekanizmaları veya uygunsuz doğrulama kontrolleri gibi) belirleme. 3. **APK'yı Yeniden Derleme**: Parmak izi kimlik doğrulamasını atlamak için kodu değiştirdikten sonra, uygulama yeniden derlenir, imzalanır ve test için cihaza yüklenir. ## **Yöntem 5 – Özel Kimlik Doğrulama Araçları Kullanma** @@ -60,9 +60,54 @@ Kimlik doğrulama mekanizmalarını test etmek ve atlamak için tasarlanmış ö 1. **MAGISK Modülleri**: MAGISK, kullanıcıların cihazlarını rootlamasına ve parmak izleri de dahil olmak üzere donanım düzeyindeki bilgileri değiştirebilen veya taklit edebilen modüller eklemesine olanak tanıyan bir Android aracıdır. 2. **Özel Yapım Betikler**: Android Debug Bridge (ADB) ile etkileşimde bulunmak veya uygulamanın arka ucuyla doğrudan etkileşimde bulunarak parmak izi kimlik doğrulamasını simüle etmek veya atlamak için betikler yazılabilir. +--- + +## **Yöntem 6 – `BiometricPrompt` için Evrensel Frida Hook (API 28-34)** + +2023'te CodeShare'da **Universal-Android-Biometric-Bypass** adı verilen bir topluluk Frida betiği ortaya çıktı. Bu betik, `BiometricPrompt.authenticate()`'nin her aşırı yüklemesini ve eski `FingerprintManager.authenticate()`'yi yakalar ve doğrudan **null `CryptoObject` içeren sahte bir `AuthenticationResult` ile `onAuthenticationSucceeded()`'yi tetikler**. API seviyelerine dinamik olarak uyum sağladığı için, hedef uygulama **dönen `CryptoObject` üzerinde hiçbir kriptografik kontrol yapmıyorsa** Android 14 (API 34) üzerinde de çalışır. +```bash +# Install the script from CodeShare and run it against the target package +frida -U -f com.target.app --no-pause -l universal-android-biometric-bypass.js +``` +Anahtar fikirler +* Her şey kullanıcı alanında gerçekleşir – kernel açığı veya root gereklidir. +* Saldırı, UI'ya tamamen sessiz kalır: sistem biyometrik diyalogu asla görünmez. +* Azaltma: **her zaman `result.cryptoObject` ve şifreleme/imza doğrulayın, hassas özellikleri açmadan önce**. + +## **Yöntem 7 – Düşürme / Geri Dönüş Manipülasyonu** + +Android 11 ile birlikte, geliştiriciler `setAllowedAuthenticators()` (veya daha eski `setDeviceCredentialAllowed()`) aracılığıyla hangi kimlik doğrulayıcıların kabul edilebilir olduğunu belirtebilir. Bir **çalışma zamanı hooking** saldırısı, `allowedAuthenticators` bit alanını daha zayıf `BIOMETRIC_WEAK | DEVICE_CREDENTIAL` değerine zorlayabilir: +```javascript +// Frida one-liner – replace strong-only policy with weak/device-credential +var PromptInfoBuilder = Java.use('androidx.biometric.BiometricPrompt$PromptInfo$Builder'); +PromptInfoBuilder.setAllowedAuthenticators.implementation = function(flags){ +return this.setAllowedAuthenticators(0x0002 | 0x8000); // BIOMETRIC_WEAK | DEVICE_CREDENTIAL +}; +``` +Eğer uygulama dönen `AuthenticationResult`'ı **doğrulamıyorsa**, bir saldırgan basitçe _PIN/Pattern_ yedekleme butonuna basabilir veya hatta erişim sağlamak için yeni bir zayıf biyometrik kaydedebilir. + +## **Yöntem 8 – Satıcı / Çekirdek Düzeyinde CVE'ler** + +Android güvenlik bültenlerini takip edin: birkaç son çekirdek tarafı hatası, parmak izi HAL'i aracılığıyla yerel ayrıcalık yükseltmesine izin veriyor ve etkili bir şekilde **sensör boru hattını devre dışı bırakıyor veya kısaltıyor**. Örnekler şunlardır: + +* **CVE-2023-20995** – `CustomizedSensor.cpp` içindeki `captureImage`'deki mantık hatası (Pixel 8, Android 13) kullanıcı etkileşimi olmadan kilit atlamaya izin veriyor. +* **CVE-2024-53835 / CVE-2024-53840** – “olağandışı bir kök neden nedeniyle olası biyometrik atlama” **Aralık 2024 Pixel bülteni** ile yamanmıştır. + +Bu güvenlik açıkları kilit ekranını hedeflese de, köklenmiş bir testçi bunları uygulama düzeyindeki hatalarla birleştirerek uygulama içi biyometrikleri atlayabilir. + +--- + +### Geliştiriciler için Güçlendirme Kontrol Listesi (Hızlı Pentester Notları) + +* **Keystore** anahtarları oluştururken `setUserAuthenticationRequired(true)` ve `setInvalidatedByBiometricEnrollment(true)`'yi zorunlu kılın. Anahtar kullanılmadan önce geçerli bir biyometrik gereklidir. +* **null veya beklenmeyen şifre / imza** ile bir `CryptoObject`'u reddedin; bunu ölümcül bir kimlik doğrulama hatası olarak değerlendirin. +* `BiometricPrompt` kullanırken, `BIOMETRIC_STRONG`'u tercih edin ve yüksek riskli işlemler için **asla `BIOMETRIC_WEAK` veya `DEVICE_CREDENTIAL`'a geri dönmeyin**. +* En son `androidx.biometric` sürümünü (≥1.2.0-beta02) sabitleyin – son sürümler otomatik null-şifre kontrolleri ekler ve izin verilen kimlik doğrulayıcı kombinasyonlarını sıkılaştırır. + ## Referanslar -- [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/) +- [Universal Android Biometric Bypass – Frida CodeShare](https://codeshare.frida.re/@ax/universal-android-biometric-bypass/) +- [Android Pixel Security Bulletin 2024-12-01](https://source.android.com/security/bulletin/pixel/2024-12-01) {{#include ../../banners/hacktricks-training.md}}