Objection Tutorial
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!
Wprowadzenie
objection - Runtime Mobile Exploration
Objection to zestaw narzędzi do eksploracji mobilnej w czasie rzeczywistym, zasilany przez 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.
Podsumowanie
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ć.
Tutorial
W tym tutorialu użyję APK, które możesz pobrać tutaj:
Lub z jego oryginalnego repozytorium (pobierz app-release.apk)
Instalacja
Connection
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:
Podstawowe działania
Nie wszystkie możliwe polecenia objections będą wymienione w tym samouczku, tylko te, które uznałem za bardziej przydatne.
Środowisko
Niektóre interesujące informacje (takie jak hasła lub ścieżki) można znaleźć w środowisku.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-a15396d7921ec411dd889b31f1a518fda22f042c%252Fimage%2520%28220%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4a06e4d0&sv=1)
Informacje o Frida
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-9181a7d109dccb8412635a30668d8014b6631a5a%252Fimage%2520%281093%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=428b6332&sv=1)
Przesyłanie/Pobieranie
Importuj skrypt frida
SSLPinning
Wykrywanie roota
Wykonaj polecenie
Zrzuty ekranu
Analiza statyczna stała się dynamiczna
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 mieć 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.
Lista aktywności, odbiorników i usług
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-7e07102b4e6f87e96c3cf4594a136d3590691ab7%252Fimage%2520%281016%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=bd19a2de&sv=1)
Frida zgłosi błąd, jeśli żaden nie zostanie znaleziony
Uzyskiwanie bieżącej aktywności
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-74a3163d5e09a99eb2f038694ec0dbfdcac1a99b%252Fimage%2520%28813%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=45a204&sv=1)
Szukaj klas
Zacznijmy szukać klas w naszej aplikacji
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-1ee9326a975e60d9b89c0e3d5fe185992cbd3fcb%252Fimage%2520%28507%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=6db60b2b&sv=1)
Metody wyszukiwania klasy
Teraz wyodrębnijmy metody wewnątrz klasy MainActivity:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-1978dd558bcc997a2b44343ac7af9829143d0dcd%252Fimage%2520%28929%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=59e8bf9&sv=1)
Lista zadeklarowanych metod klasy z ich parametrami
Zobaczmy, jakie parametry są potrzebne metodom klasy:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-006ca9f28c8918e23f7d6a94dcbe93bc208cbad8%252Fimage%2520%28299%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1876c8df&sv=1)
Lista klas
Możesz również wylistować wszystkie klasy, które zostały załadowane w bieżącej aplikacji:
To jest bardzo przydatne, jeśli chcesz podpiąć 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 podpiąć jej metodę.
Łatwe podpinanie
Podpinanie (obserwowanie) metody
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):
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-b010358dd58a1b962e52a5c5cccc0ad3fe94e250%252Fimage%2520%281086%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ab602969&sv=1)
Hooking (obserwowanie) całej klasy
Właściwie uważam, że wszystkie metody klasy MainActivity są naprawdę interesujące, więc podłączmy je wszystkie. Bądź ostrożny, to może spowodować awarię aplikacji.
Jeśli bawisz się aplikacją, gdy klasa jest podłączona, zobaczysz, kiedy każda funkcja jest wywoływana, jej argumenty i wartość zwracana.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-7db5cbb7b07bcb7fa428cbd450b13cd47f022997%252Fimage%2520%28861%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9e12f617&sv=1)
Zmiana wartości zwracanej typu boolean funkcji
Z kodu źródłowego możesz zobaczyć, że funkcja checkPin przyjmuje String jako argument i zwraca boolean. Zmieńmy funkcję, aby zawsze zwracała true:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-877c67db112f6e5b507630bf5f8ec5fc1620eb66%252Fimage%2520%28883%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=742d9464&sv=1)
Teraz, jeśli wpiszesz cokolwiek w polu tekstowym dla kodu PIN, zobaczysz, że cokolwiek jest ważne:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-3e9c614b9566726b780aa8b994ffe0c333adf618%252Fimage%2520%28228%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7ab1dfb5&sv=1)
Instancje klas
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 obiekcji, która zazwyczaj zawiera wartości właściwości dla obiektu.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-bc3c40e93d4448fb6cd7847a09def112744fe463%252Fimage%2520%281095%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4a340669&sv=1)
Keystore/Intents
Możesz bawić się keystore i intencjami używając:
Pamięć
Zrzut
Lista
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-2515a86824aeb76433556a4e4d4b9fcd51ba353a%252Fimage%2520%28286%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=64279233&sv=1)
Na dole listy możesz zobaczyć frida:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-ac353e4c43f8b5470e4ab7e2a302cbb0381340c4%252Fimage%2520%281097%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cd88cdcf&sv=1)
Sprawdźmy, co frida eksportuje:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-2f8a8d54cec70561d458fa19b847e4c563761f1b%252Fimage%2520%28298%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5c4a62de&sv=1)
Szukaj/Pisz
Możesz również szukać i pisać w pamięci za pomocą objection:
SQLite
Możesz użyć polecenia sqlite
, aby interagować z bazami danych sqlite.
Exit
Czego brakuje mi w Objection
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)
Last updated