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

192 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# iOS Temel Test İşlemleri
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
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**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek paylaşın**.
</details>
## **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](http://www.iclarified.com/52179/how-to-find-your-iphones-udid) bulunabilir.
Komut satırı araçları, UDID'nin alınması için alternatif yöntemler sunar:
* **I/O Registry Explorer aracını kullanarak `ioreg`:**
```bash
$ ioreg -p IOUSB -l | grep "USB Serial"
```
* **`ideviceinstaller`'ı macOS (ve Linux) için kullanma:**
```bash
$ brew install ideviceinstaller
$ idevice_id -l
```
* **`system_profiler` kullanımı:**
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
* **Cihazları listelemek için `instruments` kullanma:**
```bash
$ instruments -s devices
```
### **Cihaz Kabuğuna Erişim**
**SSH erişimi**, **OpenSSH paketi**nin 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:
```bash
$ 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:
```bash
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.
```bash
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.
```bash
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:**
```bash
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.
```bash
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.
```bash
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**](https://github.com/AloneMonkey/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:
```bash
$ python dump.py -l
```
Belirli bir uygulamayı, örneğin Telegram'ı dökmek için aşağıdaki komut kullanılır:
```bash
$ 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**](https://github.com/ios-control/ios-deploy) gibi araçlar kullanılarak yeniden yüklenebilir.
#### **flexdecrypt**
[**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) aracı ve onun sarmalayıcısı [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), 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:
```bash
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**](https://github.com/ChiChou/bagbak), başka bir Frida tabanlı araçtır ve uygulama şifrelemesini çözmek için jailbreak yapılmış bir cihaz gerektirir:
```bash
bagbak --raw Chrome
```
#### **r2flutch**
**r2flutch**, radare ve frida'yı kullanarak uygulama şifrelemesini ve dökümlemesini sağlar. Daha fazla bilgiye [**GitHub sayfasında**](https://github.com/as0ler/r2flutch) 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](https://yalujailbreak.net/how-to-use-cydia-impactor/) 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/](ttps://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-0052/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](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-0054/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
<details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* Şirketinizi HackTricks'te **reklam vermek veya HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINA**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz olan [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da takip edin 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live).
* Hacking hilelerinizi **HackTricks** ve **HackTricks Cloud** github reposuna PR göndererek paylaşın.
</details>