.. | ||
drozer-tutorial | ||
frida-tutorial | ||
adb-commands.md | ||
android-applications-basics.md | ||
android-task-hijacking.md | ||
apk-decompilers.md | ||
avd-android-virtual-device.md | ||
bypass-biometric-authentication-android.md | ||
content-protocol.md | ||
exploiting-a-debuggeable-applciation.md | ||
google-ctf-2018-shall-we-play-a-game.md | ||
install-burp-certificate.md | ||
intent-injection.md | ||
make-apk-accept-ca-certificate.md | ||
manual-deobfuscation.md | ||
react-native-application.md | ||
README.md | ||
reversing-native-libraries.md | ||
smali-changes.md | ||
spoofing-your-location-in-play-store.md | ||
tapjacking.md | ||
webview-attacks.md |
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!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
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 najbardziej niebezpiecznych 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 Android (emulowanym lub fizycznym).
ADB pozwala na kontrolę urządzeń 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. Następnie zawsze pamiętaj o tej możliwości.
Inne interesujące sztuczki
- Podrabianie lokalizacji w Sklepie Play
- Pobierz APK: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/
- Wyodrębnij APK z urządzenia:
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, aby przeanalizować plik APK, powinieneś przejrzeć kod Javy za pomocą dekompilatora.
Proszę, zapoznaj się tutaj z informacjami o 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, identyfikatorów 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. Te pliki można uzyskać 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: Eksponowani 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
imaxSdkVersion
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.
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ę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.
- Analiza statyczna:
- Upewnij się, że korzystanie z
MODE_WORLD_READABLE
iMODE_WORLD_WRITABLE
jest dokładnie przeanalizowane. Te tryby mogą potencjalnie ujawnić pliki do niezamierzonego lub nieautoryzowanego dostępu.
- 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:
- 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.
- 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ą.
- 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.
Do pamięci zewnętrznej można uzyskać dostęp w /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/<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, jak w poniższym kodzie:
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ą używane do przechowywania haseł na przykład, należy używać hashy odporne na ataki brutalnej siły 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 sprawdzić, czy jest używany emulator.
- Jeśli aplikacja jest wrażliwa (np. aplikacje bankowe), powinna sprawdzić swoją integralność przed wykonaniem, aby sprawdzić, czy została zmodyfikowana.
- Użyj APKiD, aby sprawdzić, który kompilator/packer/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) i 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 niej, 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
- Wykonanie kodu:
Runtime.exec(), ProcessBuilder(), kod natywny:system()
- Wysyłanie SMS-ów:
sendTextMessage, sendMultipartTestMessage
- Funkcje natywne zadeklarowane jako
native
:public native, System.loadLibrary, System.load
- Przeczytaj to, aby dowiedzieć się, jak odwrócić funkcje natywne
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!
Spostrzeżenia dotyczące hakerstwa
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 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ś!
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 utworzyć darmowe konto na: https://appetize.io/. Ta platforma pozwala przesyłać i wykonywać APK, co jest przydatne do zobaczenia, jak zachowuje się apk.
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 utworzyć 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 obrazie:
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 z narzędziami).
Użyj fizycznego urządzenia
Musisz aktywować opcje debugowania, a byłoby fajnie, gdybyś mógł je zrootować:
- Ustawienia.
- (Od Androida 8.0) Wybierz System.
- Wybierz Informacje o telefonie.
- Naciśnij Numer kompilacji 7 razy.
- Wróć i znajdziesz Opcje programistyczne.
Po zainstalowaniu aplikacji, pierwszą rzeczą, jaką 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 dowiedzieć się, 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 wycieków danych. Narzędzia 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 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 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
np. /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 za pomocą .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 to przydatne narzędzie 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 w aplikacji Android.
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" %} Zauważ, że bypass autoryzacji nie zawsze jest podatnością, to zależy 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, to mamy do czynienia z ujawnieniem wrażliwych informacji.
Tapjacking
Jeśli tapjacking nie jest zapobiegany, możesz nadużyć zewnętrznej aktywności, aby 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 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.
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 autoryzacji...
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 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.
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 zauważyć, ż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
Zawsze, 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ć 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.
Więcej przykładów
Interesujący raport z programu bug bounty znajdziesz tutaj dotyczący 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 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), umożliwiając atakującym 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 danych poufnych, 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 danych poufnych 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 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 informacje poufne.
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 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.
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. 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/
- 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.
- Dowiedz się, jak korzystać z Fridy: Samouczek Frida
- Pewne "GUI" do działań z Fridą: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection świetnie automatyzuje korzystanie z Fridy: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Możesz znaleźć niektóre niesamowite skrypty Fridy tutaj: https://codeshare.frida.re/
- Spróbuj ominąć mechanizmy anty-debugowania / anty-Fridy, ładując Fridę, jak wskazano tutaj https://erfur.github.io/blog/dev/code-injection-without-ptrace (narzędzie linjector)
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 wyciek pamięci do folderu ./dump, a następnie możesz przeszukać go za pomocą polecenia grep, na przykład:
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 %}
Czułe dane w Keystore
W systemie Android Keystore jest najlepszym miejscem do przechowywania danych czułych, jednakże przy wystarczających uprawnieniach jest wciąż możliwe uzyskanie do nich dostępu. Ponieważ aplikacje mają tendencję do przechowywania tutaj czułych danych w postaci zwykłego tekstu, testy penetracyjne powinny to sprawdzać, ponieważ użytkownik root lub osoba mająca fizyczny dostęp do urządzenia może być w stanie je ukraść.
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
Ominicie odcisku palca/biometrii
Za pomocą poniższego skryptu Frida można próbować ominąć uwierzytelnianie odciskiem palca które aplikacje na Androida mogą stosować w celu ochrony określonych wrażliwych obszarów:
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
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 uzyskanie dostępu do poufnych 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(...)
a następnie wykonuje je, co potencjalnie prowadzi do złośliwych wstrzyknięć Intencji.
Podstawowe Wnioski
- Wstrzyknięcie Intencji jest podobne do problemu przekierowania otwartego w sieci web.
- 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
przezWebView
może ułatwić niezamierzone działania.
Wstrzyknięcia po stronie klienta Androida i inne
Prawdopodobnie znasz tego rodzaju podatności z sieci web. 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): Sprawdź, czy 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 nawet być 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 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 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 analiz 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 także ustawić VT_UPLOAD
na False
, wtedy skrót zostanie wysłany zamiast pliku.
Asystowana 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 (adresy URL, logi, schowek, zrzuty ekranu wykonane przez ciebie, zrzuty ekranu wykonane przez "Eksportowane narzędzie aktywności", 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ąć "Eksportowane narzędzie aktywności", aby uzyskać zrzuty ekranu wszystkich wyeksportowanych aktywności.
- Przechwytywać ruch HTTPS
- Używać Fridy do uzyskania 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 przypięcia 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: "Rozpocznij instrumentację". Naciśnij "Dzienniki na żywo Fridy", aby zobaczyć dzienniki generowane przez skrypty Fridy i "Monitor API na żywo", aby zobaczyć wszystkie wywołania do podpiętych metod, przekazane argumenty i zwrócone wartości (to pojawi się po naciśnięciu "Rozpocznij instrumentację").
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 "Załaduj" i naciśnij "Rozpocznij instrumentację" (będziesz mógł zobaczyć dzienniki tych skryptów wewnątrz "Dzienników na żywo Fridy").
Co więcej, masz kilka pomocniczych funkcji Fridy:
- Wylicz załadowane klasy: Wyświetli wszystkie załadowane klasy
- Przechwyć ciągi znaków: Wyświetli wszystkie przechwycone ciągi znaków 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.
- Wylicz 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: Śledzi 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ąć "Rozpocznij instrumentację", a zobaczysz wszystkie wyniki w "Dziennikach na żywo Fridy".
Powłoka
MobSF dostarcza również powłokę z kilkoma poleceniami adb, poleceniami MobSF i standardowymi 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 pewnych hooków, abyś mógł dowiedzieć się, co dzieje się w aplikacji podczas wykonywania analizy dynamicznej.
Yaazhini
To wspaniałe narzędzie do przeprowadzania analizy statycznej za pomocą interfejsu graficznego
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 "dowodów koncepcji" w postaci APK do wdrożenia 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ą 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 ze strony pobierania
super-analyzer {apk_file}
StaCoAn
StaCoAn to narzędzie wieloplatformowe, które pomaga programistom, łowcom luk bugów i etycznym hakerom przeprowadzać analizę 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 Androida, który pomaga programistom lub hakerom znaleźć potencjalne luki w zabezpieczeniach aplikacji na Androida.
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 rozwijanych przez aplikację na platformę Android.
Wykrycie odbywa się 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 Mobilny Anarzędzie do Reverse engineeringu i Analizy aplikacji. Jest to narzędzie, które łączy popularne narzędzia do reverse engineeringu i analizy aplikacji mobilnych, aby pomóc w testowaniu aplikacji mobilnych pod kątem zagrożeń bezpieczeństwa mobilnego zgodnie z 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 za pomocą różnych narzędzi
- Analizować pliki APK za pomocą: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Wydobywać prywatne informacje z pliku APK za pomocą wyrażeń regularnych.
- Analizować Manifest.
- Analizować znalezione domeny za pomocą: pyssltest, testssl i whatweb
- Deobfuskować plik APK za pomocą apk-deguard.com
Koodous
Przydatne do wykrywania złośliwego oprogramowania: https://koodous.com/
Zasłanianie/Dezaktywowanie kodu
Zauważ, że w zależności od usługi i konfiguracji, które używasz do zasłaniania kodu, tajemnice mogą być lub nie być zasłonięte.
ProGuard
Z Wikipedii: ProGuard to narzędzie wiersza poleceń typu open source, które zmniejsza, optymalizuje i zasłania kod Javy. 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 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
DeGuard odwraca proces obfuskacji wykonywany przez narzędzia do obfuskacji Androida. Umożliwia to wiele analiz związanych z bezpieczeństwem, w tym inspekcję kodu i przewidywanie bibliotek.
Możesz przesłać zasłonięty 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 wiele kompilatorów, pakowaczy, obfuskatorów i innych dziwnych rzeczy. To jest PEiD dla Androida.
Manual
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 reverse engineeringu i analizy złośliwego oprogramowania.
Odnośniki
- https://owasp.org/www-project-mobile-app-security/
- https://appsecwiki.com/#/ To świetna lista zasobów
- https://maddiestone.github.io/AndroidAppRE/ Szybki kurs Androida
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
- https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
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 hakerstwa
Zajmij się treściami, które zagłębiają się w emocje i wyzwania hakerstwa
Aktualności na żywo dotyczące hakerstwa
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 nagród za błędy 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:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.