Objection Tutorial
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: zarejestruj się w Intigriti, premium platformie bug bounty stworzonej przez hackerów, dla hackerów! Dołącz do nas na https://go.intigriti.com/hacktricks już dziś i zacznij zarabiać nagrody do 100 000 USD!
objection - Runtime Mobile Exploration
Objection to zestaw narzędzi do eksploracji mobilnej w czasie rzeczywistym, oparty na Frida. Został stworzony w celu pomocy w ocenie aplikacji mobilnych i ich bezpieczeństwa bez potrzeby posiadania urządzenia mobilnego z jailbreakiem lub roota.
Uwaga: To nie jest forma jailbreaku / obejścia roota. Używając objection
, nadal jesteś ograniczony przez wszystkie restrykcje nałożone przez odpowiedni sandbox, z którym się mierzysz.
Celem objection jest umożliwienie użytkownikowi wywoływania głównych akcji, które oferuje Frida. W przeciwnym razie, użytkownik będzie musiał stworzyć pojedynczy skrypt dla każdej aplikacji, którą chce przetestować.
W tym tutorialu użyję APK, które możesz pobrać tutaj:
Lub z jego oryginalnego repozytorium (pobierz app-release.apk)
Zrób zwykłe połączenie ADB i uruchom serwer frida na urządzeniu (i sprawdź, czy frida działa zarówno na kliencie, jak i na serwerze).
Jeśli używasz urządzenia z rootem, musisz wybrać aplikację, którą chcesz przetestować w opcji --gadget. w tym przypadku:
Nie wszystkie możliwe polecenia objections będą wymienione w tym samouczku, tylko te, które uznałem za bardziej przydatne.
Niektóre interesujące informacje (takie jak hasła lub ścieżki) można znaleźć w środowisku.
W rzeczywistej aplikacji powinniśmy znać wszystkie informacje odkryte w tej części przed użyciem objection dzięki analizie statycznej. Tak czy inaczej, w ten sposób być może zobaczysz coś nowego, ponieważ tutaj będziesz miał tylko pełną listę klas, metod i eksportowanych obiektów.
To jest również przydatne, jeśli w jakiś sposób jesteś niezdolny do uzyskania czytelnego kodu źródłowego aplikacji.
Frida zgłosi błąd, jeśli żaden nie zostanie znaleziony
Zacznijmy szukać klas w naszej aplikacji
Teraz wyodrębnijmy metody wewnątrz klasy MainActivity:
Zobaczmy, jakie parametry są potrzebne metodom klasy:
Możesz również wylistować wszystkie klasy, które zostały załadowane w bieżącej aplikacji:
To jest bardzo przydatne, jeśli chcesz przechwycić metodę klasy i znasz tylko nazwę klasy. Możesz użyć tej funkcji, aby wyszukać, który moduł jest właścicielem klasy i następnie przechwycić jej metodę.
Z kodu źródłowego aplikacji wiemy, że funkcja sum() z 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 backtrace):
Właściwie uważam, że wszystkie metody klasy MainActivity są naprawdę interesujące, więc podłączmy je wszystkie. Uważaj, to może spowodować awarię aplikacji.
If you play with the application while the class is hooked you will see when każda funkcja jest wywoływana, jej argumenty i wartość zwracana.
Z kodu źródłowego widać, że funkcja checkPin przyjmuje String jako argument i zwraca boolean. Zmieńmy funkcję, aby zawsze zwracała true:
Teraz, jeśli wpiszesz cokolwiek w polu tekstowym dla kodu PIN, zobaczysz, że cokolwiek jest ważne:
Szukaj i drukuj aktywne instancje konkretnej klasy Java, określonej przez w pełni kwalifikowaną nazwę klasy. Oto wynik próby uzyskania wartości string dla odkrytej objection, która zazwyczaj zawiera wartości właściwości dla obiektu.
Możesz bawić się keystore i intencjami używając:
Na dole listy możesz zobaczyć frida:
Sprawdźmy, co frida eksportuje:
Możesz również szukać i pisać w pamięci za pomocą objection:
Możesz użyć polecenia sqlite
, aby interagować z bazami danych sqlite.
Metody hookujące czasami powodują awarię aplikacji (to również z powodu Frida).
Nie możesz używać instancji klas do wywoływania funkcji instancji. I nie możesz tworzyć nowych instancji klas i używać ich do wywoływania funkcji.
Nie ma skrótu (jak ten dla sslpinnin), aby hookować wszystkie powszechnie używane metody kryptograficzne w aplikacji, aby zobaczyć tekst zaszyfrowany, tekst jawny, klucze, IV i używane algorytmy.
Tip dotyczący bug bounty: zarejestruj się w Intigriti, premium platformie bug bounty stworzonej przez hackerów, dla hackerów! Dołącz do nas na https://go.intigriti.com/hacktricks już dziś i zacznij zarabiać nagrody do 100 000 USD!
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)