mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
69 lines
5.2 KiB
Markdown
69 lines
5.2 KiB
Markdown
# 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}}
|