hacktricks/mobile-pentesting/android-app-pentesting
2024-06-05 13:51:20 +00:00
..
drozer-tutorial Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
frida-tutorial Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
adb-commands.md Translated to Polish 2024-02-11 01:46:25 +00:00
android-applications-basics.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-03-26 15:52:37 +00:00
android-task-hijacking.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
apk-decompilers.md Translated to Polish 2024-02-11 01:46:25 +00:00
avd-android-virtual-device.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
bypass-biometric-authentication-android.md Translated to Polish 2024-02-11 01:46:25 +00:00
content-protocol.md Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/ 2024-05-02 15:11:26 +00:00
exploiting-a-debuggeable-applciation.md Translated to Polish 2024-02-11 01:46:25 +00:00
google-ctf-2018-shall-we-play-a-game.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
install-burp-certificate.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
intent-injection.md Translated to Polish 2024-02-11 01:46:25 +00:00
make-apk-accept-ca-certificate.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-03-26 15:52:37 +00:00
manual-deobfuscation.md Translated to Polish 2024-02-11 01:46:25 +00:00
react-native-application.md Translated to Polish 2024-02-11 01:46:25 +00:00
README.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-06-05 13:51:20 +00:00
reversing-native-libraries.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00
smali-changes.md Translated to Polish 2024-02-11 01:46:25 +00:00
spoofing-your-location-in-play-store.md Translated to Polish 2024-02-11 01:46:25 +00:00
tapjacking.md Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/ 2024-05-02 15:11:26 +00:00
webview-attacks.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:39:36 +00:00

Testowanie penetracyjne aplikacji na Androida

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

Inne sposoby wsparcia HackTricks:

Dołącz do serwera HackenProof Discord, aby komunikować się z doświadczonymi hakerami i łowcami błędów!

Spojrzenie na Hacking
Zajmij się treściami, 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 aktualnościom i spojrzeniom na żywo

Najnowsze Ogłoszenia
Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platform

Dołącz do nas na Discordzie i zacznij współpracować z najlepszymi hakerami już dziś!

Podstawy Aplikacji na Androida

Zaleca się rozpoczęcie czytania tej strony, 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 {% endcontent-ref %}

ADB (Android Debug Bridge)

To główne narzędzie, którego potrzebujesz do połączenia z urządzeniem z systemem 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, instalację i odinstalowanie aplikacji, wykonywanie poleceń powłoki, tworzenie kopii zapasowych danych, czytanie logów, między innymi funkcje.

Zajrzyj do poniższej listy Polecenia ADB, 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 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

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
  • Scal wszystkie podziały i podstawowe pliki APK za pomocą APKEditor:
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 1 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk

# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed

Analiza statyczna

Po pierwsze, aby przeanalizować plik APK, powinieneś przejrzeć kod Javy za pomocą dekompilatora.
Proszę, zapoznaj się tutaj z informacjami o różnych dostępnych dekompilatorach.

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), 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 na temat Firebase i jak go wykorzystać znajdziesz tutaj.

Podstawowe zrozumienie aplikacji - Manifest.xml, strings.xml

Analiza plików _Manifest.xml i strings.xml aplikacji może ujawnić potencjalne podatności bezpieczeństwa. Do tych plików można uzyskać dostęp za pomocą dekompilatorów lub zmieniając rozszerzenie pliku APK na .zip, a następnie rozpakowując go.

Zidentyfikowane z Manifest.xml podatności 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 eksploatowania 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 dotyczące bezpieczeństwa, 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 konieczność 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.

Znajdź więcej informacji tutaj:

{% content-ref url="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 używa tej prawdziwej).

Więcej informacji:

{% content-ref url="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ętrznejprzeznaczone do dostępu wyłącznie przez aplikację, która je utworzyła. Ta zasada bezpieczeństwa jest egzekwowana przez system operacyjny Android i jest zazwyczaj wystarczająca 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.
  1. 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ć dostęp do tych plików.
  1. 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ą.
  1. 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 niesprawdzonego ź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 uzyskaniu 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/<nazwapakietu>/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/<nazwapakietu>/databases/ i czasami możliwe jest znalezienie wrażliwych informacji w tekście jawnym w tym folderze.

Uszkodzone TLS

Akceptuj wszystkie certyfikaty

Z jakiegoś powodu czasami deweloperzy akceptują wszystkie certyfikaty, nawet jeśli na przykład nazwa hosta nie pasuje do linii kodu, takiej jak ta:

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/wykonalnym 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 wykonywania sprawdzeń autoryzacyjnych, przechowywania lub wysyłania danych. Niektóre z tych algorytmów to: RC4, MD4, MD5, SHA1... Jeśli hasła są przechowywane jako hasze, powinno się używać haszy odporne na ataki brutalne z solą.

Inne sprawdzenia

  • Zaleca się zaciemnienie APK, aby utrudnić odwrócenie inżynierii 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 sprawdzać, czy jest używany emulator.
  • Jeśli aplikacja jest wrażliwa (np. aplikacje bankowe), powinna sprawdzać swoją integralność przed wykonaniem, aby sprawdzić, czy została zmodyfikowana.
  • Użyj APKiD, aby sprawdzić, który kompilator/pakietownik/zaciemniacz 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 {% 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 {% endcontent-ref %}

Aplikacje Superpacked

Zgodnie z tym postem na blogu superpacked to meta algorytm, 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 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) oraz reguły. Te reguły wskazują kombinację źródeł-sinks, które wskazują 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óre możesz odkryć. Możesz użyć narzędzia takiego jak https://github.com/dwisiswant0/apkleaks

Ominięcie uwierzytelniania biometrycznego

{% content-ref url="bypass-biometric-authentication-android.md" %} bypass-biometric-authentication-android.md {% endcontent-ref %}

Inne interesujące funkcje

Inne sztuczki

{% content-ref url="content-protocol.md" %} content-protocol.md {% endcontent-ref %}


Dołącz do serwera HackenProof Discord, 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 o hakerstwie na żywo
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 platform

Dołącz do nas na Discordzie i zacznij współpracować z najlepszymi hakerami już dziś!


Analiza dynamiczna

Po pierwsze, 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 urządzenia zrootowanego (emulowanego lub nie).

Analiza dynamiczna online

Możesz założyć darmowe konto na: https://appetize.io/. Ta platforma pozwala przesyłać i wykonywać APK, co jest przydatne do monitorowania zachowania aplikacji.

Możesz nawet zobaczyć logi swojej aplikacji w sieci i połączyć się za pomocą adb.

Dzięki połączeniu ADB możesz używać Drozera i Fridy wewnątrz emulatorów.

Lokalna analiza dynamiczna

Korzystanie z emulatora

  • Android Studio (Możesz tworzyć urządzenia x86 i arm, a według tego najnowsze wersje x86 obsługują biblioteki ARM bez konieczności wolnego emulowania arm).
  • Dowiedz się, jak to skonfigurować na tej stronie:

{% content-ref url="avd-android-virtual-device.md" %} avd-android-virtual-device.md {% endcontent-ref %}

  • Genymotion (Wersja darmowa: Personal Edition, musisz założyć konto. Zaleca się pobranie wersji Z VirtualBox aby uniknąć potencjalnych błędów.)
  • Nox (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:

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 z narzędziami).

Użyj urządzenia fizycznego

Musisz aktywować opcje debugowania, a byłoby fajnie, gdybyś mógł je zrootować:

  1. Ustawienia.
  2. (Od Androida 8.0) Wybierz System.
  3. Wybierz Informacje o telefonie.
  4. Naciśnij 7 razy Numer kompilacji.
  5. Wróć i znajdziesz Opcje programistyczne.

Po zainstalowaniu aplikacji pierwszą rzeczą, którą powinieneś zrobić, jest jej przetestowanie i zbadanie, co robi, jak działa i jak się z nią komfortowo czujesz.
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 być ostrożni przy ujawnianiu publicznie informacji debugowania, ponieważ może to prowadzić do wycieku wrażliwych danych. Narzędzia pidcat i adb logcat są zalecane do monitorowania logów aplikacji w celu zidentyfikowania i ochrony wrażliwych informacji. Pidcat jest preferowany ze względu na łatwość użycia i czytelność.

{% hint style="warning" %} Zauważ, że od wersji nowszej niż Android 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 zaleca się nie logowanie wrażliwych informacji. {% endhint %}

Bufor schowka kopiuj/wklej

Framework oparty na schowku systemu Android umożliwia funkcjonalność 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 z 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 wyciekają 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 jakiekolwiek wrażliwe informacje są wysyłane do usług stron trzecich.

Bazy danych SQLite

Większość aplikacji będzie korzystać z wewnętrznych baz danych SQLite do zapisywania informacji. Podczas pentestu przyjrzyj się utworzonym bazom danych, nazwom tabel i kolumn oraz wszystkim danych zapisanym, ponieważ możesz znaleźć wrażliwe informacje (co stanowiłoby lukę w zabezpieczeniach).
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 luka w zabezpieczeniach.

Wylicz tabele za pomocą .tables i wylicz kolumny tabel wykonując .schema <nazwa_tabeli>

Drozer (Wykorzystywanie działań, dostawców treści i usług)

Z Dokumentacji Drozera: 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 (IPC) systemu Android 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.
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.

Możesz także uruchomić eksportowane działanie z adb:

  • NazwaPakietu to com.example.demo
  • NazwaEksportowanegoDziałania to com.example.test.MainActivity
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, 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.

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.
Dostawcy treści są podstawowo używani do udostępniania danych. Jeśli aplikacja ma dostępne dostawcy 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.

Wykorzystywanie Usług

Przeczytaj to, jeśli chcesz odświeżyć sobie, czym jest Usługa.
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 uwierzytelniania...
Dowiedz się, jak wykorzystać Usługi za pomocą Drozera.

Wykorzystywanie Odbiorników Nadawczych

Przeczytaj to, jeśli chcesz odświeżyć sobie, czym jest Odbiornik Nadawczy.
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.

Wykorzystywanie Schematów / Głębokich odnośników

Możesz ręcznie szukać głębokich odnośników, używając narzędzi takich jak MobSF lub skryptów takich jak ten.
Możesz otworzyć zadeklarowany schemat za pomocą adb lub przeglądarki:

{% code overflow="wrap" %}

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" %}

<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>

{% 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.

Informacje poufne

Za każdym razem, gdy znajdziesz link głęboki, sprawdź, czy nie otrzymuje on poufnych danych (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ć dostęp do ścieżki, uzyskując coś w rodzaju: 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.

Więcej przykładów

Interesujący raport z programu bug bounty znajdziesz tutaj na temat linków (/.well-known/assetlinks.json).

Błędy w Inspekcji i Weryfikacji Warstwy Transportowej

  • Certyfikaty nie zawsze są odpowiednio sprawdzane przez aplikacje Android. Często te aplikacje ignorują 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 zapewnia wszechstronną pomoc.

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 zainstalowania tego certyfikatu, zaszyfrowany ruch może nie być widoczny przez proxy. Aby uzyskać przewodnik po instalacji niestandardowego certyfikatu CA, kliknij tutaj.

Aplikacje kierowane do poziomu API 24 i wyższego wymagają modyfikacji konfiguracji zabezpieczeń sieciowych, aby zaakceptować certyfikat CA proxy. Ten krok jest kluczowy dla inspekcji zaszyfrowanego ruchu. Aby uzyskać instrukcje dotyczące modyfikacji konfiguracji zabezpieczeń sieciowych, odwołaj się do tego samouczka.

Omijanie SSL Pinning

Gdy jest wdrożony SSL Pinning, konieczne staje się jego obejście w celu inspirowania ruchu HTTPS. Dostępne są różne metody w tym celu:

  • Automatycznie zmodyfikuj apk, aby obejść SSL Pinning za pomocą 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, co nie zawsze działa.
  • Możesz użyć Frida (omówiony 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/
  • Możesz również spróbować automatycznie ominąć SSL Pinning za pomocą objection: 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

Wyszukiwanie Powszechnych Podatności Sieci Web

Ważne jest również wyszukiwanie powszechnych podatności sieci web w aplikacji. Szczegółowe informacje na temat identyfikacji i łagodzenia tych podatności wykraczają poza zakres tego podsumowania, ale są szeroko omówione gdzie indziej.

Frida

Frida 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ć penetracyjnie aplikacje Android, musisz wiedzieć, jak korzystać z Fridy.

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 możesz zrzucić pamięć aplikacji za pomocą:

# With PID
python3 fridump3.py -u <PID>

# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"

To spowoduje zrzucenie pamięci do folderu ./dump, a następnie możesz użyć polecenia grep, na przykład:

{% code overflow="wrap" %}

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 niego dostępu. Ponieważ aplikacje mają tendencję do przechowywania tutaj danych wrażliwych w postaci zwykłego tekstu, 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

frida -U -f com.example.app -l frida-scripts/tracer-cipher.js

Ominięcie odcisku palca/biometrii

Za pomocą poniższego skryptu Frida można zignorować uwierzytelnianie odciskiem palca które aplikacje na Androida mogą wykonywać w celu ochrony określonych wrażliwych obszarów:

{% code overflow="wrap" %}

frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>

{% 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 flaga, zawartość okna jest traktowana jako bezpieczna, co zapobiega pojawianiu się jej na zrzutach ekranu lub oglądaniu na niezabezpieczonych wyświetlaczach.

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

Wstrzykiwanie 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, co potencjalnie prowadzi do złośliwych wstrzykiwań Intencji.

Podstawowe Wnioski

  • Wstrzykiwanie Intencji jest podobne do problemu przekierowania otwartego w sieci.
  • Wykorzystanie polega 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 przez WebView może ułatwić niezamierzone działania.

Wstrzykiwania 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:

  • Wstrzykiwanie SQL: Podczas pracy z zapytaniami dynamicznymi lub dostawcami treści upewnij się, że używasz zapytań z parametrami.
  • Wstrzykiwanie JavaScript (XSS): Upewnij się, że obsługa JavaScriptu i wtyczek jest wyłączona dla wszystkich WebViews (domyślnie wyłączone). Więcej informacji tutaj.
  • 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.
  • Wieczyste ciasteczka: W kilku przypadkach, gdy aplikacja Android kończy sesję, ciasteczko nie jest unieważniane lub może być nawet zapisane na dysku.
  • Flaga Bezpieczeństwa w ciasteczkach

Dołącz do serwera HackenProof Discord, 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 hakerstwem

Aktualności z Hackingu na Żywo
Bądź na bieżąco z szybkim tempem świata hakerstwa dzięki aktualnościom i spostrzeżeniom 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 i zacznij współpracować z najlepszymi hakerami już dziś!

Automatyczna Analiza

MobSF

Analiza statyczna

Ocena podatności aplikacji za pomocą przyjaznego interfejsu internetowego. Możesz również przeprowadzić analizę dynamiczną (ale musisz przygotować środowisko).

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) oraz 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 analizy oraz integrację z VirusTotal (musisz 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 wysłany zamiast pliku.

Wspomagana analiza dynamiczna z użyciem MobSF

MobSF może być również bardzo pomocny przy analizie dynamicznej w Androidzie, ale w tym przypadku będziesz musiał zainstalować MobSF oraz genymotion na swoim hoście (maszyna wirtualna lub Docker nie będą działać). Uwaga: Musisz najpierw uruchomić maszynę wirtualną w genymotion a następnie MobSF.

Analizator dynamiczny MobSF może:

  • Wyciągać dane aplikacji (URL-e, logi, schowek, zrzuty ekranu wykonane przez Ciebie, zrzuty ekranu wykonane przez "Exported Activity Tester", 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ć z nich zrzuty ekranu 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 oraz "Live API Monitor", aby zobaczyć wszystkie wywołania do 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").

Ponadto, dostępne są niektóre pomocnicze funkcje 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 następnie zobaczysz wszystkie wyniki 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ń:

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\).

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.
To narzędzie używa kilku hooków, abyś mógł dowiedzieć się, co dzieje się w aplikacji podczas wykonywania analizy dynamicznej.

Yaazhini

To świetne narzędzie do przeprowadzania analizy statycznej z interfejsem graficznym.

Qark

To narzędzie zostało 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.

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

  • 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
reverse-apk relative/path/to/APP.apk

SUPER Android Analyzer

SUPER to aplikacja wiersza poleceń, która może być używana w systemach Windows, MacOS X i Linux do analizy plików .apk w poszukiwaniu podatności. Robi to poprzez dekompresję plików APK i stosowanie serii reguł do wykrywania tych podatności.

Wszystkie reguły są skupione 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

super-analyzer {apk_file}

StaCoAn

StaCoAn to narzędzie wieloplatformowe, które pomaga programistom, łowcom błędów i etycznym hakerom w przeprowadzaniu analizy statycznego kodu 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:

./stacoan

AndroBugs

AndroBugs Framework to system analizy podatności systemu Android, który pomaga programistom lub hakerom znaleźć potencjalne luki w zabezpieczeniach aplikacji Android.
Wydania dla systemu Windows

python androbugs.py -f [APK file]
androbugs.exe -f [APK file]

Androwarn

Androwarn to narzędzie, którego głównym celem jest wykrywanie i ostrzeganie użytkownika o potencjalnych zachowaniach złośliwych opracowanych przez aplikację na platformę Android.

Wykrycie jest wykonywane poprzez analizę statyczną kodu bajtowego Dalvika aplikacji, reprezentowanego jako Smali, przy użyciu biblioteki 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

MARA to Mobile Application Reverse engineering and Analysis 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:

Koodous

Przydatne do wykrywania złośliwego oprogramowania: https://koodous.com/

Obfuskacja/Deobfuskacja kodu

Zauważ, że w zależności od usługi i konfiguracji użytej do obfuskacji kodu, tajemnice mogą być lub nie być zakończone obfuskacją.

ProGuard

Z Wikipedii: 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

Znajdź przewodnik krok po kroku do deobfuskacji pliku APK na stronie 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;
  • przekaz wynik do klasy dziedziczącej po FilterInputStream, aby go odszyfrować;
  • wykonaj kilka bezużytecznych obfuskacji, aby stracić kilka minut czasu odwracającego;
  • przekaz odszyfrowany wynik do ZipInputStream, aby uzyskać plik DEX;
  • w końcu załaduj uzyskany plik DEX jako zasób za pomocą metody loadDex.

DeGuard

DeGuard odwraca proces obfuskacji wykonywanej przez narzędzia obfuskacji Androida. Umożliwia to wiele analiz związanych z bezpieczeństwem, w tym inspekcję kodu i przewidywanie bibliotek.

Możesz przesłać zobfuskowany plik APK na ich platformę.

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

APKiD dostarcza informacje na temat sposobu tworzenia pliku APK. Identyfikuje wielu kompilatorów, pakowaczy, obfuskatorów i innych dziwnych rzeczy. To jest PEiD dla Androida.

Manual

Zobacz ten samouczek, aby nauczyć się kilku sztuczek dotyczących odwracania niestandardowej obfuskacji

Laboratoria

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.

Referencje

Jeszcze do wypróbowania

Dołącz do HackenProof Discord, 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 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 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: