iOS Basic Testing Operations

Support HackTricks

Summary of iOS Device Identification and Access

Identifying the UDID of an iOS Device

Για να προσδιορίσετε μοναδικά μια συσκευή iOS, χρησιμοποιείται μια ακολουθία 40 ψηφίων γνωστή ως UDID. Στο macOS Catalina ή νεότερο, αυτό μπορεί να βρεθεί στην εφαρμογή Finder, καθώς το iTunes δεν είναι πλέον παρόν. Η συσκευή, μόλις συνδεθεί μέσω USB και επιλεγεί στο Finder, αποκαλύπτει το UDID της μεταξύ άλλων πληροφοριών όταν κάνετε κλικ στις λεπτομέρειες κάτω από το όνομά της.

Για εκδόσεις του macOS πριν από το Catalina, το iTunes διευκολύνει την ανακάλυψη του UDID. Λεπτομερείς οδηγίες μπορείτε να βρείτε εδώ.

Τα εργαλεία γραμμής εντολών προσφέρουν εναλλακτικές μεθόδους για την ανάκτηση του UDID:

  • Using I/O Registry Explorer tool 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 περιουσιακών στοιχείων υπηρεσιών 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

Εξαγωγή του Δυαδικού Αρχείου της Εφαρμογής

  1. Από ένα IPA: Αποσυμπιέστε το IPA για να αποκτήσετε πρόσβαση στο αποκρυπτογραφημένο δυαδικό αρχείο της εφαρμογής.

  2. Από μια 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

Για να εκτελέσετε dump μιας συγκεκριμένης εφαρμογής, όπως το Telegram, χρησιμοποιείται η εξής εντολή:

$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

Αυτή η εντολή ξεκινά τη διαδικασία dump της εφαρμογής, με αποτέλεσμα τη δημιουργία ενός αρχείου 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.

Αναφορές

Support HackTricks

Last updated