13 KiB
iOS Temel Test İşlemleri
AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek isterseniz veya HackTricks'i PDF olarak indirmek isterseniz ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.
iOS Cihaz Kimliklendirme ve Erişim Özeti
Bir iOS Cihazının UDID'sini Belirleme
Bir iOS cihazını benzersiz bir ş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 mevcut olmadığından, bunu Finder uygulamasında bulabilirsiniz. Cihaz, USB aracılığıyla bağlandığında ve Finder'da seçildiğinde, adının altındaki ayrıntılar tıklanarak UDID'sini diğer bilgilerle birlikte ortaya koyar.
Catalina'dan önceki macOS sürümleri için, UDID'nin keşfedilmesini iTunes kolaylaştırır. Detaylı talimatlar burada bulunabilir.
Komut satırı araçları, UDID'nin alınması için alternatif yöntemler sunar:
- I/O Registry Explorer aracını kullanarak
ioreg
:
$ ioreg -p IOUSB -l | grep "USB Serial"
ideviceinstaller
'ı macOS (ve Linux) için kullanma:
$ 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
Cihaz Kabuğuna Erişim
SSH erişimi, OpenSSH paketinin jailbreak sonrası yüklenmesiyle etkinleştirilir ve ssh root@<cihaz_ip_adresi>
üzerinden bağlantı sağlanır. Cihazı güvence altına almak için root
ve mobile
kullanıcıları için varsayılan şifreleri (alpine
) değiştirmek önemlidir.
USB üzerinden SSH erişimi, Wi-Fi olmadığında iproxy
kullanılarak cihaz bağlantı noktalarının SSH bağlantıları için eşlenmesini gerektirir. Bu yapılandırma, USB üzerinden SSH erişimini sağlamak için aşağıdaki komutun çalıştırılmasını sağlar:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Cihaz üzerindeki kabuk uygulamaları, özellikle sorun giderme için doğrudan cihaz etkileşimi sağlar. Ters SSH kabukları, uzaktan erişim için ana bilgisayardan da kurulabilir.
Unutulan Şifreleri Sıfırlama
Unutulan bir şifreyi varsayılan (alpine
) şifreye sıfırlamak için /private/etc/master.passwd
dosyasını düzenlemek gereklidir. Bu, mevcut karma yerine root
ve mobile
kullanıcı girişlerinin yanına alpine
için karma yerleştirilerek yapılır.
Veri Transfer Teknikleri
Uygulama Veri Dosyalarının Transferi
SSH ve SCP Aracılığıyla Arşivleme ve Geri Alma: Uygulamanın Veri dizinini tar
kullanarak arşivlemek ve ardından scp
kullanarak transfer etmek oldukça basittir. Aşağıdaki komut, Veri dizinini .tgz dosyasına arşivler ve ardından cihazdan çeker:
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 .
Grafik Kullanıcı Arayüzü Araçları
iFunbox ve iExplorer Kullanımı: Bu GUI araçları, iOS cihazlardaki dosyaları yönetmek için kullanışlıdır. Ancak, iOS 8.4 ile başlayarak, Apple bu araçların uygulama sandbox'ına erişimini kısıtladı, ancak cihaz jailbreak yapılmışsa erişim sağlanabilir.
Dosya Yönetimi için Objection Kullanımı
Objection ile Etkileşimli Kabuk: Objection'ı başlatmak, bir uygulamanın Bundle dizinine erişim sağlar. Buradan, uygulamanın Documents dizinine giderek dosyaları yönetebilir, iOS cihazına dosya indirebilir ve yükleyebilirsiniz.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Uygulamaların Elde Edilmesi ve Çıkarılması
IPA Dosyasının Edinilmesi
Over-The-Air (OTA) Dağıtım Bağlantısı: OTA ile test için dağıtılan uygulamalar, ITMS hizmetleri varlık indirme aracı kullanılarak indirilebilir. Bu araç npm aracılığıyla yüklenir ve IPA dosyasını yerel olarak kaydetmek için kullanılır.
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: IPA'yı açarak şifresi çözülmüş uygulama ikili dosyasına erişin.
- Jailbreak Yapılmış Bir Cihazdan: Uygulamayı yükleyin ve bellekten şifresi çözülmüş ikili dosyayı çıkarın.
Şifre Çözme Süreci
Manuel Şifre Çözme Genel Bakışı: iOS uygulama ikili dosyaları Apple tarafından FairPlay kullanılarak şifrelenir. Tersine mühendislik yapabilmek için, şifresi çözülmüş ikili dosyayı bellekten çıkarmak gerekir. Şifre çözme süreci, PIE bayrağının kontrol edilmesini, bellek bayraklarının ayarlanmasını, şifreli bölümün belirlenmesini ve ardından bu bölümün şifresi çözülmüş haliyle değiştirilmesini içerir.
PIE Bayrağının Kontrol Edilmesi ve Değiştirilmesi:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Şifreli Bölümü Tanımlama ve Belleği Dökme:
otool
kullanarak şifreli bölümün başlangıç ve bitiş adreslerini belirleyin ve gdb kullanarak jailbreak yapılmış cihazdan belleği 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ü, şifresi çözülmüş veriyle değiştirin.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Şifre Çözümünü Tamamlama: MachOView
gibi araçları kullanarak, şifreleme olmadığını belirtmek için ikili dosyanın meta verilerini değiştirin ve cryptid
değerini 0 olarak ayarlayın.
Şifre Çözme (Otomatik)
frida-ios-dump
frida-ios-dump aracı, iOS cihazlarından uygulamaların otomatik olarak şifrelenmesini ve çıkarılmasını sağlamak için kullanılır. İlk olarak, dump.py
dosyası iOS cihazına bağlanacak şekilde yapılandırılmalıdır. Bu, iproxy aracılığıyla localhost üzerinden 2222 numaralı porta veya doğrudan cihazın IP adresi ve portu üzerinden yapılabilir.
Cihaza yüklenen uygulamaları listelemek için aşağıdaki komut kullanılır:
$ 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, mevcut dizinde Telegram.ipa
adlı bir dosyanın oluşturulmasıyla sonuçlanan uygulama dökümünü başlatır. Bu işlem, jailbreak yapılmış cihazlar için uygundur, çünkü imzasız veya sahte imzalı uygulamalar ios-deploy gibi araçlar kullanılarak yeniden yüklenebilir.
flexdecrypt
flexdecrypt aracı ve onun sarmalayıcısı flexdump, yüklü uygulamalardan IPA dosyalarının çıkarılmasını sağlar. Cihazdaki flexdecrypt için kurulum komutları, .deb
paketinin indirilip kurulması içerir. Aşağıdaki komutlarda gösterildiği gibi flexdump, 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çtır ve uygulama şifrelemesini çözmek için jailbreak yapılmış bir cihaz gerektirir:
bagbak --raw Chrome
r2flutch
r2flutch, radare ve frida'yı kullanarak uygulama şifrelemesini ve dökümlemesini sağlar. Daha fazla bilgiye GitHub sayfasında ulaşılabilir.
Uygulama Kurulumu
Sideloading, resmi App Store dışında uygulama kurulumunu ifade eder. Bu işlem installd daemon tarafından yönetilir ve uygulamaların Apple tarafından verilen bir sertifika ile imzalanması gerekmektedir. Jailbreak yapılmış cihazlar, sahte imzalı IPA paketlerinin kurulumunu mümkün kılan AppSync ile bu işlemi atlayabilir.
Sideloading Araçları
-
Cydia Impactor: iOS üzerinde IPA dosyalarını, Android üzerinde APK dosyalarını imzalamak ve kurmak için bir araçtır. Kılavuzlar ve sorun giderme için yalujailbreak.net adresine bakabilirsiniz.
-
libimobiledevice: Linux ve macOS için iOS cihazlarla iletişim kurmak için bir kütüphanedir. Uygulamaları USB üzerinden kurmak için ideviceinstaller için kurulum komutları ve kullanım örnekleri sağlanmaktadır.
-
ipainstaller: Bu komut satırı aracı, iOS cihazlara doğrudan uygulama kurulumuna izin verir.
-
ios-deploy: macOS kullanıcıları için, ios-deploy komut satırından iOS uygulamalarını kurar. IPA dosyasını açmak ve doğrudan uygulama başlatmak için
-m
bayrağını kullanmak bu sürecin bir parçasıdır. -
Xcode: Uygulamaları kurmak için Xcode'u kullanarak Window/Devices and Simulators bölümüne gidin ve uygulamayı Installed Apps bölümüne ekleyin.
iPad Olmayan Cihazlara Uygulama Kurulumuna İzin Verme
iPhone veya iPod touch cihazlara iPad'e özgü uygulamaları kurmak için Info.plist dosyasındaki UIDeviceFamily değeri 1 olarak değiştirilmelidir. Ancak, imza doğrulama kontrolleri nedeniyle bu değişiklik IPA dosyasının yeniden imzalanmasını gerektirir.
Not: Bu yöntem, daha eski bir iPhone veya iPod touch kullanırken uygulamanın daha yeni iPad modellerine özgü yetenekler talep etmesi durumunda 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/
AWS hackleme konusunda sıfırdan kahramana htARTE (HackTricks AWS Red Team Expert) ile öğrenin!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklam vermek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINA göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter'da takip edin 🐦 @carlospolopm.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.