Bypass Biometric Authentication (Android)

Reading time: 7 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Method 1 – Bypassing with No Crypto Object Usage

Kipaumbele hapa ni kwenye onAuthenticationSucceeded callback, ambayo ni muhimu katika mchakato wa uthibitishaji. Watafiti kutoka WithSecure walitengeneza Frida script, inayowezesha kupita CryptoObject ya NULL katika onAuthenticationSucceeded(...). Script hiyo inalazimisha kupita kiotomatiki kwa uthibitishaji wa alama za vidole wakati wa wito wa njia hiyo. Hapa chini kuna kipande kilichorahisishwa kinachoonyesha kupita katika muktadha wa Alama za Vidole za Android, huku programu kamili ikipatikana kwenye GitHub.

javascript
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();
}
});

Amri ya kuendesha skripti ya Frida:

bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js

Method 2 – Njia ya Kushughulikia Makosa

Another Frida script by WithSecure addresses bypassing insecure crypto object usage. The script invokes onAuthenticationSucceeded with a CryptoObject that hasn't been authorized by a fingerprint. If the application tries to use a different cipher object, it will trigger an exception. The script prepares to invoke onAuthenticationSucceeded and handle the javax.crypto.IllegalBlockSizeException in the Cipher class, ensuring subsequent objects used by the application are encrypted with the new key.

Amri ya kuendesha script ya Frida:

bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js

Wakati unafika kwenye skrini ya alama za vidole na kuanzishwa kwa authenticate(), andika bypass() kwenye console ya Frida ili kuanzisha bypass:

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()

Method 3 – Instrumentation Frameworks

Instrumentation frameworks kama Xposed au Frida zinaweza kutumika kuingilia njia za programu wakati wa wakati. Kwa uthibitisho wa alama za vidole, mifumo hii inaweza:

  1. Mock the Authentication Callbacks: Kwa kuingilia kwenye onAuthenticationSucceeded, onAuthenticationFailed, au onAuthenticationError njia za BiometricPrompt.AuthenticationCallback, unaweza kudhibiti matokeo ya mchakato wa uthibitisho wa alama za vidole.
  2. Bypass SSL Pinning: Hii inaruhusu mshambuliaji kukamata na kubadilisha trafiki kati ya mteja na seva, huenda ikabadilisha mchakato wa uthibitisho au kuiba data nyeti.

Example command for Frida:

bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in

Method 4 – Uhandisi wa Kurudi na Marekebisho ya Kanuni

Zana za uhandisi wa kurudi kama APKTool, dex2jar, na JD-GUI zinaweza kutumika kubadilisha programu ya Android, kusoma kanuni yake ya chanzo, na kuelewa mfumo wake wa uthibitishaji. Hatua kwa ujumla zinajumuisha:

  1. Kuhariri APK: Badilisha faili la APK kuwa muundo unaoweza kusomwa na binadamu zaidi (kama kanuni ya Java).
  2. Kuchambua Kanuni: Tafuta utekelezaji wa uthibitishaji wa alama za vidole na tambua udhaifu wa uwezekano (kama mifumo ya kurudi nyuma au ukaguzi usio sahihi).
  3. Kurekebisha APK: Baada ya kubadilisha kanuni ili kupita uthibitishaji wa alama za vidole, programu inarekebishwa, kusainiwa, na kufungwa kwenye kifaa kwa ajili ya majaribio.

Method 5 – Kutumia Zana za Uthibitishaji za Kijadi

Kuna zana maalum na skripti zilizoundwa ili kujaribu na kupita mifumo ya uthibitishaji. Kwa mfano:

  1. Moduli za MAGISK: MAGISK ni zana kwa Android inayowaruhusu watumiaji ku-root vifaa vyao na kuongeza moduli zinazoweza kubadilisha au kudanganya taarifa za kiwango cha vifaa, ikiwa ni pamoja na alama za vidole.
  2. Skripti zilizojengwa kwa Kijadi: Skripti zinaweza kuandikwa ili kuingiliana na Android Debug Bridge (ADB) au moja kwa moja na nyuma ya programu ili kuiga au kupita uthibitishaji wa alama za vidole.

Method 6 – Frida Hook ya Kijumla kwa BiometricPrompt (API 28-34)

Mnamo mwaka wa 2023, skripti ya jamii ya Frida iliyopewa jina Universal-Android-Biometric-Bypass ilionekana kwenye CodeShare. Skripti hii inashughulikia kila overload ya BiometricPrompt.authenticate() pamoja na FingerprintManager.authenticate() ya zamani na moja kwa moja inasababisha onAuthenticationSucceeded() kwa matokeo ya uthibitishaji yaliyotengenezwa yanayojumuisha CryptoObject isiyo na maana. Kwa sababu inabadilika kwa dinamikali kulingana na viwango vya API, bado inafanya kazi kwenye Android 14 (API 34) ikiwa programu lengwa haina ukaguzi wa kificho kwenye CryptoObject iliyorudishwa.

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

  • Kila kitu kinatokea katika nafasi ya mtumiaji – hakuna exploit ya kernel au root inahitajika.
  • Shambulio linabaki kimya kabisa kwa UI: kidirisha cha biometriki cha mfumo hakionekani kamwe.
  • Kuzuia: daima thibitisha result.cryptoObject na cipher/saini zake kabla ya kufungua vipengele nyeti.

Method 7 – Downgrade / Fallback Manipulation

Kuanza na Android 11, waendelezaji wanaweza kubaini ni waithinishaji gani wanaokubalika kupitia setAllowedAuthenticators() (au setDeviceCredentialAllowed() ya zamani). Shambulio la runtime hooking linaweza kulazimisha bit-field ya allowedAuthenticators kuwa thamani dhaifu ya 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
};

Ikiwa programu haithibitishi AuthenticationResult iliyorejeshwa, mshambuliaji anaweza kubonyeza kitufe cha PIN/Pattern fallback au hata kujiandikisha biometriki dhaifu mpya ili kupata ufikiaji.

Mbinu 8 – CVEs za Mtoa huduma / Kiwango cha Kernel

Fuata matangazo ya usalama wa Android: makosa kadhaa ya hivi karibuni upande wa kernel yanaruhusu kupandisha hadhi ya ndani kupitia fingerprint HAL na kwa ufanisi kuondoa au kufupisha mchakato wa sensor. Mifano ni pamoja na:

  • CVE-2023-20995 – kosa la mantiki katika captureImage ya CustomizedSensor.cpp (Pixel 8, Android 13) inayoruhusu kupita kufuli bila mwingiliano wa mtumiaji.
  • CVE-2024-53835 / CVE-2024-53840 – β€œkupita biometriki inayowezekana kutokana na sababu isiyo ya kawaida” iliyorekebishwa katika tangazo la Pixel la Desemba 2024.

Ingawa udhaifu huu unalenga skrini ya kufuli, mtumiaji aliye na root anaweza kuunganisha nao na makosa ya kiwango cha programu ili kupita biometriki ndani ya programu pia.


Orodha ya Kuimarisha kwa Wandelezaji (Maelezo ya Haraka ya Pentester)

  • Lazimisha setUserAuthenticationRequired(true) na setInvalidatedByBiometricEnrollment(true) unapozalisha funguo za Keystore. Biometriki halali inahitajika kabla funguo hiyo haijatumika.
  • Kata CryptoObject yenye null au cipher / saini isiyotarajiwa; itendee kama kosa la uthibitishaji la hatari.
  • Unapokuwa ukitumia BiometricPrompt, pendelea BIOMETRIC_STRONG na kamwe usirudi kwa BIOMETRIC_WEAK au DEVICE_CREDENTIAL kwa vitendo vya hatari kubwa.
  • Funga toleo jipya la androidx.biometric (β‰₯1.2.0-beta02) – toleo la hivi karibuni linaongeza ukaguzi wa null-cipher kiotomatiki na kuimarisha mchanganyiko wa waithibitishaji unaoruhusiwa.

Marejeleo

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks