iOS Osnovne operacije testiranja
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Sažetak identifikacije i pristupa iOS uređajima
Identifikacija UDID-a iOS uređaja
Za jedinstvenu identifikaciju iOS uređaja koristi se 40-znamenkasti niz poznat kao UDID. Na macOS Catalina ili novijim verzijama, UDID se može pronaći u Finder app, pošto iTunes više nije prisutan. Uređaj, kada je povezan putem USB-a i izabran u Finderu, prikazuje svoj UDID među ostalim informacijama kada se klikne na detalje ispod njegovog imena.
Za verzije macOS pre Cataline, iTunes olakšava pronalaženje UDID-a. Detaljna uputstva možete pronaći ovde.
Alatke komandne linije nude alternativne metode za dobijanje UDID-a:
- Korišćenje I/O Registry Explorer alata
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Korišćenje
ideviceinstallerza macOS (i Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Korišćenje
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Korišćenje
instrumentsza nabrajanje uređaja:
$ instruments -s devices
Pristup shell-u uređaja
SSH access je omogućen instalacijom OpenSSH package post-jailbreak, omogućavajući konekcije preko ssh root@<device_ip_address>. Važno je promeniti podrazumevane lozinke (alpine) za korisnike root i mobile kako bi se uređaj osigurao.
SSH over USB postaje neophodan u odsustvu Wi-Fi, koristeći iproxy da mapira portove uređaja za SSH konekcije. Ova konfiguracija omogućava SSH pristup preko USB pokretanjem:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, like NewTerm 2, omogućavaju direktnu interakciju sa uređajem, što je posebno korisno za rešavanje problema. Reverse SSH shells se takođe mogu uspostaviti za daljinski pristup sa host računara.
Resetting Forgotten Passwords
Da biste resetovali zaboravljenu lozinku na podrazumevanu (alpine), potrebno je izmeniti fajl /private/etc/master.passwd. To podrazumeva zamenu postojećeg hash-a sa hash-om za alpine pored unosa korisnika root i mobile.
Data Transfer Techniques
Transferring App Data Files
Archiving and Retrieval via SSH and SCP: Jednostavno je arhivirati direktorijum Data aplikacije koristeći tar, a zatim ga preneti koristeći scp. Komanda ispod arhivira Data direktorijum u .tgz fajl, koji se potom povlači sa uređaja:
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 .
Grafički alati korisničkog interfejsa
Korišćenje iFunbox i iExplorer: Ovi GUI alati su korisni za upravljanje fajlovima na iOS uređajima. Međutim, počevši od iOS 8.4, Apple je ograničio pristup ovih alata aplikacionom sandboxu, osim ako uređaj nije jailbroken.
Korišćenje Objection za upravljanje fajlovima
Interaktivni shell sa Objection: Pokretanje objection-a pruža pristup Bundle direktorijumu aplikacije. Odatle možete navigirati do Documents direktorijuma aplikacije i upravljati fajlovima, uključujući njihovo preuzimanje i otpremanje ka i sa iOS uređaja.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Dobijanje i ekstrakcija aplikacija
Preuzimanje IPA fajla
Over-The-Air (OTA) Distribution Link: Aplikacije distribuirane za testiranje putem OTA mogu se preuzeti koristeći ITMS services asset downloader tool, koji se instalira preko npm i koristi se za čuvanje IPA fajla lokalno.
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
- From an IPA: Otpakujte IPA da biste pristupili decrypted app binary.
- From a Jailbroken Device: Instalirajte app i izvucite decrypted binary iz memory.
Decryption Process
Manual Decryption Overview: iOS app binaries su enkriptovani od strane Apple koristeći FairPlay. Za reverse-engineer, mora se dump-ovati decrypted binary iz memory. Proces dekripcije uključuje proveru PIE flag, prilagođavanje memory flags, identifikovanje encrypted section, i potom dump-ovanje i zamenu tog section sa njegovim decrypted form.
Checking and Modifying PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identifikovanje šifrovanog segmenta i dumpovanje memorije:
Odredite početnu i krajnju adresu šifrovanog segmenta koristeći otool i dumpujte memoriju sa jailbroken uređaja koristeći gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Prepisivanje šifrovanog dela:
Zameni šifrovani deo u originalnom app binary sa dešifrovanim dumpom.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Završavanje dekriptovanja: Izmenite metapodatke binarnog fajla da označite odsustvo enkripcije koristeći alate kao što je MachOView, postavljajući cryptid na 0.
Dekriptovanje (automatski)
frida-ios-dump
Alat frida-ios-dump se koristi za automatsko dekriptovanje i izvlačenje aplikacija sa iOS uređaja. U početku je potrebno podesiti dump.py da se poveže sa iOS uređajem, što se može uraditi preko localhost-a na portu 2222 putem iproxy, ili direktno putem IP adrese uređaja i porta.
Aplikacije instalirane na uređaju mogu se prikazati komandom:
$ python dump.py -l
Da biste dump-ovali određenu aplikaciju, kao što je Telegram, koristi se sledeća komanda:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Ova komanda pokreće dump aplikacije, što rezultira kreiranjem Telegram.ipa fajla u trenutnom direktorijumu. Ovaj proces je pogodan za jailbroken devices, jer se unsigned ili fake-signed aplikacije mogu ponovo instalirati pomoću alata kao što je ios-deploy.
frida-ipa-extract
Frida-based IPA extractor za jailbroken devices; koristi USB Frida sesije i opcioni SSH/SFTP za brže preuzimanje.
- Zahtevi: Python 3.9+,
frida,paramiko, jailbroken device sa frida-server (OpenSSH za SSH mode). - Podešavanje:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Upotreba:
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
- Opcije:
-f <bundle>spawn-uje/pridružuje se (ili--pidza PID);-opostavlja ime izlaza.-Ukoristi USB;-H/-P/-u/-potvara SSH tunel dofrida-server27042 i povlači preko SFTP (može se kombinovati sa-U).--sandboxdumpuje sandbox;--no-resumedrži aplikaciju suspendovanom da bi se izbegli padovi i ponovne probe od strane sistemskog procesa ako se sesija prekine. - Rešavanje problema:
Frida attach timed out→ koristi-fili--no-resume;script has been destroyed→--no-resumeili SSH transfer;No running apps found→ pokreni ili spawn-uj aplikaciju.
flexdecrypt
The flexdecrypt tool, along with its wrapper flexdump, omogućava ekstrakciju IPA fajlova iz instaliranih aplikacija. Komande za instalaciju za flexdecrypt na uređaju uključuju preuzimanje i instalaciju .deb paketa. flexdump se može koristiti za listanje i dumpovanje aplikacija, kao što je prikazano u komandama ispod:
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, još jedan Frida-based alat, zahteva jailbroken uređaj za dešifrovanje aplikacije:
bagbak --raw Chrome
r2flutch
r2flutch, koristeći i radare i frida, služi za dekriptovanje i dumpovanje aplikacija. Više informacija može se naći na njenoj GitHub page.
Installing Apps
Sideloading odnosi se na instalaciju aplikacija izvan zvaničnog App Store-a. Ovaj proces je upravljan od strane installd daemon i zahteva da aplikacije budu potpisane sa Apple-issued certificate. Jailbroken uređaji mogu zaobići ovo pomoću AppSync, što omogućava instalaciju fake-signed IPA paketa.
Sideloading Tools
-
Cydia Impactor: Alat za potpisivanje i instalaciju IPA fajlova na iOS i APK fajlova na Android. Vodiči i rešavanje problema dostupni su na yalujailbreak.net.
-
libimobiledevice: Biblioteka za Linux i macOS za komunikaciju sa iOS uređajima. Komande za instalaciju i primeri upotrebe za ideviceinstaller su dati za instalaciju aplikacija preko USB-a.
-
ipainstaller: Ovaj command-line alat omogućava direktnu instalaciju aplikacije na iOS uređaje.
-
ios-deploy: Za macOS korisnike, ios-deploy instalira iOS aplikacije iz komandne linije. Unzipovanje IPA i korišćenje
-mflag-a za direktno pokretanje aplikacije su deo procesa. -
Xcode: Koristite Xcode za instalaciju aplikacija tako što ćete otići na Window/Devices and Simulators i dodati aplikaciju u Installed Apps.
Allow Application Installation on Non-iPad Devices
Da biste instalirali iPad-specific aplikacije na iPhone ili iPod touch uređaje, vrednost UIDeviceFamily u Info.plist fajlu mora biti promenjena na 1. Ova izmena, međutim, zahteva ponovno potpisivanje IPA fajla zbog provere potpisa.
Note: Ova metoda može da zakaže ako aplikacija zahteva capability-e koji su ekskluzivni za novije iPad modele, dok se koristi stariji iPhone ili iPod touch.
References
- 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/
- frida-ipa-extract
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


