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

87 lines
7.5 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# Ominięcie uwierzytelniania biometrycznego (Android)
2022-10-26 09:06:33 +00:00
2024-02-08 03:06:37 +00:00
2022-10-26 09:06:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<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>
2022-10-26 09:06:33 +00:00
2024-02-11 01:46:25 +00:00
* 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)**.
2022-10-26 09:06:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
## **Metoda 1 - Ominięcie bez użycia obiektu kryptograficznego**
2022-10-26 09:06:33 +00:00
2024-02-11 01:46:25 +00:00
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).
2022-10-26 09:06:33 +00:00
```javascript
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
2024-02-11 01:46:25 +00:00
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
2022-10-26 09:06:33 +00:00
});
```
2024-02-11 01:46:25 +00:00
Polecenie do uruchomienia skryptu Frida:
2024-02-03 14:45:32 +00:00
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
2022-10-26 09:06:33 +00:00
```
2024-02-11 01:46:25 +00:00
## **Metoda 2 - podejście obsługi wyjątków**
2022-10-26 09:06:33 +00:00
2024-02-11 01:46:25 +00:00
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.
2022-10-26 09:06:33 +00:00
2024-02-11 01:46:25 +00:00
Polecenie do uruchomienia skryptu Frida:
2024-02-03 14:45:32 +00:00
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
2022-10-26 09:06:33 +00:00
```
2024-02-11 01:46:25 +00:00
Po dotarciu do ekranu odcisku palca i uruchomieniu `authenticate()`, wpisz `bypass()` w konsoli Frida, aby aktywować bypass:
2022-10-26 09:06:33 +00:00
```
2024-02-03 14:45:32 +00:00
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
2022-10-26 09:06:33 +00:00
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
2024-02-03 14:45:32 +00:00
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()
2022-10-26 09:06:33 +00:00
```
2024-02-11 01:46:25 +00:00
## **Metoda 3 - Frameworki Instrumentacyjne**
2022-10-26 09:06:33 +00:00
2024-02-11 01:46:25 +00:00
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ą:
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
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.
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
Przykładowe polecenie dla Fridy:
2024-02-03 14:45:32 +00:00
```bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
```
2024-02-11 01:46:25 +00:00
## **Metoda 4 Reverse Engineering i Modyfikacja Kodu**
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
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ą:
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
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.
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
## **Metoda 5 Użycie Niestandardowych Narzędzi do Uwierzytelniania**
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
Istnieją specjalistyczne narzędzia i skrypty przeznaczone do testowania i omijania mechanizmów uwierzytelniania. Na przykład:
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
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.
2024-02-03 14:45:32 +00:00
2024-02-11 01:46:25 +00:00
## Referencje
2024-02-03 14:45:32 +00:00
* [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)
2022-10-26 09:06:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<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>
2022-10-26 09:06:33 +00:00
2024-02-11 01:46:25 +00:00
* 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)**.
2022-10-26 09:06:33 +00:00
</details>