iOS Basic Testing Operations

Podržite HackTricks

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 možete pronaći ovde.

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

  • Korišćenje I/O Registry Explorer alata ioreg:

$ ioreg -p IOUSB -l | grep "USB Serial"
  • Korišćenje ideviceinstaller za macOS (i Linux):

$ brew install ideviceinstaller
$ idevice_id -l
  • Korišćenje system_profiler:

$ 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:

$ 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:

$ 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 uključuje 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:

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 .

Graphical User Interface Tools

Using iFunbox and iExplorer: 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.

Using Objection for File Management

Interactive Shell with Objection: 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 njih na i 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 Ekstrakcija Aplikacija

Sticanje IPA Fajla

Over-The-Air (OTA) Distribucioni Link: Aplikacije distribuirane za testiranje putem OTA mogu se preuzeti koristeći ITMS usluge alat za preuzimanje sredstava, koji se instalira putem npm i koristi za čuvanje IPA fajla lokalno.

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. Sa 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šila obrnuta inženjering, potrebno je dumpovati dekriptovani binarni fajl iz memorije. Proces dekripcije uključuje proveru PIE zastavice, prilagođavanje memorijskih zastavica, identifikaciju enkriptovanog dela, a zatim dumpovanje i zamenu ovog dela sa njegovom dekriptovanom verzijom.

Proveravanje i modifikovanje PIE zastavice:

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

Identifying Encrypted Section and Dumping Memory:

Odredite početne i završne adrese enkriptovane sekcije koristeći otool i ispraznite memoriju sa jailbroken uređaja koristeći gdb.

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

Prepisivanje Enkriptovanog Odeljka:

Zamenite enkriptovani odeljak u originalnom binarnom fajlu aplikacije sa dekriptovanim dump-om.

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 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:

$ python dump.py -l

Da biste dumpovali određenu aplikaciju, kao što je Telegram, koristi se sledeća komanda:

$ 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.

flexdecrypt

Alat flexdecrypt, zajedno sa svojim wrapper-om flexdump, 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:

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 jailbreak-ovan uređaj za dekripciju aplikacija:

bagbak --raw Chrome

r2flutch

r2flutch, koristeći radare i frida, služi za dekripciju i dumpovanje aplikacija. Više informacija možete pronaći na njegovoj GitHub stranici.

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.

  • 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. Dešifrovanje 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

Support HackTricks

Last updated