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

This commit is contained in:
Translator 2025-07-28 10:26:44 +00:00
parent efc8572ad2
commit f685eaaf4b

View File

@ -2,7 +2,8 @@
{{#include ../../banners/hacktricks-training.md}}
## **Metode 1 Omseiling sonder Crypto Object Gebruik**
## **Metode 1 Bypass sonder Crypto Object Gebruik**
Die fokus hier is op die _onAuthenticationSucceeded_ terugroep, wat van kardinale belang is in die outentikasieproses. Navorsers by WithSecure het 'n [Frida script](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js) ontwikkel, wat die omseiling van die NULL _CryptoObject_ in _onAuthenticationSucceeded(...)_ moontlik maak. Die script dwing 'n outomatiese omseiling van die vingerafdrukoutentikasie by die metode se aanroep. Hieronder is 'n vereenvoudigde snit wat die omseiling in 'n Android Vingerafdruk konteks demonstreer, met die volle toepassing beskikbaar op [GitHub](https://github.com/St3v3nsS/InsecureBanking).
```javascript
@ -19,13 +20,13 @@ frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-byp
```
## **Metode 2 Uitsondering Hantering Benadering**
Nog 'n [Frida script](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) deur WithSecure spreek die omseiling van onveilige crypto objek gebruik aan. Die script roep _onAuthenticationSucceeded_ aan met 'n _CryptoObject_ wat nie deur 'n vingerafdruk geverifieer is nie. As die aansoek probeer om 'n ander cipher objek te gebruik, sal dit 'n uitsondering ontlok. Die script berei voor om _onAuthenticationSucceeded_ aan te roep en die _javax.crypto.IllegalBlockSizeException_ in die _Cipher_ klas te hanteer, wat verseker dat daaropvolgende objek wat deur die aansoek gebruik word, met die nuwe sleutel geënkripteer is.
Nog 'n [Frida script](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) deur WithSecure spreek die omseiling van onveilige kripto objek gebruik aan. Die script roep _onAuthenticationSucceeded_ aan met 'n _CryptoObject_ wat nie deur 'n vingerafdruk geoutoriseer is nie. As die aansoek probeer om 'n ander cipher objek te gebruik, sal dit 'n uitsondering ontlok. Die script berei voor om _onAuthenticationSucceeded_ aan te roep en die _javax.crypto.IllegalBlockSizeException_ in die _Cipher_ klas te hanteer, wat verseker dat daaropvolgende objek wat deur die aansoek gebruik word, met die nuwe sleutel geënkripteer is.
Opdrag om die Frida script te loop:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
```
Wanneer jy die vingerafdrukskerm bereik en die `authenticate()` begin, tik `bypass()` in die Frida-konsol om die omseiling te aktiveer:
Wanneer jy die vingerafdrukskerm bereik en die inisiasie van `authenticate()`, tik `bypass()` in die Frida-konsol om die omseiling te aktiveer:
```
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
@ -38,7 +39,7 @@ Hooking FingerprintManager.authenticate()...
Instrumentasie raamwerke soos Xposed of Frida kan gebruik word om in toepassingsmetodes tydens uitvoering in te haak. Vir vingerafdrukverifikasie kan hierdie raamwerke:
1. **Die Verifikasie Terugroepe Naboots**: Deur in die `onAuthenticationSucceeded`, `onAuthenticationFailed`, of `onAuthenticationError` metodes van die `BiometricPrompt.AuthenticationCallback` in te haak, kan jy die uitkoms van die vingerafdrukverifikasieproses beheer.
2. **SSL Pinning Omseil**: Dit laat 'n aanvaller toe om die verkeer tussen die kliënt en die bediener te onderskep en te wysig, wat moontlik die verifikasieproses kan verander of sensitiewe data kan steel.
2. **SSL Pinning Omseil**: Dit stel 'n aanvaller in staat om die verkeer tussen die kliënt en die bediener te onderskep en te wysig, wat moontlik die verifikasieproses kan verander of sensitiewe data kan steel.
Voorbeeldopdrag vir Frida:
```bash
@ -48,20 +49,66 @@ frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
Terugvoering gereedskap soos `APKTool`, `dex2jar`, en `JD-GUI` kan gebruik word om 'n Android-toepassing te dekompileer, sy bronnkode te lees, en sy outentikasie-meganisme te verstaan. Die stappe sluit gewoonlik in:
1. **Dekomplilering van die APK**: Skakel die APK-lêer om na 'n meer menslike leesbare formaat (soos Java-kode).
2. **Analise van die Kode**: Soek na die implementering van vingerafdrukoutentikasie en identifiseer potensiële swakpunte (soos terugvalmeganismes of onvanpaste valideringskontroles).
3. **Hersamestelling van die APK**: Nadat die kode gewysig is om vingerafdrukoutentikasie te omseil, word die toepassing hersamestel, onderteken, en op die toestel geïnstalleer vir toetsing.
1. **Dekomplilering van die APK**: Converteer die APK-lêer na 'n meer menslike leesbare formaat (soos Java-kode).
2. **Analiseer die Kode**: Soek na die implementering van vingerafdrukoutentikasie en identifiseer potensiële swakpunte (soos terugvalmeganismes of onvanpaste valideringskontroles).
3. **Hersamestelling van die APK**: Na die wysiging van die kode om vingerafdrukoutentikasie te omseil, word die toepassing hersamestel, onderteken, en op die toestel geïnstalleer vir toetsing.
## **Metode 5 Gebruik van Pasgemaakte Outentikasiegereedskap**
## **Metode 5 Gebruik van Aangepaste Outentikasie Gereedskap**
Daar is gespesialiseerde gereedskap en skripte ontwerp om outentikasie-meganismes te toets en te omseil. Byvoorbeeld:
1. **MAGISK Modules**: MAGISK is 'n gereedskap vir Android wat gebruikers toelaat om hul toestelle te root en modules by te voeg wat hardewarevlak-inligting kan wysig of spoof, insluitend vingerafdrukke.
2. **Pasgemaakte Skripte**: Skripte kan geskryf word om met die Android Debug Bridge (ADB) of direk met die toepassing se agterkant te kommunikeer om vingerafdrukoutentikasie te simuleer of te omseil.
2. **Aangepaste Skripte**: Skripte kan geskryf word om met die Android Debug Bridge (ADB) of direk met die toepassing se agterkant te kommunikeer om vingerafdrukoutentikasie te simuleer of te omseil.
---
## **Metode 6 Universele Frida Hook vir `BiometricPrompt` (API 28-34)**
In 2023 het 'n gemeenskap Frida-skrip met die naam **Universal-Android-Biometric-Bypass** op CodeShare verskyn. Die skrip haak elke oorlaai van `BiometricPrompt.authenticate()` sowel as die ou `FingerprintManager.authenticate()` en aktiveer direk `onAuthenticationSucceeded()` met 'n **gefabriseerde `AuthenticationResult` wat 'n null `CryptoObject` bevat**. Omdat dit dinamies aanpas by API-vlakke, werk dit steeds op Android 14 (API 34) as die teikentoepassing **geen kriptografiese kontroles op die teruggekeer `CryptoObject`** uitvoer.
```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
* Alles gebeur in gebruikersruimte geen kernuitbuiting of root is nodig nie.
* Die aanval bly heeltemal stil vir die UI: die stelsels biometriese dialoog verskyn nooit.
* Versagting: **verifieer altyd `result.cryptoObject` en sy cipher/handtekening voordat sensitiewe funksies ontgrendel word**.
## **Method 7 Downgrade / Fallback Manipulation**
Begin met Android 11, kan ontwikkelaars spesifiseer watter autentiseerders aanvaarbaar is via `setAllowedAuthenticators()` (of die ouer `setDeviceCredentialAllowed()`). 'n **runtime hooking** aanval kan die `allowedAuthenticators` bit-veld dwing na die swakker
`BIOMETRIC_WEAK | DEVICE_CREDENTIAL` waarde:
```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
};
```
As die app **nie** daarna die teruggekeer `AuthenticationResult` valideer nie, kan 'n aanvaller eenvoudig die _PIN/Pattern_ terugvalknoppie druk of selfs 'n nuwe swak biometriese registrasie doen om toegang te verkry.
## **Metode 8 Verskaffer / Kernel-vlak CVE's**
Hou 'n oog op Android-sekuriteitsbulletins: verskeie onlangse kernel-kant foute laat plaaslike voorregverhoging toe deur die vingerafdruk HAL en effektief **die sensorpyplyn deaktiveer of kortsluit**. Voorbeelde sluit in:
* **CVE-2023-20995** logiese fout in `captureImage` van `CustomizedSensor.cpp` (Pixel 8, Android 13) wat ontgrendeling omseil sonder gebruikersinteraksie toelaat.
* **CVE-2024-53835 / CVE-2024-53840** “moontlike biometriese omseiling as gevolg van 'n ongewone wortel oorsaak” wat in die **Desember 2024 Pixel bulletin** reggestel is.
Alhoewel hierdie kwesbaarhede die vergrendelingskerm teiken, kan 'n ge-root toetspersoon dit met app-vlak foute ketting om in-app biometrie ook te omseil.
---
### Versterking Kontrolelys vir Ontwikkelaars (Vinige Pentester Aantekeninge)
* Handhaaf `setUserAuthenticationRequired(true)` en `setInvalidatedByBiometricEnrollment(true)` wanneer **Keystore** sleutels gegenereer word. 'n Geldige biometriese is dan nodig voordat die sleutel gebruik kan word.
* Weier 'n `CryptoObject` met **null of onverwagte cipher / handtekening**; behandel dit as 'n fatale autentikasiefout.
* Wanneer `BiometricPrompt` gebruik word, verkies `BIOMETRIC_STRONG` en **val nooit terug op `BIOMETRIC_WEAK` of `DEVICE_CREDENTIAL`** vir hoë-risiko aksies.
* Pin die nuutste `androidx.biometric` weergawe (≥1.2.0-beta02) onlangse vrystellings voeg outomatiese null-cipher kontroles by en verskerp toegelate autentiseerder kombinasies.
## Verwysings
- [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}}