hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md

194 lines
13 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# Podstawowe operacje testowania iOS
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-11 01:46:25 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
## **Podsumowanie identyfikacji i dostępu do urządzeń iOS**
2024-02-11 01:46:25 +00:00
### **Identyfikacja UDID urządzenia iOS**
2024-02-11 01:46:25 +00:00
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ą.
2024-02-11 01:46:25 +00:00
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).
2024-02-11 01:46:25 +00:00
Narzędzia wiersza poleceń oferują alternatywne metody pobierania UDID:
2024-02-11 01:46:25 +00:00
* **Za pomocą narzędzia I/O Registry Explorer `ioreg`:**
```bash
2024-02-08 03:08:28 +00:00
$ ioreg -p IOUSB -l | grep "USB Serial"
```
2024-02-11 01:46:25 +00:00
* **Używanie `ideviceinstaller` dla macOS (i Linux):**
```bash
2024-02-08 03:08:28 +00:00
$ brew install ideviceinstaller
$ idevice_id -l
```
2024-02-11 01:46:25 +00:00
* **Wykorzystanie `system_profiler`:**
```bash
2024-02-08 03:08:28 +00:00
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
2024-02-11 01:46:25 +00:00
* **Wykorzystanie narzędzia `instruments` do wyświetlania listy urządzeń:**
```bash
2024-02-08 03:08:28 +00:00
$ instruments -s devices
```
2024-02-11 01:46:25 +00:00
### **Dostęp do powłoki urządzenia**
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
**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
2024-02-08 03:08:28 +00:00
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
```
2024-02-11 01:46:25 +00:00
**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.
2024-02-11 01:46:25 +00:00
### **Resetowanie zapomnianych haseł**
2024-02-11 01:46:25 +00:00
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`.
2024-02-11 01:46:25 +00:00
## **Techniki transferu danych**
2024-02-11 01:46:25 +00:00
### **Transferowanie plików danych aplikacji**
2024-02-11 01:46:25 +00:00
**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
2024-02-08 03:08:28 +00:00
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 .
```
2024-02-11 01:46:25 +00:00
### **Narzędzia z graficznym interfejsem użytkownika**
2024-02-11 01:46:25 +00:00
**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.
2024-02-11 01:46:25 +00:00
### **Korzystanie z Objection do zarządzania plikami**
2024-02-11 01:46:25 +00:00
**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
2024-02-08 03:08:28 +00:00
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
```
2024-02-11 01:46:25 +00:00
## **Pobieranie i wyodrębnianie aplikacji**
2024-02-11 01:46:25 +00:00
### **Pobieranie pliku IPA**
2024-02-11 01:46:25 +00:00
**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
2024-02-08 03:08:28 +00:00
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
```
2024-02-11 01:46:25 +00:00
### **Wyodrębnianie binarnego pliku aplikacji**
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
### **Proces deszyfrowania**
2024-02-11 01:46:25 +00:00
**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ą.
2024-02-11 01:46:25 +00:00
**Sprawdzanie i modyfikowanie flagi PIE:**
```bash
2024-02-08 03:08:28 +00:00
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
```
2024-02-11 01:46:25 +00:00
**Identyfikowanie zaszyfrowanej sekcji i wydobywanie pamięci:**
2024-02-11 01:46:25 +00:00
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
```
2024-02-11 01:46:25 +00:00
**Nadpisywanie sekcji zaszyfrowanej:**
2024-02-11 01:46:25 +00:00
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
```
2024-02-11 01:46:25 +00:00
**Finalizowanie Deszyfrowania:** Zmodyfikuj metadane binarne, aby wskazywały brak szyfrowania za pomocą narzędzi takich jak **MachOView**, ustawiając `cryptid` na 0.
2024-02-11 01:46:25 +00:00
### **Deszyfrowanie (Automatycznie)**
2024-02-08 03:08:28 +00:00
#### **frida-ios-dump**
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
Zainstalowane aplikacje na urządzeniu można wyświetlić za pomocą polecenia:
```bash
$ python dump.py -l
```
2024-02-11 01:46:25 +00:00
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
2021-07-19 10:18:19 +00:00
```
2024-02-11 01:46:25 +00:00
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).
2021-07-19 10:18:19 +00:00
2024-02-08 03:08:28 +00:00
#### **flexdecrypt**
2024-02-11 01:46:25 +00:00
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:
2021-07-19 10:18:19 +00:00
```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
2024-02-08 03:08:28 +00:00
flexdump list
flexdump dump Twitter.app
2021-07-19 10:18:19 +00:00
```
2024-02-08 03:08:28 +00:00
#### **bagbak**
2024-02-11 01:46:25 +00:00
[**bagbak**](https://github.com/ChiChou/bagbak), kolejne narzędzie oparte na Frida, wymaga zrootowanego urządzenia do deszyfrowania aplikacji:
```bash
bagbak --raw Chrome
```
2024-02-08 03:08:28 +00:00
#### **r2flutch**
2024-02-11 01:46:25 +00:00
**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).
2024-02-11 01:46:25 +00:00
### **Instalowanie aplikacji**
2024-02-11 01:46:25 +00:00
**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**.
2024-02-11 01:46:25 +00:00
#### **Narzędzia do Sideloadingu**
2024-02-11 01:46:25 +00:00
- **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/).
2024-02-11 01:46:25 +00:00
- **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.
2024-02-11 01:46:25 +00:00
- **ipainstaller**: To narzędzie wiersza poleceń umożliwia bezpośrednią instalację aplikacji na urządzeniach iOS.
2024-02-11 01:46:25 +00:00
- **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.
2024-02-11 01:46:25 +00:00
- **Xcode**: Wykorzystaj Xcode do instalowania aplikacji, przechodząc do **Window/Devices and Simulators** i dodając aplikację do **Installed Apps**.
2024-02-11 01:46:25 +00:00
#### **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.
2024-02-11 01:46:25 +00:00
**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.
2024-02-08 03:08:28 +00:00
## 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/)
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-11 01:46:25 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>