बायपास बायोमेट्रिक प्रमाणीकरण (एंड्रॉइड)

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

विधि 1 – बिना क्रिप्टो ऑब्जेक्ट उपयोग के बायपास करना

यहाँ ध्यान onAuthenticationSucceeded कॉलबैक पर है, जो प्रमाणीकरण प्रक्रिया में महत्वपूर्ण है। WithSecure के शोधकर्ताओं ने एक Frida स्क्रिप्ट विकसित की, जो onAuthenticationSucceeded(...) में NULL CryptoObject के बायपास की अनुमति देती है। यह स्क्रिप्ट विधि के आह्वान पर फिंगरप्रिंट प्रमाणीकरण का स्वचालित बायपास करने के लिए मजबूर करती है। नीचे एक सरल स्निप्पेट है जो एंड्रॉइड फिंगरप्रिंट संदर्भ में बायपास को प्रदर्शित करता है, पूरी एप्लिकेशन 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();
}
});

Frida स्क्रिप्ट चलाने के लिए कमांड:

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

विधि 2 – अपवाद प्रबंधन दृष्टिकोण

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.

Frida स्क्रिप्ट चलाने के लिए कमांड:

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

फिंगरप्रिंट स्क्रीन पर पहुँचने और authenticate() के आरंभ होने पर, बायपास सक्रिय करने के लिए Frida कंसोल में 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 जैसे Xposed या Frida का उपयोग रनटाइम पर एप्लिकेशन विधियों में हुक करने के लिए किया जा सकता है। फिंगरप्रिंट प्रमाणीकरण के लिए, ये फ्रेमवर्क कर सकते हैं:

  1. Authentication Callbacks को Mock करें: BiometricPrompt.AuthenticationCallback के onAuthenticationSucceeded, onAuthenticationFailed, या onAuthenticationError विधियों में हुक करके, आप फिंगरप्रिंट प्रमाणीकरण प्रक्रिया के परिणाम को नियंत्रित कर सकते हैं।
  2. SSL Pinning को Bypass करें: यह एक हमलावर को क्लाइंट और सर्वर के बीच ट्रैफ़िक को इंटरसेप्ट और संशोधित करने की अनुमति देता है, संभावित रूप से प्रमाणीकरण प्रक्रिया को बदलने या संवेदनशील डेटा चुराने के लिए।

Frida के लिए उदाहरण कमांड:

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

विधि 4 – रिवर्स इंजीनियरिंग और कोड संशोधन

रिवर्स इंजीनियरिंग उपकरण जैसे APKTool, dex2jar, और JD-GUI का उपयोग एक Android एप्लिकेशन को डिकंपाइल करने, इसके स्रोत कोड को पढ़ने और इसके प्रमाणीकरण तंत्र को समझने के लिए किया जा सकता है। चरण आमतौर पर शामिल होते हैं:

  1. APK को डिकंपाइल करना: APK फ़ाइल को एक अधिक मानव-पठनीय प्रारूप (जैसे Java कोड) में परिवर्तित करें।
  2. कोड का विश्लेषण करना: फिंगरप्रिंट प्रमाणीकरण के कार्यान्वयन की तलाश करें और संभावित कमजोरियों की पहचान करें (जैसे फॉलबैक तंत्र या अनुचित मान्यता जांच)।
  3. APK को फिर से संकलित करना: फिंगरप्रिंट प्रमाणीकरण को बायपास करने के लिए कोड को संशोधित करने के बाद, एप्लिकेशन को फिर से संकलित किया जाता है, साइन किया जाता है, और परीक्षण के लिए डिवाइस पर स्थापित किया जाता है।

विधि 5 – कस्टम प्रमाणीकरण उपकरणों का उपयोग करना

प्रमाणीकरण तंत्र का परीक्षण और बायपास करने के लिए विशेष उपकरण और स्क्रिप्ट डिज़ाइन की गई हैं। उदाहरण के लिए:

  1. MAGISK मॉड्यूल: MAGISK एक Android के लिए उपकरण है जो उपयोगकर्ताओं को अपने उपकरणों को रूट करने और मॉड्यूल जोड़ने की अनुमति देता है जो हार्डवेयर-स्तरीय जानकारी, जिसमें फिंगरप्रिंट शामिल हैं, को संशोधित या स्पूफ कर सकते हैं।
  2. कस्टम-निर्मित स्क्रिप्ट: स्क्रिप्ट को Android डिबग ब्रिज (ADB) के साथ बातचीत करने या सीधे एप्लिकेशन के बैकएंड के साथ फिंगरप्रिंट प्रमाणीकरण का अनुकरण या बायपास करने के लिए लिखा जा सकता है।

विधि 6 – BiometricPrompt (API 28-34) के लिए यूनिवर्सल फ्रिडा हुक

2023 में एक सामुदायिक फ्रिडा स्क्रिप्ट Universal-Android-Biometric-Bypass नाम से CodeShare पर आई। यह स्क्रिप्ट BiometricPrompt.authenticate() के हर ओवरलोड के साथ-साथ पुराने FingerprintManager.authenticate() को हुक करती है और सीधे एक निर्मित AuthenticationResult के साथ onAuthenticationSucceeded() को ट्रिगर करती है जिसमें एक शून्य CryptoObject होता है। क्योंकि यह API स्तरों के अनुसार गतिशील रूप से अनुकूलित होता है, यह Android 14 (API 34) पर भी काम करता है यदि लक्षित एप्लिकेशन वापस किए गए 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

Key ideas

  • सब कुछ उपयोगकर्ता स्थान में होता है - कोई कर्नेल एक्सप्लॉइट या रूट की आवश्यकता नहीं है।
  • हमला UI के लिए पूरी तरह से चुप रहता है: सिस्टम बायोमेट्रिक डायलॉग कभी नहीं दिखाई देता।
  • शमन: संवेदनशील सुविधाओं को अनलॉक करने से पहले हमेशा result.cryptoObject और इसके सिफर/हस्ताक्षर की पुष्टि करें

Method 7 – Downgrade / Fallback Manipulation

Android 11 से शुरू होकर, डेवलपर्स यह निर्दिष्ट कर सकते हैं कि कौन से प्रमाणीकरणकर्ता स्वीकार्य हैं setAllowedAuthenticators() (या पुराने setDeviceCredentialAllowed()) के माध्यम से। एक रनटाइम हुकिंग हमला allowedAuthenticators बिट-फील्ड को कमजोर 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
};

यदि ऐप बाद में लौटाए गए AuthenticationResult को मान्य नहीं करता है, तो एक हमलावर बस PIN/Pattern फॉलबैक बटन दबा सकता है या यहां तक कि एक नया कमजोर बायोमेट्रिक पंजीकृत कर सकता है ताकि पहुंच प्राप्त की जा सके।

विधि 8 – विक्रेता / कर्नेल-स्तरीय CVEs

एंड्रॉइड सुरक्षा बुलेटिन पर नज़र रखें: कई हालिया कर्नेल-साइड बग स्थानीय विशेषाधिकार वृद्धि की अनुमति देते हैं जो फिंगरप्रिंट HAL के माध्यम से सेंसर पाइपलाइन को निष्क्रिय या शॉर्ट-सर्किट करते हैं। उदाहरणों में शामिल हैं:

  • CVE-2023-20995CustomizedSensor.cpp के captureImage में लॉजिक त्रुटि (पिक्सेल 8, एंड्रॉइड 13) जो उपयोगकर्ता इंटरैक्शन के बिना अनलॉक बायपास की अनुमति देती है।
  • CVE-2024-53835 / CVE-2024-53840 – “एक असामान्य मूल कारण के कारण संभावित बायोमेट्रिक बायपास” जो दिसंबर 2024 पिक्सेल बुलेटिन में पैच किया गया।

हालांकि ये कमजोरियां लॉक-स्क्रीन को लक्षित करती हैं, एक रूटेड परीक्षक उन्हें ऐप-स्तरीय दोषों के साथ जोड़ सकता है ताकि इन-ऐप बायोमेट्रिक्स को बायपास किया जा सके।


डेवलपर्स के लिए हार्डनिंग चेकलिस्ट (त्वरित पेंटेस्टर नोट्स)

  • Keystore कुंजियों को उत्पन्न करते समय setUserAuthenticationRequired(true) और setInvalidatedByBiometricEnrollment(true) को लागू करें। कुंजी का उपयोग करने से पहले एक मान्य बायोमेट्रिक की आवश्यकता होती है।
  • null या अप्रत्याशित सिफर / हस्ताक्षर के साथ CryptoObject को अस्वीकार करें; इसे एक घातक प्रमाणीकरण त्रुटि के रूप में मानें।
  • BiometricPrompt का उपयोग करते समय, BIOMETRIC_STRONG को प्राथमिकता दें और उच्च-जोखिम वाले कार्यों के लिए कभी भी BIOMETRIC_WEAK या DEVICE_CREDENTIAL पर वापस न जाएं
  • नवीनतम androidx.biometric संस्करण (≥1.2.0-beta02) को पिन करें – हाल के रिलीज़ स्वचालित null-cipher जांच जोड़ते हैं और अनुमत प्रमाणीकरण संयोजनों को कड़ा करते हैं।

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें