hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
2024-02-10 18:14:16 +00:00

13 KiB
Raw Blame History

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ı:

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

  1. Bir IPA'dan: IPA'yı açarak şifresi çözülmüş uygulama ikili dosyasına erişin.
  2. 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

AWS hackleme konusunda sıfırdan kahramana htARTE (HackTricks AWS Red Team Expert) ile öğrenin!

HackTricks'ı desteklemenin diğer yolları: