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

This commit is contained in:
Translator 2025-07-28 10:28:23 +00:00
parent fee8f3fdf8
commit 3f8a5221d1

View File

@ -13,13 +13,13 @@ Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
});
```
Команда за покретање Frida скрипте:
Komanda za pokretanje Frida skripte:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
```
## **Metod 2 Pristup Rukovanju Izuzecima**
Još jedan [Frida skript](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) od WithSecure se bavi zaobilaženjem nesigurne upotrebe kripto objekata. Skript poziva _onAuthenticationSucceeded_ sa _CryptoObject_ koji nije autorizovan otiskom prsta. Ako aplikacija pokuša da koristi drugi šifarski objekat, to će izazvati izuzetak. Skript se priprema da pozove _onAuthenticationSucceeded_ i obradi _javax.crypto.IllegalBlockSizeException_ u klasi _Cipher_, osiguravajući da su sledeći objekti koje koristi aplikacija šifrovani novim ključem.
Još jedan [Frida skript](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) od WithSecure se bavi zaobilaženjem nesigurne upotrebe kripto objekata. Skript poziva _onAuthenticationSucceeded_ sa _CryptoObject_ koji nije autorizovan otiskom prsta. Ako aplikacija pokuša da koristi drugi objekat šifriranja, izazvaće izuzetak. Skript se priprema da pozove _onAuthenticationSucceeded_ i obradi _javax.crypto.IllegalBlockSizeException_ u klasi _Cipher_, osiguravajući da su naredni objekti koje koristi aplikacija šifrovani novim ključem.
Komanda za pokretanje Frida skripta:
```bash
@ -50,7 +50,7 @@ Alati za reverzno inženjerstvo kao što su `APKTool`, `dex2jar` i `JD-GUI` mogu
1. **Dekompilacija APK-a**: Pretvorite APK datoteku u čitljiviji format (kao što je Java kod).
2. **Analiza Koda**: Potražite implementaciju autentifikacije otiskom prsta i identifikujte potencijalne slabosti (kao što su mehanizmi povratka ili nepravilne provere validacije).
3. **Rekompilacija APK-a**: Nakon modifikacije koda za zaobilaženje autentifikacije otiskom prsta, aplikacija se rekompajlira, potpisuje i instalira na uređaj radi testiranja.
3. **Rekompilacija APK-a**: Nakon modifikacije koda za zaobilaženje autentifikacije otiskom prsta, aplikacija se recompile, potpisuje i instalira na uređaj za testiranje.
## **Metod 5 Korišćenje Prilagođenih Alata za Autentifikaciju**
@ -59,9 +59,55 @@ Postoje specijalizovani alati i skripte dizajnirane za testiranje i zaobilaženj
1. **MAGISK Moduli**: MAGISK je alat za Android koji omogućava korisnicima da root-uju svoje uređaje i dodaju module koji mogu modifikovati ili lažirati informacije na hardverskom nivou, uključujući otiske prstiju.
2. **Prilagođene Skripte**: Skripte se mogu napisati za interakciju sa Android Debug Bridge (ADB) ili direktno sa backend-om aplikacije kako bi simulirale ili zaobišle autentifikaciju otiskom prsta.
---
## **Metod 6 Univerzalni Frida Hook za `BiometricPrompt` (API 28-34)**
U 2023. godini, zajednički Frida skript pod nazivom **Universal-Android-Biometric-Bypass** pojavio se na CodeShare-u. Skript hvata svaku preopterećenje `BiometricPrompt.authenticate()` kao i legacy `FingerprintManager.authenticate()` i direktno pokreće `onAuthenticationSucceeded()` sa **fabrikovanim `AuthenticationResult` koji sadrži null `CryptoObject`**. Pošto se dinamički prilagođava API nivoima, i dalje funkcioniše na Android 14 (API 34) ako ciljana aplikacija ne vrši **nikakve kriptografske provere na vraćenom `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
```
Ključne ideje
* Sve se dešava u korisničkom prostoru nije potreban kernel exploit ili root.
* Napad ostaje potpuno neprimetan za UI: sistemski biometrijski dijalog se nikada ne pojavljuje.
* Ublažavanje: **uvek proveravajte `result.cryptoObject` i njegov cipher/potpis pre otključavanja osetljivih funkcija**.
## **Metod 7 Manipulacija snižavanjem / povratkom**
Počevši od Android 11, programeri mogu odrediti koji su autentifikatori prihvatljivi putem `setAllowedAuthenticators()` (ili starijeg `setDeviceCredentialAllowed()`). Napad **runtime hooking** može primorati `allowedAuthenticators` bit-polje na slabiju
`BIOMETRIC_WEAK | DEVICE_CREDENTIAL` vrednost:
```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
};
```
Ako aplikacija **ne** validira vraćeni `AuthenticationResult`, napadač može jednostavno pritisnuti dugme za _PIN/Pattern_ rezervu ili čak registrovati novu slabu biometriju kako bi dobio pristup.
## **Metod 8 CVE-ovi na nivou dobavljača / jezgra**
Pratite bezbednosne biltene za Android: nekoliko nedavnih grešaka na strani jezgra omogućava lokalno eskaliranje privilegija kroz fingerprint HAL i efikasno **onemogućava ili skraćuje senzor pipeline**. Primeri uključuju:
* **CVE-2023-20995** logička greška u `captureImage` iz `CustomizedSensor.cpp` (Pixel 8, Android 13) koja omogućava zaobilaženje otključavanja bez interakcije korisnika.
* **CVE-2024-53835 / CVE-2024-53840** “moguće biometrijsko zaobilaženje zbog neobičnog uzroka” zakrpljeno u **decembarskom 2024. Pixel biltenu**.
Iako ove ranjivosti ciljaju ekran za zaključavanje, tester sa root pristupom može ih povezati sa greškama na nivou aplikacije kako bi zaobišao biometriju unutar aplikacije.
---
### Lista za jačanje bezbednosti za programere (Brze beleške za pentestere)
* Primorajte `setUserAuthenticationRequired(true)` i `setInvalidatedByBiometricEnrollment(true)` prilikom generisanja **Keystore** ključeva. Validna biometrija je tada potrebna pre nego što se ključ može koristiti.
* Odbacite `CryptoObject` sa **null ili neočekivanim šifrom / potpisom**; tretirajte ovo kao fatalnu grešku autentifikacije.
* Kada koristite `BiometricPrompt`, preferirajte `BIOMETRIC_STRONG` i **nikada ne prelazite na `BIOMETRIC_WEAK` ili `DEVICE_CREDENTIAL`** za visoko rizične radnje.
* Zaključajte najnoviju verziju `androidx.biometric` (≥1.2.0-beta02) nedavna izdanja dodaju automatske provere null-šifre i pooštravaju dozvoljene kombinacije autentifikatora.
## Reference
- [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}}