From 152a7230f68c794ddb14909e4bf060a6a5094f6d Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 4 Aug 2025 18:36:03 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's --- src/SUMMARY.md | 1 + .../android-app-pentesting/README.md | 95 ++++++------ .../accessibility-services-abuse.md | 145 ++++++++++++++++++ .../android-app-pentesting/tapjacking.md | 24 +-- 4 files changed, 209 insertions(+), 56 deletions(-) create mode 100644 src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ad779f71c..177fddcd7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -322,6 +322,7 @@ - [Android APK Checklist](mobile-pentesting/android-checklist.md) - [Android Applications Pentesting](mobile-pentesting/android-app-pentesting/README.md) + - [Accessibility Services Abuse](mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md) - [Android Applications Basics](mobile-pentesting/android-app-pentesting/android-applications-basics.md) - [Android Task Hijacking](mobile-pentesting/android-app-pentesting/android-task-hijacking.md) - [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md) diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 3515889ab..3b83b79de 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -15,7 +15,7 @@ android-applications-basics.md To główne narzędzie, którego potrzebujesz, aby połączyć się z urządzeniem z Androidem (emulowanym lub fizycznym).\ **ADB** umożliwia kontrolowanie urządzeń zarówno przez **USB**, jak i **sieć** z komputera. To narzędzie pozwala na **kopiowanie** plików w obie strony, **instalację** i **odinstalację** aplikacji, **wykonywanie** poleceń powłoki, **tworzenie kopii zapasowych** danych, **odczytywanie** logów, wśród innych funkcji. -Zobacz poniższą listę [**komend ADB**](adb-commands.md), aby dowiedzieć się, jak używać adb. +Zobacz poniższą listę [**poleceń ADB**](adb-commands.md), aby dowiedzieć się, jak używać adb. ## Smali @@ -24,11 +24,12 @@ Czasami interesujące jest **modyfikowanie kodu aplikacji**, aby uzyskać dostę ## Inne interesujące triki -- [Podrabianie swojej lokalizacji w Sklepie Play](spoofing-your-location-in-play-store.md) +- [Podrabianie lokalizacji w Sklepie Play](spoofing-your-location-in-play-store.md) - [Shizuku Privileged API (dostęp z uprawnieniami bez roota oparty na ADB)](shizuku-privileged-api.md) - [Wykorzystywanie niebezpiecznych mechanizmów aktualizacji w aplikacji](insecure-in-app-update-rce.md) +- [Wykorzystywanie usług dostępności (Android RAT)](accessibility-services-abuse.md) - **Pobieranie APK**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) -- Ekstrakcja APK z urządzenia: +- Wyodrębnij APK z urządzenia: ```bash adb shell pm list packages com.android.insecurebankv2 @@ -64,7 +65,7 @@ Rzucając okiem na **ciągi** APK, możesz szukać **haseł**, **URL** ([https:/ **Firebase** -Zwróć szczególną uwagę na **adresy URL Firebase** i sprawdź, czy są źle skonfigurowane. [Więcej informacji o tym, czym jest Firebase i jak go wykorzystać, znajdziesz tutaj.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Zwróć szczególną uwagę na **adresy URL Firebase** i sprawdź, czy są źle skonfigurowane. [Więcej informacji na temat tego, czym jest Firebase i jak go wykorzystać, znajdziesz tutaj.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Basic understanding of the application - Manifest.xml, strings.xml @@ -76,7 +77,7 @@ Zwróć szczególną uwagę na **adresy URL Firebase** i sprawdź, czy są źle - **Ustawienia kopii zapasowej**: Atrybut `android:allowBackup="false"` powinien być wyraźnie ustawiony dla aplikacji zajmujących się wrażliwymi informacjami, aby zapobiec nieautoryzowanym kopiom zapasowym danych za pomocą adb, szczególnie gdy włączone jest debugowanie USB. - **Bezpieczeństwo sieci**: Niestandardowe konfiguracje bezpieczeństwa sieci (`android:networkSecurityConfig="@xml/network_security_config"`) w _res/xml/_ mogą określać szczegóły bezpieczeństwa, takie jak przypinanie certyfikatów i ustawienia ruchu HTTP. Przykładem jest zezwolenie na ruch HTTP dla określonych domen. - **Eksportowane aktywności i usługi**: Identyfikacja eksportowanych aktywności i usług w manifeście może uwydatnić komponenty, które mogą być nadużywane. Dalsza analiza podczas testów dynamicznych może ujawnić, jak wykorzystać te komponenty. -- **Dostawcy treści i FileProviders**: Ujawnione dostawcy treści mogą umożliwić nieautoryzowany dostęp lub modyfikację danych. Konfiguracja FileProviders powinna być również dokładnie sprawdzona. +- **Dostawcy treści i FileProviders**: Ujawnieni dostawcy treści mogą umożliwić nieautoryzowany dostęp lub modyfikację danych. Konfiguracja FileProviders powinna być również dokładnie sprawdzona. - **Odbiorniki rozgłoszeniowe i schematy URL**: Te komponenty mogą być wykorzystywane do eksploatacji, z szczególną uwagą na to, jak zarządzane są schematy URL w kontekście luk w wejściu. - **Wersje SDK**: Atrybuty `minSdkVersion`, `targetSDKVersion` i `maxSdkVersion` wskazują obsługiwane wersje Androida, podkreślając znaczenie nieobsługiwania przestarzałych, podatnych wersji Androida z powodów bezpieczeństwa. @@ -87,7 +88,7 @@ Z pliku **strings.xml** można odkryć wrażliwe informacje, takie jak klucze AP **Tapjacking** to atak, w którym **złośliwa** **aplikacja** jest uruchamiana i **pozycjonuje się na wierzchu aplikacji ofiary**. Gdy widocznie zasłania 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 efekcie **oślepia użytkownika, nie pozwalając mu wiedzieć, że faktycznie wykonuje akcje w aplikacji ofiary**. -Znajdź więcej informacji w: +Więcej informacji znajdziesz w: {{#ref}} tapjacking.md @@ -112,7 +113,7 @@ W Androidzie pliki **przechowywane** w **wewnętrznej** pamięci są **zaplanowa 1. **Analiza statyczna:** - **Upewnij się**, że użycie `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` jest **starannie analizowane**. Te tryby **mogą potencjalnie ujawniać** pliki **niezamierzonym lub nieautoryzowanym dostępem**. 2. **Analiza dynamiczna:** -- **Zweryfikuj** **uprawnienia** ustawione na plikach utworzonych przez aplikację. Szczególnie **sprawdź**, czy jakiekolwiek pliki są **ustawione na bycie czytelnymi lub zapisywalnymi na całym świecie**. Może to stanowić istotne ryzyko bezpieczeństwa, ponieważ pozwoli **jakiejkolwiek aplikacji** zainstalowanej na urządzeniu, niezależnie od jej pochodzenia lub zamiaru, na **odczyt lub modyfikację** tych plików. +- **Zweryfikuj** **uprawnienia** ustawione na plikach utworzonych przez aplikację. W szczególności **sprawdź**, czy jakiekolwiek pliki są **ustawione na bycie czytelnymi lub zapisywalnymi na całym świecie**. Może to stanowić istotne ryzyko bezpieczeństwa, ponieważ pozwoli **jakiejkolwiek aplikacji** zainstalowanej na urządzeniu, niezależnie od jej pochodzenia lub zamiaru, na **odczyt lub modyfikację** tych plików. **External Storage** @@ -124,7 +125,7 @@ Podczas pracy z plikami na **zewnętrznej pamięci**, takiej jak karty SD, nale - Biorąc pod uwagę łatwość dostępu, zaleca się **nieprzechowywanie wrażliwych informacji** na zewnętrznej pamięci. - Zewnętrzna pamięć może być usunięta lub dostępna przez dowolną aplikację, co czyni ją mniej bezpieczną. 3. **Obsługa danych z zewnętrznej pamięci**: -- Zawsze **przeprowadzaj walidację wejścia** na danych pobranych z zewnętrznej pamięci. To jest kluczowe, ponieważ dane pochodzą z nieznanego źródła. +- Zawsze **przeprowadzaj walidację wejścia** na danych pobranych z zewnętrznej pamięci. Jest to kluczowe, ponieważ dane pochodzą z nieznanego źródła. - Przechowywanie plików wykonywalnych lub klas na zewnętrznej pamięci do dynamicznego ładowania jest zdecydowanie odradzane. - Jeśli Twoja aplikacja musi pobrać pliki wykonywalne z zewnętrznej pamięci, upewnij się, że te pliki są **podpisane i weryfikowane kryptograficznie** przed ich dynamicznym załadowaniem. Ten krok jest kluczowy dla utrzymania integralności bezpieczeństwa Twojej aplikacji. @@ -135,8 +136,8 @@ Zewnętrzna pamięć może być **dostępna** w `/storage/emulated/0`, `/sdcard` **Wrażliwe dane przechowywane w postaci niezaszyfrowanej** -- **Preferencje współdzielone**: Android pozwala każdej aplikacji na łatwe zapisywanie plików xml w ścieżce `/data/data//shared_prefs/` i czasami można znaleźć wrażliwe informacje w postaci niezaszyfrowanej w tym folderze. -- **Bazy danych**: Android pozwala każdej aplikacji na łatwe zapisywanie baz danych sqlite w ścieżce `/data/data//databases/` i czasami można znaleźć wrażliwe informacje w postaci niezaszyfrowanej w tym folderze. +- **Preferencje współdzielone**: Android pozwala każdej aplikacji na łatwe zapisywanie plików xml w ścieżce `/data/data//shared_prefs/` i czasami możliwe jest znalezienie wrażliwych informacji w postaci niezaszyfrowanej w tym folderze. +- **Bazy danych**: Android pozwala każdej aplikacji na łatwe zapisywanie baz danych sqlite w ścieżce `/data/data//databases/` i czasami możliwe jest znalezienie wrażliwych informacji w postaci niezaszyfrowanej w tym folderze. ### Broken TLS @@ -161,7 +162,7 @@ Deweloperzy nie powinni używać **przestarzałych algorytmów** do przeprowadza ### Inne kontrole -- Zaleca się **obfuskację APK**, aby utrudnić pracę inżynierom odwrotnym. +- Zaleca się **obfuskację APK**, aby utrudnić atakującym pracę inżynierii wstecznej. - Jeśli aplikacja jest wrażliwa (jak aplikacje bankowe), powinna przeprowadzać **własne kontrole, aby sprawdzić, czy urządzenie jest zrootowane** i działać w konsekwencji. - Jeśli aplikacja jest wrażliwa (jak aplikacje bankowe), powinna sprawdzić, czy używany jest **emulator**. - Jeśli aplikacja jest wrażliwa (jak aplikacje bankowe), powinna **sprawdzić swoją integralność przed wykonaniem**, aby sprawdzić, czy została zmodyfikowana. @@ -187,9 +188,9 @@ Przeczytaj następującą stronę, aby dowiedzieć się, jak łatwo uzyskać dos Zgodnie z tym [**postem na blogu**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superzapakowane to algorytm Meta, który kompresuje zawartość aplikacji do jednego pliku. Blog mówi o możliwości stworzenia aplikacji, która dekompresuje tego rodzaju aplikacje... oraz szybszym sposobie, który polega na **wykonaniu aplikacji i zebraniu zdekompresowanych plików z systemu plików.** -### Zautomatyzowana analiza statyczna kodu +### Zautomatyzowana analiza statycznego kodu -Narzędzie [**mariana-trench**](https://github.com/facebook/mariana-trench) jest w stanie znaleźć **luki** poprzez **skanowanie** **kodu** aplikacji. To narzędzie zawiera szereg **znanych źródeł** (które wskazują narzędziu **miejsca**, gdzie **wejście** jest **kontrolowane przez użytkownika**), **sinks** (które wskazują narzędziu **niebezpieczne** **miejsca**, gdzie złośliwe dane wejściowe użytkownika mogą spowodować szkody) oraz **reguły**. Te reguły wskazują na **kombinację** **źródeł-sinków**, która wskazuje na lukę. +Narzędzie [**mariana-trench**](https://github.com/facebook/mariana-trench) jest w stanie znaleźć **luki** poprzez **skanowanie** **kodu** aplikacji. To narzędzie zawiera szereg **znanych źródeł** (które wskazują narzędziu **miejsca**, gdzie **wejście** jest **kontrolowane przez użytkownika**), **sinki** (które wskazują narzędziu **niebezpieczne** **miejsca**, gdzie złośliwe dane wejściowe mogą spowodować szkody) i **zasady**. Te zasady wskazują na **kombinację** **źródeł-sinków**, które wskazują na lukę. Dzięki tej wiedzy, **mariana-trench przejrzy kod i znajdzie możliwe luki w nim**. @@ -208,7 +209,7 @@ bypass-biometric-authentication-android.md - **Wykonanie kodu**: `Runtime.exec(), ProcessBuilder(), native code:system()` - **Wysyłanie SMS-ów**: `sendTextMessage, sendMultipartTestMessage` - **Funkcje natywne** zadeklarowane jako `native`: `public native, System.loadLibrary, System.load` -- [Przeczytaj to, aby dowiedzieć się **jak odwrócić funkcje natywne**](reversing-native-libraries.md) +- [Przeczytaj to, aby dowiedzieć się, **jak odwrócić funkcje natywne**](reversing-native-libraries.md) ### **Inne sztuczki** @@ -267,22 +268,22 @@ Musisz aktywować opcje **debugowania**, a byłoby dobrze, gdybyś mógł je **z 4. Naciśnij **Numer kompilacji** 7 razy. 5. Wróć i znajdziesz **Opcje dewelopera**. -> Gdy zainstalujesz aplikację, pierwszą rzeczą, którą powinieneś zrobić, jest jej przetestowanie i zbadanie, co robi, jak działa i zapoznanie się z nią.\ -> Sugeruję **przeprowadzenie tej początkowej analizy dynamicznej za pomocą analizy dynamicznej MobSF + pidcat**, abyśmy mogli **dowiedzieć się, jak działa aplikacja**, podczas gdy MobSF **zbiera** wiele **interesujących** **danych**, które możesz później przejrzeć. +> Po zainstalowaniu aplikacji, pierwszą rzeczą, którą powinieneś zrobić, jest jej przetestowanie i zbadanie, co robi, jak działa i zapoznanie się z nią.\ +> Sugeruję **przeprowadzenie tej początkowej analizy dynamicznej za pomocą analizy dynamicznej MobSF + pidcat**, abyśmy mogli **nauczyć się, jak działa aplikacja**, podczas gdy MobSF **zbiera** wiele **interesujących** **danych**, które możesz później przejrzeć. ### Niezamierzony wyciek danych **Logowanie** -Deweloperzy powinni być ostrożni w ujawnianiu **informacji debugowania** publicznie, ponieważ może to prowadzić do wycieków wrażliwych danych. Narzędzia [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` są zalecane do monitorowania logów aplikacji w celu identyfikacji i ochrony wrażliwych informacji. **Pidcat** jest preferowane ze względu na łatwość użycia i czytelność. +Deweloperzy powinni być ostrożni, aby nie ujawniać **informacji debugowania** publicznie, ponieważ może to prowadzić do wycieków wrażliwych danych. Narzędzia [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` są zalecane do monitorowania logów aplikacji w celu identyfikacji i ochrony wrażliwych informacji. **Pidcat** jest preferowane ze względu na łatwość użycia i czytelność. > [!WARNING] -> Zauważ, że od **nowszych niż Android 4.0**, **aplikacje mogą uzyskiwać dostęp tylko do swoich własnych logów**. Więc aplikacje nie mogą uzyskiwać dostępu do logów innych aplikacji.\ +> Zauważ, że od **nowszych wersji niż Android 4.0**, **aplikacje mogą uzyskiwać dostęp tylko do swoich własnych logów**. Tak więc aplikacje nie mogą uzyskiwać dostępu do logów innych aplikacji.\ > Tak czy inaczej, nadal zaleca się **nie logować wrażliwych informacji**. **Bufor kopiowania/wklejania** -Androidowy framework oparty na **schowku** umożliwia funkcjonalność kopiowania i wklejania w aplikacjach, ale stwarza ryzyko, ponieważ **inne aplikacje** mogą **uzyskiwać dostęp** do schowka, potencjalnie ujawniając wrażliwe dane. Ważne jest, aby **wyłączyć funkcje kopiowania/wklejania** dla wrażliwych sekcji aplikacji, takich jak dane karty kredytowej, aby zapobiec wyciekom danych. +Oparty na **schowku** framework Androida umożliwia funkcjonalność kopiowania i wklejania w aplikacjach, ale stwarza ryzyko, ponieważ **inne aplikacje** mogą **uzyskiwać dostęp** do schowka, potencjalnie ujawniając wrażliwe dane. Ważne jest, aby **wyłączyć funkcje kopiowania/wklejania** dla wrażliwych sekcji aplikacji, takich jak dane karty kredytowej, aby zapobiec wyciekom danych. **Logi awarii** @@ -305,7 +306,7 @@ Wylicz tabele używając `.tables` i wylicz kolumny tabel używając `.schema ``` ### **Obrazy w tle** -Gdy umieszczasz aplikację w tle, Android przechowuje **zrzut ekranu aplikacji**, aby po przywróceniu do pierwszego planu zaczęła ładować obraz przed aplikacją, co sprawia, że wygląda na to, że aplikacja została załadowana szybciej. +Kiedy umieszczasz aplikację w tle, Android przechowuje **zrzut ekranu aplikacji**, aby po przywróceniu do pierwszego planu zaczęła ładować obraz przed aplikacją, co sprawia, że wygląda na to, że aplikacja została załadowana szybciej. -Jednak jeśli ten zrzut zawiera **wrażliwe informacje**, ktoś z dostępem do zrzutu może **ukraść te informacje** (zauważ, że potrzebujesz roota, aby uzyskać do niego dostęp). +Jednakże, jeśli ten zrzut ekranu zawiera **wrażliwe informacje**, ktoś z dostępem do zrzutu może **ukraść te informacje** (zauważ, że potrzebujesz roota, aby uzyskać do niego dostęp). -Zrzuty są zazwyczaj przechowywane w: **`/data/system_ce/0/snapshots`** +Zrzuty ekranu są zazwyczaj przechowywane w: **`/data/system_ce/0/snapshots`** -Android zapewnia sposób na **zapobieganie przechwytywaniu zrzutów ekranu, ustawiając parametr układu FLAG_SECURE**. Używając tej flagi, zawartość okna jest traktowana jako bezpieczna, co zapobiega jej pojawianiu się w zrzutach ekranu lub wyświetlaniu na niezabezpieczonych ekranach. +Android zapewnia sposób na **zapobieganie przechwytywaniu zrzutów ekranu poprzez ustawienie parametru układu FLAG_SECURE**. Używając tej flagi, zawartość okna jest traktowana jako bezpieczna, co zapobiega jej pojawianiu się w zrzutach ekranu lub wyświetlaniu na niezabezpieczonych wyświetlaczach. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` @@ -512,7 +513,7 @@ Prawdopodobnie znasz ten rodzaj luk z sieci. Musisz być szczególnie ostrożny - **Wstrzykiwanie SQL:** Przy obsłudze dynamicznych zapytań lub dostawców treści upewnij się, że używasz zapytań parametryzowanych. - **Wstrzykiwanie JavaScript (XSS):** Sprawdź, czy obsługa JavaScript i wtyczek jest wyłączona dla wszelkich WebViews (domyślnie wyłączona). [Więcej informacji tutaj](webview-attacks.md#javascript-enabled). - **Inkluzja lokalnych plików:** WebViews powinny mieć wyłączony dostęp do systemu plików (domyślnie włączony) - `(webview.getSettings().setAllowFileAccess(false);)`. [Więcej informacji tutaj](webview-attacks.md#javascript-enabled). -- **Wieczne ciasteczka**: W kilku przypadkach, gdy aplikacja androidowa kończy sesję, ciastko nie jest unieważniane lub może być nawet zapisywane na dysku. +- **Wieczne ciasteczka**: W wielu przypadkach, gdy aplikacja androidowa kończy sesję, ciastko nie jest unieważniane lub może być nawet zapisywane na dysku. - [**Flaga zabezpieczeń** w ciastkach](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) --- @@ -531,9 +532,9 @@ docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` Zauważ, że MobSF może analizować **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacje (_Aplikacje Windows muszą być analizowane z MobSF zainstalowanym na hoście Windows_).\ -Ponadto, jeśli stworzysz plik **ZIP** z kodem źródłowym aplikacji **Android** lub **IOS** (przejdź do folderu głównego aplikacji, wybierz wszystko i stwórz plik ZIP), również będzie w stanie go przeanalizować. +Ponadto, jeśli stworzysz plik **ZIP** z kodem źródłowym aplikacji **Android** lub **IOS** (przejdź do głównego folderu aplikacji, wybierz wszystko i stwórz plik ZIP), również będzie w stanie go przeanalizować. -MobSF pozwala również na **diff/Compare** analizy oraz integrację z **VirusTotal** (będziesz musiał ustawić swój klucz API w _MobSF/settings.py_ i włączyć go: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Możesz również ustawić `VT_UPLOAD` na `False`, wtedy **hash** zostanie **przesłany** zamiast pliku. +MobSF pozwala również na **diff/Compare** analizy oraz na integrację z **VirusTotal** (będziesz musiał ustawić swój klucz API w _MobSF/settings.py_ i włączyć go: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Możesz również ustawić `VT_UPLOAD` na `False`, wtedy **hash** zostanie **przesłany** zamiast pliku. ### Wspomagana analiza dynamiczna z MobSF @@ -542,7 +543,7 @@ MobSF pozwala również na **diff/Compare** analizy oraz integrację z **VirusTo - **Zrzucić dane aplikacji** (URL-e, logi, schowek, zrzuty ekranu wykonane przez Ciebie, zrzuty ekranu wykonane przez "**Exported Activity Tester**", e-maile, bazy danych SQLite, pliki XML i inne utworzone pliki). Wszystko to odbywa się automatycznie, z wyjątkiem zrzutów ekranu, musisz nacisnąć, gdy chcesz zrzut ekranu lub musisz nacisnąć "**Exported Activity Tester**", aby uzyskać zrzuty ekranu wszystkich eksportowanych aktywności. - Przechwytywać **ruch HTTPS** -- Używać **Frida** do uzyskiwania **informacji w czasie rzeczywistym** +- Używać **Frida** do uzyskania **informacji w czasie rzeczywistym** Od wersji Android **> 5**, automatycznie **uruchomi Frida** i ustawi globalne ustawienia **proxy** do **przechwytywania** ruchu. Będzie przechwytywać ruch tylko z testowanej aplikacji. @@ -605,7 +606,7 @@ To **świetne narzędzie do przeprowadzania analizy statycznej z GUI** ### [Qark](https://github.com/linkedin/qark) -To narzędzie jest zaprojektowane do wyszukiwania kilku **związanych z bezpieczeństwem luk w aplikacjach Android**, zarówno w **kodzie źródłowym**, jak i **spakowanych APK**. Narzędzie jest również **zdolne do tworzenia "Proof-of-Concept" wdrażalnego APK** oraz **komend ADB**, aby wykorzystać niektóre z wykrytych luk (ujawnione aktywności, intencje, tapjacking...). Podobnie jak w przypadku Drozer, nie ma potrzeby rootowania urządzenia testowego. +To narzędzie jest zaprojektowane do wyszukiwania kilku **związanych z bezpieczeństwem luk w aplikacjach Android**, zarówno w **kodzie źródłowym**, jak i w **spakowanych APK**. Narzędzie jest również **zdolne do tworzenia "Proof-of-Concept" wdrażalnego APK** oraz **komend ADB**, aby wykorzystać niektóre z wykrytych luk (ujawnione aktywności, intencje, tapjacking...). Podobnie jak w przypadku Drozer, nie ma potrzeby rootowania urządzenia testowego. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -647,7 +648,7 @@ Pobierz [najowszą wersję](https://github.com/vincentcox/StaCoAn/releases): ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -AndroBugs Framework to system analizy podatności Android, który pomaga deweloperom lub hakerom znaleźć potencjalne luki w zabezpieczeniach aplikacji na Androida.\ +AndroBugs Framework to system analizy podatności Android, który pomaga deweloperom lub hakerom znaleźć potencjalne luki w zabezpieczeniach aplikacji Android.\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -688,9 +689,9 @@ Zauważ, że w zależności od usługi i konfiguracji, której używasz do obfus ### [ProGuard]() -Z [Wikipedia](): **ProGuard** to narzędzie wiersza poleceń typu open source, które zmniejsza, optymalizuje i obfuskowuje kod Java. Potrafi optymalizować bajty kodu oraz wykrywać i usuwać nieużywane instrukcje. ProGuard jest oprogramowaniem darmowym i jest dystrybuowane na licencji GNU General Public License, wersja 2. +Z [Wikipedia](): **ProGuard** to narzędzie open source wiersza poleceń, które zmniejsza, optymalizuje i obfuskatuje kod Java. Potrafi optymalizować bajty kodu oraz wykrywać i usuwać nieużywane instrukcje. ProGuard jest oprogramowaniem darmowym i jest dystrybuowane na licencji GNU General Public License, wersja 2. -ProGuard jest dystrybuowane jako część Android SDK i działa podczas budowania aplikacji w trybie wydania. +ProGuard jest dystrybuowane jako część Android SDK i działa podczas budowania aplikacji w trybie release. ### [DexGuard](https://www.guardsquare.com/dexguard) @@ -720,7 +721,7 @@ To **ogólny deobfuskator androidowy.** Simplify **wirtualnie wykonuje aplikacj ### [APKiD](https://github.com/rednaga/APKiD) -APKiD dostarcza informacji o **tym, jak APK zostało stworzone**. Identyfikuje wiele **kompilatorów**, **packerów**, **obfuskatorów** i innych dziwnych rzeczy. To [_PEiD_](https://www.aldeid.com/wiki/PEiD) dla Androida. +APKiD dostarcza informacji o **tym, jak stworzono APK**. Identyfikuje wiele **kompilatorów**, **packerów**, **obfuskatorów** i innych dziwnych rzeczy. To [_PEiD_](https://www.aldeid.com/wiki/PEiD) dla Androida. ### Manual @@ -730,7 +731,7 @@ APKiD dostarcza informacji o **tym, jak APK zostało stworzone**. Identyfikuje w ### [Androl4b](https://github.com/sh4hin/Androl4b) -AndroL4b to wirtualna maszyna bezpieczeństwa Androida oparta na ubuntu-mate, która zawiera zbiór najnowszych frameworków, tutoriali i laboratoriów od różnych geeków i badaczy bezpieczeństwa do inżynierii wstecznej i analizy złośliwego oprogramowania. +AndroL4b to wirtualna maszyna bezpieczeństwa Androida oparta na ubuntu-mate, zawierająca zbiór najnowszych frameworków, tutoriali i laboratoriów od różnych geeków i badaczy bezpieczeństwa do inżynierii wstecznej i analizy złośliwego oprogramowania. ## References diff --git a/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md b/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md new file mode 100644 index 000000000..5cdba1c6c --- /dev/null +++ b/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md @@ -0,0 +1,145 @@ +# Nadużycie usługi dostępności Androida + +{{#include ../../banners/hacktricks-training.md}} + +## Przegląd + +`AccessibilityService` został stworzony, aby pomóc użytkownikom z niepełnosprawnościami w interakcji z urządzeniami Android. Niestety, te same **potężne API automatyzacji** (globalna nawigacja, wprowadzanie tekstu, dyspozycja gestów, okna nakładek…) mogą być wykorzystane przez złośliwe oprogramowanie do uzyskania **pełnej zdalnej kontroli** nad urządzeniem _bez uprawnień roota_. + +Nowoczesne trojany bankowe Androida i trojany zdalnego dostępu (RAT) takie jak **PlayPraetor, SpyNote, BrasDex, SOVA, ToxicPanda** i wiele innych stosują ten sam schemat: + +1. Wykorzystać inżynierię społeczną, aby ofiara włączyła złośliwą usługę dostępności (uprawnienie *BIND_ACCESSIBILITY_SERVICE* jest uważane za "wysokiego ryzyka" i wymaga wyraźnej akcji użytkownika). +2. Wykorzystać usługę do +* przechwytywania każdego zdarzenia UI i tekstu, który pojawia się na ekranie, +* wstrzykiwania syntetycznych gestów (`dispatchGesture`) i globalnych akcji (`performGlobalAction`), aby zautomatyzować dowolne zadanie, które operator pragnie, +* rysowania nakładek na pełnym ekranie na wierzchu legalnych aplikacji przy użyciu typu okna **TYPE_ACCESSIBILITY_OVERLAY** (bez monitu `SYSTEM_ALERT_WINDOW`!), +* cichego przyznawania dodatkowych uprawnień w czasie rzeczywistym, klikając w okna dialogowe systemowe w imieniu ofiary. +3. Ekstrahować dane lub przeprowadzać **On-Device-Fraud (ODF)** w czasie rzeczywistym, podczas gdy użytkownik patrzy na zupełnie normalny ekran. + +--- + +## Żądanie uprawnienia +```xml + + + + + + + + + +``` +Towarzyszący plik XML definiuje, jak będzie wyglądać fałszywe okno dialogowe: +```xml + + +``` +--- + +## Zdalne prymitywy automatyzacji UI +```java +public class EvilService extends AccessibilityService { +@Override +public void onAccessibilityEvent(AccessibilityEvent event) { +// harvest text or detect foreground app change +} + +// Simulate HOME / BACK / RECENTS … +private void navHome() { performGlobalAction(GLOBAL_ACTION_HOME); } +private void navBack() { performGlobalAction(GLOBAL_ACTION_BACK); } +private void openRecents() { performGlobalAction(GLOBAL_ACTION_RECENTS); } + +// Generic tap / swipe +public void tap(float x, float y) { +Path p = new Path(); p.moveTo(x, y); +GestureDescription.StrokeDescription s = new GestureDescription.StrokeDescription(p, 0, 50); +dispatchGesture(new GestureDescription.Builder().addStroke(s).build(), null, null); +} +} +``` +Z tymi dwoma API atakujący może: +* Odblokować ekran, otworzyć aplikację bankową, nawigować po jej drzewie UI i złożyć formularz przelewu. +* Akceptować każde okno dialogowe z prośbą o pozwolenie, które się pojawi. +* Instalować/aktualizować dodatkowe APK za pomocą intencji Sklepu Play. + +--- + +## Wzorce nadużyć + +### 1. Phishing przez nakładki (Zbieranie poświadczeń) +Przezroczysty lub nieprzezroczysty `WebView` jest dodawany do menedżera okien: +```java +WindowManager.LayoutParams lp = new WindowManager.LayoutParams( +MATCH_PARENT, MATCH_PARENT, +TYPE_ACCESSIBILITY_OVERLAY, // ⬅ bypasses SYSTEM_ALERT_WINDOW +FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL, // touches still reach the real app +PixelFormat.TRANSLUCENT); +wm.addView(phishingView, lp); +``` +Ofiara wpisuje dane uwierzytelniające w fałszywym formularzu, podczas gdy aplikacja w tle odbiera te same gesty – nigdy nie jest wyświetlany podejrzany komunikat "rysuj nad innymi aplikacjami". + +> Szczegółowy przykład: sekcja *Phishing przez nakładkę dostępności* na stronie Tapjacking. + +### 2. Automatyzacja oszustw na urządzeniu +Rodziny złośliwego oprogramowania, takie jak **PlayPraetor**, utrzymują stały kanał WebSocket, w którym operator może wydawać polecenia na wysokim poziomie (`init`, `update`, `alert_arr`, `report_list`, …). Usługa tłumaczy te polecenia na niskopoziomowe gesty, osiągając nieautoryzowane transakcje w czasie rzeczywistym, które łatwo omijają uwierzytelnianie wieloskładnikowe związane z tym urządzeniem. + +### 3. Streaming i monitorowanie ekranu +Łącząc **MediaProjection API** z biblioteką klienta RTMP, RAT może transmitować na żywo bufor ramki do `rtmp://:1935/live/`, dając przeciwnikowi doskonałą świadomość sytuacyjną, podczas gdy silnik dostępności obsługuje interfejs użytkownika. + +--- + +## PlayPraetor – przepływ pracy dowodzenia i kontroli + +1. **HTTP(S) heartbeat** – iteruj po twardo zakodowanej liście, aż jedna domena odpowie `POST /app/searchPackageName` z aktywnym C2. +2. **WebSocket (port 8282)** – dwukierunkowe polecenia JSON: +* `update` – wprowadź nowe conf/APK +* `alert_arr` – skonfiguruj szablony nakładek +* `report_list` – wyślij listę docelowych nazw pakietów +* `heartbeat_web` – utrzymanie połączenia +3. **RTMP (port 1935)** – transmisja na żywo ekranu/wideo. +4. **REST exfiltration** – +* `/app/saveDevice` (odcisk palca) +* `/app/saveContacts` | `/app/saveSms` | `/app/uploadImageBase64` +* `/app/saveCardPwd` (dane bankowe) + +**AccessibilityService** to lokalny silnik, który przekształca te polecenia w interakcje fizyczne. + +--- + +## Wykrywanie złośliwych usług dostępności + +* `adb shell settings get secure enabled_accessibility_services` +* Ustawienia → Dostępność → *Pobrane usługi* – szukaj aplikacji, które **nie** pochodzą z Google Play. +* Rozwiązania MDM / EMM mogą wymuszać `ACCESSIBILITY_ENFORCEMENT_DEFAULT_DENY` (Android 13+) w celu zablokowania usług zainstalowanych zewnętrznie. +* Analizuj działające usługi: +```bash +adb shell dumpsys accessibility | grep "Accessibility Service" +``` + +--- + +## Rekomendacje dotyczące wzmocnienia dla deweloperów aplikacji + +* Oznacz wrażliwe widoki jako `android:accessibilityDataSensitive="accessibilityDataPrivateYes"` (API 34+). +* Połącz `setFilterTouchesWhenObscured(true)` z `FLAG_SECURE`, aby zapobiec przechwytywaniu dotyków/nakładek. +* Wykrywaj nakładki, sprawdzając `WindowManager.getDefaultDisplay().getFlags()` lub API `ViewRootImpl`. +* Odmów działania, gdy `Settings.canDrawOverlays()` **lub** aktywna jest nieufna usługa dostępności. + +--- + +## Referencje +* [PlayPraetor’s evolving threat: How Chinese-speaking actors globally scale an Android RAT](https://www.cleafy.com/cleafy-labs/playpraetors-evolving-threat-how-chinese-speaking-actors-globally-scale-an-android-rat) +* [Android accessibility documentation – Automating UI interaction](https://developer.android.com/guide/topics/ui/accessibility/service) + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/mobile-pentesting/android-app-pentesting/tapjacking.md b/src/mobile-pentesting/android-app-pentesting/tapjacking.md index d1e9b3e48..db301a95b 100644 --- a/src/mobile-pentesting/android-app-pentesting/tapjacking.md +++ b/src/mobile-pentesting/android-app-pentesting/tapjacking.md @@ -45,7 +45,7 @@ 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źć w [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (trochę stary, powodzenia w budowaniu apk). +Przykładowy projekt implementujący **FloatingWindowApp**, który można użyć do nałożenia na inne aktywności w celu przeprowadzenia ataku clickjacking, można znaleźć w [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (trochę stary, powodzenia w budowaniu apk). ### Qark @@ -54,20 +54,20 @@ Przykładowy projekt implementujący **FloatingWindowApp**, który można użyć 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 możliwych **vulnerabilities Tapjacking**.\ -Ograniczenie jest stosunkowo proste, ponieważ deweloper może zdecydować, że nie chce odbierać zdarzeń dotykowych, gdy widok jest zasłonięty przez inny. Korzystając z [Dokumentacji dewelopera Androida](https://developer.android.com/reference/android/view/View#security): +Mitigacja jest stosunkowo prosta, ponieważ deweloper może zdecydować, że nie chce odbierać zdarzeń dotykowych, gdy widok jest zasłonięty przez inny. Korzystając z [Dokumentacji dla deweloperów Androida](https://developer.android.com/reference/android/view/View#security): -> Czasami istotne jest, aby aplikacja mogła zweryfikować, że akcja jest wykonywana z pełną wiedzą i zgodą użytkownika, na przykład przyznając prośbę o uprawnienie, dokonując zakupu lub klikając w reklamę. Niestety, złośliwa aplikacja mogłaby próbować oszukać użytkownika, aby wykonał te akcje, nieświadomie, ukrywając zamierzony cel widoku. W ramach rozwiązania, framework oferuje mechanizm filtrowania dotyków, który można wykorzystać do poprawy bezpieczeństwa widoków, które zapewniają dostęp do wrażliwej funkcjonalności. +> Czasami istotne jest, aby aplikacja mogła zweryfikować, że akcja jest wykonywana z pełną wiedzą i zgodą użytkownika, na przykład przyznając prośbę o uprawnienie, dokonując zakupu lub klikając w reklamę. Niestety, złośliwa aplikacja mogłaby próbować oszukać użytkownika, aby wykonał te akcje, nieświadomie, ukrywając zamierzony cel widoku. W ramach remediów, framework oferuje mechanizm filtrowania dotyków, który można wykorzystać do poprawy bezpieczeństwa widoków, które zapewniają dostęp do wrażliwej funkcjonalności. > -> Aby włączyć filtrowanie dotyków, wywołaj [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) lub ustaw atrybut layout android:filterTouchesWhenObscured na true. Po włączeniu, framework odrzuci dotyki, które są odbierane, gdy okno widoku jest zasłonięte przez inne widoczne okno. W rezultacie widok nie otrzyma dotyków, gdy nad oknem widoku pojawi się toast, dialog lub inne okno. +> Aby włączyć filtrowanie dotyków, wywołaj [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) lub ustaw atrybut layout android:filterTouchesWhenObscured na true. Po włączeniu framework odrzuci dotyki, które są odbierane, gdy okno widoku jest zasłonięte przez inne widoczne okno. W rezultacie widok nie otrzyma dotyków, gdy nad oknem widoku pojawi się toast, dialog lub inne okno. --- -## Phishing przez nakładkę dostępności (wariant trojana bankowego) +## Phishing przez nakładkę dostępności (wariant Banking-Trojan) -Oprócz klasycznego Tapjacking, nowoczesne rodziny złośliwego oprogramowania bankowego na Androida (np. **ToxicPanda**, BrasDex, Sova itp.) nadużywają **Usługi dostępności**, aby umieścić nakładkę **WebView** na pełnym ekranie nad legalną aplikacją, jednocześnie będąc w stanie **przekazywać dane wejściowe użytkownika** do widoku poniżej. Zwiększa to dramatycznie wiarygodność i pozwala atakującym na kradzież danych uwierzytelniających, OTP lub nawet automatyzację oszukańczych transakcji. +Oprócz klasycznego Tapjacking, nowoczesne rodziny złośliwego oprogramowania bankowego na Androida (np. **ToxicPanda**, BrasDex, Sova itp.) nadużywają **Usługi dostępności**, aby umieścić pełnoekranową nakładkę **WebView** nad legalną aplikacją, jednocześnie będąc w stanie **przekazywać dane wejściowe użytkownika** do widoku poniżej. Zwiększa to dramatycznie wiarygodność i pozwala atakującym na kradzież danych uwierzytelniających, OTP lub nawet automatyzację oszukańczych transakcji. ### Jak to działa -1. Złośliwy APK żąda wysoce wrażliwego uprawnienia `BIND_ACCESSIBILITY_SERVICE`, zazwyczaj ukrywając prośbę za fałszywym dialogiem Google/Chrome/podglądu PDF. +1. Złośliwy APK żąda wysoce wrażliwego uprawnienia `BIND_ACCESSIBILITY_SERVICE`, zazwyczaj ukrywając prośbę za fałszywym dialogiem Google/Chrome/PDF-viewer. 2. Gdy użytkownik włączy usługę, złośliwe oprogramowanie programowo symuluje dotknięcia wymagane do przyznania dodatkowych niebezpiecznych uprawnień (`READ_SMS`, `SYSTEM_ALERT_WINDOW`, `REQUEST_INSTALL_PACKAGES`, …). 3. **WebView** jest inflatowane i dodawane do menedżera okien przy użyciu typu okna **`TYPE_ACCESSIBILITY_OVERLAY`**. Nakładka może być renderowana całkowicie nieprzezroczysta lub półprzezroczysta i może być oznaczona jako *„przez”*, aby oryginalne dotknięcia były nadal dostarczane do aktywności w tle (w ten sposób transakcja naprawdę się odbywa, podczas gdy ofiara widzi tylko formularz phishingowy). ```java @@ -87,7 +87,7 @@ wm.addView(phishingView, lp); ``` ### Typowy workflow używany przez trojany bankowe * Zapytaj o zainstalowane pakiety (`QUERY_ALL_PACKAGES`), aby dowiedzieć się, która aplikacja bankowa / portfelowa jest aktualnie otwarta. -* Pobierz **szablon nakładki HTML/JS** z C2, który doskonale imituje tę konkretną aplikację (logo, kolory, ciągi i18n…). +* Pobierz **szablon nakładki HTML/JS** z C2, który idealnie imituje tę konkretną aplikację (logo, kolory, ciągi i18n…). * Wyświetl nakładkę, zbierz dane logowania/PIN/wzór. * Użyj **API dostępności** (`performGlobalAction`, `GestureDescription`), aby zautomatyzować transfery w tle. @@ -100,7 +100,13 @@ wm.addView(phishingView, lp); - Wyłącz *Instalowanie z nieznanych źródeł* i *Dostępność dla nieznanych aplikacji*. - Wymuś PlayProtect i aktualne urządzenia. -## Referencje +Aby uzyskać dodatkowe szczegóły dotyczące wykorzystania usług dostępności do pełnej zdalnej kontroli urządzenia (np. PlayPraetor, SpyNote itp.), zobacz: + +{{#ref}} +accessibility-services-abuse.md +{{#endref}} + +## Odniesienia * [Bitsight – ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study) {{#include ../../banners/hacktricks-training.md}}