Drozer Tutorial
Reading time: 7 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
APKs do testowania
Części tego samouczka zostały wyciągnięte z dokumentacji Drozer pdf.
Instalacja
Zainstaluj Drozer Client na swoim hoście. Pobierz go z najnowszych wydań.
pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity
Pobierz i zainstaluj APK drozer z najnowszych wydań. W tej chwili jest to to.
adb install drozer.apk
Uruchamianie serwera
Agent działa na porcie 31415, musimy przekierować port, aby nawiązać komunikację między klientem Drozer a agentem, oto polecenie, aby to zrobić:
adb forward tcp:31415 tcp:31415
Na koniec, uruchom aplikację i naciśnij przycisk "ON"
I połącz się z nią:
drozer console connect
Ciekawe Komendy
Komendy | Opis |
---|---|
Help MODULE | Pokazuje pomoc wybranego modułu |
list | Pokazuje listę wszystkich modułów drozer, które można wykonać w bieżącej sesji. Ukrywa moduły, do których nie masz odpowiednich uprawnień. |
shell | Uruchamia interaktywną powłokę Linux na urządzeniu, w kontekście Agenta. |
clean | Usuwa tymczasowe pliki przechowywane przez drozer na urządzeniu z Androidem. |
load | Ładuje plik zawierający polecenia drozer i wykonuje je w kolejności. |
module | Znajduje i instaluje dodatkowe moduły drozer z Internetu. |
unset | Usuwa nazwaną zmienną, którą drozer przekazuje do dowolnych powłok Linux, które uruchamia. |
set | Przechowuje wartość w zmiennej, która zostanie przekazana jako zmienna środowiskowa do dowolnych powłok Linux uruchamianych przez drozer. |
shell | Uruchamia interaktywną powłokę Linux na urządzeniu, w kontekście Agenta. |
run MODULE | Wykonuje moduł drozer |
exploit | Drozer może tworzyć exploity do wykonania na urządzeniu. drozer exploit list |
payload | Exploity potrzebują ładunku. drozer payload list |
Pakiet
Znajdź nazwę pakietu filtrując według części nazwy:
dz> run app.package.list -f sieve
com.mwr.example.sieve
Podstawowe informacje o pakiecie:
dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
Version: 1.0
Data Directory: /data/data/com.mwr.example.sieve
APK Path: /data/app/com.mwr.example.sieve-2.apk
UID: 10056
GID: [1028, 1015, 3003]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.INTERNET
Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS
Przeczytaj Manifest:
run app.package.manifest jakhar.aseem.diva
Powierzchnia ataku pakietu:
dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
- Aktywności: Może uda ci się uruchomić aktywność i obejść jakiś rodzaj autoryzacji, która powinna uniemożliwić jej uruchomienie.
- Dostawcy treści: Może uda ci się uzyskać dostęp do prywatnych danych lub wykorzystać jakąś lukę (SQL Injection lub Path Traversal).
- Usługi:
- jest debugowalny: Dowiedz się więcej
Aktywności
Wartość „android:exported” komponentu aktywności eksportowanej jest ustawiona na „true” w pliku AndroidManifest.xml:
<activity android:name="com.my.app.Initial" android:exported="true">
</activity>
Lista eksportowanych aktywności:
dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.FileSelectActivity
com.mwr.example.sieve.MainLoginActivity
com.mwr.example.sieve.PWList
Rozpocznij aktywność:
Możesz spróbować rozpocząć aktywność i obejść pewnego rodzaju autoryzację, która powinna uniemożliwić jej uruchomienie.
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
Możesz również uruchomić wyeksportowaną aktywność z adb:
- PackageName to com.example.demo
- Exported ActivityName to com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
Content Providers
Ten post był zbyt duży, aby tutaj go umieścić, więc możesz uzyskać do niego dostęp na osobnej stronie tutaj.
Services
Eksportowana usługa jest zadeklarowana w pliku Manifest.xml:
<service android:name=".AuthService" android:exported="true" android:process=":remote"/>
W kodzie sprawdź funkcję handleMessage
, która odbierze wiadomość:
Lista usług
dz> run app.service.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.AuthService
Permission: null
com.mwr.example.sieve.CryptoService
Permission: null
Interakcja z usługą
app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
Przykład
Zobacz pomoc drozer dla app.service.send
:
Zauważ, że najpierw wyślesz dane wewnątrz "msg.what", następnie "msg.arg1" i "msg.arg2", powinieneś sprawdzić w kodzie jakie informacje są używane i gdzie.
Używając opcji --extra
, możesz wysłać coś interpretowanego przez "msg.replyTo", a używając --bundle-as-obj
, tworzysz obiekt z podanymi szczegółami.
W następującym przykładzie:
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj
Odbiorniki Rozgłoszeniowe
W sekcji podstawowych informacji o Androidzie możesz zobaczyć, czym jest Odbiornik Rozgłoszeniowy.
Po odkryciu tych Odbiorników Rozgłoszeniowych powinieneś sprawdzić kod ich. Zwróć szczególną uwagę na funkcję onReceive
, ponieważ będzie ona obsługiwać otrzymane wiadomości.
Wykryj wszystkie odbiorniki rozgłoszeniowe
run app.broadcast.info #Detects all
Sprawdź odbiorniki rozgłoszeniowe aplikacji
#Check one negative
run app.broadcast.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
No matching receivers.
# Check one positive
run app.broadcast.info -a com.google.android.youtube
Package: com.google.android.youtube
com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver
Permission: null
com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver
Permission: com.google.android.c2dm.permission.SEND
com.google.android.apps.youtube.app.PackageReplacedReceiver
Permission: null
com.google.android.libraries.youtube.account.AccountsChangedReceiver
Permission: null
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null
Broadcast Interakcje
app.broadcast.info Get information about broadcast receivers
app.broadcast.send Send broadcast using an intent
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
Wyślij wiadomość
W tym przykładzie, wykorzystując FourGoats apk Content Provider, możesz wysłać dowolny SMS na dowolny niepremium cel bez pytania użytkownika o pozwolenie.
Jeśli przeczytasz kod, parametry "phoneNumber" i "message" muszą być wysłane do Content Provider.
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"
Czy jest debugowalny
Produkcja APK nigdy nie powinna być debugowalna.
Oznacza to, że możesz przyłączyć debugger java do działającej aplikacji, sprawdzić ją w czasie rzeczywistym, ustawić punkty przerwania, przechodzić krok po kroku, zbierać wartości zmiennych, a nawet je zmieniać. Instytut InfoSec ma doskonały artykuł na temat głębszego badania, gdy twoja aplikacja jest debugowalna i wstrzykiwania kodu w czasie rzeczywistym.
Gdy aplikacja jest debugowalna, pojawi się w Manifeście:
<application theme="@2131296387" debuggable="true"
Możesz znaleźć wszystkie aplikacje z możliwością debugowania za pomocą Drozer:
run app.package.debuggable
Tutorials
- https://resources.infosecinstitute.com/android-penetration-tools-walkthrough-series-drozer/#gref
- https://github.com/mgcfish/mobiletools/blob/master/_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md
- https://www.hackingarticles.in/android-penetration-testing-drozer/
- https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac
More info
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.