Translated ['src/mobile-pentesting/android-app-pentesting/bypass-biometr

This commit is contained in:
Translator 2025-07-28 10:29:33 +00:00
parent dd88cb6757
commit e2f6c63a8b

View File

@ -19,7 +19,7 @@ frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-byp
```
## **Metoda 2 Podejście do obsługi wyjątków**
Inny [skrypt Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) od WithSecure dotyczy omijania niebezpiecznego użycia obiektu Crypto. Skrypt wywołuje _onAuthenticationSucceeded_ z _CryptoObject_, który nie został autoryzowany przez odcisk palca. Jeśli aplikacja spróbuje użyć innego obiektu szyfrującego, spowoduje to wystąpienie wyjątku. Skrypt przygotowuje się do wywołania _onAuthenticationSucceeded_ i obsługi _javax.crypto.IllegalBlockSizeException_ w klasie _Cipher_, zapewniając, że kolejne obiekty używane przez aplikację są szyfrowane nowym kluczem.
Inny [skrypt Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) od WithSecure dotyczy omijania niebezpiecznego użycia obiektu kryptograficznego. Skrypt wywołuje _onAuthenticationSucceeded_ z _CryptoObject_, który nie został autoryzowany przez odcisk palca. Jeśli aplikacja spróbuje użyć innego obiektu szyfrującego, spowoduje to wywołanie wyjątku. Skrypt przygotowuje się do wywołania _onAuthenticationSucceeded_ i obsługi _javax.crypto.IllegalBlockSizeException_ w klasie _Cipher_, zapewniając, że kolejne obiekty używane przez aplikację są szyfrowane nowym kluczem.
Polecenie do uruchomienia skryptu Frida:
```bash
@ -37,31 +37,76 @@ Hooking FingerprintManager.authenticate()...
Ramy instrumentacji, takie jak Xposed lub Frida, mogą być używane do podłączania się do metod aplikacji w czasie rzeczywistym. W przypadku uwierzytelniania za pomocą odcisku palca, te ramy mogą:
1. **Zamockować Wywołania Uwierzytelniania**: Poprzez podłączenie się do metod `onAuthenticationSucceeded`, `onAuthenticationFailed` lub `onAuthenticationError` klasy `BiometricPrompt.AuthenticationCallback`, możesz kontrolować wynik procesu uwierzytelniania za pomocą odcisku palca.
1. **Zasymulować Wywołania Uwierzytelnienia**: Poprzez podłączenie się do metod `onAuthenticationSucceeded`, `onAuthenticationFailed` lub `onAuthenticationError` klasy `BiometricPrompt.AuthenticationCallback`, możesz kontrolować wynik procesu uwierzytelniania za pomocą odcisku palca.
2. **Obejść SSL Pinning**: To pozwala atakującemu na przechwycenie i modyfikację ruchu między klientem a serwerem, potencjalnie zmieniając proces uwierzytelniania lub kradnąc wrażliwe dane.
Przykładowe polecenie dla Frida:
```bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
```
## **Metoda 4 Inżynieria Wsteczna i Modyfikacja Kodu**
## **Metoda 4 Inżynieria wsteczna i modyfikacja kodu**
Narzędzia do inżynierii wstecznej, takie jak `APKTool`, `dex2jar` i `JD-GUI`, mogą być używane do dekompilacji aplikacji na Androida, odczytania jej kodu źródłowego i zrozumienia mechanizmu uwierzytelniania. Kroki zazwyczaj obejmują:
Narzędzia do inżynierii wstecznej, takie jak `APKTool`, `dex2jar` i `JD-GUI`, mogą być używane do dekompilacji aplikacji na Androida, odczytywania jej kodu źródłowego i zrozumienia mechanizmu uwierzytelniania. Kroki zazwyczaj obejmują:
1. **Dekompilacja APK**: Konwersja pliku APK na bardziej czytelny format (np. kod Java).
2. **Analiza Kodu**: Szukanie implementacji uwierzytelniania za pomocą odcisku palca i identyfikacja potencjalnych słabości (np. mechanizmy zapasowe lub niewłaściwe kontrole walidacji).
3. **Rekompilacja APK**: Po modyfikacji kodu w celu ominięcia uwierzytelniania za pomocą odcisku palca, aplikacja jest rekompilowana, podpisywana i instalowana na urządzeniu do testowania.
2. **Analiza kodu**: Szukanie implementacji uwierzytelniania za pomocą odcisków palców i identyfikacja potencjalnych słabości (np. mechanizmy zapasowe lub niewłaściwe kontrole walidacji).
3. **Rekompilacja APK**: Po modyfikacji kodu w celu ominięcia uwierzytelniania za pomocą odcisków palców, aplikacja jest rekompilowana, podpisywana i instalowana na urządzeniu do testów.
## **Metoda 5 Użycie Niestandardowych Narzędzi Uwierzytelniających**
## **Metoda 5 Użycie niestandardowych narzędzi uwierzytelniających**
Istnieją specjalistyczne narzędzia i skrypty zaprojektowane do testowania i omijania mechanizmów uwierzytelniania. Na przykład:
1. **Moduły MAGISK**: MAGISK to narzędzie dla Androida, które pozwala użytkownikom na uzyskanie dostępu do roota ich urządzeń i dodawanie modułów, które mogą modyfikować lub fałszować informacje na poziomie sprzętowym, w tym odciski palców.
2. **Niestandardowe skrypty**: Skrypty mogą być pisane w celu interakcji z Android Debug Bridge (ADB) lub bezpośrednio z backendem aplikacji, aby symulować lub omijać uwierzytelnianie za pomocą odcisku palca.
1. **Moduły MAGISK**: MAGISK to narzędzie dla Androida, które pozwala użytkownikom na uzyskanie dostępu root do swoich urządzeń i dodawanie modułów, które mogą modyfikować lub fałszować informacje na poziomie sprzętowym, w tym odciski palców.
2. **Niestandardowe skrypty**: Skrypty mogą być pisane w celu interakcji z Android Debug Bridge (ADB) lub bezpośrednio z backendem aplikacji, aby symulować lub omijać uwierzytelnianie za pomocą odcisków palców.
---
## **Metoda 6 Uniwersalny hook Frida dla `BiometricPrompt` (API 28-34)**
W 2023 roku na CodeShare pojawił się skrypt Frida społeczności oznaczony jako **Universal-Android-Biometric-Bypass**. Skrypt ten przechwytuje każdą przeciążoną wersję `BiometricPrompt.authenticate()` oraz starszą wersję `FingerprintManager.authenticate()` i bezpośrednio wywołuje `onAuthenticationSucceeded()` z **sfabrykowanym `AuthenticationResult` zawierającym null `CryptoObject`**. Ponieważ dostosowuje się dynamicznie do poziomów API, nadal działa na Androidzie 14 (API 34), jeśli docelowa aplikacja **nie wykonuje żadnych kontroli kryptograficznych na zwróconym `CryptoObject`**.
```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
```
Key ideas
* Wszystko dzieje się w przestrzeni użytkownika nie jest wymagany exploit jądra ani root.
* Atak pozostaje całkowicie cichy dla interfejsu użytkownika: dialog biometryczny systemu nigdy się nie pojawia.
* Łagodzenie: **zawsze weryfikuj `result.cryptoObject` oraz jego szyfr/podpis przed odblokowaniem wrażliwych funkcji**.
## **Method 7 Manipulacja obniżeniem / powrotem**
Zaczynając od Androida 11, deweloperzy mogą określić, które autoryzatory są akceptowalne za pomocą `setAllowedAuthenticators()` (lub starszego `setDeviceCredentialAllowed()`). Atak **runtime hooking** może wymusić pole bitowe `allowedAuthenticators` na słabszą wartość `BIOMETRIC_WEAK | DEVICE_CREDENTIAL`:
```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
};
```
Jeśli aplikacja **nie** waliduje zwróconego `AuthenticationResult`, atakujący może po prostu nacisnąć przycisk _PIN/Pattern_ lub nawet zarejestrować nowy słaby biometryczny, aby uzyskać dostęp.
## **Metoda 8 CVE na poziomie dostawcy / jądra**
Zwracaj uwagę na biuletyny bezpieczeństwa Androida: kilka ostatnich błędów po stronie jądra pozwala na lokalne podniesienie uprawnień przez HAL odcisku palca i skutecznie **wyłącza lub skraca pipeline czujnika**. Przykłady obejmują:
* **CVE-2023-20995** błąd logiczny w `captureImage` w `CustomizedSensor.cpp` (Pixel 8, Android 13) umożliwiający obejście odblokowania bez interakcji użytkownika.
* **CVE-2024-53835 / CVE-2024-53840** „możliwe obejście biometryczne z powodu nietypowej przyczyny” załatane w **biuletynie Pixel z grudnia 2024**.
Chociaż te luki celują w ekran blokady, tester z rootem może je połączyć z błędami na poziomie aplikacji, aby obejść biometrykę w aplikacji.
---
### Lista kontrolna wzmacniania dla deweloperów (Szybkie notatki pentestera)
* Wymuszaj `setUserAuthenticationRequired(true)` i `setInvalidatedByBiometricEnrollment(true)` podczas generowania kluczy **Keystore**. Ważny biometryczny jest wtedy wymagany przed użyciem klucza.
* Odrzuć `CryptoObject` z **null lub nieoczekiwanym szyfrem / podpisem**; traktuj to jako krytyczny błąd uwierzytelnienia.
* Podczas korzystania z `BiometricPrompt`, preferuj `BIOMETRIC_STRONG` i **nigdy nie przechodź do `BIOMETRIC_WEAK` lub `DEVICE_CREDENTIAL`** w przypadku działań wysokiego ryzyka.
* Zablokuj najnowszą wersję `androidx.biometric` (≥1.2.0-beta02) ostatnie wydania dodają automatyczne kontrole null-cipher i zaostrzają dozwolone kombinacje uwierzytelniające.
## Odniesienia
- [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}}