mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
193 lines
20 KiB
Markdown
193 lines
20 KiB
Markdown
# Βασικές Λειτουργίες Δοκιμής iOS
|
||
|
||
<details>
|
||
|
||
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
|
||
|
||
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||
|
||
</details>
|
||
|
||
## **Περίληψη Αναγνώρισης και Πρόσβασης Συσκευής iOS**
|
||
|
||
### **Αναγνώριση του UDID μιας συσκευής iOS**
|
||
|
||
Για να αναγνωρίσουμε μοναδικά μια συσκευή iOS, χρησιμοποιείται μια 40-ψήφια ακολουθία που ονομάζεται UDID. Στο macOS Catalina ή νεότερο, μπορεί να βρεθεί στην εφαρμογή **Finder**, καθώς το iTunes δεν υπάρχει πλέον. Η συσκευή, αφού συνδεθεί μέσω USB και επιλεγεί στο Finder, αποκαλύπτει το UDID της μαζί με άλλες πληροφορίες όταν κάνουμε κλικ στις λεπτομέρειες κάτω από το όνομά της.
|
||
|
||
Για εκδόσεις του macOS πριν από το Catalina, το iTunes διευκολύνει την ανακάλυψη του UDID. Λεπτομερείς οδηγίες μπορούν να βρεθούν [εδώ](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
|
||
|
||
Εργαλεία γραμμής εντολών προσφέρουν εναλλακτικές μεθόδους για την ανάκτηση του UDID:
|
||
|
||
* **Χρήση του εργαλείου I/O Registry Explorer `ioreg`:**
|
||
```bash
|
||
$ ioreg -p IOUSB -l | grep "USB Serial"
|
||
```
|
||
* **Χρήση του `ideviceinstaller` για macOS (και Linux):**
|
||
```bash
|
||
$ brew install ideviceinstaller
|
||
$ idevice_id -l
|
||
```
|
||
* **Χρήση του `system_profiler`:**
|
||
```bash
|
||
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
||
```
|
||
* **Χρήση του `instruments` για να εμφανιστούν οι συσκευές:**
|
||
```bash
|
||
$ instruments -s devices
|
||
```
|
||
### **Πρόσβαση στο Shell της Συσκευής**
|
||
|
||
Η **πρόσβαση μέσω SSH** ενεργοποιείται εγκαθιστώντας το πακέτο **OpenSSH** μετά την απελευθέρωση της συσκευής, επιτρέποντας συνδέσεις μέσω `ssh root@<διεύθυνση_ΙΡ_συσκευής>`. Είναι κρίσιμο να αλλάξετε τους προεπιλεγμένους κωδικούς (`alpine`) για τους χρήστες `root` και `mobile` για να ασφαλίσετε τη συσκευή.
|
||
|
||
Η **SSH μέσω USB** γίνεται απαραίτητη σε περίπτωση που δεν υπάρχει Wi-Fi, χρησιμοποιώντας το `iproxy` για την αντιστοίχιση των θυρών της συσκευής για συνδέσεις SSH. Αυτή η ρύθμιση επιτρέπει την πρόσβαση μέσω SSH μέσω USB εκτελώντας:
|
||
```bash
|
||
$ iproxy 2222 22
|
||
$ ssh -p 2222 root@localhost
|
||
```
|
||
**Εφαρμογές κέλυφου στη συσκευή**, όπως το NewTerm 2, διευκολύνουν την άμεση αλληλεπίδραση με τη συσκευή, ιδιαίτερα χρήσιμη για την επίλυση προβλημάτων. Μπορούν επίσης να δημιουργηθούν **αντίστροφα κέλυφα SSH** για απομακρυσμένη πρόσβαση από τον υπολογιστή του χρήστη.
|
||
|
||
### **Επαναφορά Ξεχασμένων Κωδικών Πρόσβασης**
|
||
|
||
Για να επαναφέρετε έναν ξεχασμένο κωδικό πρόσβασης στην προεπιλεγμένη τιμή (`alpine`), είναι απαραίτητο να επεξεργαστείτε το αρχείο `/private/etc/master.passwd`. Αυτό περιλαμβάνει την αντικατάσταση του υπάρχοντος κατακερματισμένου κωδικού με τον κατακερματισμένο κωδικό για το `alpine` δίπλα από τις καταχωρήσεις των χρηστών `root` και `mobile`.
|
||
|
||
## **Τεχνικές Μεταφοράς Δεδομένων**
|
||
|
||
### **Μεταφορά Αρχείων Δεδομένων Εφαρμογής**
|
||
|
||
**Αρχειοθέτηση και Ανάκτηση μέσω SSH και SCP:** Είναι απλό να αρχειοθετήσετε τον κατάλογο Δεδομένων της εφαρμογής χρησιμοποιώντας την εντολή `tar` και στη συνέχεια να το μεταφέρετε χρησιμοποιώντας την εντολή `scp`. Η παρακάτω εντολή αρχειοθετεί τον κατάλογο Δεδομένων σε ένα αρχείο .tgz, το οποίο στη συνέχεια αντλείται από τη συσκευή:
|
||
```bash
|
||
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:** Αυτά τα εργαλεία γραφικού περιβάλλοντος είναι χρήσιμα για τη διαχείριση αρχείων σε συσκευές iOS. Ωστόσο, από την έκδοση iOS 8.4 και μετά, η Apple περιόρισε την πρόσβαση αυτών των εργαλείων στον αποθηκευτικό χώρο των εφαρμογών, εκτός αν η συσκευή έχει γίνει jailbreak.
|
||
|
||
### **Χρήση του Objection για τη Διαχείριση Αρχείων**
|
||
|
||
**Διαδραστική Κέλυφος με το Objection:** Με την εκκίνηση του Objection, έχετε πρόσβαση στον φάκελο Bundle μιας εφαρμογής. Από εδώ, μπορείτε να πλοηγηθείτε στον φάκελο Documents της εφαρμογής και να διαχειριστείτε αρχεία, συμπεριλαμβανομένης της λήψης και αποστολής τους από και προς τη συσκευή iOS.
|
||
```bash
|
||
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 μπορούν να ληφθούν χρησιμοποιώντας το εργαλείο λήψης αρχείων ITMS services asset downloader, το οποίο εγκαθίσταται μέσω του npm και χρησιμοποιείται για να αποθηκεύσει το αρχείο IPA τοπικά.
|
||
```bash
|
||
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. **Από μια συσκευή με Jailbreak:** Εγκαταστήστε την εφαρμογή και εξαγάγετε το αποκρυπτογραφημένο δυαδικό αρχείο από τη μνήμη.
|
||
|
||
### **Διαδικασία αποκρυπτογράφησης**
|
||
|
||
**Επισκόπηση της χειροκίνητης αποκρυπτογράφησης:** Τα δυαδικά αρχεία των εφαρμογών iOS κρυπτογραφούνται από την Apple χρησιμοποιώντας το FairPlay. Για να αναστρέψετε τη διαδικασία, πρέπει να αποθηκεύσετε το αποκρυπτογραφημένο δυαδικό αρχείο από τη μνήμη. Η διαδικασία αποκρυπτογράφησης περιλαμβάνει τον έλεγχο της σημαίας PIE, την προσαρμογή των σημαιών μνήμης, τον εντοπισμό του κρυπτογραφημένου τμήματος και στη συνέχεια την αποθήκευση και αντικατάσταση αυτού του τμήματος με την αποκρυπτογραφημένη του μορφή.
|
||
|
||
**Έλεγχος και τροποποίηση της σημαίας PIE:**
|
||
```bash
|
||
otool -Vh Original_App
|
||
python change_macho_flags.py --no-pie Original_App
|
||
otool -Vh Hello_World
|
||
```
|
||
**Αναγνώριση Κρυπτογραφημένης Ενότητας και Αποθήκευση Μνήμης:**
|
||
|
||
Προσδιορίστε τις αρχικές και τελικές διευθύνσεις της κρυπτογραφημένης ενότητας χρησιμοποιώντας το `otool` και αποθηκεύστε τη μνήμη από την jailbroken συσκευή χρησιμοποιώντας το gdb.
|
||
```bash
|
||
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
||
dump memory dump.bin 0x8000 0x10a4000
|
||
```
|
||
**Αντικατάσταση της Κρυπτογραφημένης Ενότητας:**
|
||
|
||
Αντικαταστήστε την κρυπτογραφημένη ενότητα στον αρχικό δυαδικό κώδικα της εφαρμογής με την αποκρυπτογραφημένη αντιγραφή.
|
||
```bash
|
||
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
||
```
|
||
**Ολοκλήρωση Αποκρυπτογράφησης:** Τροποποιήστε τα μεταδεδομένα του δυαδικού αρχείου για να υποδείξετε την απουσία κρυπτογράφησης χρησιμοποιώντας εργαλεία όπως το **MachOView**, ορίζοντας το `cryptid` σε 0.
|
||
|
||
### **Αποκρυπτογράφηση (Αυτόματα)**
|
||
|
||
#### **frida-ios-dump**
|
||
Το εργαλείο [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) χρησιμοποιείται για την **αυτόματη αποκρυπτογράφηση και εξαγωγή εφαρμογών** από συσκευές iOS. Αρχικά, πρέπει να ρυθμίσετε το `dump.py` για να συνδεθεί με τη συσκευή iOS, που μπορεί να γίνει μέσω του localhost στη θύρα 2222 μέσω **iproxy** ή απευθείας μέσω της IP διεύθυνσης και της θύρας της συσκευής.
|
||
|
||
Οι εφαρμογές που είναι εγκατεστημένες στη συσκευή μπορούν να εμφανιστούν με την εντολή:
|
||
```bash
|
||
$ python dump.py -l
|
||
```
|
||
Για να αντλήσετε πληροφορίες από μια συγκεκριμένη εφαρμογή, όπως το Telegram, χρησιμοποιείται η παρακάτω εντολή:
|
||
```bash
|
||
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
||
```
|
||
Αυτή η εντολή ξεκινά την αποθήκευση της εφαρμογής, με αποτέλεσμα τη δημιουργία ενός αρχείου `Telegram.ipa` στον τρέχοντα κατάλογο. Αυτή η διαδικασία είναι κατάλληλη για συσκευές με jailbreak, καθώς μη υπογεγραμμένες ή πλαστές εφαρμογές μπορούν να επανεγκατασταθούν χρησιμοποιώντας εργαλεία όπως το [**ios-deploy**](https://github.com/ios-control/ios-deploy).
|
||
|
||
#### **flexdecrypt**
|
||
Το εργαλείο [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), μαζί με το wrapper του [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), επιτρέπει την εξαγωγή αρχείων IPA από εγκατεστημένες εφαρμογές. Οι εντολές εγκατάστασης για το **flexdecrypt** στη συσκευή περιλαμβάνουν το κατέβασμα και την εγκατάσταση του πακέτου `.deb`. Το **flexdump** μπορεί να χρησιμοποιηθεί για την εμφάνιση και αποθήκευση εφαρμογών, όπως φαίνεται στις παρακάτω εντολές:
|
||
```bash
|
||
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**](https://github.com/ChiChou/bagbak), ένα ακόμα εργαλείο βασισμένο στο Frida, απαιτεί ένα jailbroken συσκευή για την αποκρυπτογράφηση των εφαρμογών:
|
||
```bash
|
||
bagbak --raw Chrome
|
||
```
|
||
#### **r2flutch**
|
||
Το **r2flutch**, χρησιμοποιώντας τόσο το radare όσο και το frida, χρησιμεύει για την αποκρυπτογράφηση και την αποθήκευση εφαρμογών. Περισσότερες πληροφορίες μπορούν να βρεθούν στην [**σελίδα του GitHub**](https://github.com/as0ler/r2flutch).
|
||
|
||
### **Εγκατάσταση Εφαρμογών**
|
||
|
||
Ο όρος **sideloading** αναφέρεται στην εγκατάσταση εφαρμογών εκτός του επίσημου App Store. Αυτή η διαδικασία χειρίζεται από τον **installd daemon** και απαιτεί τις εφαρμογές να έχουν υπογραφεί με πιστοποιητικό που έχει εκδοθεί από την Apple. Οι συσκευές με jailbreak μπορούν να παρακάμψουν αυτήν τη διαδικασία μέσω του **AppSync**, επιτρέποντας την εγκατάσταση πακέτων IPA με ψευδή υπογραφή.
|
||
|
||
#### **Εργαλεία Sideloading**
|
||
|
||
- **Cydia Impactor**: Ένα εργαλείο για την υπογραφή και εγκατάσταση αρχείων IPA σε iOS και αρχείων APK σε Android. Οδηγοί και αντιμετώπιση προβλημάτων μπορούν να βρεθούν στο [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
||
|
||
- **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/](ttps://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-0052/)
|
||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](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-0054/)
|
||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
|
||
|
||
<details>
|
||
|
||
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
|
||
|
||
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* **Συμμετάσχετε** 💬 στην [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο GitHub.
|
||
|
||
</details>
|