iOS Temel Test Operasyonları
Reading time: 8 minutes
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
iOS Cihaz Tanımlama ve Erişim Özeti
Bir iOS Cihazının UDID'sini Tanımlama
Bir iOS cihazını benzersiz bir şekilde tanımlamak için 40 haneli bir dizi olan UDID kullanılır. macOS Catalina veya daha yenilerinde, bu Finder uygulaması içinde bulunabilir, çünkü iTunes artık mevcut değildir. Cihaz, USB ile bağlandığında ve Finder'da seçildiğinde, adı altındaki detaylar tıklandığında UDID'si diğer bilgilerle birlikte görünür.
Catalina'dan önceki macOS sürümlerinde, UDID'nin keşfi için iTunes kullanılmaktadır. Ayrıntılı talimatlar burada bulunabilir.
Komut satırı araçları, UDID'yi almak için alternatif yöntemler sunar:
- I/O Registry Explorer aracı
ioreg
kullanarak:
$ ioreg -p IOUSB -l | grep "USB Serial"
ideviceinstaller
kullanarak macOS (ve Linux) için:
$ brew install ideviceinstaller
$ idevice_id -l
system_profiler
Kullanımı:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Cihazları listelemek için
instruments
kullanma:
$ instruments -s devices
Cihaza Erişim Sağlama
SSH erişimi, jailbreak sonrası OpenSSH paketi yüklenerek etkinleştirilir ve ssh root@<device_ip_address>
üzerinden bağlantılara izin verir. Cihazı güvence altına almak için root
ve mobile
kullanıcıları için varsayılan şifrelerin (alpine
) değiştirilmesi önemlidir.
USB üzerinden SSH, Wi-Fi yokluğunda gerekli hale gelir ve SSH bağlantıları için cihaz portlarını eşlemek üzere iproxy
kullanılır. Bu kurulum, USB üzerinden SSH erişimi sağlamak için şu komutun çalıştırılmasını gerektirir:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Cihaz içi shell uygulamaları, NewTerm 2 gibi, doğrudan cihaz etkileşimini kolaylaştırır, bu da sorun giderme için özellikle faydalıdır. Ters SSH shell'leri de ana bilgisayardan uzaktan erişim için kurulabilir.
Unutulan Şifreleri Sıfırlama
Unutulan bir şifreyi varsayılan (alpine
) olarak sıfırlamak için, /private/etc/master.passwd
dosyasını düzenlemek gereklidir. Bu, mevcut hash'in root
ve mobile
kullanıcı girişlerinin yanındaki alpine
hash'i ile değiştirilmesini içerir.
Veri Aktarım Teknikleri
Uygulama Veri Dosyalarını Aktarma
SSH ve SCP ile Arşivleme ve Geri Alma: Uygulamanın Data dizinini tar
kullanarak arşivlemek ve ardından scp
ile aktarmak oldukça basittir. Aşağıdaki komut, Data dizinini bir .tgz dosyasına arşivler ve ardından 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 faydalıdır. Ancak, iOS 8.4 ile birlikte, Apple bu araçların uygulama sandbox'una erişimini kısıtladı, cihaz jailbreak edilmedikçe.
Dosya Yönetimi için Objection Kullanımı
Objection ile Etkileşimli Shell: Objection'ı başlatmak, bir uygulamanın Bundle dizinine erişim sağlar. Buradan, uygulamanın Belgeler dizinine geçebilir ve dosyaları yönetebilir, bunları iOS cihazına indirme ve yükleme işlemlerini gerçekleştirebilirsiniz.
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
Hava Üzerinden (OTA) Dağıtım Bağlantısı: Test için OTA üzerinden dağıtılan uygulamalar, npm aracılığıyla kurulan ve IPA dosyasını yerel olarak kaydetmek için kullanılan ITMS hizmetleri varlık indirme aracıyla indirilebilir.
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
Uygulama İkili Dosyasını Çıkarma
- Bir IPA'dan: Şifrelenmemiş uygulama ikili dosyasına erişmek için IPA'yı açın.
- Jailbroken Cihazdan: Uygulamayı yükleyin ve şifrelenmemiş ikili dosyayı bellekten çıkarın.
Şifre Çözme Süreci
Manuel Şifre Çözme Genel Bakış: iOS uygulama ikili dosyaları Apple tarafından FairPlay kullanılarak şifrelenmiştir. Tersine mühendislik yapmak için, şifrelenmemiş ikili dosyayı bellekten dökme işlemi yapılmalıdır. Şifre çözme süreci, PIE bayrağını kontrol etmeyi, bellek bayraklarını ayarlamayı, şifrelenmiş bölümü tanımlamayı ve ardından bu bölümü şifrelenmemiş haliyle değiştirmeyi içerir.
PIE Bayrağını Kontrol Etme ve Değiştirme:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Şifreli Bölümü Belirleme ve Belleği Dökme:
Şifreli bölümün başlangıç ve bitiş adreslerini otool
kullanarak belirleyin ve jailbreak yapılmış cihazdan belleği gdb kullanarak dökün.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Şifreli Bölümü Üzerine Yazma:
Orijinal uygulama ikili dosyasındaki şifreli bölümü, deşifre edilmiş döküm ile değiştirin.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Şifre Çözümlemenin Tamamlanması: Şifrelemenin yokluğunu belirtmek için ikili dosyanın meta verilerini MachOView gibi araçlar kullanarak değiştirin, cryptid
değerini 0 olarak ayarlayın.
Şifre Çözme (Otomatik Olarak)
frida-ios-dump
frida-ios-dump aracı, iOS cihazlarından otomatik olarak uygulamaları şifre çözmek ve çıkarmak için kullanılır. Öncelikle, dump.py
dosyasını iOS cihazına bağlanacak şekilde yapılandırmak gerekir; bu, iproxy aracılığıyla localhost üzerinden 2222 portu veya doğrudan cihazın IP adresi ve portu üzerinden yapılabilir.
Cihazda yüklü olan uygulamalar şu komutla listelenebilir:
$ python dump.py -l
Belirli bir uygulamayı, örneğin Telegram'ı dökmek 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ına neden olur. Bu işlem, imzasız veya sahte imzalı uygulamaların yeniden yüklenebileceği jailbreak'li cihazlar için uygundur; bu işlem için ios-deploy gibi araçlar kullanılabilir.
flexdecrypt
flexdecrypt aracı ve onun sarmalayıcısı flexdump, yüklü uygulamalardan IPA dosyalarının çıkarılmasına olanak tanır. Cihazda flexdecrypt için kurulum komutları, .deb
paketinin indirilmesi ve yüklenmesini içerir. flexdump, aşağıdaki komutlarda gösterildiği gibi uygulamaları listelemek ve dökmek için kullanılabilir:
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ç, uygulama şifrelemesini çözmek için jailbreak yapılmış bir cihaza ihtiyaç duyar:
bagbak --raw Chrome
r2flutch
r2flutch, hem radare hem de frida kullanarak, uygulama şifrelemesi ve dökümü için hizmet eder. Daha fazla bilgi GitHub sayfasında bulunabilir.
Uygulama Yükleme
Sideloading, uygulamaların resmi App Store dışında yüklenmesini ifade eder. Bu işlem installd daemon tarafından yönetilir ve uygulamaların Apple tarafından verilen bir sertifika ile imzalanmasını gerektirir. Jailbroken cihazlar, sahte imzalı IPA paketlerinin yüklenmesini sağlayan AppSync aracılığıyla bunu atlayabilir.
Sideloading Araçları
-
Cydia Impactor: iOS'ta IPA dosyalarını ve Android'de APK dosyalarını imzalamak ve yüklemek için bir araçtır. Kılavuzlar ve sorun giderme bilgileri yalujailbreak.net adresinde bulunabilir.
-
libimobiledevice: iOS cihazlarıyla iletişim kurmak için Linux ve macOS için bir kütüphanedir. USB üzerinden uygulama yüklemek için ideviceinstaller için kurulum komutları ve kullanım örnekleri sağlanmıştır.
-
ipainstaller: Bu komut satırı aracı, iOS cihazlarında doğrudan uygulama yüklemeye olanak tanır.
-
ios-deploy: macOS kullanıcıları için ios-deploy, komut satırından iOS uygulamalarını yükler. IPA dosyasını açmak ve doğrudan uygulama başlatmak için
-m
bayrağını kullanmak sürecin bir parçasıdır. -
Xcode: Uygulamaları yüklemek için Xcode'u kullanarak Window/Devices and Simulators bölümüne gidin ve uygulamayı Installed Apps kısmına ekleyin.
iPad Dışı Cihazlarda Uygulama Yüklemeye İzin Ver
iPhone veya iPod touch cihazlarında iPad'e özel uygulamaları yüklemek için Info.plist dosyasındaki UIDeviceFamily değeri 1 olarak değiştirilmelidir. 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 özgü yetenekler talep ediyorsa, eski bir iPhone veya iPod touch kullanırken başarısız olabilir.
Referanslar
- 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/
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.