hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
2024-02-10 13:11:20 +00:00

12 KiB

Osnovne operacije testiranja iOS-a

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Sažetak identifikacije i pristupa iOS uređaju

Identifikacija UDID-a iOS uređaja

Za jedinstvenu identifikaciju iOS uređaja koristi se 40-cifreni niz poznat kao UDID. Na macOS Catalina ili novijim verzijama, to se može pronaći u aplikaciji Finder, jer iTunes više nije prisutan. Uređaj, jednom povezan preko USB-a i izabran 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 omogućava otkrivanje UDID-a. Detaljne instrukcije mogu se pronaći ovde.

Alati komandne linije nude alternativne metode za dobijanje UDID-a:

  • Korišćenje alata I/O Registry Explorer ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
  • Korišćenje ideviceinstaller alata za macOS (i Linux):
$ brew install ideviceinstaller
$ idevice_id -l
  • Korišćenje system_profiler alata:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
  • Korišćenje instruments alata za listanje uređaja:
$ instruments -s devices

Pristupanje Shell uređaju

SSH pristup je omogućen instaliranjem OpenSSH paketa nakon jailbreak-a, što omogućava konekcije putem ssh root@<device_ip_address>. Važno je promeniti podrazumevane lozinke (alpine) za korisnike root i mobile kako bi se osigurao uređaj.

SSH preko USB-a postaje neophodan u slučaju nedostatka Wi-Fi mreže, koristeći iproxy za mapiranje portova uređaja za SSH konekcije. Ova postavka omogućava SSH pristup preko USB-a pokretanjem:

$ iproxy 2222 22
$ ssh -p 2222 root@localhost

Aplikacije za pristup uređaju, poput NewTerm 2, olakšavaju direktnu interakciju sa uređajem, posebno korisno za rešavanje problema. Obrnuti SSH školjke takođe se mogu uspostaviti za daljinski pristup sa računara domaćina.

Resetovanje zaboravljenih lozinki

Da biste resetovali zaboravljenu lozinku na podrazumevanu (alpine), neophodno je izmeniti datoteku /private/etc/master.passwd. To uključuje zamenu postojećeg heša sa hešom za alpine pored unosa korisnika root i mobile.

Tehnike prenosa podataka

Prenos datoteka aplikacije

Arhiviranje i preuzimanje putem SSH i SCP: Jednostavno je arhivirati direktorijum podataka aplikacije koristeći tar, a zatim ga preneti koristeći scp. Komanda ispod arhivira direktorijum podataka u .tgz datoteku, koja se zatim preuzima sa uređaja:

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 .

Grafički alati sa korisničkim interfejsom

Korišćenje iFunbox-a i iExplorer-a: Ovi grafički alati su korisni za upravljanje fajlovima na iOS uređajima. Međutim, počevši od iOS 8.4, Apple je ograničio pristup ovim alatima do aplikacionog sandbox-a, osim ako je uređaj jailbroken.

Korišćenje Objection-a za upravljanje fajlovima

Interaktivna komandna linija sa Objection-om: Pokretanje Objection-a omogućava pristup Bundle direktorijumu aplikacije. Odavde možete navigirati do Documents direktorijuma aplikacije i upravljati fajlovima, uključujući njihovo preuzimanje i otpremanje sa iOS uređaja.

objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>

Dobijanje i izdvajanje aplikacija

Dobijanje IPA fajla

Veza za distribuciju preko mreže (OTA): Aplikacije distribuirane za testiranje putem OTA mogu se preuzeti koristeći alat za preuzimanje ITMS usluga, koji se instalira putem npm-a i koristi se za lokalno čuvanje IPA fajla.

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

Izdvajanje binarnog koda aplikacije

  1. Iz IPA datoteke: Dekompresirajte IPA datoteku kako biste pristupili dešifrovanom binarnom kodu aplikacije.
  2. Sa Jailbroken uređaja: Instalirajte aplikaciju i izvucite dešifrovanu binarnu datoteku iz memorije.

Proces dešifrovanja

Pregled ručnog dešifrovanja: Binarni kod iOS aplikacija je enkriptovan od strane Apple-a koristeći FairPlay. Da biste izvršili reverzno inženjerstvo, morate izvući dešifrovanu binarnu datoteku iz memorije. Proces dešifrovanja uključuje proveru PIE zastavice, podešavanje zastavica memorije, identifikaciju enkriptovane sekcije, a zatim izvlačenje i zamenu ove sekcije sa njenom dešifrovanom formom.

Provera i izmena PIE zastavice:

otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World

Identifikacija šifrovane sekcije i ispuštanje memorije:

Koristite otool da odredite početnu i krajnju adresu šifrovane sekcije, a zatim koristite gdb da ispuštate memoriju sa jailbroken uređaja.

otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000

Prepisivanje šifrovanog dela:

Zamenite šifrovanu sekciju u originalnom binarnom fajlu aplikacije sa dešifrovanim dumpom.

dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App

Završavanje Dekripcije: Izmenite metapodatke binarnog fajla kako biste naznačili odsustvo enkripcije koristeći alate poput MachOView, postavljajući cryptid na 0.

Dekripcija (Automatski)

frida-ios-dump

Alat frida-ios-dump se koristi za automatsko dekriptovanje i izdvajanje aplikacija sa iOS uređaja. Prvo, treba konfigurisati dump.py da se poveže sa iOS uređajem, što se može uraditi preko localhost-a na portu 2222 putem iproxy-ja ili direktno putem IP adrese uređaja i porta.

Instalirane aplikacije na uređaju mogu se prikazati komandom:

$ python dump.py -l

Da biste izvršili dump određene aplikacije, kao što je Telegram, koristite sledeću komandu:

$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

Ova komanda pokreće izvlačenje aplikacije, rezultirajući stvaranjem Telegram.ipa datoteke u trenutnom direktorijumu. Ovaj proces je pogodan za jailbroken uređaje, jer se nepotpisane ili lažno potpisane aplikacije mogu ponovo instalirati pomoću alata kao što je ios-deploy.

flexdecrypt

Alat flexdecrypt, zajedno sa svojim omotačem flexdump, omogućava izvlačenje IPA datoteka iz instaliranih aplikacija. Komande za instalaciju flexdecrypt na uređaju uključuju preuzimanje i instaliranje .deb paketa. flexdump se može koristiti za listanje i izvlačenje aplikacija, kao što je prikazano u sledećim komandama:

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, još jedan alat zasnovan na Fridi, zahteva jailbroken uređaj za dešifrovanje aplikacija:

bagbak --raw Chrome

r2flutch

r2flutch, koristeći i radare i fridu, služi za dešifrovanje i iskopiranje aplikacija. Više informacija možete pronaći na njegovoj GitHub stranici.

Instaliranje aplikacija

Sideloading se odnosi na instaliranje aplikacija van zvanične App Store prodavnice. Ovaj proces obavlja installd daemon i zahteva da aplikacije budu potpisane Apple-ovim sertifikatom. Jailbroken uređaji mogu zaobići ovo korišćenjem AppSync-a, omogućavajući instaliranje lažno potpisanih IPA paketa.

Alati za sideloading

  • Cydia Impactor: Alat za potpisivanje i instaliranje IPA fajlova na iOS i APK fajlova na Androidu. Vodiči i rešavanje problema mogu se pronaći na yalujailbreak.net.

  • libimobiledevice: Biblioteka za Linux i macOS za komunikaciju sa iOS uređajima. Komande za instalaciju i primeri korišćenja za ideviceinstaller su dostupni za instaliranje aplikacija preko USB-a.

  • ipainstaller: Ovaj alat komandne linije omogućava direktnu instalaciju aplikacija na iOS uređajima.

  • ios-deploy: Za korisnike macOS-a, ios-deploy instalira iOS aplikacije sa komandne linije. Dekompresovanje IPA fajla i korišćenje opcije -m za direktno pokretanje aplikacije su deo procesa.

  • Xcode: Koristite Xcode za instaliranje aplikacija tako što ćete otići na Window/Devices and Simulators i dodati aplikaciju u Installed Apps.

Dozvoljavanje instalacije aplikacija na uređajima koji nisu iPad

Da biste instalirali aplikacije specifične za iPad na uređajima iPhone ili iPod touch, vrednost UIDeviceFamily u fajlu Info.plist treba promeniti u 1. Međutim, ova modifikacija zahteva ponovno potpisivanje IPA fajla zbog provere potpisa.

Napomena: Ovaj metod može da ne uspe ako aplikacija zahteva mogućnosti koje su ekskluzivne za novije modele iPada dok se koristi stariji iPhone ili iPod touch.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: