mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
92 lines
9.2 KiB
Markdown
92 lines
9.2 KiB
Markdown
# 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 %}
|