iOS Toetsomgewing

Reading time: 8 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Apple Ontwikkelaar Program

'n Provisioning identiteit is 'n versameling van publieke en private sleutels wat aan 'n Apple ontwikkelaar rekening gekoppel is. Om apps te teken moet jy 99$/jaar betaal om te registreer in die Apple Ontwikkelaar Program om jou provisioning identiteit te verkry. Sonder dit sal jy nie in staat wees om toepassings vanaf die bronkode op 'n fisiese toestel te loop nie. 'n Ander opsie om dit te doen is om 'n gejailbreakte toestel te gebruik.

Begin in Xcode 7.2 het Apple 'n opsie verskaf om 'n gratis iOS ontwikkeling provisioning profiel te skep wat jou toelaat om jou toepassing op 'n werklike iPhone te skryf en te toets. Gaan na Xcode --> Voorkeure --> Rekeninge --> + (Voeg nuwe Appli ID by jou geloofsbriewe) --> Klik op die Apple ID wat geskep is --> Bestuur Sertifikate --> + (Apple Ontwikkeling) --> Klaar
__Dan, om jou toepassing op jou iPhone te laat loop moet jy eers die iPhone aanwys om die rekenaar te vertrou. Dan kan jy probeer om die toepassing op die mobiele toestel vanaf Xcode te laat loop, maar 'n fout sal verskyn. Gaan dus na Instellings --> Algemeen --> Profiele en Toestuurbestuur --> Kies die onbetroubare profiel en klik "Vertrou".

Let daarop dat toepassings wat deur dieselfde teken sertifikaat geteken is, hulpbronne op 'n veilige manier kan deel, soos sleutelhouer items.

Die provisioning profiele word binne die foon gestoor in /Library/MobileDevice/ProvisioningProfiles

Simulator

note

Let daarop dat 'n simulator nie dieselfde is as 'n emulator. Die simulator simuleer net die gedrag van die toestel en funksies, maar gebruik hulle nie werklik nie.

Simulator

Die eerste ding wat jy moet weet is dat om 'n pentest binne 'n simulator uit te voer baie meer beperk sal wees as om dit op 'n gejailbreakte toestel te doen.

Al die gereedskap wat benodig word om 'n iOS app te bou en te ondersteun is slegs amptelik ondersteun op Mac OS.
Apple se de facto gereedskap vir die skep/debugging/instrumentering van iOS toepassings is Xcode. Dit kan gebruik word om ander komponente soos simulators en verskillende SDK weergawe wat benodig word om jou app te bou en te toets af te laai.
Dit word sterk aanbeveel om Xcode van die amptelike app winkel af te laai. Ander weergawes mag malware dra.

Die simulator lêers kan gevind word in /Users/<username>/Library/Developer/CoreSimulator/Devices

Om die simulator te open, hardloop Xcode, druk dan in die Xcode tab --> Open Ontwikkelaar gereedskap --> Simulator
__In die volgende beeld kan jy deur op "iPod touch [...]" te klik 'n ander toestel kies om op te toets:

Toepassings in die Simulator

Binne /Users/<username>/Library/Developer/CoreSimulator/Devices kan jy al die geïnstalleerde simulators vind. As jy toegang wil hê tot die lêers van 'n toepassing wat binne een van die emulators geskep is, kan dit moeilik wees om te weet in watter een die app geïnstalleer is. 'n Vinige manier om die korrekte UID te vind is om die app in die simulator te laat loop en uit te voer:

bash
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Sodra jy die UID ken, kan die toepassings wat binne dit geïnstalleer is, gevind word in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

Ehowever, verrassend genoeg sal jy die toepassing hier nie vind nie. Jy moet toegang verkry tot /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/

En in hierdie gids kan jy die pakket van die toepassing vind.

Emulator

Corellium is die enigste publiek beskikbare iOS-emulator. Dit is 'n ondernemings SaaS-oplossing met 'n per gebruiker lisensiemodel en bied nie enige proeflisensie aan nie.

Geen Jailbreak nodig

Kyk na hierdie blogpos oor hoe om 'n iOS-toepassing in 'n nie-jailbroken toestel te pentest: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed

Jailbreaking

Apple vereis streng dat die kode wat op die iPhone loop, onderteken moet wees deur 'n sertifikaat wat deur Apple uitgereik is. Jailbreaking is die proses om aktief soos beperkings te omseil en ander sekuriteitsbeheermaatreëls wat deur die OS in plek gestel is. Daarom, sodra die toestel gejailbreak is, word die integriteitskontrole wat verantwoordelik is vir die kontrole van toepassings wat geïnstalleer word, gepatch sodat dit omseil word.

note

Anders as Android, kan jy nie na "Ontwikkelaarsmodus" oorskakel in iOS om ongetekende/onbetroubare kode op die toestel te loop nie.

Android Rooting vs. iOS Jailbreaking

Terwyl dit dikwels vergelyk word, is rooting op Android en jailbreaking op iOS fundamenteel verskillende prosesse. Rooting Android-toestelle kan behels die installering van die su binêre of die vervanging van die stelsel met 'n ge-rootte pasgemaakte ROM, wat nie noodwendig eksplosiewe benodig nie as die bootloader ontgrendel is. Flashing pasgemaakte ROMs vervang die toestel se OS na die ontgrendeling van die bootloader, wat soms 'n eksplosiewe benodig.

In teenstelling hiermee kan iOS-toestelle nie pasgemaakte ROMs flits nie weens die bootloader se beperking om slegs Apple-ondertekende beelde te begin. Jailbreaking iOS is daarop gemik om Apple se kodeondertekening beskerming te omseil om ongetekende kode te laat loop, 'n proses wat bemoeilik word deur Apple se deurlopende sekuriteitsverbeterings.

Jailbreaking Uitdagings

Jailbreaking iOS word al hoe moeiliker namate Apple kwesbaarhede vinnig patch. Downgrading iOS is slegs vir 'n beperkte tyd moontlik na 'n vrystelling, wat jailbreaking 'n tydsensitive saak maak. Toestelle wat vir sekuriteitstoetsing gebruik word, moet nie opgedateer word nie, tensy her-jailbreaking gewaarborg word.

iOS-opdaterings word beheer deur 'n uitdaging-respons meganisme (SHSH blobs), wat installasie slegs toelaat vir Apple-ondertekende antwoorde. Hierdie meganisme, bekend as 'n "onderteken venster", beperk die vermoë om OTA firmware-pakkette te stoor en later te gebruik. Die IPSW Downloads website is 'n hulpbron om huidige onderteken vensters te kontroleer.

Jailbreak Variëteite

  • Tethered jailbreaks vereis 'n rekenaarverbinding vir elke herbegin.
  • Semi-tethered jailbreaks laat boot in nie-jailbroken modus toe sonder 'n rekenaar.
  • Semi-untethered jailbreaks vereis handmatige her-jailbreaking sonder die behoefte aan 'n rekenaar.
  • Untethered jailbreaks bied 'n permanente jailbreak-oplossing sonder die behoefte aan her-toepassing.

Jailbreaking Gereedskap en Hulpbronne

Jailbreaking gereedskap verskil volgens iOS weergawe en toestel. Hulpbronne soos Can I Jailbreak?, The iPhone Wiki, en Reddit Jailbreak bied opdaterings inligting. Voorbeelde sluit in:

  • Checkra1n vir A7-A11 chip toestelle.
  • Palera1n vir Checkm8 toestelle (A8-A11) op iOS 15.0-16.5.
  • Unc0ver vir iOS weergawes tot 14.8.

Die aanpassing van jou toestel dra risiko's, en jailbreaking moet met omsigtigheid benader word.

Jailbreaking Voordele en Risiko's

Jailbreaking verwyder OS-geplaasde sandboxing, wat toelaat dat toepassings toegang tot die hele lêerstelsel het. Hierdie vryheid stel die installasie van nie-goedgekeurde toepassings en toegang tot meer API's moontlik. Tog, vir gewone gebruikers, word jailbreaking nie aanbeveel nie weens potensiële sekuriteitsrisiko's en toestel onstabiliteit.

Na Jailbreaking

iOS Basic Testing Operations

Jailbreak Detectie

Verskeie toepassings sal probeer om te detecteer of die mobiele toestel gejailbreak is en in daardie geval sal die toepassing nie loop nie

  • Na jailbreaking word 'n iOS lêers en vouers gewoonlik geïnstalleer, hierdie kan gesoek word om te bepaal of die toestel gejailbreak is.
  • In 'n gejailbreak toestel kry toepassings lees/skryf toegang tot nuwe lêers buite die sandbox
  • Sommige API oproepen sal anders optree
  • Die teenwoordigheid van die OpenSSH diens
  • Oproep van /bin/sh sal 1 teruggee in plaas van 0

Meer inligting oor hoe om jailbreaking te detecteer hier.

Jy kan probeer om hierdie detections te vermy deur objection's ios jailbreak disable te gebruik.

Jailbreak Detectie Omseiling

  • Jy kan probeer om hierdie detections te vermy deur objection's ios jailbreak disable te gebruik.
  • Jy kan ook die hulpmiddel Liberty Lite (https://ryleyangus.com/repo/) installeer. Sodra die repo bygevoeg is, moet die toepassing in die ‘Soek’ tab verskyn.

Verwysings

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks