11 KiB
Samouczek Objection
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 github repos.
Wskazówka dotycząca nagrody za błąd: Zarejestruj się na platformie Intigriti, premium platformie nagród za błędy stworzonej przez hakerów, dla hakerów! Dołącz do nas na https://go.intigriti.com/hacktricks już dziś i zacznij zarabiać nagrody aż do 100 000 USD!
{% embed url="https://go.intigriti.com/hacktricks" %}
Wprowadzenie
Objection - Badanie uruchomieniowe aplikacji mobilnych
Objection to narzędzie do badania uruchomieniowego aplikacji mobilnych, zasilane przez Frida. Zostało zbudowane w celu pomocy w ocenie aplikacji mobilnych i ich stanu bezpieczeństwa bez konieczności posiadania zrootowanego urządzenia mobilnego.
Uwaga: To nie jest forma ominięcia jailbreaka / roota. Korzystając z objection
, nadal jesteś ograniczony przez wszystkie restrykcje narzucone przez odpowiedni sandbox, z którym się zmagasz.
Podsumowanie
Celem objection jest umożliwienie użytkownikowi wywołania głównych akcji oferowanych przez Fridę. W przeciwnym razie, użytkownik będzie musiał stworzyć pojedynczy skrypt dla każdej aplikacji, którą chce przetestować.
Samouczek
W tym samouczku będę korzystał z pliku APK, który możesz pobrać tutaj:
{% file src="../../../.gitbook/assets/app-release.zip" %}
Lub ze oryginalnego repozytorium (pobierz app-release.apk)
Instalacja
pip3 install objection
Połączenie
Nawiąż zwykłe połączenie ADB i uruchom serwer frida na urządzeniu (i sprawdź, czy frida działa zarówno po stronie klienta, jak i serwera).
Jeśli korzystasz z zrootowanego urządzenia, konieczne jest wybranie aplikacji, którą chcesz przetestować w opcji --gadget. W tym przypadku:
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
Podstawowe czynności
Nie wszystkie możliwe polecenia objections zostaną wymienione w tym samouczku, tylko te, które uważam za bardziej przydatne.
Środowisko
W środowisku można znaleźć pewne interesujące informacje (takie jak hasła czy ścieżki).
env
Informacje o Fridzie
frida
Przesyłanie/Pobieranie
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Importowanie skryptu frida
import <local path frida-script>
SSLPinning
SSLPinning
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Wykrywanie roota
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Wykonaj polecenie
android shell_exec whoami
Zrzuty ekranu
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
Analiza statyczna staje się dynamiczna
W rzeczywistej aplikacji powinniśmy znać wszystkie informacje odkryte w tej części przed użyciem sprzeciwu dzięki analizie statycznej. W każdym razie w ten sposób możesz zobaczyć coś nowego, ponieważ tutaj będziesz mieć tylko kompletną listę klas, metod i obiektów eksportowanych.
Jest to również przydatne, jeśli w jakiś sposób nie możesz uzyskać czytelnego kodu źródłowego aplikacji.
Wyświetl listę aktywności, odbiorników i usług
android hooking list activities
android hooking list services
android hooking list receivers
Frida wywoła błąd, jeśli żaden nie zostanie znaleziony
Pobieranie bieżącej aktywności
android hooking get current_activity
Wyszukiwanie klas
Zacznijmy szukać klas w naszej aplikacji
android hooking search classes asvid.github.io.fridaapp
Metody wyszukiwania klasy
Teraz wyodrębnijmy metody wewnątrz klasy MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
Lista zadeklarowanych metod klasy wraz z ich parametrami
Sprawdźmy, jakie parametry są wymagane przez metody klasy:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Wyświetlanie listy klas
Możesz również wyświetlić wszystkie klasy załadowane w bieżącej aplikacji:
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
To jest bardzo przydatne, jeśli chcesz przypiąć metodę klasy i znasz tylko nazwę klasy. Możesz użyć tej funkcji do znalezienia modułu, który jest właścicielem klasy, a następnie przypiąć jego metodę.
Łatwe przypinanie
Przypinanie (obserwowanie) metody
Z kodu źródłowego aplikacji wiemy, że funkcja sum() z klasy MainActivity jest wywoływana co sekundę. Spróbujmy wypisać wszystkie możliwe informacje za każdym razem, gdy funkcja jest wywoływana (argumenty, wartość zwracana i ślad wsteczny):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
Podpięcie (obserwowanie) całej klasy
Faktycznie uważam, że wszystkie metody klasy MainActivity są naprawdę interesujące, po prostu podpięmy je wszystkie. Bądź ostrożny, to może spowodować zawieszenie aplikacji.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
Jeśli grasz w aplikację podczas podpięcia klasy, zobaczysz, kiedy każda funkcja jest wywoływana, jej argumenty i wartość zwracana.
Zmiana wartości logicznej zwracanej przez funkcję
Z kodu źródłowego widać, że funkcja checkPin otrzymuje String jako argument i zwraca boolean. Zmodyfikujmy funkcję tak, aby zawsze zwracała true:
Teraz, jeśli wpiszesz cokolwiek w polu tekstowym dla kodu PIN, zobaczysz, że wszystko jest uznawane za poprawne:
Instancje klasy
Wyszukaj i wydrukuj aktywne instancje określonej klasy Java, określonej pełną nazwą klasy. Wynik to próba uzyskania wartości łańcuchowej dla odkrytego zarzutu, który zazwyczaj zawiera wartości właściwości obiektu.
android heap print_instances <class>
Keystore/Intents
Możesz bawić się keystore i intents używając:
android keystore list
android intents launch_activity
android intent launch_service
Pamięć
Zrzut
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
Lista
memory list modules
Na dole listy możesz zobaczyć fridę:
Sprawdźmy, co eksportuje frida:
Szukaj/Pisz
Możesz również wyszukiwać i pisać w pamięci za pomocą objection:
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
SQLite
Możesz użyć polecenia sqlite
, aby interaktywnie działać z bazami danych sqlite.
Wyjście
exit
Czego mi brakuje w Objection
- Metody hakowania czasami powodują awarie aplikacji (to także z powodu Fridy).
- Nie można używać instancji klas do wywoływania funkcji instancji. Nie można również tworzyć nowych instancji klas i używać ich do wywoływania funkcji.
- Nie ma skrótu (podobnego do tego dla sslpinnin), aby hakować wszystkie wspólne metody kryptograficzne używane przez aplikację, aby zobaczyć zaszyfrowany tekst, tekst czysty, klucze, IV i używane algorytmy.
Wskazówka dotycząca nagrody za błąd: Zarejestruj się na platformie Intigriti, premium platformie do nagród za błędy stworzonej przez hakerów, dla hakerów! Dołącz do nas na https://go.intigriti.com/hacktricks już dziś i zacznij zarabiać nagrody do $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
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 github repos.