hacktricks/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md

92 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bypass Biometric Authentication (Android)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Метод 1 Обхід без використання об'єкта Crypto**
Основна увага приділяється зворотному виклику *onAuthenticationSucceeded*, який є критично важливим у процесі аутентифікації. Дослідники з WithSecure розробили [скрипт Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js), що дозволяє обійти NULL *CryptoObject* у *onAuthenticationSucceeded(...)*. Скрипт примусово викликає автоматичний обхід аутентифікації за відбитком пальця під час виклику методу. Нижче наведено спрощений фрагмент, що демонструє обхід у контексті Android Fingerprint, повна програма доступна на [GitHub](https://github.com/St3v3nsS/InsecureBanking).
```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 Підхід обробки виключень**
Ще один [Frida script](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) від WithSecure вирішує проблему обходу використання небезпечних криптооб'єктів. Скрипт викликає *onAuthenticationSucceeded* з *CryptoObject*, який не був авторизований відбитком пальця. Якщо додаток намагається використовувати інший об'єкт шифру, це викличе виключення. Скрипт готується викликати *onAuthenticationSucceeded* і обробляти *javax.crypto.IllegalBlockSizeException* у класі _Cipher_, забезпечуючи, щоб наступні об'єкти, які використовуються додатком, були зашифровані новим ключем.
Команда для запуску скрипта Frida:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
```
При досягненні екрану відбитка пальця та ініціації `authenticate()`, введіть `bypass()` у консолі Frida, щоб активувати обхід:
```
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()
```
## **Метод 3 Інструментальні Фреймворки**
Інструментальні фреймворки, такі як Xposed або Frida, можуть бути використані для підключення до методів додатка під час виконання. Для аутентифікації за відбитком пальця ці фреймворки можуть:
1. **Мокати Виклики Аутентифікації**: Підключившись до методів `onAuthenticationSucceeded`, `onAuthenticationFailed` або `onAuthenticationError` класу `BiometricPrompt.AuthenticationCallback`, ви можете контролювати результат процесу аутентифікації за відбитком пальця.
2. **Обійти SSL Pinning**: Це дозволяє зловмиснику перехоплювати та змінювати трафік між клієнтом і сервером, потенційно змінюючи процес аутентифікації або крадучи чутливі дані.
Приклад команди для 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 Debug Bridge (ADB) або безпосередньо з бекендом додатку для симуляції або обходу аутентифікації за відбитками пальців.
## Посилання
* [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}