<summary><strong>Leer AWS-hacking van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](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 hacktruuks 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.
In iOS bestaan daar 'n onderskeid in voorreg tussen die gebruikerstoeganklike programme en die kernprosesse van die stelsel. Programme loop onder die **`mobile`**-gebruikersidentiteit, terwyl die kritieke stelselprosesse as **`root`** werk. Hierdie skeiding word versterk deur 'n sandboks-meganisme wat streng beperkings plaas op die aksies wat programme kan onderneem. Byvoorbeeld, selfs al deel programme dieselfde gebruikersidentiteit, word hulle verbied om toegang tot of wysiging van mekaar se data te verkry.
Programme word geïnstalleer in 'n spesifieke gids (`private/var/mobile/Applications/{willekeurige ID}`) en het beperkte leestoegang tot sekere stelselareas en -funksies, soos SMS'e en telefoonoproepe. Toegang tot beskermde areas veroorsaak 'n pop-upversoek vir gebruikerstoestemming.
iOS bied ontwikkelaars die **Data Protection APIs** aan, gebou op die Secure Enclave Processor (SEP) - 'n toegewyde koprotsessor vir kriptografiese operasies en sleutelbestuur. Die SEP verseker data-beskermingsintegriteit deur middel van 'n unieke toestelspesifieke sleutel, die toestel UID, wat daarin ingebed is.
By die skep van 'n lêer word 'n unieke 256-bit AES-kripteringssleutel gegenereer wat die inhoud van die lêer kripteer. Hierdie kripteringssleutel, tesame met 'n klas-ID, word dan gekripteer met behulp van 'n klasleutel en binne die lêer se metadata gestoor. Die ontkriptering van 'n lêer behels die gebruik van die stelsel se sleutel om toegang tot die metadata te verkry, die klasleutel met die klas-ID te herwin, en dan die unieke kripteringssleutel van die lêer te ontkripteer.
- **Volledige Beskerming (NSFileProtectionComplete)**: Data is ontoeganklik totdat die toestel ontgrendel word met die gebruiker se wagwoord.
- **Beskerm, tensy Oop (NSFileProtectionCompleteUnlessOpen)**: Maak lêertoegang moontlik selfs nadat die toestel gesluit is, op voorwaarde dat die lêer geopen is toe die toestel ontgrendel was.
- **Beskerm tot Eerste Gebruikersverifikasie (NSFileProtectionCompleteUntilFirstUserAuthentication)**: Data is toeganklik na die eerste gebruikersontsluiting na opstart, en bly toeganklik selfs as die toestel weer gesluit word.
- **Geen Beskerming (NSFileProtectionNone)**: Data word slegs beskerm deur die toestel UID, wat vinnige verwydering van data op afstand fasiliteer.
Die kriptering van alle klasse, behalwe `NSFileProtectionNone`, behels 'n sleutel wat afgelei word van sowel die toestel UID as die gebruiker se wagwoord, om te verseker dat ontkriptering slegs moontlik is op die toestel met die korrekte wagwoord. Vanaf iOS 7 is die verstek beskermingsklas "Beskerm tot Eerste Gebruikersverifikasie".
Ontwikkelaars kan [**FileDP**](https://github.com/abjurato/FileDp-Source) gebruik, 'n instrument om die data-beskermingsklas van lêers op 'n iPhone te ondersoek.
In iOS dien 'n **Sleutelbos** as 'n veilige **versleutelde houer** vir die stoor van **sensitiewe inligting**, wat slegs toeganklik is deur die toepassing wat dit gestoor het of deur diegene wat uitdruklik gemagtig is. Hierdie versleuteling word versterk deur 'n unieke **wagwoord wat deur iOS gegenereer word**, wat self versleutel is met **AES**. Hierdie versleutelingsproses maak gebruik van 'n **PBKDF2-funksie**, wat die gebruiker se wagwoord kombineer met 'n sout wat afgelei is van die toestel se **UID**, 'n komponent wat slegs die **veilige enclave chipset** kan bereik. Gevolglik bly die inhoud van die Sleutelbos ontoeganklik op enige toestel anders as die een waar dit oorspronklik versleutel is, selfs as die gebruiker se wagwoord bekend is.
**Bestuur en toegang** tot die Sleutelbosdata word hanteer deur die **`securityd` daemon**, gebaseer op spesifieke toepassingsbevoegdhede soos `Keychain-access-groups` en `application-identifier`.
Die Sleutelbos API, in detail beskryf in [Apple se Sleutelbosdiensdokumentasie](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html), bied essensiële funksies vir die bestuur van veilige stoor:
Die kragtige krag van die Sleutelbos wagwoord behels óf die aanval op die versleutelde sleutel self of die poging om die wagwoord op die toestel self te raai, wat aansienlik bemoeilik word deur die veilige enclave se afdwinging van 'n vertraging tussen mislukte pogings.
Data-beskermingsvlakke vir Sleutelbositems word ingestel deur die `kSecAttrAccessible` eienskap tydens die skep of opdateer van 'n item. Hierdie vlakke, [soos deur Apple gespesifiseer](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), bepaal wanneer en hoe Sleutelbositems toeganklik is:
In teenstelling met toepassingsspesifieke data wat uitgevee word wanneer die toepassing gedeïnstalleer word, **volhard Sleutelbosdata** op die toestel. Hierdie kenmerk kan nuwe eienaars van 'n tweedehandse toestel in staat stel om die vorige eienaar se toepassingsdata toeganklik te maak deur eenvoudigweg die toepassings te herinstalleer. Ontwikkelaars word aangeraai om proaktief Sleutelbosdata uit te wis by die installering van die toepassing of tydens afmelding om hierdie risiko te verminder. Hier is 'n voorbeeld van Swift-kode wat demonstreer hoe om Sleutelbosdata uit te wis by die eerste aanvang van die toepassing:
In die wêreld van app-ontwikkeling speel **sandboxing** 'n belangrike rol in die verbetering van sekuriteit. Hierdie proses verseker dat elke app binne sy eie unieke tuisgids werk, en voorkom dus dat dit toegang tot stelsel lêers of data van ander apps verkry. Die afdwinging van hierdie beperkings word gedoen deur middel van sandbox-beleide, wat deel vorm van die **Trusted BSD (MAC) Mandatory Access Control Framework**.
Ontwikkelaars het die vermoë om sekere **vermoëns of toestemmings** vir hul apps te konfigureer, soos **Data Protection** of **Keychain Sharing**. Hierdie toestemmings word onmiddellik toegepas nadat die app geïnstalleer is. Nietemin, om toegang tot sekere beskermde hulpbronne te verkry, moet die app uitdruklike toestemming van die gebruiker kry tydens die eerste poging. Dit word bereik deur die gebruik van _doelstrengs_ of _gebruiksbeskrywingsstrengs_, wat aan gebruikers in 'n toestemmingsversoekwaarskuwing voorgelê word.
Die `Info.plist` lêer van 'n app spesifiseer **toestelvermoëns** wat help om die App Store te gebruik om apps te filter vir toestelverenigbaarheid. Hierdie vermoëns word gedefinieer onder die **`UIRequiredDeviceCapabilities`** sleutel. Byvoorbeeld:
Hierdie voorbeeld dui daarop dat die app versoenbaar is met die armv7 instruksiestel. Ontwikkelaars kan ook funksies soos nfc spesifiseer om te verseker dat hul app slegs beskikbaar is vir toestelle wat NFC ondersteun.
**Toekennings** is 'n ander kritieke aspek van iOS-app-ontwikkeling, wat dien as sleutel-waardepare wat apps toestemming gee om sekere handelinge uit te voer buite die uitvoeringstyd kontroles. Byvoorbeeld, om **Data Protection** in 'n app te aktiveer, moet 'n spesifieke toekenning by die Xcode-projek gevoeg word, wat dan weerspieël word in die app se toekenningslêer of die ingebedde mobiele voorsieningslêer vir IPAs.
<summary><strong>Leer AWS-hacking van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](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.