# Testowanie penetracyjne aplikacji na Androida
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami błędów! **Spojrzenie na Hacking**\ Zanurz się w treści, które zagłębiają się w emocje i wyzwania hackowania **Aktualności z Hackingu na Żywo**\ Bądź na bieżąco z szybkim tempem świata hackowania dzięki aktualnym wiadomościom i spostrzeżeniom **Najnowsze Ogłoszenia**\ Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platform **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś! ## Podstawy Aplikacji na Androida Zaleca się zapoznanie się z tą stroną, aby dowiedzieć się o **najważniejszych częściach związanych z bezpieczeństwem Androida i najniebezpieczniejszych komponentach w aplikacji na Androida**: {% content-ref url="android-applications-basics.md" %} [android-applications-basics.md](android-applications-basics.md) {% endcontent-ref %} ## ADB (Android Debug Bridge) To główne narzędzie, które potrzebujesz do połączenia się z urządzeniem Android (emulowanym lub fizycznym).\ **ADB** pozwala kontrolować urządzenia zarówno przez **USB**, jak i przez **sieć** z komputera. Narzędzie to umożliwia **kopiowanie** plików w obie strony, **instalowanie** i **odinstalowywanie** aplikacji, **wykonywanie** poleceń powłoki, **tworzenie kopii zapasowych** danych, **czytanie** logów, między innymi funkcje. Zajrzyj do poniższej listy [**Polecenia ADB**](adb-commands.md), aby dowiedzieć się, jak korzystać z adb. ## Smali Czasami interesujące jest **modyfikowanie kodu aplikacji**, aby uzyskać dostęp do **ukrytych informacji** (być może dobrze zaszyfrowanych haseł lub flag). W takim przypadku może być interesujące zdekompilowanie pliku apk, zmodyfikowanie kodu i ponowne skompilowanie go.\ [W tym samouczku](smali-changes.md) możesz **dowiedzieć się, jak zdekompilować plik APK, zmodyfikować kod Smali i ponownie skompilować APK** z nową funkcjonalnością. Może to być bardzo przydatne jako **alternatywa dla kilku testów podczas analizy dynamicznej**, które zostaną przedstawione. Należy zawsze **pamiętać o tej możliwości**. ## Inne interesujące sztuczki * [Podrabianie lokalizacji w Sklepie Play](spoofing-your-location-in-play-store.md) * **Pobierz pliki 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/) * Wyodrębnij plik APK z urządzenia: ```bash adb shell pm list packages com.android.insecurebankv2 adb shell pm path com.android.insecurebankv2 package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk ``` ## Analiza statyczna Po pierwsze, do analizy pliku APK powinieneś **przejrzeć kod Javy** za pomocą dekompilatora.\ Proszę, [**zapoznaj się tutaj z informacjami o dostępnych dekompilatorach**](apk-decompilers.md). ### Szukanie interesujących informacji Po prostu przeglądając **ciągi znaków** w pliku APK, możesz szukać **haseł**, **adresów 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... poszukaj nawet **tylnych drzwi** do wykonania kodu lub tylnych drzwi uwierzytelniania (wbudowane poświadczenia administratora w aplikacji). **Firebase** Zwróć szczególną uwagę na **adresy URL Firebase** i sprawdź, czy są źle skonfigurowane. [Więcej informacji o tym, czym jest Firebase i jak go wykorzystać, znajdziesz tutaj.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Podstawowe zrozumienie aplikacji - Manifest.xml, strings.xml **Analiza plików **_**Manifest.xml**_** i **_**strings.xml**_** aplikacji może ujawnić potencjalne podatności na ataki**. Te pliki można uzyskać za pomocą dekompilatorów lub zmieniając rozszerzenie pliku APK na .zip, a następnie rozpakowując go. **Zidentyfikowane podatności** z pliku **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 eksploatacji. Aby lepiej zrozumieć, jak wykorzystać aplikacje debugowalne, zapoznaj się z samouczkiem dotyczącym znajdowania i wykorzystywania aplikacji debugowalnych na urządzeniu. * **Ustawienia kopii zapasowych**: Atrybut `android:allowBackup="false"` powinien być jawnie ustawiony dla aplikacji zajmujących się wrażliwymi informacjami, aby zapobiec nieautoryzowanym kopiom zapasowym danych za pomocą adb, zwłaszcza gdy jest włączone debugowanie USB. * **Bezpieczeństwo sieci**: Niestandardowe konfiguracje bezpieczeństwa sieciowego (`android:networkSecurityConfig="@xml/network_security_config"`) w _res/xml/_ mogą określać szczegóły związane z bezpieczeństwem, takie jak pinezki 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 ujawnić komponenty, które mogą być nadużywane. Dalsza analiza podczas testów dynamicznych może ujawnić, jak wykorzystać te komponenty. * **Dostawcy treści i dostawcy plików**: Ujawnieni dostawcy treści mogą umożliwić nieautoryzowany dostęp lub modyfikację danych. Konfiguracja dostawców plików również powinna być dokładnie przeanalizowana. * **Odbiorniki nadawcze i schematy URL**: Te komponenty mogą być wykorzystane do eksploatacji, ze szczególnym uwzględnieniem zarządzania schematami URL w celu wykrycia podatności na wejście. * **Wersje SDK**: Atrybuty `minSdkVersion`, `targetSDKVersion` i `maxSdkVersion` wskazują obsługiwane wersje Androida, podkreślając ważność nieobsługiwania przestarzałych, podatnych wersji Androida ze względów bezpieczeństwa. Z pliku **strings.xml** można odkryć wrażliwe informacje, takie jak klucze API, niestandardowe schematy i inne notatki dewelopera, podkreślając potrzebę dokładnego przejrzenia tych zasobów. ### Tapjacking **Tapjacking** to atak, w którym **złośliwa** **aplikacja** jest uruchamiana i **pozycjonuje się na wierzchu aplikacji ofiary**. Gdy zasłania widocznie aplikację ofiary, jej interfejs użytkownika jest zaprojektowany w taki sposób, aby oszukać użytkownika do interakcji z nią, podczas gdy przekazuje interakcję do aplikacji ofiary.\ W rezultacie **oszukuje użytkownika, aby nie zdawał sobie sprawy, że faktycznie wykonuje akcje w aplikacji ofiary**. Dowiedz się więcej: {% content-ref url="tapjacking.md" %} [tapjacking.md](tapjacking.md) {% endcontent-ref %} ### Przechwytywanie zadań **Aktywność** z ustawionym **`launchMode`** na **`singleTask` bez zdefiniowanego `taskAffinity`** jest podatna na przechwytywanie zadań. Oznacza to, że **aplikacja** może zostać zainstalowana i jeśli zostanie uruchomiona przed prawdziwą aplikacją, może **przechwycić zadanie prawdziwej aplikacji** (użytkownik będzie więc interagował z **złośliwą aplikacją, myśląc, że korzysta z prawdziwej**). Więcej informacji: {% content-ref url="android-task-hijacking.md" %} [android-task-hijacking.md](android-task-hijacking.md) {% endcontent-ref %} ### Nieszyfrowane przechowywanie danych **Pamięć wewnętrzna** W systemie Android pliki **przechowywane** w **pamięci wewnętrznej** są **przeznaczone** do **dostępu** wyłącznie przez **aplikację**, która je **utworzyła**. Ta zabezpieczenie jest **egzekwowane** przez system operacyjny Android i zazwyczaj jest wystarczające dla większości aplikacji. Jednak deweloperzy czasami korzystają z trybów takich jak `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE`, aby **umożliwić** udostępnianie 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 korzystanie z `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` jest **dokładnie przeanalizowane**. Te tryby **mogą potencjalnie ujawnić** pliki do **niezamierzonego lub nieautoryzowanego dostępu**. 2. **Analiza dynamiczna:** * **Zweryfikuj** uprawnienia ustawione dla plików utworzonych przez aplikację. W szczególności **sprawdź**, czy jakiekolwiek pliki są **ustawione jako czytelne lub zapisywalne globalnie**. Może to stanowić znaczne ryzyko bezpieczeństwa, ponieważ pozwoliłoby to **dowolnej aplikacji** zainstalowanej na urządzeniu, bez względu na jej pochodzenie lub intencje, na **odczytanie lub modyfikację** tych plików. **Pamięć zewnętrzna** Przy pracy z plikami na **pamięci zewnętrznej**, takich jak karty SD, należy podjąć pewne środki ostrożności: 1. **Dostępność**: * Pliki na pamięci zewnętrznej są **globalnie czytelne i zapisywalne**. Oznacza to, że dowolna aplikacja lub użytkownik może uzyskać do nich dostęp. 2. **Zagrożenia bezpieczeństwa**: * Ze względu na łatwość dostępu, zaleca się **nie przechowywać wrażliwych informacji** na pamięci zewnętrznej. * Pamięć zewnętrzna może być usunięta lub dostępna dla dowolnej aplikacji, co czyni ją mniej bezpieczną. 3. **Obsługa danych z pamięci zewnętrznej**: * Zawsze **wykonuj walidację danych** pobranych z pamięci zewnętrznej. Jest to istotne, ponieważ dane pochodzą z niezaufanego źródła. * Przechowywanie plików wykonywalnych lub plików klas na pamięci zewnętrznej w celu dynamicznego ładowania jest zdecydowanie odradzane. * Jeśli Twoja aplikacja musi pobierać pliki wykonywalne z pamięci zewnętrznej, upewnij się, że te pliki są **podpisane i weryfikowane kryptograficznie** przed ich dynamicznym ładowaniem. Ten krok jest kluczowy dla zachowania integralności bezpieczeństwa Twojej aplikacji. Pamięć zewnętrzna może być **dostępna** pod `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` {% hint style="info" %} Począwszy od Androida 4.4 (**API 17**), karta SD ma strukturę katalogów, która **ogranicza dostęp z aplikacji do katalogu przeznaczonego specjalnie dla tej aplikacji**. Zapobiega to złośliwej aplikacji uzyskania dostępu do odczytu lub zapisu plików innej aplikacji. {% endhint %} **Wrażliwe dane przechowywane w tekście jawnym** * **Udostępnione preferencje**: Android pozwala każdej aplikacji łatwo zapisać pliki XML w ścieżce `/data/data//shared_prefs/` i czasami możliwe jest znalezienie wrażliwych informacji w tekście jawnym w tym folderze. * **Bazy danych**: Android pozwala każdej aplikacji łatwo zapisać bazy danych sqlite w ścieżce `/data/data//databases/` i czasami możliwe jest znalezienie wrażliwych informacji w tekście jawnym w tym folderze. ### Uszkodzone TLS **Akceptuj wszystkie certyfikaty** Czasami z jakiegoś powodu deweloperzy akceptują wszystkie certyfikaty, nawet jeśli na przykład nazwa hosta nie pasuje do linii kodu, takiej jak ta: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` ### Uszkodzona kryptografia **Słabe procesy zarządzania kluczami** Niektórzy programiści zapisują wrażliwe dane w pamięci lokalnej i szyfrują je kluczem zapisanym/wykrywalnym w kodzie. Nie powinno się tego robić, ponieważ odwrócenie procesu może pozwolić atakującym wydobyć poufne informacje. **Użycie niebezpiecznych i/lub przestarzałych algorytmów** Programiści nie powinni używać **przestarzałych algorytmów** do przeprowadzania **sprawdzeń autoryzacyjnych**, **przechowywania** lub **wysyłania** danych. Niektóre z tych algorytmów to: RC4, MD4, MD5, SHA1... Jeśli **hasła** są używane do przechowywania haseł na przykład, należy użyć hashy odporne na ataki brutalne z solą. ### Inne sprawdzenia * Zaleca się **zaciemnienie APK**, aby utrudnić odwrotną inżynierię atakującym. * Jeśli aplikacja jest wrażliwa (np. aplikacje bankowe), powinna przeprowadzać **własne sprawdzenia, czy urządzenie mobilne jest zrootowane** i działać odpowiednio. * Jeśli aplikacja jest wrażliwa (np. aplikacje bankowe), powinna sprawdzić, czy jest używany **emulator**. * Jeśli aplikacja jest wrażliwa (np. aplikacje bankowe), powinna **sprawdzić swoją integralność przed wykonaniem** jej, aby sprawdzić, czy została zmodyfikowana. * Użyj [**APKiD**](https://github.com/rednaga/APKiD), aby sprawdzić, który kompilator/pakietujący/zacieniacz został użyty do zbudowania APK. ### Aplikacja React Native Przeczytaj następującą stronę, aby dowiedzieć się, jak łatwo uzyskać dostęp do kodu JavaScript aplikacji React: {% content-ref url="react-native-application.md" %} [react-native-application.md](react-native-application.md) {% endcontent-ref %} ### Aplikacje Xamarin Przeczytaj następującą stronę, aby dowiedzieć się, jak łatwo uzyskać dostęp do kodu C# aplikacji Xamarin: {% content-ref url="../xamarin-apps.md" %} [xamarin-apps.md](../xamarin-apps.md) {% endcontent-ref %} ### Aplikacje Superpacked Zgodnie z tym [**postem na blogu**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked to metaalgorytm, który kompresuje zawartość aplikacji do jednego pliku. Blog omawia możliwość stworzenia aplikacji, która dekompresuje tego rodzaju aplikacje... oraz szybszy sposób, który polega na **uruchomieniu aplikacji i zebraniu zdekompresowanych plików z systemu plików**. ### Automatyczna statyczna analiza kodu Narzędzie [**mariana-trench**](https://github.com/facebook/mariana-trench) jest zdolne do znajdowania **podatności** poprzez **skanowanie** kodu aplikacji. Narzędzie to zawiera szereg **znanych źródeł** (które wskazują narzędziu **miejsca**, gdzie **dane wejściowe są kontrolowane przez użytkownika**), **sinks** (które wskazują narzędziu **niebezpieczne miejsca**, gdzie złośliwe dane wejściowe mogą powodować szkody) i **reguły**. Te reguły wskazują na **kombinację źródeł-sinks**, która wskazuje na podatność. Dzięki tej wiedzy **mariana-trench przejrzy kod i znajdzie możliwe podatności**. ### Wycieki sekretów Aplikacja może zawierać sekrety (klucze API, hasła, ukryte adresy URL, subdomeny...) wewnątrz, których możesz być w stanie odkryć. Możesz użyć narzędzia takiego jak [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) ### Ominięcie uwierzytelniania biometrycznego {% content-ref url="bypass-biometric-authentication-android.md" %} [bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md) {% endcontent-ref %} ### Inne interesujące funkcje * **Wykonanie kodu**: `Runtime.exec(), ProcessBuilder(), kod natywny:system()` * **Wysyłanie SMS-ów**: `sendTextMessage, sendMultipartTestMessage` * Deklarowane **funkcje natywne** jako `native`: `public native, System.loadLibrary, System.load` * [Przeczytaj to, aby dowiedzieć się, **jak odwrócić funkcje natywne**](reversing-native-libraries.md) ### **Inne sztuczki** {% content-ref url="content-protocol.md" %} [content-protocol.md](content-protocol.md) {% endcontent-ref %} ***
Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami błędów! **Wglądy w hakerstwo**\ Zapoznaj się z treściami, które zagłębiają się w emocje i wyzwania hakerstwa **Aktualności na żywo z hakerstwa**\ Bądź na bieżąco z szybkim tempem świata hakerstwa dzięki aktualnościom i wglądom na żywo **Najnowsze ogłoszenia**\ Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platformy **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś! *** ## Analiza dynamiczna > Przede wszystkim potrzebujesz środowiska, w którym możesz zainstalować aplikację i wszystkie narzędzia (certyfikat Burp CA, Drozer i Frida głównie). Dlatego zaleca się korzystanie z zrootowanego urządzenia (emulowanego lub nie). ### Analiza dynamiczna online Możesz założyć **darmowe konto** na: [https://appetize.io/](https://appetize.io). Ta platforma pozwala **przesyłać** i **wykonywać** pliki APK, co jest przydatne do monitorowania zachowania pliku APK. Możesz nawet **zobaczyć logi swojej aplikacji** w sieci i połączyć się za pomocą **adb**. ![](<../../.gitbook/assets/image (60).png>) Dzięki połączeniu ADB możesz korzystać z **Drozera** i **Fridy** w emulatorach. ### Lokalna analiza dynamiczna #### Korzystanie z emulatora * [**Android Studio**](https://developer.android.com/studio) (Możesz tworzyć urządzenia **x86** i **arm**, a zgodnie z [**tym** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**najnowsze wersje x86** obsługują biblioteki ARM bez konieczności wolnego emulatora arm). * Dowiedz się, jak to skonfigurować na tej stronie: {% content-ref url="avd-android-virtual-device.md" %} [avd-android-virtual-device.md](avd-android-virtual-device.md) {% endcontent-ref %} * [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Wersja darmowa:** Personal Edition, 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 Fridy ani Drozera). {% hint style="info" %} Tworząc nowy emulator na dowolnej platformie, pamiętaj, że im większy ekran, tym wolniej będzie działał emulator. Wybierz więc małe ekrany, jeśli to możliwe. {% endhint %} Aby **zainstalować usługi Google** (np. Sklep Play) w Genymotion, musisz kliknąć na czerwony przycisk zaznaczony na poniższym obrazku: ![](<../../.gitbook/assets/image (200) (1).png>) Zauważ również, że w **konfiguracji maszyny wirtualnej Androida w Genymotion** możesz wybrać **tryb sieci mostkowej** (będzie to przydatne, jeśli będziesz łączyć się z maszyną wirtualną Androida z innej maszyny wirtualnej za pomocą narzędzi). #### Użyj fizycznego urządzenia Musisz aktywować opcje **debugowania**, a byłoby świetnie, gdybyś mógł je **zrootować**: 1. **Ustawienia**. 2. (Od Androida 8.0) Wybierz **System**. 3. Wybierz **Informacje o telefonie**. 4. Naciśnij **Numer kompilacji** 7 razy. 5. Wróć i znajdziesz opcje **Opcje programistyczne**. > Po zainstalowaniu aplikacji, pierwszą rzeczą, którą powinieneś zrobić, jest jej przetestowanie i zbadanie, co robi, jak działa i zapoznanie się z nią.\ > Zalecam **wykonanie tej początkowej analizy dynamicznej za pomocą analizy dynamicznej MobSF + pidcat**, dzięki czemu będziemy mogli **zrozumieć, jak działa aplikacja**, podczas gdy MobSF **przechwytuje** wiele **interesujących** **danych**, które można później przejrzeć. ### Niezamierzone wycieki danych **Logowanie** Deweloperzy powinni uważać na publiczne ujawnianie informacji **debugowania**, 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 preferowany ze względu na łatwość użycia i czytelność. {% hint style="warning" %} Zauważ, że od **nowszych wersji Androida nowszych niż 4.0**, **aplikacje mogą uzyskać dostęp tylko do swoich własnych logów**. Dlatego aplikacje nie mogą uzyskać dostępu do logów innych aplikacji.\ Mimo to nadal zaleca się **nie logowanie wrażliwych informacji**. {% endhint %} **Bufor kopiuj/wklej** Framework **oparty na schowku** Androida umożliwia funkcję kopiuj/wklej w aplikacjach, ale stanowi ryzyko, ponieważ **inne aplikacje** mogą **uzyskać dostęp** do schowka, potencjalnie ujawniając wrażliwe dane. Ważne jest **wyłączenie funkcji kopiuj/wklej** dla wrażliwych sekcji aplikacji, takich jak dane karty kredytowej, aby zapobiec wyciekom danych. **Logi awarii** Jeśli aplikacja **zawiesi się** i **zapisze logi**, te logi mogą pomóc atakującym, zwłaszcza gdy aplikacja nie może być zdekompilowana. Aby zmniejszyć to ryzyko, unikaj logowania w przypadku awarii, a jeśli logi muszą być przesyłane przez sieć, upewnij się, że są wysyłane za pośrednictwem kanału SSL w celu zapewnienia bezpieczeństwa. Jako pentester, **spróbuj przyjrzeć się tym logom**. **Dane analityczne wysyłane do stron trzecich** Aplikacje często integrują usługi takie jak Google Adsense, które nieumyślnie **mogą ujawnić wrażliwe dane** z powodu niewłaściwej implementacji przez deweloperów. Aby zidentyfikować potencjalne wycieki danych, zaleca się **przechwycenie ruchu aplikacji** i sprawdzenie, czy wysyłane są jakiekolwiek wrażliwe informacje do usług stron trzecich. ### Bazy danych SQLite Większość aplikacji będzie korzystać z **wewnętrznych baz danych SQLite** do przechowywania informacji. Podczas pentestu przyjrzyj się **utworzonym bazom danych**, nazwom **tabel** i **kolumn** oraz wszystkim **danych** zapisanym, ponieważ możesz znaleźć **wrażliwe informacje** (co mogłoby być podatnością).\ Bazy danych powinny znajdować się w `/data/data/nazwa.pakietu/bazy danych` jak `/data/data/com.mwr.example.sieve/bazy danych` Jeśli baza danych zapisuje poufne informacje i jest **zaszyfrowana**, ale możesz **znaleźć** hasło wewnątrz aplikacji, to nadal jest to **podatność**. Wylicz tabele za pomocą `.tables` i wylicz kolumny tabel za pomocą `.schema ` ### Drozer (Wykorzystywanie działań, dostawców treści i usług) Z [Dokumentacji Drozera](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** pozwala ci **przyjąć rolę aplikacji Android** i współdziałać z innymi aplikacjami. Może robić **wszystko, co może zrobić zainstalowana aplikacja**, takie jak korzystanie z mechanizmu komunikacji międzyprocesowej Androida (IPC) i współdziałanie z podstawowym systemem operacyjnym. .\ Drozer jest przydatnym narzędziem do **wykorzystywania eksportowanych działań, eksportowanych usług i dostawców treści**, o czym dowiesz się w kolejnych sekcjach. ### Wykorzystywanie eksportowanych działań [**Przeczytaj to, jeśli chcesz odświeżyć sobie, co to jest Działanie Androida.**](android-applications-basics.md#launcher-activity-and-other-activities)\ Pamiętaj również, że kod działania zaczyna się w metodzie **`onCreate`**. **Ominięcie autoryzacji** Gdy działanie jest eksportowane, można wywołać jego ekran z zewnętrznej aplikacji. Dlatego jeśli działanie z **wrażliwymi informacjami** jest **eksportowane**, można **ominąć** mechanizmy **uwierzytelniania**, aby uzyskać do niego **dostęp**. [Dowiedz się, jak wykorzystać eksportowane działania za pomocą Drozera.](drozer-tutorial/#activities) Możesz także uruchomić eksportowane działanie z adb: * NazwaPakietu to com.example.demo * Nazwa Eksportowanego Działania 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 ze względu na [to](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), wydaje się, że jest to niebezpieczne tylko w starych wersjach (wersje API < 21). {% hint style="info" %} Należy pamiętać, że bypass autoryzacji nie zawsze jest podatnością, zależy to od tego, jak działa bypass i jakie informacje są ujawnione. {% endhint %} **Ujawnienie wrażliwych informacji** **Aktywności mogą również zwracać wyniki**. Jeśli uda ci się znaleźć zewnętrzną i niechronioną aktywność wywołującą metodę **`setResult`** i **zwracającą wrażliwe informacje**, mamy do czynienia z ujawnieniem wrażliwych informacji. #### Tapjacking Jeśli tapjacking nie jest zapobiegany, możesz nadużyć zewnętrznej aktywności, aby sprawić, że **użytkownik wykona nieoczekiwane akcje**. Aby uzyskać więcej informacji na temat [**czym jest Tapjacking, kliknij w link**](./#tapjacking). ### Wykorzystywanie dostawców treści - Dostęp i manipulacja wrażliwymi informacjami [**Przeczytaj to, jeśli chcesz odświeżyć sobie, czym jest dostawca treści.**](android-applications-basics.md#content-provider)\ Dostawcy treści są podstawowo używani do **udostępniania danych**. Jeśli aplikacja udostępnia dostawców treści, możesz **wydobyć wrażliwe** dane z nich. Warto również przetestować możliwe **wstrzyknięcia SQL** i **trawersacje ścieżek**, ponieważ mogą być podatne. [**Dowiedz się, jak wykorzystać dostawców treści za pomocą Drozera.**](drozer-tutorial/#content-providers) ### **Wykorzystywanie Usług** [**Przeczytaj to, jeśli chcesz odświeżyć sobie, czym jest Usługa.**](android-applications-basics.md#services)\ Pamiętaj, że działania Usługi rozpoczynają się w metodzie `onStartCommand`. Usługa to podstawowo coś, co **może otrzymać dane**, je **przetworzyć** i **zwrócić** (lub nie) odpowiedź. Jeśli aplikacja eksportuje jakieś usługi, powinieneś **sprawdzić** kod, aby zrozumieć, co robi, i **testować** go **dynamicznie** w celu wydobycia poufnych informacji, omijania środków autoryzacji...\ [**Dowiedz się, jak wykorzystać Usługi za pomocą Drozera.**](drozer-tutorial/#services) ### **Wykorzystywanie Odbiorników Nadawczych** [**Przeczytaj to, jeśli chcesz odświeżyć sobie, czym jest Odbiornik Nadawczy.**](android-applications-basics.md#broadcast-receivers)\ Pamiętaj, że działania Odbiornika Nadawczego rozpoczynają się w metodzie `onReceive`. Odbiornik nadawczy będzie oczekiwał na rodzaj wiadomości. W zależności od tego, jak odbiornik obsługuje wiadomość, może być podatny.\ [**Dowiedz się, jak wykorzystać Odbiorniki Nadawcze za pomocą Drozera.**](./#exploiting-broadcast-receivers) ### **Wykorzystywanie Schematów / Głębokich linków** Możesz ręcznie szukać głębokich linków, używając narzędzi takich jak MobSF lub skryptów takich jak [ten](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ Możesz **otworzyć** zadeklarowany **schemat** za pomocą **adb** lub **przeglądarki**: {% code overflow="wrap" %} ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` {% endcode %} _Należy pamiętać, że można **pominąć nazwę pakietu** i telefon komórkowy automatycznie wywoła aplikację, która powinna otworzyć ten link._ {% code overflow="wrap" %} ```markup Click me with alternative ``` {% endcode %} **Wykonany kod** Aby znaleźć **kod, który zostanie wykonany w aplikacji**, przejdź do aktywności wywołanej przez link głęboki i wyszukaj funkcję **`onNewIntent`**. ![](<../../.gitbook/assets/image (436) (1) (1) (1).png>) **Informacje poufne** Zawsze, gdy znajdziesz link głęboki, sprawdź, czy **nie otrzymuje on danych poufnych (takich jak hasła) za pomocą parametrów URL**, ponieważ inna aplikacja może **podrobić link głęboki i ukraść te dane!** **Parametry w ścieżce** Musisz również sprawdzić, czy jakikolwiek link głęboki używa parametru wewnątrz ścieżki URL, na przykład: `https://api.example.com/v1/users/{username}`, w takim przypadku można wymusić przeglądanie ścieżki, 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 spowodować **przekierowanie otwarte** (jeśli część ścieżki jest używana jako nazwa domeny), **przejęcie konta** (jeśli możesz modyfikować szczegóły użytkowników bez tokenu 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** Interesujący raport z programu bug bounty dotyczący linków (_/.well-known/assetlinks.json_). ### Inspekcja Warstwy Transportowej i Błędy Weryfikacji * **Certyfikaty nie zawsze są odpowiednio sprawdzane** przez aplikacje na Androida. Często te aplikacje pomijają ostrzeżenia i akceptują certyfikaty samopodpisane lub, w niektórych przypadkach, wracają do korzystania z połączeń HTTP. * **Negocjacje podczas uścisku ręki SSL/TLS są czasami słabe**, korzystając z niebezpiecznych zestawów szyfrów. Ta podatność sprawia, że połączenie jest podatne na ataki typu man-in-the-middle (MITM), pozwalając atakującym na odszyfrowanie danych. * **Wyciek prywatnych informacji** stanowi ryzyko, gdy aplikacje uwierzytelniają się za pomocą bezpiecznych kanałów, a następnie komunikują się za pomocą kanałów nieszyfrowanych w innych transakcjach. Ten sposób nie chroni wrażliwych danych, takich jak ciasteczka sesji lub szczegóły użytkownika, przed przechwyceniem przez złośliwe podmioty. #### Weryfikacja Certyfikatu Skupimy się na **weryfikacji certyfikatu**. Integralność certyfikatu serwera musi być zweryfikowana, aby zwiększyć bezpieczeństwo. Jest to istotne, ponieważ niebezpieczne konfiguracje TLS i przesyłanie wrażliwych danych przez niezaszyfrowane kanały mogą stanowić znaczne ryzyko. Aby uzyskać szczegółowe kroki dotyczące weryfikacji certyfikatów serwera i rozwiązywania podatności, [**ten zasób**](https://manifestsecurity.com/android-application-security-part-10/) zapewnia wszechstronne wskazówki. #### SSL Pinning SSL Pinning to środek bezpieczeństwa, w którym aplikacja weryfikuje certyfikat serwera względem znanego egzemplarza przechowywanego w samej aplikacji. Ta metoda jest niezbędna do zapobiegania atakom typu man-in-the-middle (MITM). Zaleca się zdecydowanie wdrożenie SSL Pinning w aplikacjach obsługujących wrażliwe informacje. #### Inspekcja Ruchu Aby inspirować ruch HTTP, konieczne jest **zainstalowanie certyfikatu narzędzia proxy** (np. Burp). Bez instalacji tego certyfikatu, zaszyfrowany ruch może nie być widoczny przez proxy. Aby uzyskać przewodnik po instalacji niestandardowego certyfikatu CA, [**kliknij tutaj**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). Aplikacje kierowane do **poziomu API 24 i wyższego** wymagają modyfikacji konfiguracji bezpieczeństwa sieciowego, aby zaakceptować certyfikat CA proxy. Ten krok jest kluczowy dla inspekcji zaszyfrowanego ruchu. Aby uzyskać instrukcje dotyczące modyfikacji konfiguracji bezpieczeństwa sieciowego, [**odwołaj się do tego samouczka**](make-apk-accept-ca-certificate.md). #### Omijanie SSL Pinning Gdy jest wdrożony SSL Pinning, konieczne staje się jego obejście w celu inspekcji ruchu HTTPS. Dostępne są różne metody w tym celu: * Automatycznie **zmodyfikuj** **apk**, aby **obejść** SSL Pinning za pomocą [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Główną zaletą tej opcji jest brak konieczności uzyskiwania uprawnień root do obejścia SSL Pinning, ale konieczne będzie usunięcie aplikacji i zainstalowanie nowej, a to nie zawsze zadziała. * Możesz użyć **Frida** (omówionego poniżej), aby ominąć tę ochronę. Oto przewodnik dotyczący korzystania z 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 również spróbować **automatycznie ominąć 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 ominąć SSL Pinning** za pomocą **analizy dynamicznej MobSF** (wyjaśnionej poniżej) * Jeśli uważasz, że istnieje 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) #### Wyszukiwanie Powszechnych Podatności Sieci Web Ważne jest również wyszukiwanie powszechnych podatności sieci web w aplikacji. Szczegółowe informacje dotyczące identyfikacji i łagodzenia tych podatności wykraczają poza zakres tego podsumowania, ale są szeroko omawiane gdzie indziej. ### Frida [Frida](https://www.frida.re) to dynamiczne narzędzie do instrumentacji dla programistów, inżynierów odwracających i badaczy bezpieczeństwa.\ **Możesz uzyskać dostęp do działającej aplikacji i podłączyć metody w czasie rzeczywistym, aby zmienić zachowanie, zmienić wartości, wydobyć wartości, uruchomić inny kod...**\ Jeśli chcesz przetestować penetrację aplikacji na Androida, musisz umieć korzystać z Fridy. * Dowiedz się, jak korzystać z Fridy: [**Samouczek Frida**](frida-tutorial/) * Pewne "GUI" do działań z Fridą: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) * Ojection świetnie automatyzuje korzystanie z Fridy: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) * Możesz znaleźć niektóre niesamowite skrypty Fridy tutaj: [**https://codeshare.frida.re/**](https://codeshare.frida.re) * Spróbuj ominąć mechanizmy anty-debugowania / anty-Fridy, ładując Fridę, jak wskazano w [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (narzędzie [linjector](https://github.com/erfur/linjector-rs)) ### **Dump Pamięci - Fridump** Sprawdź, czy aplikacja przechowuje wrażliwe informacje w pamięci, których nie powinna przechowywać, takie jak hasła lub mnemoniki. Korzystając z [**Fridump3**](https://github.com/rootbsd/fridump3), możesz wykonać zrzut pamięci aplikacji za pomocą: ```bash # With PID python3 fridump3.py -u # With name frida-ps -Uai python3 fridump3.py -u "" ``` To spowoduje zrzucenie pamięci do folderu ./dump, a następnie możesz użyć polecenia grep, na przykład: {% code overflow="wrap" %} ```bash strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$" ``` {% endcode %} ### **Czuje dane w Keystore** W systemie Android Keystore jest najlepszym miejscem do przechowywania danych wrażliwych, jednakże przy wystarczających uprawnieniach wciąż jest **możliwe uzyskanie do nich dostępu**. Ponieważ aplikacje mają tendencję do przechowywania tutaj **danych wrażliwych w postaci tekstu jawnego**, testy penetracyjne powinny to sprawdzić, ponieważ użytkownik root lub osoba mająca fizyczny dostęp do urządzenia mogą być w stanie ukraść te dane. Nawet jeśli aplikacja przechowuje dane w keystore, dane te powinny być zaszyfrowane. Aby uzyskać dostęp do danych przechowywanych w keystore, można skorzystać z tego skryptu Frida: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **Ominicie odcisku palca/biometrii** Za pomocą poniższego skryptu Frida można **ominąć uwierzytelnianie odciskiem palca** które aplikacje na Androida mogą wykonywać w celu **ochrony określonych obszarów o wrażliwym charakterze:** {% code overflow="wrap" %} ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` {% endcode %} ### **Obrazy tła** Gdy przeniesiesz aplikację do tła, Android przechowuje **zrzut aplikacji**, więc gdy zostanie przywrócona do pierwszego planu, zaczyna ładować obraz przed aplikacją, dzięki czemu wydaje się, że aplikacja została wczytana szybciej. Jednak jeśli ten zrzut zawiera **wrażliwe informacje**, ktoś mający dostęp do zrzutu może **ukraść te informacje** (zauważ, że potrzebujesz uprawnień roota, aby uzyskać do niego dostęp). Zrzuty są zazwyczaj przechowywane w okolicach: **`/data/system_ce/0/snapshots`** Android zapewnia sposób **zapobiegania przechwytywaniu zrzutów ekranu poprzez ustawienie parametru układu FLAG\_SECURE**. Korzystając z tego flagi, zawartość okna jest traktowana jako bezpieczna, co zapobiega pojawianiu się jej na zrzutach ekranu lub wyświetlaniu na niezabezpieczonych ekranach. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` ### **Analizator Aplikacji Android** To narzędzie może pomóc Ci w zarządzaniu różnymi narzędziami podczas analizy dynamicznej: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer) ### Wstrzyknięcie Intencji Programiści często tworzą komponenty pośredniczące, takie jak aktywności, usługi i odbiorniki nadawcze, 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łania nieeksportowanych komponentów aplikacji lub dostępu do wrażliwych dostawców treści poprzez przekierowanie tych Intencji. Przykładem jest komponent `WebView`, który konwertuje adresy URL na obiekty `Intent` za pomocą `Intent.parseUri(...)` i następnie je wykonuje, potencjalnie prowadząc do złośliwych wstrzyknięć Intencji. ### Podstawowe Wnioski * **Wstrzyknięcie Intencji** jest podobne do problemu przekierowania otwartego w sieci. * Ataki polegają na przekazywaniu obiektów `Intent` jako dodatków, które mogą być przekierowane do wykonania niebezpiecznych operacji. * Może ujawnić nieeksportowane komponenty i dostawców treści atakującym. * Konwersja adresu URL do obiektu `Intent` w `WebView` może ułatwić niezamierzone działania. ### Wstrzyknięcia Po Stronie Klienta Androida i inne Prawdopodobnie znasz tego rodzaju podatności z sieci. Musisz być szczególnie ostrożny z tymi podatnościami w aplikacji Android: * **Wstrzyknięcie SQL:** Podczas pracy z zapytaniami dynamicznymi lub dostawcami treści upewnij się, że używasz zapytań z parametrami. * **Wstrzyknięcie JavaScript (XSS):** Upewnij się, że obsługa JavaScriptu i wtyczek jest wyłączona dla wszystkich WebViews (domyślnie wyłączone). [Więcej informacji tutaj](webview-attacks.md#javascript-enabled). * **Lokalne Dołączanie Plików:** WebViews powinny mieć wyłączony dostęp do systemu plików (domyślnie włączony) - `(webview.getSettings().setAllowFileAccess(false);)`. [Więcej informacji tutaj](webview-attacks.md#javascript-enabled). * **Wieczne ciasteczka:** W kilku przypadkach, gdy aplikacja Android kończy sesję, ciasteczko nie jest unieważniane lub może nawet być zapisane na dysku. * [**Flaga Bezpieczeństwa** w ciasteczkach](../../pentesting-web/hacking-with-cookies/#cookies-flags) ***
Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami błędów! **Spostrzeżenia z Hackingu**\ Zajmij się treściami, które zagłębiają się w emocje i wyzwania związane z hakowaniem **Aktualności z Hackingu na Żywo**\ Bądź na bieżąco z szybkim tempem świata hakowania dzięki aktualnościom i spostrzeżeniom na żywo **Najnowsze Ogłoszenia**\ Bądź na bieżąco z najnowszymi programami nagród za błędy i istotnymi aktualizacjami platformy **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś! ## Automatyczna Analiza ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) **Analiza statyczna** ![](<../../.gitbook/assets/image (61).png>) **Ocena podatności aplikacji** za pomocą przyjaznego interfejsu internetowego. 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ć **aplikacje Android**(apk), **IOS**(ipa) **i Windows**(apx) (_aplikacje Windows muszą być analizowane z MobSF zainstalowanym na hoście z systemem Windows_).\ Dodatkowo, jeśli utworzysz plik **ZIP** z kodem źródłowym aplikacji **Android** lub **IOS** (przejdź do głównego folderu aplikacji, zaznacz wszystko i utwórz plik ZIP), będzie można go również przeanalizować. MobSF pozwala również na **porównywanie analiz** i integrację z **VirusTotal** (musisz ustawić swój klucz API w _MobSF/settings.py_ i włączyć go: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Możesz również ustawić `VT_UPLOAD` na `False`, wtedy **hash** zostanie **przesłany**, a nie plik. ### Wspomagana analiza dynamiczna z MobSF **MobSF** może być również bardzo pomocny w **analizie dynamicznej** w **Androidzie**, ale w tym przypadku będziesz musiał zainstalować MobSF i **genymotion** na swoim hoście (maszyna wirtualna lub Docker nie zadziała). _Uwaga: Musisz **najpierw uruchomić maszynę wirtualną w genymotion** a następnie **MobSF.**_\ Analizator dynamiczny **MobSF** może: * **Wyciągnąć 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 zrobić zrzut ekranu lub musisz nacisnąć "**Exported Activity Tester**", aby uzyskać zrzuty ekranu wszystkich wyeksportowanych aktywności. * Przechwytywać ruch **HTTPS** * Używać **Fridy** do uzyskiwania **informacji w czasie rzeczywistym** Od wersji **Androida > 5**, automatycznie uruchomi Fridę i ustawia globalne ustawienia **proxy** do **przechwytywania** ruchu. Będzie przechwytywać ruch tylko z testowanej aplikacji. **Frida** Domyślnie będzie również używać niektórych skryptów Fridy do **omijania pinowania SSL**, **wykrywania roota** i **wykrywania debugera** oraz do **monitorowania interesujących API**.\ MobSF może również **wywoływać wyeksportowane aktywności**, przechwytywać **zrzuty ekranu** z nich i **zapisywać** je do raportu. Aby **rozpocząć** testowanie dynamiczne, naciśnij zielony przycisk: "**Start Instrumentation**". Naciśnij "**Frida Live Logs**", aby zobaczyć logi generowane przez skrypty Fridy i "**Live API Monitor**", aby zobaczyć wszystkie wywołania podpiętych metod, przekazane argumenty i zwrócone wartości (to pojawi się po naciśnięciu "Start Instrumentation").\ MobSF pozwala również na załadowanie własnych **skryptów Fridy** (aby przesłać wyniki swoich skryptów Fridy do MobSF, użyj funkcji `send()`). Posiada również **kilka gotowych skryptów**, które można załadować (możesz dodać więcej w `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), po prostu **wybierz je**, naciśnij "**Load**" i naciśnij "**Start Instrumentation**" (będziesz mógł zobaczyć logi tych skryptów wewnątrz "**Frida Live Logs**"). ![](<../../.gitbook/assets/image (215).png>) Co więcej, masz kilka pomocniczych funkcji Fridy: * **Wymień załadowane klasy**: Wyświetli wszystkie załadowane klasy * **Przechwyć ciągi**: Wyświetli wszystkie przechwycone ciągi podczas korzystania z aplikacji (bardzo hałaśliwe) * **Przechwyć porównania ciągów**: Może być bardzo przydatne. Pokaże **2 porównywane ciągi** i czy wynik był Prawdziwy czy Fałszywy. * **Wymień metody klasy**: Wprowadź nazwę klasy (np. "java.io.File") i wyświetli wszystkie metody klasy. * **Wyszukaj wzorzec klasy**: Wyszukaj klasy według wzorca * **Śledź metody klasy**: **Śledź** całą **klasę** (zobacz wejścia i wyjścia wszystkich metod klasy). Pamiętaj, że domyślnie MobSF śledzi kilka interesujących metod Android Api. Po wybraniu modułu pomocniczego, którego chcesz użyć, musisz nacisnąć "**Start Intrumentation**", a wszystkie wyniki zostaną wyświetlone w "**Frida Live Logs**". **Powłoka** Mobsf dostarcza również powłokę z kilkoma poleceniami **adb**, **poleceniami MobSF** i powszechnymi **poleceniami powłoki** na dole strony analizy dynamicznej. Kilka interesujących poleceń: ```bash help shell ls activities exported_activities services receivers ``` **Narzędzia HTTP** Gdy ruch http jest przechwytywany, możesz zobaczyć nieestetyczny widok przechwyconego ruchu na dole "**HTTP(S) Traffic**" lub ładniejszy widok w zielonym przycisku "**Start HTTPTools**". Z drugiej opcji, możesz **wysłać** przechwycone żądania do **serwerów proxy** takich jak Burp lub Owasp ZAP.\ Aby to zrobić, _włącz Burp -->_ _wyłącz Intercept --> w MobSB HTTPTools wybierz żądanie_ --> naciśnij "**Send to Fuzzer**" --> _wybierz adres serwera proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)). Po zakończeniu analizy dynamicznej za pomocą MobSF, możesz nacisnąć "**Start Web API Fuzzer**" aby **testować żądania http** i szukać podatności. {% hint style="info" %} Po wykonaniu analizy dynamicznej za pomocą MobSF, ustawienia serwera proxy mogą być źle skonfigurowane i nie będzie można ich naprawić z poziomu interfejsu graficznego. Możesz naprawić ustawienia serwera proxy wykonując: ``` adb shell settings put global http_proxy :0 ``` {% endhint %} ### Wspomagana analiza dynamiczna za pomocą Inspeckage Możesz pobrać narzędzie z [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ To narzędzie używa pewnych **hooków**, abyś mógł dowiedzieć się, **co dzieje się w aplikacji** podczas wykonywania **analizy dynamicznej**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) To świetne narzędzie do przeprowadzania analizy statycznej z interfejsem graficznym. ![](<../../.gitbook/assets/image (527).png>) ### [Qark](https://github.com/linkedin/qark) To narzędzie zaprojektowane do wyszukiwania kilku **związanych z bezpieczeństwem podatności aplikacji na Androida**, zarówno w **kodzie źródłowym**, jak i **spakowanych plikach APK**. Narzędzie to jest również **zdolne do tworzenia "Proof-of-Concept" wdrażalnego pliku APK** oraz **komend ADB**, aby wykorzystać niektóre z odnalezionych podatności (odsłonięte aktywności, intencje, tapjacking...). Podobnie jak w przypadku Drozera, nie ma potrzeby rootowania urządzenia testowego. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk qark --java path/to/parent/java/folder qark --java path/to/specific/java/file.java ``` ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) * Wyświetla wszystkie wyciągnięte pliki dla łatwego odniesienia * Automatycznie dekompiluje pliki APK do formatu Java i Smali * Analizuje AndroidManifest.xml pod kątem powszechnych podatności i zachowań * Statyczna analiza kodu źródłowego pod kątem powszechnych podatności i zachowań * Informacje o urządzeniu * i wiele więcej ```bash reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) SUPER to aplikacja wiersza poleceń, która może być używana w systemach Windows, MacOS X i Linux, która analizuje pliki _.apk_ w poszukiwaniu podatności. Robi to poprzez dekompresję plików APK i stosowanie serii reguł w celu wykrycia tych podatności. Wszystkie reguły są skoncentrowane w pliku `rules.json`, i każda firma lub tester może stworzyć swoje własne reguły do analizy tego, czego potrzebują. Pobierz najnowsze binaria z [strony pobierania](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` ### [StaCoAn](https://github.com/vincentcox/StaCoAn) ![](<../../.gitbook/assets/image (62).png>) StaCoAn to narzędzie **wieloplatformowe**, które pomaga programistom, łowcom błędów i etycznym hakerom w przeprowadzaniu [analizy statycznego kodu](https://en.wikipedia.org/wiki/Static\_program\_analysis) aplikacji mobilnych. Idea polega na tym, że przeciągasz i upuszczasz plik aplikacji mobilnej (plik .apk lub .ipa) na aplikację StaCoAn, a ta wygeneruje dla Ciebie raport wizualny i przenośny. Możesz dostosować ustawienia i listy słów, aby uzyskać spersonalizowane doświadczenie. Pobierz [najnowsze wydanie](https://github.com/vincentcox/StaCoAn/releases): ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework) AndroBugs Framework to system analizy podatności Androida, który pomaga programistom lub hakerom znaleźć potencjalne luki w zabezpieczeniach aplikacji na Androida.\ [Wydania dla systemu Windows](https://github.com/AndroBugs/AndroBugs\_Framework/releases) ``` python androbugs.py -f [APK file] androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) **Androwarn** to narzędzie, którego głównym celem jest wykrywanie i ostrzeganie użytkownika o potencjalnych zachowaniach złośliwych rozwijanych przez aplikację na platformę Android. Wykrycie jest wykonywane poprzez **analizę statyczną** kodu bajtowego Dalvika aplikacji, reprezentowanego jako **Smali**, przy użyciu biblioteki [`androguard`](https://github.com/androguard/androguard). To narzędzie szuka **powszechnych zachowań "złych" aplikacji** takich jak: wyciek identyfikatorów telefonicznych, przechwytywanie strumieni audio/wideo, modyfikacja danych PIM, wykonanie arbitralnego kodu... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` ### [Framework MARA](https://github.com/xtiankisutsa/MARA_Framework) ![](<../../.gitbook/assets/image (81).png>) **MARA** to **M**obile **A**pplication **R**everse engineering and **A**nalysis Framework. Jest to narzędzie, które łączy popularne narzędzia do odwracania inżynierii i analizy aplikacji mobilnych, aby pomóc w testowaniu aplikacji mobilnych pod kątem zagrożeń bezpieczeństwa OWASP. Jego celem jest ułatwienie i uczynienie przyjaznym dla deweloperów aplikacji mobilnych oraz specjalistów ds. bezpieczeństwa. Może: * Wydobywać kod Java i Smali przy użyciu różnych narzędzi * Analizować pliki APK za pomocą: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) * Wydobywać prywatne informacje z pliku APK za pomocą wyrażeń regularnych. * Analizować Manifest. * Analizować znalezione domeny za pomocą: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) i [whatweb](https://github.com/urbanadventurer/WhatWeb) * Deobfuskować plik APK za pomocą [apk-deguard.com](http://www.apk-deguard.com) ### Koodous Przydatne do wykrywania złośliwego oprogramowania: [https://koodous.com/](https://koodous.com) ## Obfuskowanie/Deobfuskowanie kodu Zauważ, że w zależności od usługi i konfiguracji użytej do obfuskacji kodu, tajemnice mogą być lub nie być obfuskowane. ### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) Z [Wikipedii](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** to narzędzie wiersza poleceń typu open source, które zmniejsza, optymalizuje i obfuskuje kod Java. Potrafi zoptymalizować kod bajtowy oraz wykrywać i usuwać nieużywane instrukcje. ProGuard jest oprogramowaniem darmowym i jest dystrybuowany na licencji GNU General Public License, wersja 2. ProGuard jest dystrybuowany jako część Android SDK i uruchamiany jest podczas budowania aplikacji w trybie wydania. ### [DexGuard](https://www.guardsquare.com/dexguard) Znajdź przewodnik krok po kroku do deobfuskacji pliku APK na stronie [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) (Z tego przewodnika) Ostatnim razem, gdy sprawdziliśmy, tryb działania Dexguarda był następujący: * załaduj zasób jako InputStream; * przekaż wynik do klasy dziedziczącej po FilterInputStream, aby go odszyfrować; * wykonaj kilka bezużytecznych obfuskacji, aby stracić kilka minut czasu odwracającego; * przekaż odszyfrowany wynik do ZipInputStream, aby uzyskać plik DEX; * w końcu załaduj uzyskany plik DEX jako zasób za pomocą metody `loadDex`. ### [DeGuard](http://apk-deguard.com) **DeGuard odwraca proces obfuskacji wykonywany przez narzędzia obfuskacji Androida. Umożliwia to przeprowadzenie licznych analiz bezpieczeństwa, w tym inspekcję kodu i przewidywanie bibliotek.** Możesz przesłać zobfuskowany plik APK na ich platformę. ### [Simplify](https://github.com/CalebFenton/simplify) To **ogólny deobfuskator Androida.** Simplify **wirtualnie wykonuje aplikację** w celu zrozumienia jej zachowania, a następnie **stara się zoptymalizować kod** tak, aby zachowywał się identycznie, ale był łatwiejszy do zrozumienia dla człowieka. Każdy rodzaj optymalizacji jest prosty i ogólny, więc nie ma znaczenia, jaki konkretny rodzaj obfuskacji jest używany. ### [APKiD](https://github.com/rednaga/APKiD) APKiD dostarcza informacje na temat **sposobu tworzenia pliku APK**. Identyfikuje wiele **kompilatorów**, **pakowaczy**, **obfuskatorów** i innych dziwnych rzeczy. Jest to [_PEiD_](https://www.aldeid.com/wiki/PEiD) dla Androida. ### Manual [Zobacz ten samouczek, aby nauczyć się kilku sztuczek dotyczących **odwracania niestandardowej obfuskacji**](manual-deobfuscation.md) ## Laboratoria ### [Androl4b](https://github.com/sh4hin/Androl4b) AndroL4b to maszyna wirtualna zabezpieczeń Androida oparta na ubuntu-mate, zawierająca najnowsze frameworki, samouczki i laboratoria od różnych maniaków bezpieczeństwa i badaczy do odwracania inżynierii i analizy złośliwego oprogramowania. ## Odnośniki * [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) * [https://appsecwiki.com/#/](https://appsecwiki.com/#/) To świetna lista zasobów * [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Szybki kurs Androida * [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) * [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) * [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec) ## Jeszcze do wypróbowania * [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/) * [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
Dołącz do [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami błędów! **Spostrzeżenia dotyczące Hackingu**\ Zajmij się treściami, które zagłębiają się w emocje i wyzwania hackowania **Aktualności dotyczące Hackingu na Żywo**\ Bądź na bieżąco z szybkim tempem świata hackowania dzięki aktualnym wiadomościom i spostrzeżeniom **Najnowsze Ogłoszenia**\ Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platformy **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś!
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.