Tapjacking

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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, aby nie zdawał sobie sprawy, że faktycznie wykonuje czynności w aplikacji ofiary.

Wykrywanie

Aby wykryć aplikacje podatne na ten atak, należy wyszukać eksportowane 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.

Ochrona

Android 12 (API 31,32) i nowsze

Zgodnie z tym źródłem, ataki tapjacking są automatycznie blokowane przez Androida od wersji 12 (API 31 i 30) i nowszych. Więc nawet jeśli aplikacja jest podatna, nie będziesz w stanie 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 może również 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:

<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
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.

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 (trochę przestarzały, powodzenia z budowaniem pliku apk).

Qark

Wygląda na to, że ten projekt nie jest już rozwijany, a ta funkcjonalność nie działa poprawnie.

Możesz użyć qark z parametrami --exploit-apk --sdk-path /Users/username/Library/Android/sdk do stworzenia złośliwej aplikacji w celu przetestowania potencjalnych podatności na Tapjacking.

Zapobieganie jest stosunkowo proste, ponieważ programista może zdecydować, czy chce otrzymywać zdarzenia dotykowe, gdy widok jest zasłonięty przez inny. Korzystając z Android Developer’s Reference:

Czasami istotne jest, aby aplikacja mogła zweryfikować, czy działanie jest wykonywane z pełną wiedzą i zgodą użytkownika, takie jak udzielenie żądania uprawnienia, dokonanie zakupu lub kliknięcie 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. W ramach rozwiązania framework oferuje mechanizm filtrowania dotyku, który można wykorzystać 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) 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.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated