iOS Basic Testing Operations

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Opsomming van iOS-toestelidentifikasie en -toegang

Identifisering van die UDID van ’n iOS-toestel

Om ’n iOS-toestel eenduidig te identifiseer, word ’n 40-syferreeks, 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. Sodra die toestel via USB gekoppel en in Finder gekies is, vertoon dit sy UDID saam met ander inligting wanneer die besonderhede onder sy naam deurgekliek word.

Vir weergawes van macOS voor Catalina help iTunes om die UDID te vind. Gedetaileerde instruksies is beskikbaar here.

Opdragreëlinstrumente bied alternatiewe metodes om die UDID op te haal:

  • Gebruik van I/O Registry Explorer tool ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
  • Gebruik ideviceinstaller vir macOS (en Linux):
$ brew install ideviceinstaller
$ idevice_id -l
  • Gebruik van system_profiler:
$ 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:
$ instruments -s devices

Toegang tot die toestel se shell

SSH-toegang word geaktiveer deur die OpenSSH package post-jailbreak te installeer, wat verbindings via ssh root@<device_ip_address> toelaat. Dit is noodsaaklik om die verstekwagwoorde (alpine) vir die gebruikers root en mobile te verander om die toestel te beveilig.

SSH over USB word nodig in die afwesigheid van Wi‑Fi, deur iproxy te gebruik om toestelpoorte te koppel vir SSH-verbindinge. Hierdie opstelling maak SSH-toegang deur USB moontlik deur die volgende uit te voer:

$ iproxy 2222 22
$ ssh -p 2222 root@localhost

Op-toestel shell-toepassings, soos NewTerm 2, vergemaklik direkte interaksie met die toestel en is veral nuttig vir foutopsporing. Reverse SSH shells kan ook opgestel word vir afstandstoegang vanaf die gasheerrekenaar.

Herstel van vergete wagwoorde

Om ’n vergete wagwoord na die standaard (alpine) te herstel, 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-gebruikersinskrywings.

Data-oordragtegnieke

Oordrag van App-data-lêers

Argivering en ophaling via SSH en SCP: Dit is reguit vorentoe om die toepassing se Data-gids te argiveer met tar en dit daarna met scp oor te dra. Die opdrag hieronder argiveer die Data-gids in ’n .tgz-lêer, wat daarna vanaf die toestel getrek word:

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-instrumente

Gebruik iFunbox en iExplorer: Hierdie GUI-instrumente is nuttig om lêers op iOS-toestelle te bestuur. Maar vanaf iOS 8.4 het Apple die toegang van hierdie instrumente tot die application sandbox beperk, tensy die toestel jailbroken is.

Gebruik Objection vir lêerbestuur

Interaktiewe shell met Objection: Wanneer jy Objection loods, kry jy toegang tot die Bundle directory van ’n app. Van hier af kan jy na die app se Documents directory navigeer en lêers bestuur, insluitend om hulle af te laai en op te laai na en vanaf die iOS-toestel.

objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>

Verkryging en Uittrekking van Apps

Verkryging van die IPA-lêer

Over-The-Air (OTA) Distribution Link: Apps wat vir toetsing via OTA versprei word, kan afgelaai word met die ITMS services asset downloader tool, wat via npm geïnstalleer word en gebruik word om die IPA-lêer lokaal te stoor.

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

Extracting the App Binary

  1. From an IPA: Pak die IPA uit om toegang te kry tot die decrypted app binary.
  2. From a Jailbroken Device: Installeer die app en ekstraheer die decrypted binary uit memory.

Decryption Process

Manual Decryption Overview: iOS app binaries word deur Apple met FairPlay geënkripteer. Om te reverse-engineer moet jy die decrypted binary uit memory dump. Die dekripsieproses behels die kontrole van die PIE flag, die aanpassing van memory flags, die identifisering van die encrypted section, en dan die dump en vervanging van daardie section met sy decrypted form.

Checking and Modifying PIE Flag:

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 geënkripteerde gedeelte se begin- en eindadresse met otool, en dump die geheue vanaf die jailbroken toestel met gdb.

otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000

Oorskryf die Encrypted Section:

Vervang die encrypted section in die oorspronklike app binary met die decrypted dump.

dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App

Finalisering van Decryption: Wysig die binêre se metadata om die afwesigheid van enkripsie aan te dui met behulp van gereedskap soos MachOView, en stel die cryptid op 0.

Decryption (Automatically)

frida-ios-dump

Die frida-ios-dump tool word gebruik om automatically decrypting and extracting apps vanaf iOS-toestelle. Aanvanklik moet mens dump.py konfigureer om met die iOS-toestel te koppel, 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 met die volgende opdrag gelys word:

$ python dump.py -l

Om ’n spesifieke app te dump, soos Telegram, word die volgende opdrag gebruik:

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

Hierdie opdrag begin die app dump, wat ’n Telegram.ipa-lêer in die huidige gids skep. Hierdie proses is geskik vir jailbroken devices, aangesien unsigned of fake-signed apps herinstalleer kan word met gereedskap soos ios-deploy.

frida-ipa-extract

Frida-based IPA extractor vir jailbroken devices; gebruik USB Frida sessions en opsionele SSH/SFTP vir vinniger pulls.

  • Vereistes: Python 3.9+, frida, paramiko, jailbroken device with frida-server (OpenSSH for SSH mode).
  • Opstelling:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  • Gebruik:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
  • Vlagte: -f <bundle> spawns/attaches (or --pid for PID); -o stel die uitsetnaam in. -U gebruik USB; -H/-P/-u/-p open ’n SSH-tonnel na frida-server 27042 en trek via SFTP (kan met -U gekombineer word). --sandbox dump die sandbox; --no-resume hou die app opgeskort om ineenstortings en herbeginpogings deur ’n stelselproses te voorkom as die sessie val.
  • Foutsporing: Frida attach timed out → gebruik -f of --no-resume; script has been destroyed--no-resume of SSH-oordrag; No running apps found → begin of spawn die app.

flexdecrypt

Die flexdecrypt hulpmiddel, saam met sy wrapper flexdump, maak die onttrekking van IPA-lêers uit geïnstalleerde toepassings moontlik. Installasie-opdragte vir flexdecrypt op die toestel sluit in die aflaai en installering van die .deb pakket. flexdump kan gebruik word om apps te lys en te dump, soos in die opdragte hieronder getoon:

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, nog ’n Frida-based tool, vereis ’n jailbroken toestel vir die ontsleuteling van die app:

bagbak --raw Chrome

r2flutch

r2flutch, wat beide radare en frida gebruik, dien vir app-dekripsie en dumping. More information can be found on its GitHub page.

Installing 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 geteken is met ’n Apple-uitgereikte sertifikaat. Jailbroken toestelle kan dit omseil deur AppSync, wat die installering van fake-signed IPA-pakkette moontlik maak.

Sideloading Tools

  • Cydia Impactor: ’n hulpmiddel vir die ondertekening en installering van IPA-lêers op iOS en APK-lêers op Android. Gidse en probleemoplossing is beskikbaar op yalujailbreak.net.

  • libimobiledevice: ’n biblioteek vir Linux en macOS om met iOS-toestelle te kommunikeer. Installasie-opdragte en gebruiksvoorbeelde vir ideviceinstaller word verskaf om apps oor USB te installeer.

  • ipainstaller: Hierdie opdragreël-gereedskap laat direkte app-installasie op iOS-toestelle toe.

  • ios-deploy: Vir macOS-gebruikers installeer ios-deploy iOS-apps vanaf die opdragreël. Uitpak 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 by te voeg.

Allow Application Installation on Non-iPad Devices

Om iPad-spesifieke toepassings op iPhone of iPod touch-toestelle te installeer, moet die UIDeviceFamily-waarde in die Info.plist-lêer na 1 verander word. Hierdie wysiging vereis egter her-ondertekening van die IPA-lêer as gevolg van handtekening-valideringskontroles.

Note: Hierdie metode kan misluk as die toepassing vermoëns benodig wat eksklusief is aan nuwer iPad-modelle terwyl dit op ’n ouer iPhone of iPod touch gebruik word.

References

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks