iOS Basic Testing Operations
Reading time: 9 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Σύνοψη Ταυτοποίησης και Πρόσβασης Συσκευών iOS
Ταυτοποίηση του UDID μιας Συσκευής iOS
Για να ταυτοποιηθεί μοναδικά μια συσκευή iOS, χρησιμοποιείται μια ακολουθία 40 ψηφίων γνωστή ως UDID. Σε macOS Catalina ή νεότερη έκδοση, αυτό μπορεί να βρεθεί στην εφαρμογή Finder, καθώς το iTunes δεν είναι πλέον παρόν. Η συσκευή, μόλις συνδεθεί μέσω USB και επιλεγεί στο Finder, αποκαλύπτει το UDID της μεταξύ άλλων πληροφοριών όταν κάνετε κλικ στις λεπτομέρειες κάτω από το όνομά της.
Για εκδόσεις macOS πριν από την Catalina, το iTunes διευκολύνει την ανακάλυψη του UDID. Λεπτομερείς οδηγίες μπορείτε να βρείτε εδώ.
Τα εργαλεία γραμμής εντολών προσφέρουν εναλλακτικές μεθόδους για την ανάκτηση του UDID:
- Χρησιμοποιώντας το εργαλείο I/O Registry Explorer
ioreg
:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Χρησιμοποιώντας το
ideviceinstaller
για macOS (και Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Χρησιμοποιώντας
system_profiler
:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Χρησιμοποιώντας
instruments
για να καταγράψετε συσκευές:
$ instruments -s devices
Πρόσβαση στο Shell της Σ συσκευής
Η πρόσβαση SSH ενεργοποιείται με την εγκατάσταση του πακέτου OpenSSH μετά το jailbreak, επιτρέποντας συνδέσεις μέσω ssh root@<device_ip_address>
. Είναι κρίσιμο να αλλάξετε τους προεπιλεγμένους κωδικούς πρόσβασης (alpine
) για τους χρήστες root
και mobile
για να ασφαλίσετε τη συσκευή.
Η SSH μέσω USB γίνεται απαραίτητη στην απουσία Wi-Fi, χρησιμοποιώντας το iproxy
για να χαρτογραφήσετε τις θύρες της συσκευής για συνδέσεις SSH. Αυτή η ρύθμιση επιτρέπει την πρόσβαση SSH μέσω USB εκτελώντας:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Εφαρμογές shell στην συσκευή, όπως το NewTerm 2, διευκολύνουν την άμεση αλληλεπίδραση με τη συσκευή, ιδιαίτερα χρήσιμες για την αποσφαλμάτωση. Reverse SSH shells μπορούν επίσης να δημιουργηθούν για απομακρυσμένη πρόσβαση από τον υπολογιστή-οικοδεσπότη.
Επαναφορά Ξεχασμένων Κωδικών Πρόσβασης
Για να επαναφέρετε έναν ξεχασμένο κωδικό πρόσβασης πίσω στην προεπιλογή (alpine
), είναι απαραίτητο να επεξεργαστείτε το αρχείο /private/etc/master.passwd
. Αυτό περιλαμβάνει την αντικατάσταση του υπάρχοντος hash με το hash για alpine
δίπλα στις εγγραφές χρηστών root
και mobile
.
Τεχνικές Μεταφοράς Δεδομένων
Μεταφορά Αρχείων Δεδομένων Εφαρμογής
Αρχειοθέτηση και Ανάκτηση μέσω SSH και SCP: Είναι απλό να αρχειοθετήσετε τον κατάλογο Δεδομένων της εφαρμογής χρησιμοποιώντας tar
και στη συνέχεια να τον μεταφέρετε χρησιμοποιώντας scp
. Η παρακάτω εντολή αρχειοθετεί τον κατάλογο Δεδομένων σε ένα αρχείο .tgz, το οποίο στη συνέχεια ανακτάται από τη συσκευή:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Γραφικά Εργαλεία Διεπαφής Χρήστη
Χρησιμοποιώντας το iFunbox και το iExplorer: Αυτά τα εργαλεία GUI είναι χρήσιμα για τη διαχείριση αρχείων σε συσκευές iOS. Ωστόσο, από την έκδοση iOS 8.4, η Apple περιορίζει την πρόσβαση αυτών των εργαλείων στο sandbox εφαρμογών εκτός αν η συσκευή είναι jailbroken.
Χρησιμοποιώντας το Objection για Διαχείριση Αρχείων
Διαδραστική Γραμμή Εντολών με το Objection: Η εκκίνηση του objection παρέχει πρόσβαση στον κατάλογο Bundle μιας εφαρμογής. Από εδώ, μπορείτε να πλοηγηθείτε στον κατάλογο Documents της εφαρμογής και να διαχειριστείτε αρχεία, συμπεριλαμβανομένης της λήψης και της αποστολής τους προς και από τη συσκευή iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Απόκτηση και Εξαγωγή Εφαρμογών
Απόκτηση του Αρχείου IPA
Σύνδεσμος Διανομής Over-The-Air (OTA): Οι εφαρμογές που διανέμονται για δοκιμή μέσω OTA μπορούν να ληφθούν χρησιμοποιώντας το εργαλείο downloader asset των υπηρεσιών ITMS, το οποίο εγκαθίσταται μέσω npm και χρησιμοποιείται για να αποθηκεύσει το αρχείο IPA τοπικά.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Εξαγωγή του Δυαδικού Αρχείου της Εφαρμογής
- Από ένα IPA: Αποσυμπιέστε το IPA για να αποκτήσετε πρόσβαση στο αποκρυπτογραφημένο δυαδικό αρχείο της εφαρμογής.
- Από μια Jailbroken Συσκευή: Εγκαταστήστε την εφαρμογή και εξάγετε το αποκρυπτογραφημένο δυαδικό αρχείο από τη μνήμη.
Διαδικασία Αποκρυπτογράφησης
Επισκόπηση Χειροκίνητης Αποκρυπτογράφησης: Τα δυαδικά αρχεία εφαρμογών iOS είναι κρυπτογραφημένα από την Apple χρησιμοποιώντας FairPlay. Για να γίνει αντίστροφη μηχανική, πρέπει να γίνει dump του αποκρυπτογραφημένου δυαδικού αρχείου από τη μνήμη. Η διαδικασία αποκρυπτογράφησης περιλαμβάνει τον έλεγχο της σημαίας PIE, την προσαρμογή των σημαιών μνήμης, την αναγνώριση της κρυπτογραφημένης ενότητας και στη συνέχεια την εξαγωγή και αντικατάσταση αυτής της ενότητας με τη μορφή της αποκρυπτογράφησης.
Έλεγχος και Τροποποίηση Σημαίας PIE:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Εντοπισμός Κρυπτογραφημένου Τμήματος και Εκχύλιση Μνήμης:
Καθορίστε τις διευθύνσεις έναρξης και λήξης του κρυπτογραφημένου τμήματος χρησιμοποιώντας otool
και εκχυλίστε τη μνήμη από τη jailbroken συσκευή χρησιμοποιώντας gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Αντικατάσταση της Κρυπτογραφημένης Ενότητας:
Αντικαταστήστε την κρυπτογραφημένη ενότητα στο αρχικό δυαδικό αρχείο της εφαρμογής με την αποκρυπτογραφημένη εξαγωγή.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Τελικοί Σταθμοί Αποκρυπτογράφησης: Τροποποιήστε τα μεταδεδομένα του δυαδικού αρχείου για να υποδείξετε την απουσία κρυπτογράφησης χρησιμοποιώντας εργαλεία όπως το MachOView, ρυθμίζοντας το cryptid
σε 0.
Αποκρυπτογράφηση (Αυτόματα)
frida-ios-dump
Το frida-ios-dump εργαλείο χρησιμοποιείται για αυτόματη αποκρυπτογράφηση και εξαγωγή εφαρμογών από συσκευές iOS. Αρχικά, πρέπει να ρυθμιστεί το dump.py
για να συνδεθεί με τη συσκευή iOS, κάτι που μπορεί να γίνει μέσω localhost στην πόρτα 2222 μέσω iproxy ή απευθείας μέσω της διεύθυνσης IP της συσκευής και της πόρτας.
Οι εφαρμογές που είναι εγκατεστημένες στη συσκευή μπορούν να απαριθμηθούν με την εντολή:
$ python dump.py -l
Για να εκχυλίσετε μια συγκεκριμένη εφαρμογή, όπως το Telegram, χρησιμοποιείται η εξής εντολή:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Αυτή η εντολή ξεκινά τη διαδικασία εξαγωγής της εφαρμογής, με αποτέλεσμα τη δημιουργία ενός αρχείου Telegram.ipa
στον τρέχοντα φάκελο. Αυτή η διαδικασία είναι κατάλληλη για jailbroken συσκευές, καθώς οι μη υπογεγραμμένες ή ψευδώς υπογεγραμμένες εφαρμογές μπορούν να επανεγκατασταθούν χρησιμοποιώντας εργαλεία όπως το ios-deploy.
flexdecrypt
Το εργαλείο flexdecrypt, μαζί με το wrapper του flexdump, επιτρέπει την εξαγωγή αρχείων IPA από εγκατεστημένες εφαρμογές. Οι εντολές εγκατάστασης για το flexdecrypt στη συσκευή περιλαμβάνουν τη λήψη και εγκατάσταση του πακέτου .deb
. Το flexdump μπορεί να χρησιμοποιηθεί για να καταγράψει και να εξάγει εφαρμογές, όπως φαίνεται στις παρακάτω εντολές:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, ένα άλλο εργαλείο βασισμένο στο Frida, απαιτεί μια jailbroken συσκευή για την αποκρυπτογράφηση εφαρμογών:
bagbak --raw Chrome
r2flutch
r2flutch, αξιοποιώντας τόσο το radare όσο και το frida, χρησιμοποιείται για την αποκρυπτογράφηση και την εξαγωγή εφαρμογών. Περισσότερες πληροφορίες μπορείτε να βρείτε στη σελίδα GitHub.
Εγκατάσταση Εφαρμογών
Sideloading αναφέρεται στην εγκατάσταση εφαρμογών εκτός του επίσημου App Store. Αυτή η διαδικασία διαχειρίζεται από τον installd daemon και απαιτεί οι εφαρμογές να είναι υπογεγραμμένες με πιστοποιητικό που έχει εκδοθεί από την Apple. Οι jailbroken συσκευές μπορούν να παρακάμψουν αυτό μέσω του AppSync, επιτρέποντας την εγκατάσταση ψευδώς υπογεγραμμένων πακέτων IPA.
Εργαλεία Sideloading
-
Cydia Impactor: Ένα εργαλείο για την υπογραφή και εγκατάσταση αρχείων IPA σε iOS και αρχείων APK σε Android. Οδηγίες και λύσεις προβλημάτων μπορείτε να βρείτε στο yalujailbreak.net.
-
libimobiledevice: Μια βιβλιοθήκη για Linux και macOS για επικοινωνία με συσκευές iOS. Παρέχονται εντολές εγκατάστασης και παραδείγματα χρήσης για το ideviceinstaller για την εγκατάσταση εφαρμογών μέσω USB.
-
ipainstaller: Αυτό το εργαλείο γραμμής εντολών επιτρέπει την άμεση εγκατάσταση εφαρμογών σε συσκευές iOS.
-
ios-deploy: Για χρήστες macOS, το ios-deploy εγκαθιστά εφαρμογές iOS από τη γραμμή εντολών. Η αποσυμπίεση του IPA και η χρήση της σημαίας
-m
για άμεση εκκίνηση εφαρμογής είναι μέρος της διαδικασίας. -
Xcode: Χρησιμοποιήστε το Xcode για να εγκαταστήσετε εφαρμογές πηγαίνοντας στο Window/Devices and Simulators και προσθέτοντας την εφαρμογή στα Installed Apps.
Επιτρέψτε την Εγκατάσταση Εφαρμογών σε Συσκευές που δεν είναι iPad
Για να εγκαταστήσετε εφαρμογές που προορίζονται για iPad σε συσκευές iPhone ή iPod touch, η τιμή UIDeviceFamily στο αρχείο Info.plist πρέπει να αλλάξει σε 1. Αυτή η τροποποίηση, ωστόσο, απαιτεί την επαναυπογραφή του αρχείου IPA λόγω ελέγχων επικύρωσης υπογραφής.
Σημείωση: Αυτή η μέθοδος μπορεί να αποτύχει αν η εφαρμογή απαιτεί δυνατότητες που είναι αποκλειστικές για νεότερα μοντέλα iPad ενώ χρησιμοποιείτε παλαιότερο iPhone ή iPod touch.
Αναφορές
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.