Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's

This commit is contained in:
Translator 2025-08-21 04:10:01 +00:00
parent 19bb59f5d4
commit 176ada9f38
3 changed files with 290 additions and 80 deletions

View File

@ -326,6 +326,7 @@
- [Android APK Checklist](mobile-pentesting/android-checklist.md)
- [Android Applications Pentesting](mobile-pentesting/android-app-pentesting/README.md)
- [Accessibility Services Abuse](mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md)
- [Android Anti Instrumentation And Ssl Pinning Bypass](mobile-pentesting/android-app-pentesting/android-anti-instrumentation-and-ssl-pinning-bypass.md)
- [Android Applications Basics](mobile-pentesting/android-app-pentesting/android-applications-basics.md)
- [Android Task Hijacking](mobile-pentesting/android-app-pentesting/android-task-hijacking.md)
- [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md)

View File

@ -4,7 +4,7 @@
## Android Toepassings Basiese Beginsels
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**:
Dit word sterk aanbeveel om hierdie bladsy te begin lees om meer 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,14 +13,14 @@ 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 nut is in staat om **lêers** in beide rigtings te **kopieer**, **toepassings** te **installeer** en **verwyder**, **skilopdragte** uit te voer, **data** te **rugsteun**, **logs** te **lees**, onder andere funksies.
**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.
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**.
[**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**.
## Ander interessante truuks
@ -28,7 +28,7 @@ Soms is dit interessant om die **toepassingkode** te **wysig** om toegang te ver
- [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)
- [Misbruik van Toeganklikheidsdienste (Android RAT)](accessibility-services-abuse.md)
- **Laai APKs 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)
- **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)
- Trek APK van toestel uit:
```bash
adb shell pm list packages
@ -69,7 +69,7 @@ Net deur na die **strings** van die APK te kyk, kan jy soek na **wagwoorde**, **
**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 gekonfigureer 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
@ -77,20 +77,20 @@ Die **ondersoek van 'n toepassing se _Manifest.xml_ en **_strings.xml_** lêers
**Kw vulnerabilities** wat uit die **Manifest.xml** geïdentifiseer is, sluit in:
- **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.
- **Debugbare 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**: 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.
- **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 kw vulnerabilities.
- **Uitsending Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL skemas bestuur word vir invoerkw 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.
### Tapjacking
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** gelanseer word en **homself bo 'n slagoffer toepassing posisioneer**. Sodra dit die slagoffer app sigbaar obscures, 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 **blind die gebruiker van weet 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 die kennis dat hulle eintlik aksies op die slagoffer app uitvoer**.
Vind meer inligting in:
@ -115,7 +115,7 @@ android-task-hijacking.md
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** kan word. Tog **beperk** hierdie modi **nie die 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 aan **onbedoelde of ongeoorloofde toegang** blootstel.
- **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**.
@ -127,20 +127,20 @@ Wanneer jy met lêers op **eksterne stoor** werk, soos SD Kaart, moet sekere voo
- Lêers op eksterne stoor is **globaal leesbaar en skryfbaar**. Dit beteken enige toepassing of gebruiker kan toegang tot hierdie lêers verkry.
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 toeganklik gemaak word, wat dit minder veilig maak.
- Eksterne stoor kan verwyder of deur enige toepassing benader word, 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 of klas lêers op eksterne stoor vir dinamiese laai te stoor.
- 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 van kardinale belang om die sekuriteitsintegriteit van jou toepassing te handhaaf.
Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
> [!TIP]
> Begin met Android 4.4 (**API 17**), het die SD kaart 'n gidsstruktuur wat **toegang van 'n app tot die gids wat spesifiek vir daardie app is, beperk**. Dit voorkom dat kwaadwillige toepassings lees- of skryftoegang tot 'n ander app se lêers verkry.
> Begin met Android 4.4 (**API 17**), het die SD-kaart 'n gidsstruktuur wat **toegang van 'n app tot die gids wat spesifiek vir daardie app is, beperk**. Dit voorkom dat kwaadwillige toepassings lees- of skryftoegang tot 'n ander app se lêers verkry.
**Sensitiewe data gestoor in duidelike teks**
- **Gedeelde voorkeure**: Android laat elke toepassing toe om maklik xml lêers in die pad `/data/data/<packagename>/shared_prefs/` te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.
- **Gedeelde voorkeure**: Android laat elke toepassing toe om maklik xml-lêers in die pad `/data/data/<packagename>/shared_prefs/` te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.
- **Databasisse**: Android laat elke toepassing toe om maklik sqlite databasisse in die pad `/data/data/<packagename>/databases/` te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.
### Gebroke TLS
@ -152,7 +152,7 @@ Om een of ander rede aanvaar ontwikkelaars soms al die sertifikate, selfs al ste
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
'n Goeie manier om dit te toets, is om die verkeer te probeer vasvang met 'n proxy soos Burp sonder om Burp CA binne die toestel te magtig. Jy kan ook met Burp 'n sertifikaat vir 'n ander hostname genereer en dit gebruik.
'n Goeie manier om dit te toets, is om te probeer om die verkeer te vang met 'n proxy soos Burp sonder om Burp CA binne die toestel te magtig. Jy kan ook met Burp 'n sertifikaat vir 'n ander hostname genereer en dit gebruik.
### Gebroke Kryptografie
@ -170,7 +170,7 @@ Ontwikkelaars moet nie **verouderde algoritmes** gebruik om **outorisering** **k
- As die app sensitief is (soos bankapps), moet dit sy **eie kontroles uitvoer om te sien of die mobiele toestel ge-root is** en dienooreenkomstig optree.
- As die app sensitief is (soos bankapps), moet dit nagaan of 'n **emulator** gebruik word.
- As die app sensitief is (soos bankapps), moet dit **sy eie integriteit nagaan voordat dit uitgevoer** word om te kyk of dit gewysig is.
- Gebruik [**APKiD**](https://github.com/rednaga/APKiD) om te kyk watter kompilator/pakker/obfuscator gebruik is om die APK te bou.
- Gebruik [**APKiD**](https://github.com/rednaga/APKiD) om te kyk watter kompilator/pakker/obfuskeerder gebruik is om die APK te bou.
### React Native Toepassing
@ -194,15 +194,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), **sinks** (wat die hulpmiddel aandui van **gevaarlike** **plekke** waar kwaadwillige gebruikersinvoer skade kan aanrig) en **reëls**. Hierdie reëls dui die **kombinasie** van **bronne-sinks** 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 die hulpmiddel aandui waar die **invoer** deur die **gebruiker** **beheer** word), **sinkholes** (wat die hulpmiddel aandui waar **gevaarlike** **plekke** is 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.
### Om Biometriese Outorisering te Bypass
### Om Biometriese Outorisering te Omseil
{{#ref}}
bypass-biometric-authentication-android.md
@ -227,7 +227,7 @@ content-protocol.md
## Dinamiese Analise
> Eerstens, jy het 'n omgewing nodig waar jy die toepassing en al die omgewing (Burp CA sertifikaat, Drozer en Frida hoofsaaklik) kan installeer. Daarom word 'n ge-root toestel (geëmuleer of nie) uiters aanbeveel.
> Eerstens, jy het 'n omgewing nodig waar jy die toepassing en al die omgewing (Burp CA sertifikaat, Drozer en Frida hoofsaaklik) kan installeer. Daarom is 'n ge-root toestel (geëmuleer of nie) uiters aanbeveel.
### Aanlyn Dinamiese analise
@ -260,7 +260,7 @@ Om **Google dienste** (soos AppStore) in Genymotion te installeer, moet jy op di
![](<../../images/image (277).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 sal 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 hulpmiddels gaan verbind).
#### Gebruik 'n fisiese toestel
@ -270,7 +270,7 @@ Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **r
2. (Van Android 8.0) Kies **Stelsel**.
3. Kies **Oor telefoon**.
4. Druk **Bou nommer** 7 keer.
5. Gaan terug en jy sal die **Ontwikkelaar opsies** vind.
5. Gaan terug en jy sal die **Ontwikkelaarsopsies** vind.
> Sodra jy die toepassing geïnstalleer het, is die eerste ding wat jy moet doen om dit te probeer en te ondersoek wat dit doen, hoe dit werk en om gemaklik daarmee te raak.\
> Ek sal voorstel om **hierdie aanvanklike dinamiese analise uit te voer met MobSF dinamiese analise + pidcat**, sodat ons kan **leer hoe die toepassing werk** terwyl MobSF **'n klomp** **interessante** **data** vasvang wat jy later kan hersien.
@ -282,22 +282,22 @@ Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **r
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.
> [!WARNING]
> Let daarop dat vanaf **later nuwer as Android 4.0**, **toepassings slegs toegang tot hul eie logs kan **. So toepassings kan nie ander apps se logs toegang nie.\
> 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.\
> Dit word steeds aanbeveel om **nie sensitiewe inligting te log nie**.
**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 omdat **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 logs op crashes te log, en as logs oor die netwerk oorgedra 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 te log op crashes, 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**.
**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 na te gaan of enige sensitiewe inligting 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 na te gaan of enige sensitiewe inligting aan derdeparty dienste gestuur word.
### SQLite DB's
@ -310,7 +310,7 @@ Lys die tabelle met `.tables` en lys die kolomme van die tabelle met `.schema <t
### 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.\
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
@ -320,34 +320,34 @@ Onthou ook dat die kode van 'n aktiwiteit begin in die **`onCreate`** metode.
**Outorisering omseiling**
Wanneer 'n Aktiwiteit geëksporteer word, kan jy sy skerm van 'n eksterne app aanroep. Daarom, as 'n aktiwiteit met **sensitiewe inligting** **geëksporteer** is, kan jy die **outorisering** meganismes **omseil** om toegang daartoe te verkry.
Wanneer 'n Aktiwiteit geëksporteer word, kan jy sy skerm vanaf 'n eksterne app aanroep. Daarom, as 'n aktiwiteit met **sensitiewe inligting** **geëksporteer** is, kan jy die **outorisering** meganismes **omseil** om toegang daartoe te verkry.
[**Leer hoe om geëksporteerde aktiwiteite met Drozer te eksploiteer.**](drozer-tutorial/index.html#activities)
Jy kan ook 'n geëksporteerde aktiwiteit van adb begin:
Jy kan ook 'n geëksporteerde aktiwiteit vanaf adb begin:
- Pakketnaam is com.example.demo
- Geëksporteerde AktiwiteitNaam is com.example.test.MainActivity
```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity
```
**NOTA**: MobSF sal die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n aktiwiteit as kwaadwillig beskou, maar weens [dit](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), blyk dit dat dit slegs gevaarlik is op ouer weergawes (API weergawes < 21).
**NOTA**: MobSF sal die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n aktiwiteit as kwaadwillig beskou, maar weens [dit](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), blyk dit dat dit slegs gevaarlik is op ou weergawes (API weergawes < 21).
> [!TIP]
> Let daarop dat 'n magtiging omseiling nie altyd 'n kwesbaarheid is nie, dit sal afhang van hoe die omseiling werk en watter inligting blootgestel word.
**Gevoelige inligting lekkasie**
**Sensitiewe inligting lekkasie**
**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n geexporteerde en onbeveiligde aktiwiteit te vind wat die **`setResult`** metode aanroep en **gevoelige inligting teruggee**, is daar 'n lekkasie van gevoelige inligting.
**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n geexporteerde en onbeveiligde aktiwiteit te vind wat die **`setResult`** metode aanroep en **sensitiewe inligting teruggee**, is daar 'n sensitiewe inligting lekkasie.
#### Tapjacking
As tapjacking nie voorkom word nie, kan jy die geexporteerde aktiwiteit misbruik om die **gebruiker onverwachte aksies** te laat uitvoer. Vir meer inligting oor [**wat is Tapjacking volg die skakel**](#tapjacking).
### Exploiteer Inhoudverskaffers - Toegang tot en manipulasie van gevoelige inligting
### Exploiteer Inhoudverskaffers - Toegang tot en manipulasie van sensitiewe inligting
[**Lees dit as jy wil verfris wat 'n Inhoudverskaffer 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 **gevoelige** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL-inspuitings** en **Pad Traversals** te toets aangesien hulle kwesbaar kan wees.
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 **Pad Traversals** te toets aangesien hulle kwesbaar kan wees.
[**Leer hoe om Inhoudverskaffers met Drozer te exploiteer.**](drozer-tutorial/index.html#content-providers)
@ -356,7 +356,7 @@ Inhoudverskaffers word basies gebruik om **data** te **deel**. As 'n app beskikb
[**Lees dit as jy wil verfris wat 'n Diens is.**](android-applications-basics.md#services)\
Onthou dat die aksies van 'n Diens begin in die metode `onStartCommand`.
'n Diens is basies iets wat **data kan ontvang**, dit **verwerk** en **gee** (of nie) 'n antwoord terug. As 'n toepassing sekere dienste geexporteer het, 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...\
Aangesien 'n diens basies iets is wat **data kan ontvang**, dit **verwerk** en **teruggee** (of nie) 'n antwoord. As 'n toepassing sekere dienste eksport, 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...\
[**Leer hoe om Dienste met Drozer te exploiteer.**](drozer-tutorial/index.html#services)
### **Exploiteer Uitsendingsontvangers**
@ -370,11 +370,11 @@ Onthou dat die aksies van 'n Uitsendingsontvanger begin in die metode `onReceive
### **Exploiteer Skemas / Diep skakels**
Jy kan handmatig na diep skakels soek, met behulp van gereedskap soos MobSF of skripte soos [hierdie een](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
Jy kan 'n verklaarde **skema** gebruik om **adb** of 'n **blaaier** te **open**:
Jy kan 'n verklaarde **skema** met **adb** of 'n **blaaier** **oopmaak**:
```bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
```
_Note dat jy die **pakketnaam kan oorslaan** en die mobiele toestel sal outomaties die app oproep wat daardie skakel moet oopmaak._
_Neem kennis dat jy die **pakketnaam kan oorslaan** en die mobiele toestel sal outomaties die app oproep wat daardie skakel moet oopmaak._
```html
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
@ -400,27 +400,27 @@ Let daarop dat as jy die korrekte eindpunte binne die toepassing vind, jy dalk '
'n [interessante bug bounty verslag](https://hackerone.com/reports/855618) oor skakels (_/.well-known/assetlinks.json_).
### Vervoer Laag Inspeksie en Verifikasie Foute
### Transportlaag Inspeksie en Verifikasiefoute
- **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 outentiseer deur veilige kanale, maar dan oor nie-veilige kanale vir ander transaksies kommunikeer. Hierdie benadering beskerm nie sensitiewe data, soos sessiekookies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie.
- **Lek van private inligting** is 'n risiko wanneer toepassings outentiseer 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
#### Sertifikaatverifikasie
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 **sertifikaatverifikasie**. 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
SSL Pinning is 'n sekuriteitsmaatreël waar die toepassing die bediener se sertifikaat teen 'n bekende kopie wat binne die toepassing self gestoor is, verifieer. Hierdie metode is noodsaaklik om MITM-aanvalle te voorkom. Die implementering van SSL Pinning word sterk aanbeveel vir toepassings wat sensitiewe inligting hanteer.
#### Verkeer Inspeksie
#### Verkeersinspeksie
Om HTTP-verkeer te inspekteer, is dit nodig om die **proxy gereedskap se sertifikaat** (bv. Burp) te **installeer**. Sonder om hierdie sertifikaat te installeer, mag geënkripteerde verkeer nie deur die proxy sigbaar wees nie. Vir 'n gids oor die installering van 'n pasgemaakte CA-sertifikaat, [**klik hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Om HTTP-verkeer te inspekteer, is dit nodig om die **proxy-gereedskap se sertifikaat** (bv. Burp) te **installeer**. Sonder om hierdie sertifikaat te installeer, mag geënkripteerde verkeer nie deur die proxy sigbaar wees nie. Vir 'n gids oor die installering van 'n pasgemaakte CA-sertifikaat, [**klik hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Toepassings wat **API-vlak 24 en hoër** teiken, vereis wysigings aan die Netwerk Sekuriteit Konfigurasie om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van geënkripteerde verkeer. Vir instruksies oor die wysiging van die Netwerk Sekuriteit Konfigurasie, [**verwys na hierdie tutoriaal**](make-apk-accept-ca-certificate.md).
Toepassings wat **API-vlak 24 en hoër** teiken, vereis wysigings aan die Netwerk Sekuriteitskonfigurasie om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van geënkripteerde verkeer. Vir instruksies oor die wysiging van die Netwerk Sekuriteitskonfigurasie, [**verwys na hierdie tutoriaal**](make-apk-accept-ca-certificate.md).
As **Flutter** gebruik word, moet jy die instruksies in [**hierdie bladsy**](flutter.md) volg. Dit is omdat, net om die sertifikaat in die winkel by te voeg, nie sal werk nie, aangesien Flutter sy eie lys van geldige CA's het.
As **Flutter** gebruik word, moet jy die instruksies in [**hierdie bladsy**](flutter.md) volg. Dit is omdat, net om die sertifikaat in die winkel te voeg, nie sal werk nie, aangesien Flutter sy eie lys van geldige CA's het.
#### Omseiling van SSL Pinning
@ -430,27 +430,33 @@ Wanneer SSL Pinning geïmplementeer is, word dit noodsaaklik om dit te omseil om
- Jy kan **Frida** gebruik (hieronder bespreek) om hierdie beskerming te omseil. Hier is 'n gids om Burp+Frida+Genymotion te gebruik: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- Jy kan ook probeer om **automaties SSL Pinning te omseil** met [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
- Jy kan ook probeer om **automaties SSL Pinning te omseil** met **MobSF dinamiese analise** (hieronder verduidelik)
- As jy steeds dink dat daar verkeer is wat jy nie opneem nie, kan jy probeer om die verkeer na burp te **stuur met iptables**. Lees hierdie blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
- As jy steeds dink dat daar sekere verkeer is wat jy nie opneem nie, kan jy probeer om die verkeer na burp te **stuur met iptables**. Lees hierdie blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Soek na Algemene Web Kwesbaarhede
#### Soek na Algemene Webkwesbaarhede
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.
Dit is belangrik om ook te soek na algemene webkwesbaarhede binne die toepassing. Gedetailleerde inligting oor die identifisering en mitigering van hierdie kwesbaarhede val 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...**\
[Frida](https://www.frida.re) is 'n dinamiese instrumentasie-gereedskapstel vir ontwikkelaars, omgekeerde ingenieurs, en sekuriteitsnavorsers.\
**Jy kan lopende toepassings toegang en metode aanroep op tyd 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)
- Sommige "GUI" vir aksies met Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
- Ojection is wonderlik om die gebruik van Frida te outomatiseer: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
- Jy kan 'n paar wonderlike Frida skripte hier vind: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
- Jy kan 'n paar wonderlike Frida-skripte hier vind: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
- Probeer om anti-debugging / anti-frida meganismes te omseil deur Frida te laai soos aangedui in [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (gereedskap [linjector](https://github.com/erfur/linjector-rs))
#### Anti-instrumentasie & SSL pinning omseil werkvloei
{{#ref}}
android-anti-instrumentation-and-ssl-pinning-bypass.md
{{#endref}}
### **Dump Geheue - Fridump**
Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics.
Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonika.
Met [**Fridump3**](https://github.com/rootbsd/fridump3) kan jy die geheue van die app dump met:
```bash
@ -483,9 +489,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.
E however, as hierdie snapshot **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`**
@ -501,12 +507,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`-objekte 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 te verkry tot sensitiewe inhoudverskaffers deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent`-objekte omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent-inspuitings.
### Belangrike Afleidings
- **Intent Inspuiting** is soortgelyk aan die web se Open Redirect probleem.
- Exploits behels die oorplasing van `Intent`-objekte as ekstra's, wat herlei kan word om onveilige operasies uit te voer.
- Exploits behels die oorplasing van `Intent`-objekte as ekstra's, wat omgerig 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.
@ -514,7 +520,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.
- **SQL Inspuiting:** Wanneer jy met dinamiese navrae of Inhoud-Verskaffers 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).
- **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.
@ -535,10 +541,10 @@ Waarskynlik weet jy van hierdie soort kwesbaarhede van die Web. Jy moet spesiaal
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_).\
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.
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
@ -556,21 +562,21 @@ Van Android **weergawe > 5**, sal dit **outomaties Frida begin** en globale **pr
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 aanroepings na gehookte metodes, oorgedraagde argumente 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).
![](<../../images/image (419).png>)
Boonop het jy 'n paar bykomende Frida-funksies:
- **Laden Klasse Opnoem**: Dit sal al die geladen 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.
- **Klas Metodes Opnoem**: 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.
- **Lade Klasse**: Dit sal al die gelaaide klasse druk
- **Vang Strings**: Dit sal al die gevangenis strings druk terwyl jy die toepassing gebruik (baie lawaaiig)
- **Vang String Vergelykings**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Vals was.
- **Lade Klas Metodes**: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk.
- **Soek Klas Patroon**: Soek klasse volgens patroon
- **Trace Klas Metodes**: **Trace** 'n **hele klas** (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes traceer.
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**
@ -585,10 +591,10 @@ 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 onder. 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 te 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:
@ -604,13 +610,13 @@ Hierdie gereedskap sal 'n paar **Hooks** gebruik om jou te laat weet **wat in di
### [Yaazhini](https://www.vegabird.com/yaazhini/)
Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI** uit te voer.
Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI uit te voer**
![](<../../images/image (741).png>)
### [Qark](https://github.com/linkedin/qark)
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 toetsapparaat te root nie.
Hierdie gereedskap is ontwerp om na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede** te soek, hetsy in **bronkode** of **gepakte 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 toetsapparaat te root nie.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@ -632,9 +638,9 @@ reverse-apk relative/path/to/APP.apk
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 sy eie reëls skep om te analiseer wat hulle nodig het.
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.
Laai die nuutste binaire lêers af van die [aflaai bladsy](https://superanalyzer.rocks/download.html)
Laai die nuutste binaire lêers af van die [download page](https://superanalyzer.rocks/download.html)
```
super-analyzer {apk_file}
```
@ -642,9 +648,9 @@ super-analyzer {apk_file}
![](<../../images/image (297).png>)
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.
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.
Die konsep is dat jy jou mobiele toepassingslêer (n .apk of .ipa-lêer) op die StaCoAn-toepassing sleep en dit 'n visuele en draagbare verslag vir jou sal genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde 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 'n visuele en draagbare verslag vir jou sal genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde ervaring te kry.
Laai [nuutste vrystelling](https://github.com/vincentcox/StaCoAn/releases):
```
@ -687,9 +693,9 @@ Dit kan:
Nuttig om malware te detecteer: [https://koodous.com/](https://koodous.com)
## Obfuscating/Deobfuscating code
## Obfuskerende/Deobfuskerende kode
Let daarop dat dit afhang van die diens en konfigurasie wat jy gebruik om die kode te obfuskeer. Geheimenisse mag of mag nie obfuskeer wees nie.
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)>)
@ -721,7 +727,7 @@ Dit is 'n LLM hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android
### [Simplify](https://github.com/CalebFenton/simplify)
Dit is 'n **generiese android deobfuscator.** Simplify **voortvirtueel 'n app** om sy gedrag te verstaan en dan **probeer om die kode te optimaliseer** sodat dit identies optree, maar makliker vir 'n mens om te verstaan. Elke optimalisering tipe is eenvoudig en generies, so dit maak nie saak watter spesifieke tipe obfuskering gebruik word nie.
Dit is 'n **generiese android deobfuskeerder.** Simplify **voortvirtueel 'n app** om sy gedrag te verstaan en dan **probeer om die kode te optimaliseer** sodat dit identies optree, maar makliker vir 'n mens om te verstaan. Elke optimalisering tipe is eenvoudig en generies, so dit maak nie saak watter spesifieke tipe obfuskerings gebruik word nie.
### [APKiD](https://github.com/rednaga/APKiD)
@ -735,7 +741,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 raamwerke, tutoriaal en laboratoriums 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 labs van verskillende sekuriteitsgeeks en navorsers vir reverse engineering en malware analise insluit.
## References

View File

@ -0,0 +1,203 @@
# Android Anti-Instrumentation & SSL Pinning Bypass (Frida/Objection)
{{#include ../../banners/hacktricks-training.md}}
Hierdie bladsy bied 'n praktiese werksvloei om dinamiese analise teen Android-apps wat instrumentasie detecteer/root-blokkeer of TLS pinning afdwing, te herwin. Dit fokus op vinnige triage, algemene detections, en kopieer-plakbare hooks/taktieke om hulle te omseil sonder om te repak wanneer moontlik.
## Detection Surface (wat apps nagaan)
- Root kontroles: su binêre, Magisk paaie, getprop waardes, algemene root pakkette
- Frida/debugger kontroles (Java): Debug.isDebuggerConnected(), ActivityManager.getRunningAppProcesses(), getRunningServices(), scanning /proc, classpath, gelaaide libs
- Native anti-debug: ptrace(), syscalls, anti-attach, breekpunte, inline hooks
- Vroegste init kontroles: Application.onCreate() of proses begin hooks wat crash as instrumentasie teenwoordig is
- TLS pinning: persoonlike TrustManager/HostnameVerifier, OkHttp CertificatePinner, Conscrypt pinning, native pins
## Stap 1 — Vinnige wen: verberg root met Magisk DenyList
- Aktiveer Zygisk in Magisk
- Aktiveer DenyList, voeg die teikenpakket by
- Herbegin en toets weer
Baie apps kyk net vir voor die hand liggende aanduiders (su/Magisk paaie/getprop). DenyList neutraliseer dikwels naïewe kontroles.
Verwysings:
- Magisk (Zygisk & DenyList): https://github.com/topjohnwu/Magisk
## Stap 2 — 30-sekonde Frida Codeshare toetse
Probeer algemene drop-in skripte voordat jy diep delf:
- anti-root-bypass.js
- anti-frida-detection.js
- hide_frida_gum.js
Voorbeeld:
```bash
frida -U -f com.example.app -l anti-frida-detection.js
```
Hierdie stoot tipies Java wortel/debug kontroles, proses/dienste skande, en inheemse ptrace(). Nuttig op liggies beskermde toepassings; geharde teikens mag op maat gemaakte haakies benodig.
- Codeshare: https://codeshare.frida.re/
## Stap 3 — Bypass init-tyd detektore deur laat aan te sluit
Baie deteksies loop slegs tydens proses ontstaan/onCreate(). Ontstaan-tyd inspuiting (-f) of gadgets word vasgevang; aan sluit na UI laai kan verbyglip.
```bash
# Launch the app normally (launcher/adb), wait for UI, then attach
frida -U -n com.example.app
# Or with Objection to attach to running process
aobjection --gadget com.example.app explore # if using gadget
```
As dit werk, hou die sessie stabiel en gaan voort om die kaart en stub kontroles te doen.
## Stap 4 — Kaart opsporingslogika via Jadx en string jag
Statische triage sleutelwoorde in Jadx:
- "frida", "gum", "root", "magisk", "ptrace", "su", "getprop", "debugger"
Tipiese Java patrone:
```java
public boolean isFridaDetected() {
return getRunningServices().contains("frida");
}
```
Algemene API's om te hersien/te haak:
- android.os.Debug.isDebuggerConnected
- android.app.ActivityManager.getRunningAppProcesses / getRunningServices
- java.lang.System.loadLibrary / System.load (native bridge)
- java.lang.Runtime.exec / ProcessBuilder (probing commands)
- android.os.SystemProperties.get (root/emulator heuristics)
## Stap 5 — Runtime stubbing met Frida (Java)
Oorheers aangepaste wagte om veilige waardes terug te gee sonder om te herverpakkings:
```js
Java.perform(() => {
const Checks = Java.use('com.example.security.Checks');
Checks.isFridaDetected.implementation = function () { return false; };
// Neutralize debugger checks
const Debug = Java.use('android.os.Debug');
Debug.isDebuggerConnected.implementation = function () { return false; };
// Example: kill ActivityManager scans
const AM = Java.use('android.app.ActivityManager');
AM.getRunningAppProcesses.implementation = function () { return java.util.Collections.emptyList(); };
});
```
Triaging vroeë crashes? Dump klasse net voordat dit sterf om waarskynlike opsporing namespaces te identifiseer:
```js
Java.perform(() => {
Java.enumerateLoadedClasses({
onMatch: n => console.log(n),
onComplete: () => console.log('Done')
});
});
```
Teken en neutraliseer verdagte metodes om uitvoeringsvloei te bevestig:
```js
Java.perform(() => {
const Det = Java.use('com.example.security.DetectionManager');
Det.checkFrida.implementation = function () {
console.log('checkFrida() called');
return false;
};
});
```
## Stap 6 — Volg die JNI/benaderingspad wanneer Java haakies misluk
Traceer JNI ingangsplekke om inheemse laders en opsporingsinits te lokaliseer:
```bash
frida-trace -n com.example.app -i "JNI_OnLoad"
```
Vinnige inheemse triage van saamgevoegde .so-lêers:
```bash
# List exported symbols & JNI
nm -D libfoo.so | head
objdump -T libfoo.so | grep Java_
strings -n 6 libfoo.so | egrep -i 'frida|ptrace|gum|magisk|su|root'
```
Interaktiewe/niks omkeer:
- Ghidra: https://ghidra-sre.org/
- r2frida: https://github.com/nowsecure/r2frida
Voorbeeld: neuter ptrace om eenvoudige antidebug in libc te oorwin:
```js
const ptrace = Module.findExportByName(null, 'ptrace');
if (ptrace) {
Interceptor.replace(ptrace, new NativeCallback(function () {
return -1; // pretend failure
}, 'int', ['int', 'int', 'pointer', 'pointer']));
}
```
Sien ook: {{#ref}}
reversing-native-libraries.md
{{#endref}}
## Stap 7 — Objection patching (embed gadget / strip basiese beginsels)
Wanneer jy verkies om herverpakking bo runtime hooks te gebruik, probeer:
```bash
objection patchapk --source app.apk
```
Notas:
- Vereis apktool; verseker 'n huidige weergawe volgens die amptelike gids om bouprobleme te vermy: https://apktool.org/docs/install
- Gadget-inspuiting stel instrumentasie in staat sonder root, maar kan steeds deur sterker init-tyd kontroles opgevang word.
Verwysings:
- Objection: https://github.com/sensepost/objection
## Stap 8 — Terugval: Patching TLS pinning vir netwerk sigbaarheid
As instrumentasie geblokkeer is, kan jy steeds verkeer inspekteer deur pinning staties te verwyder:
```bash
apk-mitm app.apk
# Then install the patched APK and proxy via Burp/mitmproxy
```
- Gereedskap: https://github.com/shroudedcode/apk-mitm
- Vir netwerk konfigurasie CAvertroue truuks (en Android 7+ gebruiker CA vertroue), sien:
{{#ref}}
make-apk-accept-ca-certificate.md
{{#endref}}
{{#ref}}
install-burp-certificate.md
{{#endref}}
## Handige opdrag spiekbrief
```bash
# List processes and attach
frida-ps -Uai
frida -U -n com.example.app
# Spawn with a script (may trigger detectors)
frida -U -f com.example.app -l anti-frida-detection.js
# Trace native init
frida-trace -n com.example.app -i "JNI_OnLoad"
# Objection runtime
objection --gadget com.example.app explore
# Static TLS pinning removal
apk-mitm app.apk
```
## Wenke & waarskuwings
- Verkies om laat aan te sluit eerder as om te spawn wanneer toepassings by die bekendstelling crash
- Sommige opsporings herloop in kritieke vloei (bv. betaling, outentisering) — hou haakies aktief tydens navigasie
- Meng staties en dinamies: string jag in Jadx om klasse te kortlys; haak dan metodes om tydens uitvoering te verifieer
- Versterkte toepassings mag gebruik maak van pakkers en inheemse TLS pinning — verwag om inheemse kode te reverseer
## Verwysings
- [Reversing Android Apps: Bypassing Detection Like a Pro](https://www.kayssel.com/newsletter/issue-12/)
- [Frida Codeshare](https://codeshare.frida.re/)
- [Objection](https://github.com/sensepost/objection)
- [apk-mitm](https://github.com/shroudedcode/apk-mitm)
- [Jadx](https://github.com/skylot/jadx)
- [Ghidra](https://ghidra-sre.org/)
- [r2frida](https://github.com/nowsecure/r2frida)
- [Apktool install guide](https://apktool.org/docs/install)
- [Magisk](https://github.com/topjohnwu/Magisk)
{{#include ../../banners/hacktricks-training.md}}