hacktricks/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md
2024-02-11 01:46:25 +00:00

86 lines
7.5 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.

# Ominięcie uwierzytelniania biometrycznego (Android)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
## **Metoda 1 - Ominięcie bez użycia obiektu kryptograficznego**
Skupiamy się tutaj na wywołaniu zwrotnym *onAuthenticationSucceeded*, które jest kluczowe w procesie uwierzytelniania. Badacze z WithSecure opracowali [skrypt Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js), umożliwiający ominięcie pustego obiektu *CryptoObject* w *onAuthenticationSucceeded(...)*. Skrypt wymusza automatyczne ominięcie uwierzytelniania odciskiem palca podczas wywołania tej metody. Poniżej znajduje się uproszczony fragment kodu demonstrujący ominięcie w kontekście odcisku palca w systemie Android, a pełna aplikacja jest dostępna na [GitHubie](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();
}
});
```
Polecenie do uruchomienia skryptu Frida:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
```
## **Metoda 2 - podejście obsługi wyjątków**
Inny [skrypt Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) autorstwa WithSecure zajmuje się omijaniem niebezpiecznego użycia obiektu kryptograficznego. Skrypt wywołuje *onAuthenticationSucceeded* z *CryptoObject*, który nie został autoryzowany przez odcisk palca. Jeśli aplikacja spróbuje użyć innego obiektu szyfrującego, spowoduje to wyjątek. Skrypt przygotowuje się do wywołania *onAuthenticationSucceeded* i obsługi *javax.crypto.IllegalBlockSizeException* w klasie _Cipher_, zapewniając, że kolejne obiekty używane przez aplikację są szyfrowane nowym kluczem.
Polecenie do uruchomienia skryptu Frida:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
```
Po dotarciu do ekranu odcisku palca i uruchomieniu `authenticate()`, wpisz `bypass()` w konsoli Frida, aby aktywować 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()
```
## **Metoda 3 - Frameworki Instrumentacyjne**
Frameworki instrumentacyjne, takie jak Xposed lub Frida, mogą być używane do podłączania się do metod aplikacji w czasie wykonywania. Dla uwierzytelniania odciskiem palca, te frameworki mogą:
1. **Podrobić wywołania uwierzytelniania**: Podłączając się do metod `onAuthenticationSucceeded`, `onAuthenticationFailed` lub `onAuthenticationError` w klasie `BiometricPrompt.AuthenticationCallback`, można kontrolować wynik procesu uwierzytelniania odciskiem palca.
2. **Ominięcie SSL Pinning**: Pozwala to atakującemu przechwycić i modyfikować ruch między klientem a serwerem, potencjalnie zmieniając proces uwierzytelniania lub kradnąc wrażliwe dane.
Przykładowe polecenie dla Fridy:
```bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
```
## **Metoda 4 Reverse Engineering i Modyfikacja Kodu**
Narzędzia do reverse engineeringu, takie jak `APKTool`, `dex2jar` i `JD-GUI`, mogą być używane do dekompilacji aplikacji Android, odczytania jej kodu źródłowego i zrozumienia mechanizmu uwierzytelniania. Ogólne kroki obejmują:
1. **Dekompilacja pliku APK**: Konwersja pliku APK na bardziej czytelną dla człowieka formę (np. kod Java).
2. **Analiza kodu**: Szukanie implementacji uwierzytelniania odciskiem palca i identyfikowanie potencjalnych słabości (np. mechanizmów fallback lub nieprawidłowych sprawdzeń walidacji).
3. **Rekompilacja pliku APK**: Po zmodyfikowaniu kodu w celu ominięcia uwierzytelniania odciskiem palca, aplikacja jest rekompilowana, podpisywana i instalowana na urządzeniu w celu przetestowania.
## **Metoda 5 Użycie Niestandardowych Narzędzi do Uwierzytelniania**
Istnieją specjalistyczne narzędzia i skrypty przeznaczone do testowania i omijania mechanizmów uwierzytelniania. Na przykład:
1. **Moduły MAGISK**: MAGISK to narzędzie dla systemu Android, które umożliwia użytkownikom zrootowanie swoich urządzeń i dodawanie modułów, które mogą modyfikować lub podszywać się pod informacje na poziomie sprzętu, w tym odciski palców.
2. **Niestandardowe skrypty**: Można napisać skrypty do interakcji z Android Debug Bridge (ADB) lub bezpośrednio z backendem aplikacji w celu symulowania lub omijania uwierzytelniania odciskiem palca.
## Referencje
* [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi trikami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>