# Biyometrik Kimlik Doğrulamasını Atlatma (Android) {{#include ../../banners/hacktricks-training.md}} ## **Yöntem 1 – Kripto Nesne 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. ```javascript biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() { @Override public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) { Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show(); } }); ``` Frida betiğini çalıştırmak için komut: ```bash frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js ``` ## **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. Frida script'ini çalıştırmak için komut: ```bash frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js ``` Parmak izi ekranına ulaştığınızda ve `authenticate()` başlatıldığında, bypass'ı etkinleştirmek için Frida konsoluna `bypass()` yazın: ``` Spawning com.generic.insecurebankingfingerprint... [Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()... Hooking BiometricPrompt.authenticate2()... Hooking FingerprintManager.authenticate()... [Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass() ``` ## **Yöntem 3 – Enstrümantasyon Çerçeveleri** 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. 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: ```bash frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in ``` ## **Yöntem 4 – Tersine Mühendislik ve Kod Değiştirme** 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. 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** Kimlik doğrulama mekanizmalarını test etmek ve atlamak için tasarlanmış özel araçlar ve betikler vardır. Örneğin: 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. ## 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/) {{#include ../../banners/hacktricks-training.md}}