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
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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.
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:
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:
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:
- Mock the Authentication Callbacks: Kwa kuingilia kwenye
onAuthenticationSucceeded
,onAuthenticationFailed
, auonAuthenticationError
njia zaBiometricPrompt.AuthenticationCallback
, unaweza kudhibiti matokeo ya mchakato wa uthibitisho wa alama za vidole. - 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:
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:
- Kuhariri APK: Badilisha faili la APK kuwa muundo unaoweza kusomwa na binadamu zaidi (kama kanuni ya Java).
- Kuchambua Kanuni: Tafuta utekelezaji wa uthibitishaji wa alama za vidole na tambua udhaifu wa uwezekano (kama mifumo ya kurudi nyuma au ukaguzi usio sahihi).
- 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:
- 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.
- 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.
# 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
:
// 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
yaCustomizedSensor.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)
nasetInvalidatedByBiometricEnrollment(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
, pendeleaBIOMETRIC_STRONG
na kamwe usirudi kwaBIOMETRIC_WEAK
auDEVICE_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
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.