Biyometrik Kimlik Doğrulamasını Atlatma (Android)
Reading time: 6 minutes
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.
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ındadır. WithSecure'daki araştırmacılar, onAuthenticationSucceeded(...) içindeki NULL CryptoObject'in atlatılmasını sağlayan bir Frida scripti 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'da mevcuttur.
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:
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
Yöntem 2 – İstisna Yönetimi Yaklaşımı
Another Frida script 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:
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:
- Kimlik Doğrulama Geri Çağrılarını Taklit Etme:
BiometricPrompt.AuthenticationCallback
'ınonAuthenticationSucceeded
,onAuthenticationFailed
veyaonAuthenticationError
yöntemlerine bağlanarak, parmak izi kimlik doğrulama sürecinin sonucunu kontrol edebilirsiniz. - 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:
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:
- APK'yı Decompile Etme: APK dosyasını daha okunabilir bir formata (Java kodu gibi) dönüştürme.
- 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.
- 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:
- 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.
- Ö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.
# 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:
// 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çindekicaptureImage
'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)
vesetInvalidatedByBiometricEnrollment(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 aslaBIOMETRIC_WEAK
veyaDEVICE_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
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.