18 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ź PLAN SUBSKRYPCJI!
- 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 bug bounty: zarejestruj się na platformie Intigriti, premium platformie bug bounty 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 USD!
{% embed url="https://go.intigriti.com/hacktricks" %}
Wprowadzenie
Objection - Eksploracja uruchomieniowa na urządzeniach mobilnych
Objection to narzędzie do eksploracji uruchomieniowej na urządzeniach mobilnych, oparte na Frida. Zostało stworzone w celu pomocy w ocenie aplikacji mobilnych i ich bezpieczeństwa bez konieczności posiadania urządzenia mobilnego z jailbreakiem lub rootem.
Uwaga: To nie jest forma omijania jailbreaka / roota. Korzystając z objection
, nadal jesteś ograniczony przez wszystkie ograniczenia narzucane przez odpowiedni sandbox, z którym się spotykasz.
Podsumowanie
Celem narzędzia objection jest umożliwienie użytkownikowi wywoływania 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żna pobrać tutaj:
{% file src="../../../.gitbook/assets/app-release.zip" %}
Lub z 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 używasz urządzenia z rootem, 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 działania
W tym samouczku nie będą wymienione wszystkie możliwe polecenia objections, tylko te, które uważam za bardziej przydatne.
Środowisko
W środowisku można znaleźć interesujące informacje (takie jak hasła czy ścieżki).
env
Informacje o Fridzie
Frida to potężne narzędzie do dynamicznej analizy i manipulacji aplikacji mobilnych. Działa na różnych platformach, w tym na systemie Android. Frida umożliwia interakcję z aplikacją w czasie rzeczywistym, co pozwala na monitorowanie i modyfikację jej działania.
Objection
Objection to rozszerzenie Fridy, które dostarcza zestaw narzędzi do testowania penetracyjnego aplikacji mobilnych na platformie Android. Objection ułatwia analizę aplikacji, identyfikację podatności i manipulację zasobami aplikacji.
Instalacja
Aby zainstalować Objection, wykonaj następujące kroki:
- Zainstaluj Fridę, wykonując polecenie
pip install frida-tools
. - Zainstaluj Objection, wykonując polecenie
pip install objection
.
Uruchamianie Objection
Aby uruchomić Objection, wykonaj polecenie objection
. Po uruchomieniu zostanie wyświetlone interaktywne środowisko Objection, w którym można wykonywać różne operacje.
Podstawowe funkcje Objection
Objection oferuje wiele przydatnych funkcji, takich jak:
- Device: Pozwala na interakcję z urządzeniem mobilnym, na którym działa aplikacja.
- App: Umożliwia manipulację aplikacją, taką jak uruchamianie, zatrzymywanie, przeładowywanie itp.
- Explore: Pozwala na eksplorację struktury aplikacji i identyfikację podatności.
- Interact: Umożliwia interakcję z aplikacją w czasie rzeczywistym, taką jak wywoływanie metod, modyfikowanie zmiennych itp.
- Inject: Pozwala na wstrzykiwanie kodu do aplikacji w celu manipulacji jej działaniem.
- Watch: Umożliwia monitorowanie zdarzeń w aplikacji, takich jak wywołania metod, zmienne itp.
Podsumowanie
Objection to potężne narzędzie, które w połączeniu z Fridą umożliwia penetrację aplikacji mobilnych na platformie Android. Dzięki Objection można analizować aplikacje, identyfikować podatności i manipulować ich działaniem w czasie rzeczywistym.
frida
Przesyłanie/Pobieranie
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Importuj skrypt frida
const script = await Session.createScript(`
// Your script code here
`);
Load frida script into the target app
await script.load();
Hook a function in the target app
await script.exports.functionName();
Interact with the target app
await script.exports.functionName(parameter);
Unload frida script from the target app
await script.unload();
Detach from the target app
await session.detach();
import <local path frida-script>
SSLPinning
SSLPinning to mechanizm bezpieczeństwa, który chroni aplikacje mobilne przed atakami typu Man-in-the-Middle (MitM). Polega na sprawdzaniu i weryfikacji certyfikatów SSL podczas nawiązywania połączenia z serwerem.
W przypadku ataku MitM, gdzie atakujący przechwytuje i podszywa się pod komunikację między aplikacją a serwerem, SSLPinning uniemożliwia atakującemu podszywanie się pod serwer poprzez sprawdzenie, czy certyfikat SSL serwera jest poprawny i zaufany.
Obiekt objection
oferuje narzędzia do obejścia mechanizmu SSLPinning w aplikacjach mobilnych. Dzięki temu możemy analizować i testować aplikacje podatne na ataki MitM.
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Wykrywanie roota
Root detection, also known as root checking, is a technique used to determine whether a mobile device has been rooted or not. Rooting a device gives the user administrative privileges, allowing them to access and modify system files and settings that are typically restricted.
Wykrywanie roota, znane również jako sprawdzanie roota, to technika używana do określenia, czy urządzenie mobilne zostało zrootowane czy nie. Zrootowanie urządzenia daje użytkownikowi uprawnienia administratora, umożliwiając mu dostęp i modyfikację plików i ustawień systemowych, które zwykle są ograniczone.
Mobile app developers often implement root detection mechanisms in their applications to prevent them from running on rooted devices. This is done to protect the app's integrity and prevent potential security risks that may arise from running on a rooted device.
Twórcy aplikacji mobilnych często implementują mechanizmy wykrywania roota w swoich aplikacjach, aby uniemożliwić ich uruchamianie na zrootowanych urządzeniach. Robią to w celu ochrony integralności aplikacji i zapobiegania potencjalnym zagrożeniom dla bezpieczeństwa, które mogą wynikać z uruchamiania na zrootowanym urządzeniu.
Root detection techniques can vary, but they often involve checking for the presence of certain files or binaries that are commonly associated with rooting. Some apps may also use more advanced techniques, such as checking for the presence of specific system properties or using native code to perform root checks.
Techniki wykrywania roota mogą się różnić, ale często polegają na sprawdzaniu obecności określonych plików lub binarnych, które są powszechnie związane z rootowaniem. Niektóre aplikacje mogą również używać bardziej zaawansowanych technik, takich jak sprawdzanie obecności określonych właściwości systemowych lub korzystanie z kodu natywnego do wykonywania sprawdzania roota.
As a mobile penetration tester, it is important to understand and bypass root detection mechanisms in order to assess the security of an application on rooted devices. This can be done using various techniques, such as modifying the app's code or using tools like Frida or Objection to dynamically analyze and manipulate the app's behavior.
Jako tester penetracji mobilnej ważne jest zrozumienie i obejście mechanizmów wykrywania roota w celu oceny bezpieczeństwa aplikacji na zrootowanych urządzeniach. Można to zrobić za pomocą różnych technik, takich jak modyfikowanie kodu aplikacji lub korzystanie z narzędzi takich jak Frida lub Objection do dynamicznej analizy i manipulacji zachowaniem aplikacji.
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Wykonaj polecenie
The exec
command in objection allows you to execute shell commands on the target Android device. This can be useful for various purposes during a mobile penetration test.
To use the exec
command, you need to specify the command you want to execute as an argument. For example, to execute the ls
command to list the files in the current directory, you can use the following syntax:
objection> exec ls
The output of the command will be displayed in the console.
Keep in mind that the exec
command runs the specified command on the target device, so be cautious when executing potentially harmful commands.
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 objection dzięki analizie statycznej. W każdym razie, w ten sposób może być możliwe zobaczenie czegoś nowego, ponieważ tutaj będziesz mieć tylko pełną listę klas, metod i obiektów eksportowanych.
Jest to również przydatne, jeśli w jakiś sposób jesteś niezdolny do uzyskania 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 nie zostanie znaleziona żadna.
Pobieranie bieżącej aktywności
android hooking get current_activity
Wyszukiwanie klas
Zacznijmy od szukania 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
Wyświetlanie zadeklarowanych metod klasy wraz z ich parametrami
Sprawdźmy, jakie parametry są potrzebne do metod klasy:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Wyświetlanie listy klas
Możesz również wyświetlić listę wszystkich klas, które zostały 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 podpiąć metodę klasy i znasz tylko nazwę klasy. Możesz użyć tej funkcji, aby znaleźć moduł, do którego należy klasa, a następnie podpiąć jego metodę.
Podpięcie jest proste
Podpięcie (obserwowanie) metody
Z kodu źródłowego aplikacji wiemy, że funkcja sum() z klasy MainActivity jest uruchamiana co sekundę. Spróbujmy zrzucić 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
Hookowanie (obserwowanie) całej klasy
Właściwie uważam, że wszystkie metody klasy MainActivity są naprawdę interesujące, więc zahookujmy je wszystkie. Bądź ostrożny, może to spowodować awarię aplikacji.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
Jeśli grasz z aplikacją podczas gdy klasa jest podpięta, 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 można zobaczyć, że funkcja checkPin otrzymuje argument typu String i zwraca wartość logiczną. Zmieńmy funkcję tak, aby zawsze zwracała true:
Teraz, jeśli wpiszesz cokolwiek w polu tekstowym dla kodu PIN, zobaczysz, że wszystko jest poprawne:
Instancje klasy
Wyszukaj i wyświetl aktywne instancje określonej klasy Java, określonej przez pełną nazwę klasy. Wynik to próba uzyskania wartości łańcuchowej dla odkrytego zarzutu, który zwykle 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
Zrzut pamięci
Opis
Zrzut pamięci to proces pozyskiwania zawartości pamięci urządzenia mobilnego w celu analizy. Pozwala to na odkrycie poufnych informacji, takich jak klucze szyfrowania, tokeny uwierzytelniające, dane użytkownika itp.
Wykorzystanie
Aby wykonać zrzut pamięci, możemy skorzystać z narzędzia Objection. Oto przykładowe polecenie:
objection -g <nazwa_aplikacji> explore
Gdzie <nazwa_aplikacji>
to nazwa aplikacji, której chcemy dokonać zrzutu pamięci.
Wynik
Po wykonaniu polecenia, Objection utworzy plik zrzutu pamięci w formacie .dmp
. Możemy następnie przeglądać ten plik przy użyciu narzędzi do analizy pamięci, takich jak Volatility.
Uwaga
Zrzut pamięci może być nielegalny lub naruszać prywatność, jeśli jest wykonywany na urządzeniu bez zgody właściciela. Zawsze pamiętaj o przestrzeganiu prawa i etyki podczas wykonywania zrzutów pamięci.
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 frida eksportuje:
Wyszukiwanie/Zapisywanie
Możesz również wyszukiwać i zapisywać 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żecie użyć polecenia sqlite
do interakcji z bazami danych SQLite.
Wyjście
exit
Czego mi brakuje w Objection
- Metody hookowania czasami powodują awarie aplikacji (to również 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 sslpinnin), który umożliwiałby hookowanie wszystkich wspólnych metod kryptograficznych używanych przez aplikację w celu zobaczenia zaszyfrowanego tekstu, tekstu jawnego, kluczy, IV i używanych algorytmów.
Wskazówka dotycząca bug bounty: Zarejestruj się na platformie Intigriti, premium platformie bug bounty 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 USD!
{% embed url="https://go.intigriti.com/hacktricks" %}
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ź SUBSCRIPTION PLANS!
- 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 trikami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.