# iOS Basic Testing Operations
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## **Opsomming van iOS Toestel Identifikasie en Toegang**
### **Identifisering van die UDID van 'n iOS Toestel**
Om 'n iOS-toestel uniek te identifiseer, word 'n 40-syfer volgorde bekend as die UDID gebruik. Op macOS Catalina of nuwer, kan dit in die **Finder-app** gevind word, aangesien iTunes nie meer teenwoordig is nie. Die toestel, wanneer dit via USB gekoppel en in Finder gekies is, openbaar sy UDID onder ander inligting wanneer die besonderhede onder sy naam geklik word.
Vir weergawes van macOS voor Catalina, fasiliteer iTunes die ontdekking van die UDID. Gedetailleerde instruksies kan [hier](http://www.iclarified.com/52179/how-to-find-your-iphones-udid) gevind word.
Opdraglyn gereedskap bied alternatiewe metodes om die UDID te verkry:
* **Gebruik I/O Registry Explorer gereedskap `ioreg`:**
```bash
$ ioreg -p IOUSB -l | grep "USB Serial"
```
* **Gebruik `ideviceinstaller` vir macOS (en Linux):**
```bash
$ brew install ideviceinstaller
$ idevice_id -l
```
* **Gebruik van `system_profiler`:**
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
* **Gebruik van `instruments` om toestelle te lys:**
```bash
$ instruments -s devices
```
### **Toegang tot die Toestel Skulp**
**SSH-toegang** is geaktiveer deur die **OpenSSH-pakket** na jailbreak te installeer, wat verbindings via `ssh root@` moontlik maak. Dit is noodsaaklik om die standaard wagwoorde (`alpine`) vir die gebruikers `root` en `mobile` te verander om die toestel te beveilig.
**SSH oor USB** word noodsaaklik in die afwesigheid van Wi-Fi, met `iproxy` om toestelpoorte vir SSH-verbinding te kaart. Hierdie opstelling stel SSH-toegang deur USB in staat deur die volgende uit te voer:
```bash
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
```
**On-device shell applications**, soos NewTerm 2, fasiliteer direkte toestelinteraksie, veral nuttig vir probleemoplossing. **Reverse SSH shells** kan ook gevestig word vir afstandstoegang vanaf die gasheerrekenaar.
### **Herstel van Vergete Wagwoorde**
Om 'n vergete wagwoord terug te stel na die standaard (`alpine`), is dit nodig om die `/private/etc/master.passwd` lêer te wysig. Dit behels die vervanging van die bestaande hash met die hash vir `alpine` langs die `root` en `mobile` gebruikersinvoere.
## **Data Oordrag Tegnieke**
### **Oordrag van App Data Lêers**
**Argivering en Herwinning via SSH en SCP:** Dit is eenvoudig om die toepassing se Data gids te argiveer met `tar` en dit dan oor te dra met `scp`. Die onderstaande opdrag argiveer die Data gids in 'n .tgz lêer, wat dan van die toestel af getrek word:
```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 .
```
### **Grafiese Gebruikerskoppelvlak Gereedskap**
**Gebruik iFunbox en iExplorer:** Hierdie GUI-gereedskap is nuttig vir die bestuur van lêers op iOS-toestelle. egter, vanaf iOS 8.4, het Apple die toegang van hierdie gereedskap tot die toepassingsandbox beperk tensy die toestel gejailbreak is.
### **Gebruik Objection vir Lêerbestuur**
**Interaktiewe Skulp met Objection:** Die bekendstelling van objection bied toegang tot die Bundle-gids van 'n app. Van hier af kan jy na die app se Dokumente-gids navigeer en lêers bestuur, insluitend die aflaai en oplaai daarvan na en van die iOS-toestel.
```bash
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download
```
## **Verkryging en Uittrekking van Apps**
### **Verkryging van die IPA-lêer**
**Over-The-Air (OTA) Verspreidingskakel:** Apps wat vir toetsing via OTA versprei word, kan afgelaai word met die ITMS-dienste bates aflaaier hulpmiddel, wat via npm geïnstalleer word en gebruik word om die IPA-lêer plaaslik te stoor.
```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
```
### **Uittreksel van die App Binêre**
1. **Van 'n IPA:** Unzip die IPA om toegang te verkry tot die gedekripteerde app binêre.
2. **Van 'n Jailbroken Toestel:** Installeer die app en ekstraheer die gedekripteerde binêre uit geheue.
### **Dekripsieproses**
**Handmatige Dekripsie Oorsig:** iOS app binêre is deur Apple met FairPlay geënkripteer. Om om te keer, moet 'n mens die gedekripteerde binêre uit geheue dump. Die dekripsieproses behels die nagaan van die PIE-vlag, die aanpassing van geheuevlagte, die identifisering van die geënkripteerde afdeling, en dan die dump en vervanging van hierdie afdeling met sy gedekripteerde vorm.
**Nagaan en Wysig PIE-vlag:**
```bash
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
```
**Identifying Encrypted Section and Dumping Memory:**
Bepaal die begin- en eindadresse van die versleutelde afdeling met behulp van `otool` en dump die geheue vanaf die jailbreak-toestel met behulp van gdb.
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
```
**Oorskrywing van die Gekodeerde Afdeling:**
Vervang die gekodeerde afdeling in die oorspronklike app-binary met die gedekodeerde dump.
```bash
dd bs=1 seek= conv=notrunc if=dump.bin of=Original_App
```
**Finalisering van Ontsleuteling:** Pas die binêre se metadata aan om die afwesigheid van versleuteling aan te dui met behulp van gereedskap soos **MachOView**, en stel die `cryptid` op 0.
### **Ontsleuteling (Outomaties)**
#### **frida-ios-dump**
Die [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) gereedskap word gebruik om **outomaties apps te ontsleutel en te onttrek** van iOS-toestelle. Aanvanklik moet 'n mens `dump.py` konfigureer om met die iOS-toestel te verbind, wat gedoen kan word deur localhost op poort 2222 via **iproxy** of direk via die toestel se IP-adres en poort.
Toepassings wat op die toestel geïnstalleer is, kan gelys word met die opdrag:
```bash
$ python dump.py -l
```
Om 'n spesifieke app, soos Telegram, te dump, word die volgende opdrag gebruik:
```bash
$ python3 dump.py -u "root" -p "" ph.telegra.Telegraph
```
Hierdie opdrag begin die app dump, wat lei tot die skepping van 'n `Telegram.ipa` lêer in die huidige gids. Hierdie proses is geskik vir jailbroken toestelle, aangesien ongetekende of vals-getekende apps herinstalleer kan word met behulp van gereedskap soos [**ios-deploy**](https://github.com/ios-control/ios-deploy).
#### **flexdecrypt**
Die [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) gereedskap, saam met sy wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), maak dit moontlik om IPA-lêers uit geïnstalleerde toepassings te onttrek. Installasie-opdragte vir **flexdecrypt** op die toestel sluit die aflaai en installasie van die `.deb` pakket in. **flexdump** kan gebruik word om apps te lys en te dump, soos in die onderstaande opdragte getoon:
```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), 'n ander Frida-gebaseerde hulpmiddel, vereis 'n jailbreak-toestel vir app-dekriptering:
```bash
bagbak --raw Chrome
```
#### **r2flutch**
**r2flutch**, wat beide radare en frida gebruik, dien vir app-dekriptering en dumping. Meer inligting kan op sy [**GitHub-bladsy**](https://github.com/as0ler/r2flutch) gevind word.
### **Installeer Apps**
**Sideloading** verwys na die installering van toepassings buite die amptelike App Store. Hierdie proses word hanteer deur die **installd daemon** en vereis dat apps onderteken word met 'n Apple-uitgereikte sertifikaat. Jailbroken toestelle kan dit omseil deur **AppSync**, wat die installering van vals-ondertekende IPA-pakkette moontlik maak.
#### **Sideloading Gereedskap**
- **Cydia Impactor**: 'n Gereedskap vir die ondertekening en installering van IPA-lêers op iOS en APK-lêers op Android. Gidsen en probleemoplossing kan op [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/) gevind word.
- **libimobiledevice**: 'n Biblioteek vir Linux en macOS om met iOS-toestelle te kommunikeer. Installasie-opdragte en gebruiksvoorbeelde vir ideviceinstaller word verskaf vir die installering van apps oor USB.
- **ipainstaller**: Hierdie opdraglyn-gereedskap laat direkte app-installering op iOS-toestelle toe.
- **ios-deploy**: Vir macOS-gebruikers installeer ios-deploy iOS-apps vanaf die opdraglyn. Ontzip van die IPA en die gebruik van die `-m` vlag vir direkte app-lancering is deel van die proses.
- **Xcode**: Gebruik Xcode om apps te installeer deur na **Window/Devices and Simulators** te navigeer en die app by **Installed Apps** te voeg.
#### **Laat Toepassing Installasie op Nie-iPad Toestelle toe**
Om iPad-spesifieke toepassings op iPhone of iPod touch toestelle te installeer, moet die **UIDeviceFamily** waarde in die **Info.plist** lêer verander word na **1**. Hierdie wysiging vereis egter dat die IPA-lêer weer onderteken word weens handtekeningvalideringstoets.
**Let wel**: Hierdie metode mag misluk as die toepassing vermoëns vereis wat eksklusief is vir nuwer iPad-modelle terwyl 'n ouer iPhone of iPod touch gebruik word.
## References
* [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/)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}