hacktricks/mobile-pentesting/android-app-pentesting/tapjacking.md

82 lines
5.8 KiB
Markdown
Raw Normal View History

# Tapjacking
<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>
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:43:38 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
2024-02-11 01:46:25 +00:00
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
2024-02-11 01:46:25 +00:00
## **Podstawowe informacje**
**Tapjacking** to atak, w którym **złośliwa** **aplikacja** jest uruchamiana i **pozycjonuje się na wierzchu aplikacji ofiary**. Gdy zasłania widocznie aplikację ofiary, jej interfejs użytkownika jest zaprojektowany w taki sposób, aby oszukać użytkownika do interakcji z nią, podczas gdy przekazuje interakcję do aplikacji ofiary.\
W rezultacie **oszukuje użytkownika, że wykonuje działania w aplikacji ofiary**.
2024-02-11 01:46:25 +00:00
### Wykrywanie
Aby wykryć aplikacje podatne na ten atak, należy szukać **eksportowanych aktywności** w manifeście androida (zauważ, że aktywność z filtrem intencji jest automatycznie eksportowana domyślnie). Gdy już znajdziesz eksportowane aktywności, **sprawdź, czy wymagają jakiegokolwiek uprawnienia**. Jest to dlatego, że **złośliwa aplikacja będzie również potrzebować tego uprawnienia**.
2024-02-11 01:46:25 +00:00
### Ochrona
2024-02-11 01:46:25 +00:00
#### Android 12 (API 31,32) i nowsze
[Zgodnie z tym źródłem](https://www.geeksforgeeks.org/tapjacking-in-android/), ataki tapjacking są automatycznie blokowane przez Androida od wersji 12 (API 31 i 30) i nowszych. Dlatego nawet jeśli aplikacja jest podatna, **nie będzie można jej wykorzystać**.
#### `filterTouchesWhenObscured`
Jeśli **`android:filterTouchesWhenObscured`** jest ustawione na **`true`**, `View` nie będzie otrzymywać dotknięć, gdy okno widoku jest zasłonięte przez inne widoczne okno.
#### **`setFilterTouchesWhenObscured`**
Atrybut **`setFilterTouchesWhenObscured`** ustawiony na true również może zapobiec wykorzystaniu tej podatności, jeśli wersja Androida jest niższa.\
Jeśli ustawione na **`true`**, na przykład przycisk może być automatycznie **wyłączony, jeśli jest zasłonięty**:
2024-02-08 03:08:28 +00:00
```xml
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
2024-02-11 01:46:25 +00:00
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
```
## Wykorzystanie
### Tapjacking-ExportedActivity
Najnowszą aplikację na platformę Android wykonującą atak Tapjacking (+ wywołującą przed wyeksportowaną aktywnością atakowanej aplikacji) można znaleźć pod adresem: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
Postępuj zgodnie z instrukcjami **README, aby z niej skorzystać**.
### FloatingWindowApp
Przykładowy projekt implementujący **FloatingWindowApp**, który można użyć do umieszczenia na wierzchu innych aktywności w celu przeprowadzenia ataku clickjacking, można znaleźć pod adresem [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (trochę przestarzały, powodzenia z budowaniem pliku apk).
### Qark
{% hint style="danger" %}
Wygląda na to, że ten projekt nie jest już rozwijany, a ta funkcjonalność nie działa poprawnie.
{% endhint %}
Możesz użyć [**qark**](https://github.com/linkedin/qark) z parametrami `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` aby stworzyć złośliwą aplikację do testowania potencjalnych podatności na atak **Tapjacking**.
Środki zaradcze są stosunkowo proste, ponieważ deweloper może zdecydować, że widok nie będzie otrzymywał zdarzeń dotyku, gdy jest zasłonięty przez inny. Korzystając z [Android Developers Reference](https://developer.android.com/reference/android/view/View#security):
> Czasami istotne jest, aby aplikacja mogła zweryfikować, czy działanie jest wykonywane z pełną wiedzą i zgodą użytkownika, na przykład przy udzielaniu żądania uprawnienia, dokonywaniu zakupu lub kliknięciu w reklamę. Niestety złośliwa aplikacja mogłaby próbować oszukać użytkownika, aby wykonał te działania, nieświadomy, ukrywając zamierzony cel widoku. Jako środek zaradczy, framework oferuje mechanizm filtrowania dotyku, który można użyć do poprawy bezpieczeństwa widoków zapewniających dostęp do funkcji wymagających poufności.
>
> Aby włączyć filtrowanie dotyku, należy wywołać [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) lub ustawić atrybut układu android:filterTouchesWhenObscured na true. Po włączeniu framework odrzuci dotknięcia, które są odbierane, gdy okno widoku jest zasłonięte przez inne widoczne okno. W rezultacie widok nie będzie otrzymywał dotknięć, gdy pojawi się toast, okno dialogowe lub inne okno nad oknem widoku.
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}