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
							
								
									451a5b9bcd
								
							
						
					
					
						commit
						5c769df790
					
				@ -337,6 +337,7 @@
 | 
			
		||||
  - [Manual DeObfuscation](mobile-pentesting/android-app-pentesting/manual-deobfuscation.md)
 | 
			
		||||
  - [React Native Application](mobile-pentesting/android-app-pentesting/react-native-application.md)
 | 
			
		||||
  - [Reversing Native Libraries](mobile-pentesting/android-app-pentesting/reversing-native-libraries.md)
 | 
			
		||||
  - [Shizuku Privileged Api](mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md)
 | 
			
		||||
  - [Smali - Decompiling, Modifying, Compiling](mobile-pentesting/android-app-pentesting/smali-changes.md)
 | 
			
		||||
  - [Spoofing your location in Play Store](mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md)
 | 
			
		||||
  - [Tapjacking](mobile-pentesting/android-app-pentesting/tapjacking.md)
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
# Pentesting aplikacji Android
 | 
			
		||||
# Testowanie aplikacji na Androida
 | 
			
		||||
 | 
			
		||||
{{#include ../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
## Podstawy aplikacji Android
 | 
			
		||||
## Podstawy aplikacji na Androida
 | 
			
		||||
 | 
			
		||||
Zaleca się rozpoczęcie od przeczytania tej strony, aby poznać **najważniejsze części związane z bezpieczeństwem Androida oraz najbardziej niebezpieczne komponenty w aplikacji Android**:
 | 
			
		||||
Zaleca się rozpoczęcie od przeczytania tej strony, aby poznać **najważniejsze aspekty związane z bezpieczeństwem Androida oraz najbardziej niebezpieczne komponenty w aplikacji na Androida**:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
android-applications-basics.md
 | 
			
		||||
@ -12,19 +12,20 @@ android-applications-basics.md
 | 
			
		||||
 | 
			
		||||
## ADB (Android Debug Bridge)
 | 
			
		||||
 | 
			
		||||
To główne narzędzie, którego potrzebujesz, aby połączyć się z urządzeniem android (emulowanym lub fizycznym).\
 | 
			
		||||
**ADB** pozwala na kontrolowanie urządzeń zarówno przez **USB**, jak i **sieć** z komputera. To narzędzie umożliwia **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.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
## 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 **dowiedzieć 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. Dlatego **zawsze miej 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 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)
 | 
			
		||||
- **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
 | 
			
		||||
@ -52,7 +53,7 @@ Proszę, [**przeczytaj tutaj, aby znaleźć informacje o różnych dostępnych d
 | 
			
		||||
 | 
			
		||||
### Szukanie interesujących informacji
 | 
			
		||||
 | 
			
		||||
Samo spojrzenie na **ciągi** w APK pozwala na wyszukiwanie **haseł**, **URL** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **kluczy** **api**, **szyfrowania**, **uuid bluetooth**, **tokenów** i wszystkiego, co może być interesujące... szukaj nawet **tylnych drzwi** do wykonania kodu lub tylnych drzwi uwierzytelniających (twardo zakodowane dane logowania administratora do aplikacji).
 | 
			
		||||
Samo spojrzenie na **ciągi** w APK pozwala na wyszukiwanie **haseł**, **URL** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **kluczy** **api**, **szyfrowania**, **uuid bluetooth**, **tokenów** i wszystkiego, co może być interesujące... szukaj nawet **tylnych drzwi** do wykonania kodu lub tylnych drzwi uwierzytelniających (hardcodowane dane administratora w aplikacji).
 | 
			
		||||
 | 
			
		||||
**Firebase**
 | 
			
		||||
 | 
			
		||||
@ -64,10 +65,10 @@ 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 lepiej zrozumieć, 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 informacje na temat tego, 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.
 | 
			
		||||
- **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 testowania dynamicznego 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ó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.
 | 
			
		||||
@ -76,10 +77,10 @@ Z pliku **strings.xml** można odkryć wrażliwe informacje, takie jak klucze AP
 | 
			
		||||
 | 
			
		||||
### 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 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**.
 | 
			
		||||
**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 interakcję, podczas gdy przekazuje interakcję do aplikacji ofiary.\
 | 
			
		||||
W efekcie **oślepia użytkownika, nie pozwalając mu wiedzieć, że faktycznie wykonuje działania w aplikacji ofiary**.
 | 
			
		||||
 | 
			
		||||
Więcej informacji znajdziesz w:
 | 
			
		||||
Znajdź więcej informacji w:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
tapjacking.md
 | 
			
		||||
@ -87,7 +88,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 interagował 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 wchodził w interakcję z **złośliwą aplikacją, myśląc, że używa prawdziwej**).
 | 
			
		||||
 | 
			
		||||
Więcej informacji w:
 | 
			
		||||
 | 
			
		||||
@ -99,12 +100,12 @@ android-task-hijacking.md
 | 
			
		||||
 | 
			
		||||
**Przechowywanie wewnętrzne**
 | 
			
		||||
 | 
			
		||||
W Androidzie pliki **przechowywane** w **przechowywaniu wewnętrznym** są **zaplanowane** do **dostępu** wyłącznie przez **aplikację**, która je **utworzyła**. Ten środek bezpieczeństwa jest **egzekwowany** przez system operacyjny Android i jest zazwyczaj wystarczający dla potrzeb bezpieczeństwa większości aplikacji. Jednak deweloperzy czasami wykorzystują tryby takie jak `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE`, aby **zezwolić** na **dzielenie się** plikami między różnymi aplikacjami. Niemniej jednak, te tryby **nie ograniczają dostępu** do tych plików przez inne aplikacje, w tym potencjalnie złośliwe.
 | 
			
		||||
W Androidzie pliki **przechowywane** w **przechowywaniu wewnętrznym** są **zaplanowane** do bycia **dostępnymi** wyłącznie przez **aplikację**, która je **utworzyła**. Ten środek bezpieczeństwa jest **egzekwowany** przez system operacyjny Android i jest zazwyczaj wystarczający dla potrzeb bezpieczeństwa większości aplikacji. Jednak deweloperzy czasami wykorzystują tryby takie jak `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE`, aby **zezwolić** na **dzielenie** plików między różnymi aplikacjami. Niemniej jednak, te tryby **nie ograniczają dostępu** do tych plików przez inne aplikacje, w tym potencjalnie złośliwe.
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
**Przechowywanie zewnętrzne**
 | 
			
		||||
 | 
			
		||||
@ -116,21 +117,21 @@ Podczas pracy z plikami na **przechowywaniu zewnętrznym**, takim jak karty SD,
 | 
			
		||||
- Biorąc pod uwagę łatwość dostępu, zaleca się **nieprzechowywanie wrażliwych informacji** na zewnętrznym przechowywaniu.
 | 
			
		||||
- Zewnętrzne przechowywanie może być usunięte lub dostępne przez każdą aplikację, co czyni je mniej bezpiecznym.
 | 
			
		||||
3. **Obsługa danych z zewnętrznego przechowywania**:
 | 
			
		||||
- Zawsze **przeprowadzaj walidację wejścia** na danych pobranych z zewnętrznego przechowywania. To jest kluczowe, ponieważ dane pochodzą z nieznanego źródła.
 | 
			
		||||
- Przechowywanie plików wykonywalnych lub klas na zewnętrznym przechowywaniu do dynamicznego ładowania jest zdecydowanie odradzane.
 | 
			
		||||
- Zawsze **przeprowadzaj walidację wejścia** na danych pobranych z zewnętrznego przechowywania. Jest to kluczowe, ponieważ dane pochodzą z nieznanego źródła.
 | 
			
		||||
- Przechowywanie plików wykonywalnych lub plików klas na zewnętrznym przechowywaniu do dynamicznego ładowania jest zdecydowanie odradzane.
 | 
			
		||||
- Jeśli Twoja aplikacja musi pobrać pliki wykonywalne z zewnętrznego przechowywania, 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.
 | 
			
		||||
 | 
			
		||||
Zewnętrzne przechowywanie można **uzyskać** w `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> Począwszy 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.
 | 
			
		||||
> [!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.
 | 
			
		||||
 | 
			
		||||
**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/<packagename>/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/<packagename>/databases/` i czasami możliwe jest znalezienie wrażliwych informacji w postaci niezaszyfrowanej w tym folderze.
 | 
			
		||||
 | 
			
		||||
### Uszkodzone TLS
 | 
			
		||||
### Uszkodzony TLS
 | 
			
		||||
 | 
			
		||||
**Akceptuj wszystkie certyfikaty**
 | 
			
		||||
 | 
			
		||||
@ -145,16 +146,16 @@ Dobrą metodą na przetestowanie tego jest próba przechwycenia ruchu za pomocą
 | 
			
		||||
 | 
			
		||||
**Słabe procesy zarządzania kluczami**
 | 
			
		||||
 | 
			
		||||
Niektórzy deweloperzy zapisują wrażliwe dane w lokalnej pamięci i szyfrują je kluczem zakodowanym/predykcyjnym w kodzie. Nie powinno się tego robić, ponieważ pewne odwracanie może pozwolić atakującym na wydobycie poufnych informacji.
 | 
			
		||||
Niektórzy deweloperzy zapisują wrażliwe dane w lokalnej pamięci i szyfrują je kluczem zakodowanym/łatwym do przewidzenia w kodzie. Nie powinno się tego robić, ponieważ pewne odwracanie kodu może pozwolić atakującym na wydobycie poufnych informacji.
 | 
			
		||||
 | 
			
		||||
**Użycie niebezpiecznych i/lub przestarzałych algorytmów**
 | 
			
		||||
 | 
			
		||||
Deweloperzy nie powinni używać **przestarzałych algorytmów** do przeprowadzania **sprawdzania** autoryzacji, **przechowywania** lub **wysyłania** danych. Niektóre z tych algorytmów to: RC4, MD4, MD5, SHA1... Jeśli **hashe** są używane do przechowywania haseł, powinny być używane hashe odporne na brute-force z solą.
 | 
			
		||||
Deweloperzy nie powinni używać **przestarzałych algorytmów** do przeprowadzania **sprawdzania** **autoryzacji**, **przechowywania** lub **wysyłania** danych. Niektóre z tych algorytmów to: RC4, MD4, MD5, SHA1... Jeśli **hashe** są używane do przechowywania haseł, powinny być używane hashe odporne na brute-force z solą.
 | 
			
		||||
 | 
			
		||||
### Inne kontrole
 | 
			
		||||
 | 
			
		||||
- Zaleca się **obfuskację APK**, aby utrudnić pracę inżynierom odwrotnym.
 | 
			
		||||
- Jeśli aplikacja jest wrażliwa (jak aplikacje bankowe), powinna przeprowadzać **własne kontrole, aby sprawdzić, czy urządzenie mobilne jest zrootowane** i działać w konsekwencji.
 | 
			
		||||
- 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.
 | 
			
		||||
- Użyj [**APKiD**](https://github.com/rednaga/APKiD), aby sprawdzić, który kompilator/pakiet/obfuskator został użyty do zbudowania APK.
 | 
			
		||||
@ -181,7 +182,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 mogą spowodować szkody) oraz **reguły**. Te reguły wskazują na **kombinację** **źródeł-sinków**, które wskazują 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**), **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óre wskazują na lukę.
 | 
			
		||||
 | 
			
		||||
Dzięki tej wiedzy, **mariana-trench przejrzy kod i znajdzie możliwe luki w nim**.
 | 
			
		||||
 | 
			
		||||
@ -200,7 +201,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**
 | 
			
		||||
 | 
			
		||||
@ -218,7 +219,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**.
 | 
			
		||||
 | 
			
		||||
@ -240,7 +241,7 @@ avd-android-virtual-device.md
 | 
			
		||||
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Darmowa wersja:** Edycja osobista, musisz założyć konto. _Zaleca się **pobranie** wersji **Z** _**VirtualBox**, aby uniknąć potencjalnych błędów._)
 | 
			
		||||
- [**Nox**](https://es.bignox.com) (Darmowy, ale nie obsługuje Frida ani Drozer).
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> Podczas tworzenia nowego emulatora na jakiejkolwiek platformie pamiętaj, że im większy ekran, tym wolniej będzie działał emulator. Wybierz małe ekrany, jeśli to możliwe.
 | 
			
		||||
 | 
			
		||||
Aby **zainstalować usługi Google** (jak AppStore) w Genymotion, musisz kliknąć na czerwony oznaczony przycisk na poniższym obrazku:
 | 
			
		||||
@ -259,17 +260,17 @@ 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**.
 | 
			
		||||
 | 
			
		||||
> 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 wstępnej 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ć.
 | 
			
		||||
> 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 przeglądać.
 | 
			
		||||
 | 
			
		||||
### 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 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.\
 | 
			
		||||
> Zauważ, że od **nowszych wersji niż Android 4.0**, **aplikacje mogą uzyskiwać dostęp tylko do swoich własnych logów**. 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**
 | 
			
		||||
@ -288,7 +289,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ą).\
 | 
			
		||||
Większość aplikacji będzie używać **wewnętrznych baz danych SQLite** do zapisywania informacji. Podczas testu penetracyjnego 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`.
 | 
			
		||||
 | 
			
		||||
Jeśli baza danych zapisuje poufne informacje i jest **szyfrowana**, ale możesz **znaleźć** **hasło** wewnątrz aplikacji, to nadal jest to **luka**.
 | 
			
		||||
@ -313,14 +314,14 @@ Gdy aktywność jest eksportowana, możesz wywołać jej ekran z zewnętrznej ap
 | 
			
		||||
 | 
			
		||||
Możesz również uruchomić eksportowaną aktywność z adb:
 | 
			
		||||
 | 
			
		||||
- Nazwa pakietu to com.example.demo
 | 
			
		||||
- Nazwa eksportowanej aktywności to com.example.test.MainActivity
 | 
			
		||||
- PackageName to com.example.demo
 | 
			
		||||
- Exported ActivityName to com.example.test.MainActivity
 | 
			
		||||
```bash
 | 
			
		||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
 | 
			
		||||
```
 | 
			
		||||
**UWAGA**: MobSF wykryje jako złośliwe użycie _**singleTask/singleInstance**_ jako `android:launchMode` w aktywności, ale z powodu [tego](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), najwyraźniej jest to niebezpieczne tylko w starych wersjach (wersje API < 21).
 | 
			
		||||
 | 
			
		||||
> [!UWAGA]
 | 
			
		||||
> [!WSKAZÓWKA]
 | 
			
		||||
> Zauważ, że obejście autoryzacji nie zawsze jest luką, zależy to od tego, jak działa obejście i jakie informacje są ujawniane.
 | 
			
		||||
 | 
			
		||||
**Wycieki wrażliwych informacji**
 | 
			
		||||
@ -334,7 +335,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)
 | 
			
		||||
 | 
			
		||||
@ -351,7 +352,7 @@ Usługa to zasadniczo coś, co **może odbierać dane**, **przetwarzać** je i *
 | 
			
		||||
[**Przeczytaj to, jeśli chcesz odświeżyć, czym jest odbiornik rozgłoszeniowy.**](android-applications-basics.md#broadcast-receivers)\
 | 
			
		||||
Pamiętaj, że działania odbiornika rozgłoszeniowego zaczynają się w metodzie `onReceive`.
 | 
			
		||||
 | 
			
		||||
Odbiornik rozgłoszeniowy będzie czekał na rodzaj wiadomości. W zależności od tego, jak odbiornik obsługuje wiadomość, może być podatny.\
 | 
			
		||||
Odbiornik rozgłoszeniowy będzie czekał na określony typ wiadomości. W zależności od tego, jak odbiornik obsługuje wiadomość, może być podatny.\
 | 
			
		||||
[**Dowiedz się, jak wykorzystywać odbiorniki rozgłoszeniowe za pomocą Drozer.**](#exploiting-broadcast-receivers)
 | 
			
		||||
 | 
			
		||||
### **Wykorzystywanie schematów / głębokich linków**
 | 
			
		||||
@ -361,7 +362,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>
 | 
			
		||||
@ -381,21 +382,21 @@ 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**
 | 
			
		||||
 | 
			
		||||
Ciekawe zgłoszenie bug bounty dotyczące linków (_/.well-known/assetlinks.json_).
 | 
			
		||||
Ciekawy raport o bug bounty [tutaj](https://hackerone.com/reports/855618) dotyczący linków (_/.well-known/assetlinks.json_).
 | 
			
		||||
 | 
			
		||||
### Inspekcja i weryfikacja warstwy transportowej
 | 
			
		||||
 | 
			
		||||
- **Certyfikaty nie zawsze są poprawnie sprawdzane** przez aplikacje Android. Często te aplikacje ignorują ostrzeżenia i akceptują certyfikaty samopodpisane lub, w niektórych przypadkach, wracają do używania połączeń HTTP.
 | 
			
		||||
- **Negocjacje podczas handshake SSL/TLS są czasami słabe**, stosując niebezpieczne zestawy szyfrów. Ta podatność sprawia, że połączenie jest podatne na ataki typu man-in-the-middle (MITM), umożliwiając atakującym odszyfrowanie danych.
 | 
			
		||||
- **Wycieki prywatnych informacji** są ryzykiem, gdy aplikacje uwierzytelniają się za pomocą bezpiecznych kanałów, ale następnie komunikują się przez kanały niezabezpieczone w innych transakcjach. Takie podejście nie chroni wrażliwych danych, takich jak ciasteczka sesyjne czy dane użytkowników, przed przechwyceniem przez złośliwe podmioty.
 | 
			
		||||
- **Negocjacje podczas handshake SSL/TLS są czasami słabe**, wykorzystując niebezpieczne zestawy szyfrów. Ta podatność sprawia, że połączenie jest podatne na ataki typu man-in-the-middle (MITM), co pozwala atakującym na odszyfrowanie danych.
 | 
			
		||||
- **Wycieki prywatnych informacji** są ryzykiem, gdy aplikacje uwierzytelniają się za pomocą bezpiecznych kanałów, ale następnie komunikują się przez niebezpieczne kanały w innych transakcjach. Takie podejście nie chroni wrażliwych danych, takich jak ciasteczka sesyjne czy dane użytkowników, przed przechwyceniem przez złośliwe podmioty.
 | 
			
		||||
 | 
			
		||||
#### Weryfikacja certyfikatu
 | 
			
		||||
 | 
			
		||||
Skupimy się na **weryfikacji certyfikatu**. Integralność certyfikatu serwera musi być weryfikowana, aby zwiększyć bezpieczeństwo. Jest to kluczowe, ponieważ niebezpieczne konfiguracje TLS i przesyłanie wrażliwych danych przez niezabezpieczone kanały mogą stwarzać poważne ryzyko. Aby uzyskać szczegółowe kroki dotyczące weryfikacji certyfikatów serwera i rozwiązywania podatności, [**to źródło**](https://manifestsecurity.com/android-application-security-part-10/) oferuje kompleksowe wskazówki.
 | 
			
		||||
Skupimy się na **weryfikacji certyfikatu**. Integralność certyfikatu serwera musi być weryfikowana, aby zwiększyć bezpieczeństwo. Jest to kluczowe, ponieważ niebezpieczne konfiguracje TLS i przesyłanie wrażliwych danych przez niezaszyfrowane kanały mogą stwarzać poważne ryzyko. Aby uzyskać szczegółowe kroki dotyczące weryfikacji certyfikatów serwera i rozwiązywania podatności, [**to źródło**](https://manifestsecurity.com/android-application-security-part-10/) oferuje kompleksowe wskazówki.
 | 
			
		||||
 | 
			
		||||
#### SSL Pinning
 | 
			
		||||
 | 
			
		||||
@ -403,23 +404,25 @@ SSL Pinning to środek bezpieczeństwa, w którym aplikacja weryfikuje certyfika
 | 
			
		||||
 | 
			
		||||
#### Inspekcja ruchu
 | 
			
		||||
 | 
			
		||||
Aby zainstalować ruch HTTP, konieczne jest **zainstalowanie certyfikatu narzędzia proxy** (np. Burp). Bez zainstalowania tego certyfikatu, zaszyfrowany ruch może nie być widoczny przez proxy. Aby uzyskać przewodnik dotyczący instalacji niestandardowego certyfikatu CA, [**kliknij tutaj**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
 | 
			
		||||
Aby zainstalować ruch HTTP, konieczne jest **zainstalowanie certyfikatu narzędzia proxy** (np. Burp). Bez zainstalowania tego certyfikatu zaszyfrowany ruch może nie być widoczny przez proxy. Aby uzyskać przewodnik dotyczący instalacji niestandardowego certyfikatu CA, [**kliknij tutaj**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
 | 
			
		||||
 | 
			
		||||
Aplikacje celujące w **API Level 24 i wyżej** wymagają modyfikacji konfiguracji bezpieczeństwa sieci, aby zaakceptować certyfikat CA proxy. Ten krok jest kluczowy do inspekcji zaszyfrowanego ruchu. Aby uzyskać instrukcje dotyczące modyfikacji konfiguracji bezpieczeństwa sieci, [**zobacz ten samouczek**](make-apk-accept-ca-certificate.md).
 | 
			
		||||
 | 
			
		||||
Jeśli używasz **Flutter**, musisz postępować zgodnie z instrukcjami na [**tej stronie**](flutter.md). Dzieje się tak, ponieważ samo dodanie certyfikatu do magazynu nie zadziała, ponieważ Flutter ma swoją własną listę ważnych CA.
 | 
			
		||||
 | 
			
		||||
#### Obejście SSL Pinning
 | 
			
		||||
 | 
			
		||||
Gdy SSL Pinning jest wdrożone, konieczne staje się jego obejście, aby zainstalować 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ówionej 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 również spróbować **automatycznie obejść SSL Pinning** za pomocą **analizy dynamicznej MobSF** (wyjaśnionej poniżej)
 | 
			
		||||
- Możesz także 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 sieci 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.
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
@ -435,7 +438,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óre nie powinny być przechowywane, takie jak hasła lub mnemoniki.
 | 
			
		||||
Sprawdź, czy aplikacja przechowuje wrażliwe informacje w pamięci, których nie powinna przechowywać, takie jak hasła lub mnemoniki.
 | 
			
		||||
 | 
			
		||||
Używając [**Fridump3**](https://github.com/rootbsd/fridump3), możesz zrzucić pamięć aplikacji za pomocą:
 | 
			
		||||
```bash
 | 
			
		||||
@ -452,7 +455,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ć, ponieważ użytkownik root lub osoba z fizycznym dostępem do urządzenia mogłaby 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.
 | 
			
		||||
 | 
			
		||||
@ -474,7 +477,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, 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.
 | 
			
		||||
```bash
 | 
			
		||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
 | 
			
		||||
```
 | 
			
		||||
@ -491,7 +494,7 @@ Niebezpieczeństwo polega na umożliwieniu atakującym wywoływania nieeksportow
 | 
			
		||||
### Kluczowe Wnioski
 | 
			
		||||
 | 
			
		||||
- **Wstrzykiwanie Intencji** jest podobne do problemu Open Redirect w sieci.
 | 
			
		||||
- Wykorzystania polegają na przekazywaniu obiektów `Intent` jako dodatkowych, które mogą być przekierowywane do wykonywania niebezpiecznych operacji.
 | 
			
		||||
- Eksploity polegają na przekazywaniu obiektów `Intent` jako dodatkowych, które mogą być przekierowywane do wykonywania niebezpiecznych operacji.
 | 
			
		||||
- 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.
 | 
			
		||||
 | 
			
		||||
@ -502,7 +505,7 @@ Prawdopodobnie znasz ten rodzaj luk z sieci. Musisz być szczególnie ostrożny
 | 
			
		||||
- **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).
 | 
			
		||||
- **Eternal cookies**: W wielu przypadkach, gdy aplikacja android kończy sesję, ciasteczko nie jest unieważniane lub może być nawet zapisywane na dysku.
 | 
			
		||||
- **Eternal cookies**: W kilku przypadkach, gdy aplikacja android kończy sesję, ciasteczko nie jest unieważniane lub może być nawet zapisywane na dysku.
 | 
			
		||||
- [**Secure Flag** w ciasteczkach](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
@ -515,13 +518,13 @@ Prawdopodobnie znasz ten rodzaj luk z sieci. Musisz być szczególnie ostrożny
 | 
			
		||||
 | 
			
		||||
.png>)
 | 
			
		||||
 | 
			
		||||
**Ocena podatności aplikacji** przy użyciu ładnego interfejsu internetowego. Możesz również przeprowadzić analizę dynamiczną (ale musisz przygotować środowisko).
 | 
			
		||||
**Ocena podatności aplikacji** przy użyciu ładnego interfejsu opartego na sieci. Możesz również przeprowadzić analizę dynamiczną (ale musisz przygotować środowisko).
 | 
			
		||||
```bash
 | 
			
		||||
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), będzie w stanie również go przeanalizować.
 | 
			
		||||
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ć.
 | 
			
		||||
 | 
			
		||||
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 = <Twój klucz API>` `VT_UPLOAD = TRUE`). Możesz również ustawić `VT_UPLOAD` na `False`, wtedy **hash** zostanie **przesłany** zamiast pliku.
 | 
			
		||||
 | 
			
		||||
@ -532,7 +535,7 @@ MobSF pozwala również na **diff/Compare** analizy oraz na integrację z **Viru
 | 
			
		||||
 | 
			
		||||
- **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 uzyskania **informacji w czasie rzeczywistym**
 | 
			
		||||
- Używać **Frida** do uzyskiwania **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.
 | 
			
		||||
 | 
			
		||||
@ -550,12 +553,12 @@ Ponadto masz kilka dodatkowych funkcji Frida:
 | 
			
		||||
 | 
			
		||||
- **Enumerate Loaded Classes**: Wydrukuje wszystkie załadowane klasy
 | 
			
		||||
- **Capture Strings**: Wydrukuje wszystkie przechwycone ciągi podczas korzystania z aplikacji (bardzo hałaśliwe)
 | 
			
		||||
- **Capture String Comparisons**: Może być bardzo przydatne. **Pokaże 2 porównywane ciągi** i czy wynik był prawdziwy czy fałszywy.
 | 
			
		||||
- **Capture String Comparisons**: Może być bardzo przydatne. Pokaże **2 porównywane ciągi** i czy wynik był prawdziwy czy fałszywy.
 | 
			
		||||
- **Enumerate Class Methods**: Podaj nazwę klasy (np. "java.io.File") i wydrukuje wszystkie metody klasy.
 | 
			
		||||
- **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 dodatkowy moduł, który chcesz użyć, musisz nacisnąć "**Start Intrumentation**" i zobaczysz wszystkie wyniki w "**Frida Live Logs**".
 | 
			
		||||
 | 
			
		||||
**Shell**
 | 
			
		||||
 | 
			
		||||
@ -575,7 +578,7 @@ Aby to zrobić, _włącz Burp -->_ _wyłącz Intercept --> w MobSB HTTPTools wyb
 | 
			
		||||
 | 
			
		||||
Po zakończeniu analizy dynamicznej z MobSF możesz nacisnąć "**Start Web API Fuzzer**", aby **fuzzować żądania http** i szukać luk.
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> Po przeprowadzeniu analizy dynamicznej z MobSF ustawienia proxy mogą być źle skonfigurowane i nie będziesz w stanie ich naprawić z GUI. Możesz naprawić ustawienia proxy, wykonując:
 | 
			
		||||
>
 | 
			
		||||
> ```
 | 
			
		||||
@ -627,7 +630,7 @@ super-analyzer {apk_file}
 | 
			
		||||
 | 
			
		||||
.png>)
 | 
			
		||||
 | 
			
		||||
StaCoAn to **narzędzie wieloplatformowe**, które pomaga deweloperom, łowcom błędów i etycznym hakerom w przeprowadzaniu [analizy statycznej kodu](https://en.wikipedia.org/wiki/Static_program_analysis) aplikacji mobilnych.
 | 
			
		||||
StaCoAn to **narzędzie wieloplatformowe**, które wspomaga programistów, łowców błędów i etycznych hakerów w przeprowadzaniu [analizy statycznej kodu](https://en.wikipedia.org/wiki/Static_program_analysis) aplikacji mobilnych.
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
@ -637,7 +640,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]
 | 
			
		||||
@ -647,7 +650,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** bajtkodu Dalvik aplikacji, reprezentowanego jako **Smali**, z wykorzystaniem biblioteki [`androguard`](https://github.com/androguard/androguard).
 | 
			
		||||
Wykrywanie odbywa się za pomocą **analizy statycznej** bajtowego kodu 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...
 | 
			
		||||
```
 | 
			
		||||
@ -657,7 +660,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**naliza 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.
 | 
			
		||||
**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.
 | 
			
		||||
 | 
			
		||||
Może:
 | 
			
		||||
 | 
			
		||||
@ -680,7 +683,7 @@ Zauważ, że w zależności od usługi i konfiguracji, której używasz do obfus
 | 
			
		||||
 | 
			
		||||
Z [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** to narzędzie wiersza poleceń typu open source, które zmniejsza, optymalizuje i obfuskacje 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)
 | 
			
		||||
 | 
			
		||||
@ -702,15 +705,15 @@ Możesz przesłać obfuskowane APK na ich platformę.
 | 
			
		||||
 | 
			
		||||
### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app)
 | 
			
		||||
 | 
			
		||||
To narzędzie LLM do znajdowania potencjalnych luk w zabezpieczeniach w aplikacjach android i deobfuskacji kodu aplikacji android. Używa publicznego API Gemini od Google'a.
 | 
			
		||||
To narzędzie LLM do znajdowania potencjalnych luk w zabezpieczeniach w aplikacjach androidowych i deobfuskacji kodu aplikacji androidowych. Używa publicznego API Gemini od Google'a.
 | 
			
		||||
 | 
			
		||||
### [Simplify](https://github.com/CalebFenton/simplify)
 | 
			
		||||
 | 
			
		||||
To **ogólny deobfuskator androida.** Simplify **wirtualnie wykonuje aplikację**, aby zrozumieć jej zachowanie, a następnie **stara się zoptymalizować kod**, aby działał identycznie, ale był łatwiejszy do zrozumienia dla człowieka. Każdy typ optymalizacji jest prosty i ogólny, więc nie ma znaczenia, jaki konkretny typ obfuskacji jest używany.
 | 
			
		||||
To **ogólny deobfuskator androidowy.** Simplify **wirtualnie wykonuje aplikację**, aby zrozumieć jej zachowanie, a następnie **stara się zoptymalizować kod**, aby działał identycznie, ale był łatwiejszy do zrozumienia dla człowieka. Każdy typ optymalizacji jest prosty i ogólny, więc nie ma znaczenia, jaki konkretny typ obfuskacji jest używany.
 | 
			
		||||
 | 
			
		||||
### [APKiD](https://github.com/rednaga/APKiD)
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
### Manual
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,123 @@
 | 
			
		||||
# Shizuku Privileged API
 | 
			
		||||
 | 
			
		||||
{{#include ../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
Shizuku to usługa open-source, która **uruchamia uprzywilejowany proces Java za pomocą `app_process`** i udostępnia wybrane **API systemu Android przez Binder**. Ponieważ proces jest uruchamiany z tymi samymi **uprawnieniami UID `shell`, które wykorzystuje ADB**, każda aplikacja (lub terminal), która łączy się z eksportowanym interfejsem AIDL, może wykonywać wiele działań, które normalnie wymagają **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, operacji I/O na plikach w `/data`,** itd. – **bez rootowania urządzenia**.
 | 
			
		||||
 | 
			
		||||
Typowe przypadki użycia:
 | 
			
		||||
* Audyt bezpieczeństwa z nie-rootowanego urządzenia
 | 
			
		||||
* Usuwanie bloatware / debloating aplikacji systemowych
 | 
			
		||||
* Zbieranie logów, kluczy Wi-Fi, informacji o procesach i gniazdach dla blue-team/DFIR
 | 
			
		||||
* Automatyzacja konfiguracji urządzenia z niestandardowych aplikacji lub skryptów powłoki
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
## 1. Rozpoczynanie usługi uprzywilejowanej
 | 
			
		||||
 | 
			
		||||
`moe.shizuku.privileged.api` można uruchomić na trzy różne sposoby – wynikowa usługa Binder zachowuje się tak samo we wszystkich z nich.
 | 
			
		||||
 | 
			
		||||
### 1.1 Bezprzewodowy ADB (Android 11+)
 | 
			
		||||
1. Włącz **Opcje dewelopera ➜ Debugowanie bezprzewodowe** i sparuj urządzenie.
 | 
			
		||||
2. W aplikacji Shizuku wybierz **„Rozpocznij przez debugowanie bezprzewodowe”** i skopiuj kod parowania.
 | 
			
		||||
3. Usługa przetrwa do następnego restartu (sesje debugowania bezprzewodowego są czyszczone po uruchomieniu).
 | 
			
		||||
 | 
			
		||||
### 1.2 USB / lokalny ADB w jednej linii
 | 
			
		||||
```bash
 | 
			
		||||
adb push start.sh \
 | 
			
		||||
/storage/emulated/0/Android/data/moe.shizuku.privileged.api/
 | 
			
		||||
 | 
			
		||||
# spawn the privileged process
 | 
			
		||||
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
 | 
			
		||||
```
 | 
			
		||||
Ten sam skrypt można wykonać przez połączenie **network ADB** (`adb connect <IP>:5555`).
 | 
			
		||||
 | 
			
		||||
### 1.3 Urządzenia z rootem
 | 
			
		||||
Jeśli urządzenie jest już zrootowane, uruchom:
 | 
			
		||||
```bash
 | 
			
		||||
su -c sh /data/adb/shizuku/start.sh
 | 
			
		||||
```
 | 
			
		||||
### 1.4 Weryfikacja, że działa
 | 
			
		||||
```bash
 | 
			
		||||
adb shell dumpsys activity service moe.shizuku.privileged.api | head
 | 
			
		||||
```
 | 
			
		||||
Udany start zwraca `Running services (1)` razem z PID procesu z uprawnieniami.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
## 2. Wiązanie z aplikacją
 | 
			
		||||
Aplikacje innych firm potrzebują tylko następującego w swoim `AndroidManifest.xml`:
 | 
			
		||||
```xml
 | 
			
		||||
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
 | 
			
		||||
```
 | 
			
		||||
W czasie wykonywania uzyskują binder:
 | 
			
		||||
```java
 | 
			
		||||
IBinder binder = ShizukuProvider.getBinder();
 | 
			
		||||
IPackageManager pm  = IPackageManager.Stub.asInterface(binder);
 | 
			
		||||
```
 | 
			
		||||
Od tego momentu aplikacja może wywoływać dowolną metodę, którą może wywołać użytkownik **`shell`** – na przykład:
 | 
			
		||||
```java
 | 
			
		||||
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
 | 
			
		||||
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
 | 
			
		||||
```
 | 
			
		||||
Zarządzana lista ponad **170 aplikacji z obsługą Shizuku** jest dostępna na [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku).
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
## 3. Rish – podwyższony shell w Termux
 | 
			
		||||
Ekran ustawień Shizuku udostępnia **„Użyj Shizuku w aplikacjach terminalowych”**. Włączenie tej opcji pobiera *rish* (`/data/local/tmp/rish`).
 | 
			
		||||
```bash
 | 
			
		||||
pkg install wget
 | 
			
		||||
wget https://rikka.app/rish/latest -O rish && chmod +x rish
 | 
			
		||||
 | 
			
		||||
# start elevated shell (inherits the binder connection)
 | 
			
		||||
./rish
 | 
			
		||||
whoami   #  ➜  shell
 | 
			
		||||
id       #  uid=2000(shell) gid=2000(shell) groups=... context=u:r:shell:s0
 | 
			
		||||
```
 | 
			
		||||
### 3.1 Przydatne polecenia z powłoki rish
 | 
			
		||||
* Wyświetl uruchomione procesy danego pakietu:
 | 
			
		||||
```bash
 | 
			
		||||
ps -A | grep com.facebook.katana
 | 
			
		||||
```
 | 
			
		||||
* Wymień gniazda nasłuchujące i przypisz je do pakietów (np. **CVE-2019-6447 ES File Explorer**):
 | 
			
		||||
```bash
 | 
			
		||||
netstat -tuln
 | 
			
		||||
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
 | 
			
		||||
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
 | 
			
		||||
done
 | 
			
		||||
```
 | 
			
		||||
* Zrzutuj logi każdej aplikacji:
 | 
			
		||||
```bash
 | 
			
		||||
logcat -d | grep -iE "(error|exception)"
 | 
			
		||||
```
 | 
			
		||||
* Odczytaj zapisane dane uwierzytelniające Wi-Fi (Android 11 +):
 | 
			
		||||
```bash
 | 
			
		||||
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
 | 
			
		||||
```
 | 
			
		||||
* Masowe usuwanie zbędnych aplikacji (przykład):
 | 
			
		||||
```bash
 | 
			
		||||
pm uninstall --user 0 com.miui.weather2
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
## 4. Rozważania dotyczące bezpieczeństwa / wykrywania
 | 
			
		||||
1. Shizuku potrzebuje **uprawnień do debugowania ADB**, dlatego _Opcje dewelopera → Debugowanie USB/bezprzewodowe_ muszą być **włączone**.
 | 
			
		||||
Organizacje mogą to zablokować za pomocą MDM lub poprzez `settings put global development_settings_enabled 0`.
 | 
			
		||||
2. Usługa rejestruje się pod nazwą `moe.shizuku.privileged.api`.
 | 
			
		||||
Proste `adb shell service list | grep shizuku` (lub zasada bezpieczeństwa punktu końcowego) wykrywa jej obecność.
 | 
			
		||||
3. Możliwości są ograniczone do tego, co użytkownik `shell` już może zrobić – **nie jest to root**.
 | 
			
		||||
Wrażliwe API, które wymagają użytkownika `system` lub `root`, są nadal niedostępne.
 | 
			
		||||
4. Sesje **nie przetrwają ponownego uruchomienia**, chyba że urządzenie jest zrootowane, a Shizuku jest skonfigurowane jako demon startowy.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
## 5. Łagodzenie
 | 
			
		||||
* Wyłącz debugowanie USB/bezprzewodowe na urządzeniach produkcyjnych.
 | 
			
		||||
* Monitoruj usługi Binder ujawniające `moe.shizuku.privileged.api`.
 | 
			
		||||
* Użyj polityk SELinux (Android enterprise), aby zablokować interfejs AIDL z niezarządzanych aplikacji.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
## Odniesienia
 | 
			
		||||
 | 
			
		||||
- [Blog – Shizuku: Odblokowywanie zaawansowanych możliwości Androida bez roota](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/)
 | 
			
		||||
- [Oficjalna dokumentacja Shizuku](https://shizuku.rikka.app/)
 | 
			
		||||
- [awesome-shizuku – lista wspieranych aplikacji](https://github.com/timschneeb/awesome-shizuku)
 | 
			
		||||
- [powłoka rish (uprzywilejowana powłoka reverse-adb)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
 | 
			
		||||
 | 
			
		||||
{{#include ../../banners/hacktricks-training.md}}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user