iOS Basic Testing Operations

HackTricks'i Destekleyin

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, UDID olarak bilinen 40 haneli bir dizi kullanılır. macOS Catalina veya daha yenilerinde, bu Finder uygulamasında 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'sini diğer bilgilerle birlikte gösterir.

Catalina'dan önceki macOS sürümlerinde, UDID'nin keşfi için iTunes yardımcı olur. 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 Shell'i

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 kritik öneme sahiptir.

USB üzerinden SSH, Wi-Fi yokluğunda gereklidir ve SSH bağlantıları için cihaz portlarını eşlemek amacıyla iproxy kullanılır. Bu kurulum, USB üzerinden SSH erişimi sağlamak için şu komutla çalıştırılır:

$ 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ı ile 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

  1. Bir IPA'dan: Şifrelenmemiş uygulama ikili dosyasına erişmek için IPA'yı açın.

  2. Kırılmış Bir 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. Ters mühendislik yapmak için, şifrelenmemiş ikili dosyayı bellekten dökmek gerekir. Ş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:

otool kullanarak şifreli bölümün başlangıç ve bitiş adreslerini 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ü, şifrelenmemiş 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 Çözümü (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 ile 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 ios-deploy gibi araçlar kullanılarak yeniden yüklenebileceği jailbreak'li cihazlar için uygundur.

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.

References

Support HackTricks

Last updated