Drozer Tutorial
Συμβουλή για bug bounty: εγγραφείτε στο Intigriti, μια προηγμένη πλατφόρμα bug bounty που δημιουργήθηκε από χάκερς, για χάκερς! Γίνετε μέλος μας στο https://go.intigriti.com/hacktricks σήμερα και αρχίστε να κερδίζετε αμοιβές έως και $100,000!
APKs για δοκιμή
Sieve (από την mrwlabs)
Μέρη αυτού του οδηγού εξήχθησαν από το αρχείο τεκμηρίωσης του Drozer.
Εγκατάσταση
Εγκαταστήστε τον πελάτη Drozer μέσα στον υπολογιστή σας. Κατεβάστε το από τις τελευταίες εκδόσεις.
Κατεβάστε και εγκαταστήστε το drozer APK από τις τελευταίες εκδόσεις. Αυτή τη στιγμή είναι αυτό.
Έναρξη του Διακομιστή
Ο πράκτορας λειτουργεί στη θύρα 31415, χρειαζόμαστε προώθηση θύρας για να εγκαθιδρύσουμε την επικοινωνία μεταξύ του πελάτη Drozer και του πράκτορα. Εδώ είναι η εντολή για να το κάνετε:
Τέλος, εκκινήστε την εφαρμογή και πατήστε το κουμπί "ON"
Και συνδεθείτε σε αυτήν:
Ενδιαφέρουσες Εντολές
Εντολές | Περιγραφή |
Help MODULE | Εμφανίζει τη βοήθεια του επιλεγμένου module |
list | Εμφανίζει μια λίστα με όλα τα drozer modules που μπορούν να εκτελεστούν στην τρέχουσα συνεδρία. Αυτή η εντολή αποκρύπτει τα modules για τα οποία δεν έχετε τα απαραίτητα δικαιώματα για να τρέξετε. |
shell | Ξεκινά ένα διαδραστικό Linux shell στη συσκευή, στο πλαίσιο του Agent. |
clean | Αφαιρεί τα προσωρινά αρχεία που αποθηκεύονται από το drozer στη συσκευή Android. |
load | Φορτώνει ένα αρχείο που περιέχει εντολές drozer και τις εκτελεί σε ακολουθία. |
module | Βρίσκει και εγκαθιστά επιπλέον drozer modules από το Διαδίκτυο. |
unset | Αφαιρεί μια ονομασμένη μεταβλητή που περνάει το drozer σε οποιαδήποτε Linux shells που εκκινεί. |
set | Αποθηκεύει μια τιμή σε μια μεταβλητή που θα περάσει ως περιβαλλοντική μεταβλητή σε οποιαδήποτε Linux shells που εκκινεί το drozer. |
shell | Ξεκινά ένα διαδραστικό Linux shell στη συσκευή, στο πλαίσιο του Agent |
run MODULE | Εκτελεί ένα drozer module |
exploit | Το drozer μπορεί να δημιουργήσει exploits για εκτέλεση στη συσκευή. |
payload | Τα exploits χρειάζονται ένα payload. |
Πακέτο
Βρείτε το όνομα του πακέτου φιλτράροντας με βάση μέρος του ονόματος:
Βασικές πληροφορίες για το πακέτο:
Package Name: com.example.app
Version Name: 1.0
Version Code: 1
Target SDK Version: 28
Min SDK Version: 21
Permissions: android.permission.INTERNET, android.permission.ACCESS_NETWORK_STATE
Διάβασε το Manifest:
Επιθέσιμη επιφάνεια του πακέτου:
Δραστηριότητες: Ίσως μπορείτε να ξεκινήσετε μια δραστηριότητα και να παρακάμψετε κάποιον τύπο εξουσιοδότησης που θα έπρεπε να σας εμποδίσει από την εκκίνησή της.
Πάροχοι περιεχομένου: Ίσως μπορείτε να έχετε πρόσβαση σε ιδιωτικά δεδομένα ή να εκμεταλλευτείτε κάποια ευπάθεια (SQL Injection ή Path Traversal).
Υπηρεσίες:
είναι ενεργοποιημένη η λειτουργία αποσφαλμάτωσης: Μάθετε περισσότερα
Δραστηριότητες
Η τιμή "android:exported" ενός εξαγόμενου στοιχείου δραστηριότητας έχει οριστεί σε "true" στο αρχείο AndroidManifest.xml:
Λίστα εξαγόμενων δραστηριοτήτων:
To list the exported activities of an Android application, you can use the drozer
tool. The exported activities are components of an app that can be accessed by other apps or components. This information can be useful for understanding the app's functionality and potential security vulnerabilities.
To list the exported activities using drozer
, follow these steps:
Install
drozer
on your machine.Connect your Android device to your machine using a USB cable.
Open a terminal and run the command
adb devices
to ensure that your device is connected and recognized bydrozer
.Run the command
drozer console connect
to establish a connection betweendrozer
and your device.Once connected, run the command
run app.activity.info -a <package_name>
to list the exported activities of the specified app. Replace<package_name>
with the package name of the app you want to analyze.
The output will display the exported activities along with their corresponding package names and other relevant information. This information can help you identify potential entry points for further analysis and exploitation during a penetration test.
Έναρξη δραστηριότητας:
Ίσως μπορείτε να ξεκινήσετε μια δραστηριότητα και να παρακάμψετε κάποιον τύπο εξουσιοδότησης που θα έπρεπε να σας εμποδίσει από την εκκίνησή της.
Μπορείτε επίσης να ξεκινήσετε μια εξαγόμενη δραστηριότητα από το adb:
Το PackageName είναι com.example.demo
Το όνομα της εξαγόμενης δραστηριότητας είναι com.example.test.MainActivity
Παροχείς Περιεχομένου
Αυτή η ανάρτηση ήταν τόσο μεγάλη για να είναι εδώ, οπότε μπορείτε να την ανοίξετε σε ξεχωριστή σελίδα εδώ.
Υπηρεσίες
Μια εξαγόμενη υπηρεσία δηλώνεται μέσα στο Manifest.xml:
Μέσα στον κώδικα ελέγξτε την συνάρτηση **handleMessage
** που θα λάβει το μήνυμα:
Λίστα υπηρεσιών
Αλληλεπίδραση με έναν υπηρεσία
To interact with a service using drozer, you need to use the run
command followed by the package name of the target application and the name of the service you want to interact with. For example, to interact with the MyService
service in the com.example.app
package, you would use the following command:
This command will start the MyService
service and allow you to interact with it. You can then use various drozer commands to interact with the service, such as list
, call
, or invoke
.
To list the methods available in the service, you can use the list
command followed by the package name and the service name:
This will display a list of methods that you can call or invoke on the service.
To call a method in the service, you can use the call
command followed by the package name, the service name, and the method name:
Replace methodName
with the actual name of the method you want to call.
To invoke a method in the service, you can use the invoke
command followed by the package name, the service name, the method name, and any required arguments:
Replace methodName
with the actual name of the method you want to invoke, and arg1
, arg2
, etc. with any required arguments for the method.
By using these commands, you can interact with services in Android applications and perform various actions or gather information from them.
Παράδειγμα
Ρίξτε μια ματιά στη βοήθεια του drozer για την εντολή app.service.send
:
Σημειώστε ότι θα στείλετε πρώτα τα δεδομένα μέσα στο "msg.what", στη συνέχεια "msg.arg1" και "msg.arg2", θα πρέπει να ελέγξετε μέσα στον κώδικα ποιες πληροφορίες χρησιμοποιούνται και πού.
Χρησιμοποιώντας την επιλογή --extra
μπορείτε να στείλετε κάτι που θα ερμηνευθεί από το "msg.replyTo", και χρησιμοποιώντας την επιλογή --bundle-as-obj
μπορείτε να δημιουργήσετε ένα αντικείμενο με τις παρεχόμενες λεπτομέρειες.
Στο παρακάτω παράδειγμα:
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
Ανιχνεύστε όλους τους δέκτες εκπομπής
Στην ενότητα βασικών πληροφοριών Android μπορείτε να δείτε τι είναι ένας δέκτης εκπομπής.
Αφού ανακαλύψετε αυτούς τους δέκτες εκπομπής, θα πρέπει να ελέγξετε τον κώδικά τους. Δώστε ιδιαίτερη προσοχή στη συνάρτηση onReceive
καθώς αυτή θα χειρίζεται τα μηνύματα που λαμβάνονται.
Έλεγχος δέκτες εκπομπής μιας εφαρμογής
Για να ελέγξετε τους δέκτες εκπομπής μιας εφαρμογής στο Android, μπορείτε να χρησιμοποιήσετε το εργαλείο drozer
. Ακολουθήστε τα παρακάτω βήματα:
Εγκαταστήστε το
drozer
στον υπολογιστή σας.Συνδεθείτε στη συσκευή Android σας μέσω USB Debugging.
Ανοίξτε ένα τερματικό και εκτελέστε την εντολή
adb devices
για να βεβαιωθείτε ότι η συσκευή σας είναι συνδεδεμένη.Εκτελέστε την εντολή
drozer console connect
για να συνδεθείτε στη συσκευή Android.Εκτελέστε την εντολή
run app.package.broadcasts -a <package_name>
για να ελέγξετε τους δέκτες εκπομπής της συγκεκριμένης εφαρμογής.
Θα λάβετε μια λίστα με όλους τους δέκτες εκπομπής που χρησιμοποιεί η εφαρμογή. Αυτό μπορεί να σας βοηθήσει να εντοπίσετε πιθανές ευπάθειες ασφαλείας ή προβλήματα ιδιωτικότητας.
Διαδικασίες Εκπομπής
Broadcast είναι ένας τρόπος επικοινωνίας μεταξύ εφαρμογών στο Android σύστημα. Μπορεί να χρησιμοποιηθεί για την αποστολή μηνυμάτων ή την ειδοποίηση άλλων εφαρμογών για συμβάντα που συμβαίνουν στο σύστημα. Οι εφαρμογές μπορούν να λαμβάνουν ή να αποστέλλουν διάφορα είδη εκπομπών.
Οι εκπομπές μπορούν να είναι δημόσιες ή ιδιωτικές. Οι δημόσιες εκπομπές είναι προσβάσιμες από οποιαδήποτε εφαρμογή στο σύστημα, ενώ οι ιδιωτικές εκπομπές είναι προσβάσιμες μόνο από εφαρμογές που έχουν το ίδιο όνομα πακέτου.
Οι εκπομπές μπορούν να περιέχουν δεδομένα που μεταδίδονται με το μήνυμα. Αυτά τα δεδομένα μπορούν να είναι σε μορφή κειμένου, αριθμού, λίστας, JSON κλπ. Οι εφαρμογές μπορούν να εγγραφούν για να λάβουν εκπομπές που περιέχουν συγκεκριμένα δεδομένα ή να αποστείλουν εκπομπές με συγκεκριμένα δεδομένα.
Οι εκπομπές μπορούν να χρησιμοποιηθούν για διάφορους σκοπούς, όπως η επικοινωνία μεταξύ εφαρμογών, η ειδοποίηση για αλλαγές στο σύστημα, η αποστολή δεδομένων σε άλλες εφαρμογές κλπ. Ωστόσο, οι εκπομπές μπορούν να αποτελέσουν και μια ασφαλείς ευπάθεια, καθώς μπορεί να υπάρχει η δυνατότητα για κακόβουλες εφαρμογές να παρακολουθούν ή να παρεμβαίνουν στις εκπομπές άλλων εφαρμογών.
Αποστολή μηνύματος
Σε αυτό το παράδειγμα καταχρώντας το FourGoats apk Content Provider μπορείτε να στείλετε ένα αυθαίρετο SMS σε οποιοδήποτε μη-προνομιούχο προορισμό χωρίς να ζητήσετε άδεια από τον χρήστη.
Αν διαβάσετε τον κώδικα, οι παράμετροι "phoneNumber" και "message" πρέπει να αποσταλούν στο Content Provider.
Είναι ενεργοποιημένη η αποσφαλμάτωση
Ένα APK παραγωγής δεν πρέπει ποτέ να είναι ενεργοποιημένη η αποσφαλμάτωση. Αυτό σημαίνει ότι μπορείτε να συνδεθείτε με έναν αποσφαλματωτή Java στην εκτελούμενη εφαρμογή, να την επιθεωρήσετε κατά τη διάρκεια της εκτέλεσης, να τοποθετήσετε σημεία διακοπής, να προχωρήσετε βήμα-βήμα, να συλλέξετε τιμές μεταβλητών και ακόμα και να τις αλλάξετε. Το InfoSec institute έχει ένα εξαιρετικό άρθρο για να εξερευνήσετε περισσότερο όταν η εφαρμογή σας είναι ενεργοποιημένη για αποσφαλμάτωση και για να εισάγετε κώδικα κατά τη διάρκεια της εκτέλεσης.
Όταν μια εφαρμογή είναι ενεργοποιημένη για αποσφαλμάτωση, θα εμφανιστεί στο Manifest:
Μπορείτε να βρείτε όλες τις εφαρμογές που μπορούν να αποσφαλματώθουν με το Drozer:
Οδηγοί
Περισσότερες πληροφορίες
Συμβουλή για bug bounty: εγγραφείτε στο Intigriti, μια προηγμένη πλατφόρμα bug bounty που δημιουργήθηκε από χάκερς, για χάκερς! Γίνετε μέλος στο https://go.intigriti.com/hacktricks σήμερα και αρχίστε να κερδίζετε αμοιβές έως και $100,000!
Last updated