Objection Tutorial
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 aż do 100 000 USD!
Wprowadzenie
objection - Badanie aplikacji mobilnych w czasie rzeczywistym
Objection to zestaw narzędzi do badania aplikacji mobilnych w czasie rzeczywistym, zasilany przez Frida. Został zbudowany 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ę używał pliku APK, który możesz pobrać tutaj:
Lub ze źródłowego repozytorium (pobierz app-release.apk)
Instalacja
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:
Podstawowe czynności
Nie wszystkie możliwe polecenia objections zostaną wymienione w tym samouczku, tylko te, które uważam za bardziej przydatne.
Środowisko
Niektóre interesujące informacje (takie jak hasła czy ścieżki) mogą być znalezione wewnątrz środowiska.
Informacje o Fridzie
Przesyłanie/Pobieranie
Import skryptu frida
SSLPinning
Wykrywanie roota
Polecenie Exec
Zrzuty ekranu
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żesz zobaczyć coś nowego, ponieważ tutaj będziesz miał tylko kompletną 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
Frida wywoła błąd, jeśli żadna nie zostanie znaleziona
Pobieranie bieżącej aktywności
Wyszukiwanie klas
Zacznijmy szukać klas w naszej aplikacji
Metody wyszukiwania klasy
Teraz wyodrębnijmy metody wewnątrz klasy MainActivity:
Wyświetlanie zadeklarowanych metod klasy wraz z ich parametrami
Sprawdźmy, jakie parametry są wymagane przez metody klasy:
Wyświetlanie listy klas
Możesz również wyświetlić wszystkie klasy załadowane w bieżącej aplikacji:
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
Przypięcie (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):
Podpięcie (obserwowanie) całej klasy
W rzeczywistości uważam, że wszystkie metody klasy MainActivity są naprawdę interesujące, pozwólmy podpiąć się pod nie wszystkie. Bądź ostrożny, to może spowodować awarię aplikacji.
Jeśli bawisz się 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 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.
Keystore/Intents
Możesz bawić się keystore i intents używając:
Pamięć
Zrzut
Lista
Na dole listy możesz zobaczyć fridę:
Sprawdźmy, co frida eksportuje:
Wyszukiwanie/Zapisywanie
Możesz także wyszukiwać i zapisywać w pamięci za pomocą objection:
SQLite
Możesz użyć polecenia sqlite
, aby interakcjonować się z bazami danych SQLite.
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ę w celu zobaczenia zaszyfrowanego tekstu, tekstu jawnego, kluczy, IV i używanych algorytmów.
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 USD!
Last updated