iOS Temel Test İşlemleri
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
iOS Cihaz Tanımlama ve Erişim Özeti
Bir iOS Cihazının UDID’si
Bir iOS cihazını benzersiz şekilde tanımlamak için UDID olarak bilinen 40 haneli bir dizi kullanılır. macOS Catalina veya daha yeni sürümlerde, iTunes artık bulunmadığı için bu bilgi Finder uygulaması içinde bulunabilir. Cihaz USB ile bağlandıktan ve Finder’da seçildikten sonra, isminin altındaki detaylara tıklandığında UDID diğer bilgilerle birlikte gösterilir.
Catalina’dan önceki macOS sürümleri için UDID’yi keşfetmek iTunes tarafından kolaylaştırılır. Detaylı talimatlar burada bulunabilir.
Komut satırı araçları UDID’yi almak için alternatif yöntemler sunar:
- I/O Registry Explorer aracını
ioregkullanarak:
$ ioreg -p IOUSB -l | grep "USB Serial"
- macOS (ve Linux) için
ideviceinstallerkullanımı:
$ brew install ideviceinstaller
$ idevice_id -l
system_profilerkullanımı:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Cihazları listelemek için
instrumentskullanma:
$ instruments -s devices
Cihazın Shell’ine Erişim
SSH access jailbreak sonrası OpenSSH package kurulumu ile etkinleştirilir; ssh root@<device_ip_address> ile bağlantı kurulmasına izin verir. Cihazı güvenli hale getirmek için root ve mobile kullanıcılarının varsayılan parolaları (alpine) mutlaka değiştirilmelidir.
SSH over USB Wi‑Fi olmadığında gerekli olur; SSH bağlantıları için cihaz portlarını eşlemek amacıyla iproxy kullanılır. Bu yapılandırma, USB üzerinden SSH erişimi sağlamak için şu komutu çalıştırır:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, NewTerm 2 gibi, doğrudan cihazla etkileşimi kolaylaştırır; özellikle sorun giderme için kullanışlıdır. Reverse SSH shells ayrıca host bilgisayarından uzaktan erişim için kurulabilir.
Resetting Forgotten Passwords
Unutulan bir parolayı varsayılan değere (alpine) geri döndürmek için /private/etc/master.passwd dosyasını düzenlemek gerekir. Bu, mevcut hash’i root ve mobile kullanıcı girdilerinin yanına alpine için olan hash ile değiştirmeyi içerir.
Data Transfer Techniques
Transferring App Data Files
Archiving and Retrieval via SSH and SCP: Uygulamanın Data dizinini tar ile arşivlemek ve ardından scp ile aktarmak oldukça basittir. Aşağıdaki komut Data dizinini bir .tgz dosyasına arşivler ve daha sonra cihazdan çekilir:
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 .
Grafiksel Kullanıcı Arayüzü Araçları
iFunbox ve iExplorer Kullanımı: Bu GUI araçları iOS cihazlarındaki dosyaları yönetmek için kullanışlıdır. Ancak, iOS 8.4’ten itibaren Apple, cihaz jailbroken olmadığı sürece bu araçların uygulama sandbox’una erişimini kısıtladı.
Objection ile Dosya Yönetimi
Objection ile Etkileşimli Shell: objection’i başlatmak bir uygulamanın Bundle dizinine erişim sağlar. Buradan uygulamanın Documents dizinine gidip dosyaları yönetebilir; bunları iOS cihazından indirip cihaza yükleyebilirsiniz.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Uygulamaları Elde Etme ve Çıkarma
IPA Dosyasını Elde Etme
Over-The-Air (OTA) Distribution Link: OTA üzerinden test amaçlı dağıtılan uygulamalar, npm ile kurulan ITMS services asset downloader tool kullanılarak indirilebilir ve IPA dosyası yerel olarak kaydedilebilir.
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: IPA’yı açın (unzip) ve şifre çözülmüş uygulama ikili dosyasına erişin.
- From a Jailbroken Device: Uygulamayı yükleyin ve şifre çözülmüş ikiliyi bellekten dump edin.
Decryption Process
Manual Decryption Overview: iOS uygulama ikilileri Apple tarafından FairPlay kullanılarak şifrelenir. Tersine mühendislik yapmak için şifre çözülmüş ikiliyi bellekten dump etmeniz gerekir. Şifre çözme süreci PIE flag’ini kontrol etmeyi, bellek bayraklarını ayarlamayı, şifrelenmiş bölümü tespit etmeyi ve ardından bu bölümü dump edip şifresi çözülmüş haliyle değiştirmeyi içerir.
Checking and Modifying PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Şifrelenmiş Bölümü Tanımlama ve Bellek Dumplama: otool kullanarak şifrelenmiş bölümün başlangıç ve bitiş adreslerini belirleyin ve jailbroken device üzerinde gdb kullanarak belleği dump edin.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Şifrelenmiş Bölümü Üzerine Yazma:
Orijinal uygulama ikili dosyasındaki şifrelenmiş bölümü decrypted dump ile değiştir.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Şifre Çözmeyi Tamamlama: İkili dosyanın meta verilerini şifreleme yokluğunu gösterecek şekilde, MachOView gibi araçları kullanarak değiştirin; cryptid değerini 0 olarak ayarlayın.
Şifre Çözme (Otomatik)
frida-ios-dump
The frida-ios-dump tool is employed for uygulamaları otomatik olarak şifre çözmek ve çıkarmak from iOS devices. Öncelikle, dump.py’yi iOS cihaza bağlanacak şekilde yapılandırmak gerekir; bu, localhost üzerinden 2222 portuyla iproxy aracılığıyla veya doğrudan cihazın IP adresi ve portu ile yapılabilir.
Cihaza yüklü uygulamalar şu komutla listelenebilir:
$ python dump.py -l
Belirli bir uygulamayı, örneğin Telegram’ı dump etmek için aşağıdaki komut kullanılır:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Bu komut uygulama dökümünü başlatır ve mevcut dizinde Telegram.ipa dosyasının oluşturulmasıyla sonuçlanır. Bu işlem jailbroken cihazlar için uygundur; imzasız veya sahte imzalanmış uygulamalar ios-deploy gibi araçlarla yeniden yüklenebilir.
frida-ipa-extract
Jailbroken cihazlar için Frida tabanlı IPA çıkarıcı; USB Frida oturumlarını ve daha hızlı çekimler için isteğe bağlı SSH/SFTP’yi kullanır.
- Gereksinimler: Python 3.9+,
frida,paramiko, jailbroken cihazda frida-server (SSH modu için OpenSSH). - Kurulum:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Kullanım:
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
- Seçenekler:
-f <bundle>uygulamayı başlatır/bağlanır (veya PID için--pid);-oçıkış adını belirler.-UUSB kullanır;-H/-P/-u/-pfrida-server27042’ye SSH tüneli açar ve SFTP ile çeker (-Uile birleştirilebilir).--sandboxsandbox’ı döker;--no-resumeoturum düşerse sistem sürecinin yeniden denemeleri ve çökme riskini önlemek için uygulamayı askıda tutar. - Sorun giderme:
Frida attach timed out→-fveya--no-resumekullanın;script has been destroyed→--no-resumeveya SSH transferi;No running apps found→ uygulamayı başlatın veya spawn edin.
flexdecrypt
The flexdecrypt tool, along with its wrapper flexdump, allows for the extraction of IPA files from installed applications. Installation commands for flexdecrypt on the device include downloading and installing the .deb package. flexdump can be used to list and dump apps, as shown in the commands below:
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, başka bir Frida tabanlı araç olup uygulamaların deşifre edilmesi için jailbroken bir cihaza ihtiyaç duyar:
bagbak --raw Chrome
r2flutch
r2flutch, radare ve frida’yı kullanarak uygulama şifre çözme ve dumping için kullanılır. Daha fazla bilgi için GitHub page.
Installing Apps
Sideloading resmi App Store dışında uygulama yüklemeyi ifade eder. Bu süreç installd daemon tarafından yönetilir ve uygulamaların Apple tarafından verilen bir sertifika ile imzalanmasını gerektirir. Jailbroken cihazlar bu kontrolü AppSync ile atlayabilir; böylece sahte imzalı IPA paketlerinin yüklenmesine izin verir.
Sideloading Tools
-
Cydia Impactor: iOS için IPA dosyalarını ve Android için APK dosyalarını imzalamak ve yüklemek için bir araç. Kılavuzlar ve sorun giderme için yalujailbreak.net adresine bakın.
-
libimobiledevice: iOS cihazlarla iletişim kurmak için Linux ve macOS üzerinde kullanılan bir kütüphane. ideviceinstaller için yükleme komutları ve USB üzerinden uygulama yüklemek için kullanım örnekleri sağlanmıştır.
-
ipainstaller: Bu komut satırı aracı iOS cihazlara doğrudan uygulama yüklemeye olanak tanır.
-
ios-deploy: macOS kullanıcıları için ios-deploy, iOS uygulamalarını komut satırından yükler. IPA’nın açılması (unzip) ve uygulamayı doğrudan başlatmak için
-mseçeneğinin kullanılması sürecin bir parçasıdır. -
Xcode: Xcode’u kullanarak uygulama yüklemek için Window/Devices and Simulators menüsüne gidin ve uygulamayı Installed Apps’e ekleyin.
Allow Application Installation on Non-iPad Devices
iPhone veya iPod touch cihazlarına iPad’e özel uygulamaları yüklemek için Info.plist içindeki UIDeviceFamily değerinin 1 olarak değiştirilmesi gerekir. Ancak bu değişiklik, imza doğrulama kontrolleri nedeniyle IPA dosyasının yeniden imzalanmasını gerektirir.
Not: Bu yöntem, uygulama daha yeni iPad modellerine özel yetenekler gerektiriyorsa ve siz daha eski bir iPhone veya iPod touch kullanıyorsanız başarısız olabilir.
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
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


