mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
174 lines
10 KiB
Markdown
174 lines
10 KiB
Markdown
# iOS Osnovne Operacije Testiranja
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## **Sažetak identifikacije i pristupa iOS uređaju**
|
|
|
|
### **Identifikacija UDID-a iOS uređaja**
|
|
|
|
Da bi se jedinstveno identifikovao iOS uređaj, koristi se 40-cifreni niz poznat kao UDID. Na macOS Catalina ili novijim verzijama, ovo se može pronaći u **Finder aplikaciji**, pošto iTunes više nije prisutan. Uređaj, kada je povezan putem USB-a i odabran u Finder-u, otkriva svoj UDID među ostalim informacijama kada se klikne na detalje ispod njegovog imena.
|
|
|
|
Za verzije macOS-a pre Cataline, iTunes olakšava otkrivanje UDID-a. Detaljna uputstva mogu se pronaći [ovde](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
|
|
|
|
Alati komandne linije nude alternativne metode za preuzimanje UDID-a:
|
|
|
|
- **Korišćenje I/O Registry Explorer alata `ioreg`:**
|
|
```bash
|
|
$ ioreg -p IOUSB -l | grep "USB Serial"
|
|
```
|
|
- **Korišćenje `ideviceinstaller` za macOS (i Linux):**
|
|
```bash
|
|
$ brew install ideviceinstaller
|
|
$ idevice_id -l
|
|
```
|
|
- **Korišćenje `system_profiler`:**
|
|
```bash
|
|
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
|
```
|
|
- **Korišćenje `instruments` za listanje uređaja:**
|
|
```bash
|
|
$ instruments -s devices
|
|
```
|
|
### **Pristupanje Shell-u Uređaja**
|
|
|
|
**SSH pristup** se omogućava instalacijom **OpenSSH paketa** nakon jailbreak-a, što omogućava veze putem `ssh root@<device_ip_address>`. Ključno je promeniti podrazumevane lozinke (`alpine`) za korisnike `root` i `mobile` kako bi se osigurao uređaj.
|
|
|
|
**SSH preko USB-a** postaje neophodan u odsustvu Wi-Fi-a, koristeći `iproxy` za mapiranje portova uređaja za SSH veze. Ova konfiguracija omogućava SSH pristup putem USB-a pokretanjem:
|
|
```bash
|
|
$ iproxy 2222 22
|
|
$ ssh -p 2222 root@localhost
|
|
```
|
|
**Aplikacije za shell na uređaju**, poput NewTerm 2, olakšavaju direktnu interakciju sa uređajem, što je posebno korisno za rešavanje problema. **Reverse SSH shell-ovi** se takođe mogu uspostaviti za daljinski pristup sa host računara.
|
|
|
|
### **Resetovanje Zaboravljenih Lozinki**
|
|
|
|
Da biste resetovali zaboravljenu lozinku na podrazumevanu (`alpine`), potrebno je urediti datoteku `/private/etc/master.passwd`. To podrazumeva zamenu postojećeg heša sa hešem za `alpine` pored unosa korisnika `root` i `mobile`.
|
|
|
|
## **Tehnike Prenosa Podataka**
|
|
|
|
### **Prenos Datoteka Aplikacija**
|
|
|
|
**Arhiviranje i Preuzimanje putem SSH i SCP:** Jednostavno je arhivirati direktorijum podataka aplikacije koristeći `tar` i zatim ga preneti koristeći `scp`. Komanda ispod arhivira direktorijum podataka u .tgz datoteku, koja se zatim preuzima sa uređaja:
|
|
```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 .
|
|
```
|
|
### **Alati za grafički korisnički interfejs**
|
|
|
|
**Korišćenje iFunbox-a i iExplorer-a:** Ovi GUI alati su korisni za upravljanje datotekama na iOS uređajima. Međutim, počevši od iOS 8.4, Apple je ograničio pristup ovim alatima aplikacionom sandbox-u osim ako uređaj nije jailbreak-ovan.
|
|
|
|
### **Korišćenje Objection-a za upravljanje datotekama**
|
|
|
|
**Interaktivna ljuska sa Objection-om:** Pokretanje objection-a omogućava pristup Bundle direktorijumu aplikacije. Odatle možete navigirati do direktorijuma Documents aplikacije i upravljati datotekama, uključujući preuzimanje i otpremanje na i sa iOS uređaja.
|
|
```bash
|
|
objection --gadget com.apple.mobilesafari explorer
|
|
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
|
file download <filename>
|
|
```
|
|
## **Dobijanje i Ekstrakcija Aplikacija**
|
|
|
|
### **Sticanje IPA Fajla**
|
|
|
|
**Over-The-Air (OTA) Distribucioni Link:** Aplikacije distribuirane za testiranje putem OTA mogu se preuzeti koristeći ITMS uslugu alata za preuzimanje sredstava, koji se instalira putem npm i koristi za čuvanje IPA fajla lokalno.
|
|
```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
|
|
```
|
|
### **Ekstrakcija binarnog fajla aplikacije**
|
|
|
|
1. **Iz IPA:** Raspakujte IPA da biste pristupili dekriptovanom binarnom fajlu aplikacije.
|
|
2. **Iz Jailbroken uređaja:** Instalirajte aplikaciju i ekstraktujte dekriptovani binarni fajl iz memorije.
|
|
|
|
### **Proces dekripcije**
|
|
|
|
**Pregled ručne dekripcije:** iOS binarni fajlovi aplikacija su enkriptovani od strane Apple-a koristeći FairPlay. Da bi se izvršilo obrnuto inženjerstvo, potrebno je izdumpovati dekriptovani binarni fajl iz memorije. Proces dekripcije uključuje proveru PIE zastavice, podešavanje memorijskih zastavica, identifikaciju enkriptovanog dela, a zatim dumpovanje i zamenu ovog dela sa njegovom dekriptovanom verzijom.
|
|
|
|
**Provera i modifikacija PIE zastavice:**
|
|
```bash
|
|
otool -Vh Original_App
|
|
python change_macho_flags.py --no-pie Original_App
|
|
otool -Vh Hello_World
|
|
```
|
|
**Identifikacija Enkriptovane Sekcije i Ispisivanje Memorije:**
|
|
|
|
Odredite početne i završne adrese enkriptovane sekcije koristeći `otool` i ispišite memoriju sa jailbreak-ovanog uređaja koristeći gdb.
|
|
```bash
|
|
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
|
dump memory dump.bin 0x8000 0x10a4000
|
|
```
|
|
**Prepisivanje Enkriptovane Sekcije:**
|
|
|
|
Zamenite enkriptovanu sekciju u originalnom binarnom fajlu aplikacije sa dekriptovanim dump-om.
|
|
```bash
|
|
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
|
```
|
|
**Finalizacija Dekripcije:** Izmenite metapodatke binarnog fajla da označite odsustvo enkripcije koristeći alate kao što je **MachOView**, postavljajući `cryptid` na 0.
|
|
|
|
### **Dekripcija (Automatski)**
|
|
|
|
#### **frida-ios-dump**
|
|
|
|
Alat [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) se koristi za **automatsko dekriptovanje i ekstrakciju aplikacija** sa iOS uređaja. Prvo, potrebno je konfigurisati `dump.py` da se poveže sa iOS uređajem, što se može uraditi preko localhost-a na portu 2222 putem **iproxy** ili direktno putem IP adrese uređaja i porta.
|
|
|
|
Aplikacije instalirane na uređaju mogu se nabrojati komandom:
|
|
```bash
|
|
$ python dump.py -l
|
|
```
|
|
Da biste dumpovali određenu aplikaciju, kao što je Telegram, koristi se sledeća komanda:
|
|
```bash
|
|
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
|
```
|
|
Ova komanda pokreće dump aplikacije, što rezultira kreiranjem `Telegram.ipa` fajla u trenutnom direktorijumu. Ovaj proces je pogodan za jailbroken uređaje, jer se nesigned ili lažno potpisane aplikacije mogu ponovo instalirati koristeći alate kao što je [**ios-deploy**](https://github.com/ios-control/ios-deploy).
|
|
|
|
#### **flexdecrypt**
|
|
|
|
Alat [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), zajedno sa svojim wrapper-om [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), omogućava ekstrakciju IPA fajlova iz instaliranih aplikacija. Komande za instalaciju **flexdecrypt** na uređaju uključuju preuzimanje i instalaciju `.deb` paketa. **flexdump** se može koristiti za listanje i dump aplikacija, kao što je prikazano u komandama ispod:
|
|
```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), još jedan alat zasnovan na Fridi, zahteva jailbreak-ovan uređaj za dekripciju aplikacija:
|
|
```bash
|
|
bagbak --raw Chrome
|
|
```
|
|
#### **r2flutch**
|
|
|
|
**r2flutch**, koristeći radare i frida, služi za dekripciju i dump aplikacija. Više informacija možete pronaći na njegovoj [**GitHub stranici**](https://github.com/as0ler/r2flutch).
|
|
|
|
### **Instalacija Aplikacija**
|
|
|
|
**Sideloading** se odnosi na instalaciju aplikacija van zvanične App Store. Ovaj proces upravlja **installd daemon** i zahteva da aplikacije budu potpisane Apple-ovim sertifikatom. Jailbroken uređaji mogu to zaobići putem **AppSync**, omogućavajući instalaciju lažno potpisanih IPA paketa.
|
|
|
|
#### **Alati za Sideloading**
|
|
|
|
- **Cydia Impactor**: Alat za potpisivanje i instalaciju IPA datoteka na iOS-u i APK datoteka na Androidu. Vodiči i rešenja za probleme mogu se pronaći na [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
|
|
|
- **libimobiledevice**: Biblioteka za Linux i macOS za komunikaciju sa iOS uređajima. Komande za instalaciju i primeri korišćenja za ideviceinstaller su obezbeđeni za instalaciju aplikacija preko USB-a.
|
|
|
|
- **ipainstaller**: Ovaj alat za komandnu liniju omogućava direktnu instalaciju aplikacija na iOS uređajima.
|
|
|
|
- **ios-deploy**: Za korisnike macOS-a, ios-deploy instalira iOS aplikacije iz komandne linije. Raspakivanje IPA i korišćenje `-m` oznake za direktno pokretanje aplikacije su deo procesa.
|
|
|
|
- **Xcode**: Koristite Xcode za instalaciju aplikacija navigirajući do **Window/Devices and Simulators** i dodajući aplikaciju u **Installed Apps**.
|
|
|
|
#### **Dozvolite Instalaciju Aplikacija na Ne-iPad Uređajima**
|
|
|
|
Da biste instalirali aplikacije specifične za iPad na iPhone ili iPod touch uređaje, potrebno je promeniti **UIDeviceFamily** vrednost u **Info.plist** datoteci na **1**. Ova modifikacija, međutim, zahteva ponovo potpisivanje IPA datoteke zbog provere validacije potpisa.
|
|
|
|
**Napomena**: Ova metoda može propasti ako aplikacija zahteva mogućnosti koje su ekskluzivne za novije modele iPad-a dok se koristi stariji iPhone ili iPod touch.
|
|
|
|
## Reference
|
|
|
|
- [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/)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|