mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-18 09:03:30 +00:00
193 lines
13 KiB
Markdown
193 lines
13 KiB
Markdown
# Podstawowe operacje testowania iOS
|
|
|
|
<details>
|
|
|
|
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
|
|
## **Podsumowanie identyfikacji i dostępu do urządzeń iOS**
|
|
|
|
### **Identyfikacja UDID urządzenia iOS**
|
|
|
|
Aby jednoznacznie zidentyfikować urządzenie iOS, używany jest 40-znakowy ciąg znaków znany jako UDID. W systemie macOS Catalina lub nowszym można go znaleźć w aplikacji **Finder**, ponieważ iTunes już nie istnieje. Po podłączeniu urządzenia za pomocą USB i wybraniu go w Finderze, UDID zostaje ujawniony wraz z innymi informacjami po kliknięciu szczegółów pod jego nazwą.
|
|
|
|
Wersje macOS wcześniejsze niż Catalina umożliwiają odkrycie UDID za pomocą iTunes. Szczegółowe instrukcje można znaleźć [tutaj](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
|
|
|
|
Narzędzia wiersza poleceń oferują alternatywne metody pobierania UDID:
|
|
|
|
* **Za pomocą narzędzia I/O Registry Explorer `ioreg`:**
|
|
```bash
|
|
$ ioreg -p IOUSB -l | grep "USB Serial"
|
|
```
|
|
* **Używanie `ideviceinstaller` dla macOS (i Linux):**
|
|
```bash
|
|
$ brew install ideviceinstaller
|
|
$ idevice_id -l
|
|
```
|
|
* **Wykorzystanie `system_profiler`:**
|
|
```bash
|
|
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
|
```
|
|
* **Wykorzystanie narzędzia `instruments` do wyświetlania listy urządzeń:**
|
|
```bash
|
|
$ instruments -s devices
|
|
```
|
|
### **Dostęp do powłoki urządzenia**
|
|
|
|
Dostęp **SSH** jest włączony poprzez zainstalowanie pakietu **OpenSSH** po jailbreaku, umożliwiając połączenia za pomocą `ssh root@<adres_ip_urządzenia>`. Ważne jest zmienienie domyślnych haseł (`alpine`) dla użytkowników `root` i `mobile`, aby zabezpieczyć urządzenie.
|
|
|
|
**SSH przez USB** staje się konieczny w przypadku braku Wi-Fi, korzystając z `iproxy` do mapowania portów urządzenia dla połączeń SSH. Ta konfiguracja umożliwia dostęp SSH przez USB, uruchamiając:
|
|
```bash
|
|
$ iproxy 2222 22
|
|
$ ssh -p 2222 root@localhost
|
|
```
|
|
**Aplikacje powłoki na urządzeniu**, takie jak NewTerm 2, ułatwiają bezpośrednią interakcję z urządzeniem, szczególnie przydatne do rozwiązywania problemów. **Odwrócone powłoki SSH** mogą również być ustanawiane w celu zdalnego dostępu z komputera hosta.
|
|
|
|
### **Resetowanie zapomnianych haseł**
|
|
|
|
Aby zresetować zapomniane hasło z powrotem do domyślnego (`alpine`), konieczne jest edytowanie pliku `/private/etc/master.passwd`. Polega to na zastąpieniu istniejącego skrótu skrótem dla `alpine` obok wpisów użytkowników `root` i `mobile`.
|
|
|
|
## **Techniki transferu danych**
|
|
|
|
### **Transferowanie plików danych aplikacji**
|
|
|
|
**Archiwizacja i pobieranie za pomocą SSH i SCP:** Proste jest zarchiwizowanie katalogu Data aplikacji za pomocą `tar`, a następnie przesłanie go za pomocą `scp`. Poniższe polecenie archiwizuje katalog Data do pliku .tgz, który następnie jest pobierany z urządzenia:
|
|
```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 .
|
|
```
|
|
### **Narzędzia z graficznym interfejsem użytkownika**
|
|
|
|
**Korzystanie z iFunbox i iExplorer:** Te narzędzia z graficznym interfejsem użytkownika są przydatne do zarządzania plikami na urządzeniach iOS. Jednak począwszy od wersji iOS 8.4, Apple ograniczyło dostęp tych narzędzi do piaskownicy aplikacji, chyba że urządzenie jest jailbroken.
|
|
|
|
### **Korzystanie z Objection do zarządzania plikami**
|
|
|
|
**Interaktywna powłoka z Objection:** Uruchomienie Objection umożliwia dostęp do katalogu Bundle aplikacji. Stąd można nawigować do katalogu Documents aplikacji i zarządzać plikami, w tym pobierać je i przesyłać na urządzenie iOS.
|
|
```bash
|
|
objection --gadget com.apple.mobilesafari explorer
|
|
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
|
file download <filename>
|
|
```
|
|
## **Pobieranie i wyodrębnianie aplikacji**
|
|
|
|
### **Pobieranie pliku IPA**
|
|
|
|
**Link dystrybucji Over-The-Air (OTA):** Aplikacje dystrybuowane do testów za pomocą OTA można pobrać za pomocą narzędzia do pobierania zasobów ITMS services asset downloader, które jest zainstalowane za pomocą npm i służy do zapisywania pliku IPA lokalnie.
|
|
```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
|
|
```
|
|
### **Wyodrębnianie binarnego pliku aplikacji**
|
|
|
|
1. **Z pliku IPA:** Rozpakuj plik IPA, aby uzyskać dostęp do zdeszyfrowanego binarnego pliku aplikacji.
|
|
2. **Z urządzenia z jailbreakiem:** Zainstaluj aplikację i wyodrębnij z pamięci zdeszyfrowany binarny plik.
|
|
|
|
### **Proces deszyfrowania**
|
|
|
|
**Przegląd ręcznego deszyfrowania:** Binarne pliki aplikacji iOS są szyfrowane przez Apple za pomocą FairPlay. Aby przeprowadzić inżynierię wsteczną, konieczne jest wyodrębnienie z pamięci zdeszyfrowanego binarnego pliku. Proces deszyfrowania polega na sprawdzeniu flagi PIE, dostosowaniu flag pamięci, zidentyfikowaniu zaszyfrowanej sekcji, a następnie wyodrębnieniu i zastąpieniu tej sekcji jej zdeszyfrowaną formą.
|
|
|
|
**Sprawdzanie i modyfikowanie flagi PIE:**
|
|
```bash
|
|
otool -Vh Original_App
|
|
python change_macho_flags.py --no-pie Original_App
|
|
otool -Vh Hello_World
|
|
```
|
|
**Identyfikowanie zaszyfrowanej sekcji i wydobywanie pamięci:**
|
|
|
|
Aby zidentyfikować początek i koniec zaszyfrowanej sekcji, użyj polecenia `otool`, a następnie wydobyj pamięć z urządzenia z jailbreakiem za pomocą gdb.
|
|
```bash
|
|
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
|
dump memory dump.bin 0x8000 0x10a4000
|
|
```
|
|
**Nadpisywanie sekcji zaszyfrowanej:**
|
|
|
|
Zastąp zaszyfrowaną sekcję w oryginalnym pliku binarnym aplikacji zdeszyfrowanym zrzutem.
|
|
```bash
|
|
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
|
```
|
|
**Finalizowanie Deszyfrowania:** Zmodyfikuj metadane binarne, aby wskazywały brak szyfrowania za pomocą narzędzi takich jak **MachOView**, ustawiając `cryptid` na 0.
|
|
|
|
### **Deszyfrowanie (Automatycznie)**
|
|
|
|
#### **frida-ios-dump**
|
|
Narzędzie [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) jest używane do **automatycznego deszyfrowania i ekstrakcji aplikacji** z urządzeń iOS. Na początku należy skonfigurować `dump.py`, aby połączyć się z urządzeniem iOS, co można zrobić za pomocą localhost na porcie 2222 za pośrednictwem **iproxy** lub bezpośrednio za pomocą adresu IP i portu urządzenia.
|
|
|
|
Zainstalowane aplikacje na urządzeniu można wyświetlić za pomocą polecenia:
|
|
```bash
|
|
$ python dump.py -l
|
|
```
|
|
Aby wykonać zrzut konkretnej aplikacji, takiej jak Telegram, używane jest poniższe polecenie:
|
|
```bash
|
|
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
|
```
|
|
Ten polecenie inicjuje zrzut aplikacji, co skutkuje utworzeniem pliku `Telegram.ipa` w bieżącym katalogu. Ten proces jest odpowiedni dla urządzeń z jailbreakiem, ponieważ niesygnowane lub fałszywie podpisane aplikacje można ponownie zainstalować za pomocą narzędzi takich jak [**ios-deploy**](https://github.com/ios-control/ios-deploy).
|
|
|
|
#### **flexdecrypt**
|
|
Narzędzie [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) wraz z jego opakowaniem [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac) umożliwiają wyodrębnianie plików IPA z zainstalowanych aplikacji. Polecenia instalacyjne dla **flexdecrypt** na urządzeniu obejmują pobranie i zainstalowanie pakietu `.deb`. **flexdump** można użyć do wyświetlania listy i zrzutu aplikacji, jak pokazano poniżej:
|
|
```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), kolejne narzędzie oparte na Frida, wymaga zrootowanego urządzenia do deszyfrowania aplikacji:
|
|
```bash
|
|
bagbak --raw Chrome
|
|
```
|
|
#### **r2flutch**
|
|
**r2flutch**, wykorzystujący zarówno radare, jak i frida, służy do deszyfrowania i dumpowania aplikacji. Więcej informacji można znaleźć na [**stronie GitHub**](https://github.com/as0ler/r2flutch).
|
|
|
|
### **Instalowanie aplikacji**
|
|
|
|
**Sideloading** odnosi się do instalowania aplikacji spoza oficjalnego sklepu App Store. Proces ten jest obsługiwany przez demona **installd** i wymaga, aby aplikacje były podpisane certyfikatem wydanym przez Apple. Zdjęcia IPA podpisane fałszywie można zainstalować na urządzeniach z jailbreakiem za pomocą **AppSync**.
|
|
|
|
#### **Narzędzia do Sideloadingu**
|
|
|
|
- **Cydia Impactor**: Narzędzie do podpisywania i instalowania plików IPA na iOS oraz plików APK na Androidzie. Przewodniki i rozwiązywanie problemów można znaleźć na [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
|
|
|
- **libimobiledevice**: Biblioteka dla systemów Linux i macOS do komunikacji z urządzeniami iOS. Przedstawione są polecenia instalacji i przykłady użycia dla ideviceinstaller do instalowania aplikacji przez USB.
|
|
|
|
- **ipainstaller**: To narzędzie wiersza poleceń umożliwia bezpośrednią instalację aplikacji na urządzeniach iOS.
|
|
|
|
- **ios-deploy**: Dla użytkowników macOS, ios-deploy instaluje aplikacje iOS z wiersza poleceń. Rozpakowanie pliku IPA i użycie flagi `-m` do bezpośredniego uruchomienia aplikacji są częścią procesu.
|
|
|
|
- **Xcode**: Wykorzystaj Xcode do instalowania aplikacji, przechodząc do **Window/Devices and Simulators** i dodając aplikację do **Installed Apps**.
|
|
|
|
#### **Zezwól na instalację aplikacji na urządzeniach innych niż iPad**
|
|
Aby zainstalować aplikacje specyficzne dla iPada na urządzeniach iPhone lub iPod touch, wartość **UIDeviceFamily** w pliku **Info.plist** musi zostać zmieniona na **1**. Ta modyfikacja jednak wymaga ponownego podpisania pliku IPA ze względu na sprawdzanie poprawności podpisu.
|
|
|
|
**Uwaga**: Ta metoda może nie powieść się, jeśli aplikacja wymaga funkcji dostępnych tylko na nowszych modelach iPada, podczas korzystania z starszego iPhone'a lub iPod touch.
|
|
|
|
|
|
|
|
## References
|
|
* [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>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|