mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/bypass-biometr
This commit is contained in:
parent
fee8f3fdf8
commit
3f8a5221d1
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user