iOS Testing Environment

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Apple Ontwikkelaarsprogram

'n Voorsieningsidentiteit is 'n versameling openbare en private sleutels wat aan 'n Apple-ontwikkelaarsrekening gekoppel is. Om programme te teken moet jy $99/jaar betaal om te registreer vir die Apple Ontwikkelaarsprogram om jou voorsieningsidentiteit te kry. Sonder dit sal jy nie in staat wees om programme van die bronkode op 'n fisiese toestel uit te voer nie. 'n Ander opsie om dit te doen, is om 'n gejailbreakte toestel te gebruik.

Vanaf Xcode 7.2 het Apple 'n opsie verskaf om 'n gratis iOS-ontwikkelingsvoorsieningsprofiel te skep wat dit moontlik maak om jou aansoek op 'n werklike iPhone te skryf en te toets. Gaan na Xcode --> Voorkeure --> Rekeninge --> + (Voeg nuwe Appli ID by jou geloofsbriewe) --> Klik op die geskepte Apple ID --> Bestuur Sertifikate --> + (Apple-ontwikkeling) --> Klaar __Dan moet jy, om jou aansoek op jou iPhone uit te voer, eers die iPhone laat vertrou op die rekenaar. Daarna kan jy probeer om die aansoek vanaf Xcode op die foon uit te voer, maar 'n fout sal verskyn. Gaan dus na Instellings --> Algemeen --> Profiel en Toestelbestuur --> Kies die onbetroubare profiel en klik op "Vertrou".

Let daarop dat toepassings wat deur dieselfde ondertekeningssertifikaat onderteken is, hulpbronne op 'n veilige manier kan deel, soos sleutelkettingitems.

Die voorsieningsprofiele word binne die foon gestoor in /Library/MobileDevice/ProvisioningProfiles

Simulator

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

Simulator

Die eerste ding wat jy moet weet, is dat 'n pentest uitvoer binne 'n simulator baie beperkter sal wees as om dit in 'n gejailbreakte toestel te doen.

Alle gereedskap wat nodig is om 'n iOS-aansoek te bou en te ondersteun, word slegs amptelik ondersteun op Mac OS. Apple se de facto gereedskap vir die skep/debuut/instrumentering van iOS-aansoeke is Xcode. Dit kan gebruik word om ander komponente soos simulators en verskillende SDK- weergawes wat nodig is om jou aansoek 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 dalk malware dra.

Die simulatorlêers kan gevind word in /Users/<gebruikersnaam>/Library/Developer/CoreSimulator/Devices

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

Toepassings in die Simulator

Binne /Users/<gebruikersnaam>/Library/Developer/CoreSimulator/Devices mag jy al die geïnstalleerde simulators vind. As jy die lêers van 'n aansoek wat binne een van die emulators geskep is, wil bereik, kan dit moeilik wees om te weet in watter een die aansoek geïnstalleer is. 'n Vinnige manier om die regte UID te vind is om die aansoek in die simulator uit te voer en uit te voer:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Sodra jy die UID ken, kan die apps wat binne dit geinstalleer is, gevind word in `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`

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

En in hierdie vouer kan jy **die pakkie van die aansoek vind.**

## Emulator

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

## Jailbreaking

Apple vereis streng dat die kode wat op die iPhone hardloop, **onderteken moet word deur 'n sertifikaat wat deur Apple uitgereik is**. **Jailbreaking** is die proses om aktief **sodanige beperkings** en ander sekuriteitsbeheermaatreëls wat deur die OS ingestel is, te **omseil**. Daarom, sodra die toestel jailbroken is, word die **integriteitskontrole** wat verantwoordelik is vir die kontrole van geïnstalleerde aansoeke, gepatch sodat dit **omseil** word.

<div data-gb-custom-block data-tag="hint" data-style='info'>

In teenstelling met Android, **kan jy nie na "Ontwikkelaarsmodus" oorskakel** in iOS om ondertekende/ongetroue kode op die toestel te hardloop nie.

</div>

### Android Rooting vs. iOS Jailbreaking

Alhoewel dit dikwels vergelyk word, is **rooting** op Android en **jailbreaking** op iOS fundamenteel verskillende prosesse. Rooting van Android-toestelle mag die **installeer van die `su` binêre lêer** of **die vervanging van die stelsel met 'n gewortelde aangepaste ROM** behels, wat nie noodwendig exploits vereis as die laaierslot oop is nie. **Flitsende aangepaste ROMs** vervang die toestel se OS nadat die laaierslot oopgemaak is, soms 'n exploit benodigend.

In teenstelling daarmee kan iOS-toestelle nie aangepaste ROMs flits nie as gevolg van die beperking van die laaierslot om slegs Apple-ondertekende beelde te laai. **Jailbreaking iOS** poog om Apple se kodesondertekeningsbeskerming te omseil om ondertekende kode uit te voer, 'n proses wat gekompliseer word deur Apple se voortdurende sekuriteitsverbeterings.

### Jailbreaking-uitdagings

Jailbreaking iOS word toenemend moeilik aangesien Apple kwesbaarhede vinnig dophou. **Aftrekking van iOS** is slegs vir 'n beperkte tydperk na 'n vrystelling moontlik, wat jailbreaking 'n tydsensitiewe aangeleentheid maak. Toestelle wat vir sekuriteitstoetsing gebruik word, moet nie opgedateer word tensy herjailbreaking gewaarborg is nie.

iOS-opdaterings word beheer deur 'n **uitdaging-reaksiemeganisme** (SHSH-blobs), wat slegs vir Apple-ondertekende reaksies installasie toelaat. Hierdie meganisme, bekend as 'n "ondertekeningsvenster", beperk die vermoë om OTA-firmwarepakette te stoor en later te gebruik. Die [IPSW Downloads-webwerf](https://ipsw.me) is 'n bron vir die nagaan van huidige ondertekeningsvensters.

### Verskeidenheid Jailbreaks

* **Gebonde jailbreaks** vereis 'n rekenaaraansluiting vir elke herlaai.
* **Semi-gebonde jailbreaks** maak dit moontlik om in nie-gejailbreakte modus te laai sonder 'n rekenaar.
* **Semi-ongebonde jailbreaks** vereis handmatige herjailbreaking sonder 'n rekenaar.
* **Ongebonde jailbreaks** bied 'n permanente jailbreak-oplossing sonder die nodigheid vir heraansoek.

### Jailbreaking-hulpmiddels en -hulpbronne

Jailbreaking-hulpmiddels wissel volgens iOS-weergawe en toestel. Hulpbronne soos [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) en [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) bied opgedateerde inligting. Voorbeelde sluit in:

* [Checkra1n](https://checkra.in/) vir A7-A11-skyf-toestelle.
* [Palera1n](https://palera.in/) vir Checkm8-toestelle (A8-A11) op iOS 15.0-16.5.
* [Unc0ver](https://unc0ver.dev/) vir iOS-weergawes tot 14.8.

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

### Voordele en Risiko's van Jailbreaking

Jailbreaking **verwyder OS-opgelêde sandboxing**, wat aansoeke in staat stel om toegang tot die hele lêersisteem te verkry. Hierdie vryheid maak die installasie van nie-goedgekeurde aansoeke en toegang tot meer API's moontlik. Nietemin, vir gewone gebruikers word jailbreaking **nie aanbeveel nie** weens potensiële sekuriteitsrisiko's en toestel-onstabiliteit.

### **Na Jailbreaking**

<div data-gb-custom-block data-tag="content-ref" data-url='basic-ios-testing-operations.md'>

[basic-ios-testing-operations.md](basic-ios-testing-operations.md)

</div>

### **Jailbreak-opsporing**

**Verskeie aansoeke sal probeer om op te spoor of die mobiele toestel jailbroken is en in daardie geval sal die aansoek nie loop nie**

* Na jailbreaking van 'n iOS-toestel word **lêers en vouers gewoonlik geïnstalleer**, hierdie kan deursoek word om te bepaal of die toestel jailbroken is.
* Op 'n jailbroken toestel kry aansoeke **lees-/skryftoegang tot nuwe lêers** buite die sandbox
* Sommige **API-oproepe** sal **anders optree**
* Die teenwoordigheid van die **OpenSSH**-diens
* Die aanroeping van `/bin/sh` sal 'n 1 **teruggee** in plaas van 0

**Meer inligting oor hoe om jailbreaking op te spoor** [**hier**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**

Jy kan probeer om hierdie opsporings te vermy deur **objection's** `ios jailbreak disable`

## **Jailbreak-opsporingsverbygaan**

* Jy kan probeer om hierdie opsporings te vermy deur **objection's** `ios jailbreak disable`
* Jy kan ook die hulpmiddel **Liberty Lite** installeer (https://ryleyangus.com/repo/). Sodra die repo bygevoeg is, behoort die aansoek in die 'Soek'-tabblad te verskyn

## Verwysings

* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)

<details>

<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

Ander maniere om HackTricks te ondersteun:

* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks-swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

</details>

Last updated