.. | ||
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 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
- Podrabianie lokalizacji w Sklepie Play
- Pobierz pliki APK: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/, https://github.com/kiber-io/apkd
- Wyodrębnij plik 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
- 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
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 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ętrznej są przeznaczone 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.
- 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 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
- 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!
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ć:
- Ustawienia.
- (Od Androida 8.0) Wybierz System.
- Wybierz Informacje o telefonie.
- Naciśnij 7 razy Numer kompilacji.
- 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.
- 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 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
przezWebView
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:
- 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/
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
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
- 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 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:
- 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.