From 2690f246115bb4f3d4f62c121e4b1c8cc66ea84f Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 12:23:18 +0000 Subject: [PATCH] Translated ['', 'src/mobile-pentesting/android-app-pentesting/README.md' --- .../android-app-pentesting/README.md | 639 ++++++++++-------- 1 file changed, 348 insertions(+), 291 deletions(-) diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 1368f89d3..5268729e7 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -2,9 +2,10 @@ {{#include ../../banners/hacktricks-training.md}} -## Android Toepassings Basiese Beginsels +## Android Toepassings Basiese beginsels + +Dit word sterk aanbeveel om eers hierdie bladsy te lees om meer 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 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 @@ -12,24 +13,24 @@ 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** stel jou in staat 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. +Dit is die hoofgereedskap wat jy benodig om met 'n Android-toestel (geëmuleer of fisies) te verbind.\ +**ADB** laat toe om toestelle te beheer óf oor **USB** óf oor **Network** vanaf 'n rekenaar. Hierdie hulpmiddel maak dit moontlik om lêers in albei rigtings te **kopieer**, apps te **installeer** en te **deïnstalleer**, shell-opdragte uit te **voer**, data te **rugsteun**, logs te **lees**, en ander funksies. -Kyk na die volgende lys van [**ADB Opdragte**](adb-commands.md) om te leer hoe om adb te gebruik. +Kyk na die volgende lys van [**ADB Commands**](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 **aansoekkode te wysig** om by **weggesteekte inligting** te kom (bv. goed geobfuskate wagwoorde of flags). Dan kan dit interessant wees om die apk te dekompileer, die kode te wysig en dit weer saam te stel.\ +[**In this tutorial** you can **learn how to decompile and APK, modify Smali code and recompile the APK** with the new functionality](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat aangebied gaan word. Hou dus **altyd hierdie moontlikheid in gedagte**. -## Ander interessante truuks +## Ander interessante wenke -- [Spoofing jou ligging in 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) -- [Misbruik van Toeganklikheidsdienste (Android RAT)](accessibility-services-abuse.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) -- Trek APK van toestel uit: +- [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md) +- [Shizuku Privileged API (ADB-based non-root privileged access)](shizuku-privileged-api.md) +- [Exploiting Insecure In-App Update Mechanisms](insecure-in-app-update-rce.md) +- [Abusing Accessibility Services (Android RAT)](accessibility-services-abuse.md) +- **Download APKs**: [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) +- Onttrek APK vanaf toestel: ```bash adb shell pm list packages com.android.insecurebankv2 @@ -39,7 +40,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 apk's met [APKEditor](https://github.com/REAndroid/APKEditor): +- Voeg alle splits en base 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 @@ -48,7 +49,7 @@ 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 +## Gevallestudies & Kwetsbaarhede {{#ref}} @@ -62,151 +63,153 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ## Statiese Analise -Eerstens, om 'n APK te analiseer, moet jy **na die Java-kode kyk** met behulp van 'n decompiler.\ -Asseblief, [**lees hier om inligting oor verskillende beskikbare decompilers te vind**](apk-decompilers.md). +Eerstens, om 'n APK te ontleed, behoort jy **na die Java code te kyk** met 'n dekompiler.\ +Please, [**read here to find information about different available decompilers**](apk-decompilers.md). -### Soek na interessante Inligting +### Op 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 aan die app). +Net deur na die **strings** van die APK te kyk kan jy soek na **passwords**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** keys, **encryption**, **bluetooth uuids**, **tokens** en enigiets interessant... kyk selfs vir code execution **backdoors** of authentication backdoors (hardcoded admin credentials to the 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 besondere aandag aan **firebase URLs** en kontroleer of dit swak gekonfigureer is. [More information about whats is FIrebase and how to exploit it here.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) -### Basiese begrip van die toepassing - Manifest.xml, strings.xml +### Basiese begrip van die aansoek - Manifest.xml, strings.xml -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 se uitbreiding na .zip te hernoem en dit dan uit te pak. +Die **ondersoek van 'n aansoek se _Manifest.xml_ en _strings.xml_ lêers kan potensiële sekuriteitskwesbaarhede openbaar**. Hierdie lêers kan verkry word met behulp van dekompilers of deur die APK-lêeruitbreiding na .zip te hernoem en dit dan uit te pak. -**Kw vulnerabilities** wat uit die **Manifest.xml** geïdentifiseer is, sluit in: +**Kwetsbaarhede** geïdentifiseer uit die **Manifest.xml** sluit in: -- **Debugbare Toepassings**: Toepassings wat as debuggable (`debuggable="true"`) in die _Manifest.xml_ lêer ingestel 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 ingestel 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. -- **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. +- **Debuggable Applications**: Toepassings wat as debuggable gestel is (`debuggable="true"`) in die _Manifest.xml_ lêer vorm 'n risiko aangesien hulle verbindings toelaat wat tot uitbuiting kan lei. Vir meer begrip oor hoe om debuggable toepassings te misbruik, verwys na 'n handleiding oor die vind en benut van debuggable toepassings op 'n toestel. +- **Backup Settings**: Die `android:allowBackup="false"` attribuut moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongemagtigde data-rugsteun via adb te voorkom, veral wanneer usb debugging aangeskakel is. +- **Network Security**: Pasgemaakte network security konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos certificate pins en HTTP-verkeerinstellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat. +- **Exported Activities and Services**: Die identifisering van exported activities en services in die manifest kan komponente uitlig wat misbruik kan word. Verdere analise gedurende dinamiese toetsing kan openbaar hoe om hierdie komponente te benut. +- **Content Providers and FileProviders**: Blootgestelde content providers kan ongemagtigde toegang of wysiging van data toelaat. Die konfigurasie van FileProviders moet ook noukeurig ondersoek word. +- **Broadcast Receivers and URL Schemes**: Hierdie komponente kan benut word vir uitbuiting, met besondere aandag aan hoe URL schemes vir inset-kwessies bestuur word. +- **SDK Versions**: Die `minSdkVersion`, `targetSDKVersion`, en `maxSdkVersion` attributen dui die ondersteunede Android weergawes aan, wat die belangrikheid beklemtoon om nie verouderde, kwesbare Android weergawes 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 keys, custom schemas en ander ontwikkelaarnotas ontdek word, wat die behoefte aan 'n deeglike 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 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**. +**Tapjacking** is 'n aanval waar 'n **malicious** **application** gelanseer word en homself bo-op 'n victim application posisioneer. Sodra dit die victim app sigbaar verberg, is sy gebruikerskoppelvlak so ontwerp dat dit die gebruiker mislei om daarmee te interaksie, terwyl dit die interaksie aan die victim app deurgee. Effektief blind dit die gebruiker ten opsigte daarvan dat hulle eintlik aksies op die victim app uitvoer. -Vind meer inligting in: +Find more information in: {{#ref}} tapjacking.md {{#endref}} -### Taak Hijacking +### Task Hijacking -'n **aktiwiteit** met die **`launchMode`** ingestel 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**). +'n activity met die `launchMode` gestel op `singleTask` sonder enige `taskAffinity` gedefinieer is kwesbaar vir Task Hijacking. Dit beteken dat 'n application geïnstalleer kan word en as dit voor die werklike application gelanseer word, kan dit die taak van die werklike application kap (sodat die gebruiker met die malicious application sal interaksie hê terwyl hy dink hy gebruik die werklike een). -Meer inligting in: +More info in: {{#ref}} android-task-hijacking.md {{#endref}} -### Onveilige data stoor +### Onveilige datastoor -**Interne Stoor** +**Internal Storage** -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 lêers tussen verskillende toepassings te **deel**. Tog **beperk** hierdie modi **nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige. +In Android is lêers wat in **internal** storage gestoor word bedoel om uitsluitlik deur die app wat dit geskep het toeganklik te wees. Hierdie sekuriteitsmaatreël word deur die Android bedryfstelsel afgedwing en is gewoonlik voldoende vir die sekuriteitsbehoeftes van meeste toepassings. Ontwikkelaars gebruik soms egter modusse soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om lêers tussen verskeie toepassings te deel. Hierdie modusse beperk egter nie toegang tot hierdie lêers deur ander toepassings nie, insluitende potensieel malicious ones. -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. -2. **Dinamiese Analise:** -- **Verifieer** die **toestemmings** wat op lêers wat deur die app geskep is, ingestel 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**. +1. **Static Analysis:** +- **Ensure** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` noukeurig geïnspekteer word. Hierdie modusse **kan moontlik** lêers aan **onbedoelde of ongemagtigde toegang** blootstel. +2. **Dynamic Analysis:** +- **Verify** die **permissions** wat op lêers geskep deur die app gestel is. Spesifiek, **kontroleer** of enige lêers ingestel is om wêreldwyd lees- of skryftoegang te hê. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit **enige application** geïnstalleer op die toestel toelaat, ongeag oorsprong of doel, om hierdie lêers te **lees of wysig**. -**Eksterne Stoor** +**External Storage** -Wanneer jy met lêers op **eksterne stoor** werk, soos SD Kaart, moet sekere voorsorgmaatreëls geneem word: +Wanneer jy met lêers op **external storage** werk, soos SD Cards, moet sekere voorsorgmaatreëls getref word: -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. **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 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. +1. **Accessibility**: +- Lêers op external storage is **globaal leesbaar en skryfbaar**. Dit beteken enige application of gebruiker kan toegang hê tot hierdie lêers. +2. **Security Concerns**: +- Gegewe die maklike toegang, word dit aanbeveel **om nie sensitiewe inligting op external storage te stoor nie**. +- External storage kan verwyder of deur enige application benader word, wat dit minder veilig maak. +3. **Handling Data from External Storage**: +- Voer altyd **input validation** uit op data wat van external storage verkry is. Dit is kritiek omdat die data van 'n onbetroubare bron afkomstig is. +- Dit word sterk ontraden om uitvoerbare lêers of class files op external storage te stoor vir dinamiese laai. +- As jou toepassing uitvoerbare lêers van external storage moet herwin, maak seker dat hierdie lêers **signed and cryptographically verified** is voordat hulle dinamies gelaai word. Hierdie stap is noodsaaklik om die sekuriteitsintegriteit van jou toepassing te handhaaf. -Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` +External storage kan geakses word 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. +> Starting with Android 4.4 (**API 17**), the SD card has a directory structure which **limits access from an app to the directory which is specifically for that app**. This prevents malicious application from gaining read or write access to another app's files. **Sensitiewe data gestoor in duidelike teks** -- **Gedeelde voorkeure**: Android laat elke toepassing toe om maklik xml lêers in die pad `/data/data//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//databases/` te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind. +- **Shared preferences**: Android laat elke application toe om maklik xml lêers te stoor in die pad `/data/data//shared_prefs/` en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind. +- **Databases**: Android laat elke application toe om maklik sqlite databases te stoor in die pad `/data/data//databases/` en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind. -### Gebroke TLS +### Broken TLS -**Aanvaar Alle Sertifikate** +**Accept All Certificates** -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: +Om sommige redes aanvaar ontwikkelaars soms alle sertifikate selfs al stem byvoorbeeld die hostname nie ooreen nie met reëls van kode soos die volgende een: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` -'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. +A good way to test this is to try to capture the traffic using some proxy like Burp without authorising Burp CA inside the device. Also, you can generate with Burp a certificate for a different hostname and use it. -### Gebroke Kryptografie +### Gebroke Kriptografie -**Swak Sleutelbestuurproses** +**Swakke Sleutelbestuursprosedures** -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. +Sommige ontwikkelaars stoor sensitiewe data in plaaslike stoorplekke en enkripteer dit met 'n sleutel wat hardgekodeer/voorspelbaar in die kode is. Dit behoort nie so te wees nie, aangesien reversing aanvallers kan toelaat om die vertroulike inligting te onttrek. **Gebruik van Onveilige en/of Verouderde Algoritmes** -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. +Ontwikkelaars moet nie **deprecated algorithms** gebruik om autorisasie-**checks**, data te **store** of te **send** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** byvoorbeeld gebruik word om wagwoorde te stoor, moet **brute-force resistant** hashes met salt gebruik word. ### Ander kontroles -- Dit word aanbeveel om die **APK te obfuskeer** om die omgekeerde ingenieurswerk vir aanvallers moeilik te maak. -- 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. +- Dit word aanbeveel om die **APK te obfuskeer** om die omgekeerde-ingenieurswerk vir aanvallers moeiliker te maak. +- As die app sensitief is (soos bankapps), moet dit sy **eie kontroles uitvoer om te sien of die mobile toestel geroot 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. +- As die app sensitief is (soos bankapps), moet dit **sy eie integriteit kontroleer voordat dit uitgevoer word** om te sien of dit gewysig is. +- Gebruik [**APKiD**](https://github.com/rednaga/APKiD) om te kontroleer watter compiler/packer/obfuscator gebruik is om die APK te bou -### React Native Toepassing +### React Native Application + +Read the following page to learn how to easily access javascript code of React applications: -Lees die volgende bladsy om te leer hoe om maklik toegang te verkry tot javascript-kode van React-toepassings: {{#ref}} react-native-application.md {{#endref}} -### Xamarin Toepassings +### Xamarin Applications + +Read the following page to learn how to easily access C# code of a xamarin applications: -Lees die volgende bladsy om te leer hoe om maklik toegang te verkry tot C#-kode van 'n xamarin-toepassing: {{#ref}} ../xamarin-apps.md {{#endref}} -### Superpacked Toepassings +### Superpacked Applications -Volgens hierdie [**blogpos**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) is superpacked 'n Meta-algoritme wat die inhoud van 'n toepassing in 'n enkele lêer komprimeer. Die blog praat oor die moontlikheid om 'n app te skep wat hierdie soort apps dekomprimeer... en 'n vinniger manier wat behels om die **toepassing uit te voer en die gedecomprimeerde lêers van die lêerstelsel te versamel.** +According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked is a Meta algorithm that compress the content of an application into a single file. The blog talks about the possibility of creating an app that decompress these kind of apps... and a faster way which involves to **execute the application and gather the decompressed files from the filesystem.** -### Geoutomatiseerde Statiese Kode Analise +### Automated Static Code Analysis -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 tool [**mariana-trench**](https://github.com/facebook/mariana-trench) kan **vulnerabilities** opspoor deur die **code** van die toepassing te **scan**. Hierdie tool bevat 'n reeks **known sources** (wat vir die tool aandui die **places** waar die **input** deur die gebruiker beheer word), **sinks** (wat die tool aandui die **dangerous** **places** waar kwaadwillige gebruiker-input skade kan veroorsaak) en **rules**. Hierdie reëls dui die **combination** van **sources-sinks** aan wat 'n kwetsbaarheid aandui. -Met hierdie kennis, **sal mariana-trench die kode hersien en moontlike kwesbaarhede daarin vind**. +Met hierdie kennis sal **mariana-trench** die **code** hersien en moontlike **vulnerabilities** daarin vind. -### Geheime gelekt +### Geheime leak -'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. +'n Toepassing kan geheime bevat (API keys, wagwoorde, hidden urls, subdomains...) binne-in wat jy moontlik kan ontdek. Jy kan 'n hulpmiddel soos [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) gebruik. + +### Omseil Biometriese Verifikasie -### Om Biometriese Outorisering te Omseil {{#ref}} bypass-biometric-authentication-android.md @@ -214,12 +217,13 @@ bypass-biometric-authentication-android.md ### Ander interessante funksies -- **Kode-uitvoering**: `Runtime.exec(), ProcessBuilder(), native code:system()` -- **Stuur SMS's**: `sendTextMessage, sendMultipartTestMessage` -- **Inheemse funksies** verklaar as `native`: `public native, System.loadLibrary, System.load` -- [Lees dit om te leer **hoe om inheemse funksies om te keer**](reversing-native-libraries.md) +- **Code execution**: `Runtime.exec(), ProcessBuilder(), native code:system()` +- **Send SMSs**: `sendTextMessage, sendMultipartTestMessage` +- **Native functions** declared as `native`: `public native, System.loadLibrary, System.load` +- [Read this to learn **how to reverse native functions**](reversing-native-libraries.md) + +### **Other tricks** -### **Ander truuks** {{#ref}} content-protocol.md @@ -231,154 +235,155 @@ 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 is 'n ge-root toestel (geëmuleer of nie) uiters aanbeveel. +> Eerstens het jy 'n omgewing nodig waar jy die toepassing en al die benodigdhede kan installeer (veral Burp CA-sertifikaat, Drozer en Frida). Daarom word 'n gerootde toestel (geëmuleer of nie) uiters aanbeveel. ### Aanlyn Dinamiese analise -Jy kan 'n **gratis rekening** aanmeld by: [https://appetize.io/](https://appetize.io). Hierdie platform laat jou toe om **APK's op te laai** en **uit te voer**, so dit is nuttig om te sien hoe 'n apk optree. +Jy kan 'n **gratis rekening** skep by: [https://appetize.io/](https://appetize.io). Hierdie platform laat jou toe om APKs te **upload** en te **execute**, dus is dit nuttig om te sien hoe 'n apk optree. -Jy kan selfs **die logs van jou toepassing** op die web sien en deur **adb** verbind. +Jy kan selfs **die logs van jou toepassing** op die web sien en via **adb** koppel. ![](<../../images/image (831).png>) Danksy die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators gebruik. -### Plaaslike Dinamiese Analise +### Lokale Dinamiese Analise -#### Gebruik 'n emulator +#### Using an emulator + +- [**Android Studio**](https://developer.android.com/studio) (You can create **x86** and **arm** devices, and according to [**this** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**latest x86** versions **support ARM libraries** without needing an slow arm emulator). +- Learn to set it up in this page: -- [**Android Studio**](https://developer.android.com/studio) (Jy kan **x86** en **arm** toestelle skep, en volgens [**hierdie**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**nuutste x86** weergawes **ondersteun ARM biblioteke** sonder om 'n stadige arm-emulator te benodig). -- Leer hoe om dit op te stel op hierdie bladsy: {{#ref}} avd-android-virtual-device.md {{#endref}} -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening aanmeld. _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). +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Free version:** Personal Edition, you need to create an account. _It's recommend to **download** the version **WITH**_ _**VirtualBox** to avoid potential errors._) +- [**Nox**](https://es.bignox.com) (Free, but it doesn't support Frida or Drozer). > [!TIP] -> Wanneer jy 'n nuwe emulator op enige platform skep, onthou dat hoe groter die skerm is, hoe stadiger sal die emulator loop. Kies dus klein skerms indien moontlik. +> Wanneer jy 'n nuwe emulator op enige platform skep, onthou dat hoe groter die skerm is, hoe stadiger sal die emulator loop. Kies dus kleiner skerms indien moontlik. -Om **Google dienste** (soos AppStore) in Genymotion te installeer, moet jy op die rooi gemerkte knoppie van die volgende beeld klik: +Om **google services** (soos AppStore) in Genymotion te **installeer** moet jy op die rooi gemerkde knoppie in die volgende beeld klik: ![](<../../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 gaan verbind). +Neem ook kennis dat in die **konfigurasie van die Android VM in Genymotion** jy **Bridge Network mode** kan kies (dit sal nuttig wees as jy vanaf 'n ander VM met die gereedskap na die Android VM sal koppel). -#### Gebruik 'n fisiese toestel +#### Use a physical device -Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **root**: +Jy moet die **debugging**-opsies aktiveer en dit sal handig wees as jy dit kan **root**: -1. **Instellings**. -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. +1. **Settings**. +2. (FromAndroid 8.0) Select **System**. +3. Select **About phone**. +4. Press **Build number** 7 times. +5. Go back and you will find the **Developer options**. -> 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 te doen 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. +> Sodra jy die toepassing geïnstalleer het, moet jy dit eers probeer en ondersoek wat dit doen, hoe dit werk en gemaklik raak daarmee.\ +> Ek stel voor om hierdie aanvanklike dinamiese analise uit te voer met MobSF dynamic analysis + pidcat, sodat ons kan **leer hoe die toepassing werk** terwyl MobSF baie **interesting** **data** vasvang wat jy later kan hersien. -### Onbedoelde Data Lek +### Onbedoelde Data leak **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 information** publiek bloot te stel, aangesien dit tot sensitiewe data leaks kan lei. Die gereedskap [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor en 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 het tot hul eie logs**. So toepassings kan nie ander apps se logs toegang nie.\ +> Neem kennis dat vanaf **later newer than Android 4.0**, **applications are only able to access their own logs**. Dus kan toepassings nie ander apps se logs toegang nie.\ > Dit word steeds aanbeveel om **nie sensitiewe inligting te log nie**. -**Kopie/Plak Buffer Kaping** +**Copy/Paste Buffer Caching** -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. +Android se **clipboard-based** raamwerk bied copy-paste funksionaliteit in apps, maar dra 'n risiko omdat **ander applications** die clipboard kan **access**, wat potensieel sensitiewe data kan blootstel. Dit is belangrik om copy/paste funksies te **disable** vir sensitiewe dele van 'n toepassing, soos kredietkaartbesonderhede, om data leaks te voorkom. **Crash Logs** -As 'n toepassing **crash** en **logs stoor**, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd ingenieurswese 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 verseker 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 maklik omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om op crashes te log, en as logs oor die netwerk gestuur moet word, moet dit via 'n SSL-kanaal gestuur word. -As pentester, **probeer om na hierdie logs te kyk**. +As 'n pentester, **probeer om na hierdie logs te kyk**. -**Analise Data Gestuur Aan 3de Partye** +**Analytics Data Sent To 3rd Parties** -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 leak as dit verkeerd geïmplementeer is deur ontwikkelaars. Om moontlike data leaks te identifiseer, is dit raadsaam om die toepassing se verkeer te onderskep en te kontroleer of sensitiewe inligting na derdepartye gestuur word. -### SQLite DB's +### SQLite DBs -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`. +Die meeste toepassings gebruik **internal SQLite databases** om inligting te stoor. Tydens die pentest kyk na die **databases** wat geskep is, die name van **tables** en **columns** en al die **data** wat gestoor is, aangesien jy sensitiewe inligting kan vind (wat 'n kwetsbaarheid sou wees).\ +Databases behoort te 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**. +As die databasis vertroulike inligting stoor en **encrypted** is maar jy kan die **password** binne die toepassing **find**, is dit steeds 'n **vulnerability**. -Enumerate die tabelle met `.tables` en enumerate die kolomme van die tabelle met `.schema `. +Nommer die tabelle met `.tables` en lys die kolomme van 'n tabel met `.schema ` -### Drozer (Eksploiteer Aktiwiteite, Inhoudverskaffers en Dienste) +### Drozer (Exploit Activities, Content Providers and Services) -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ëxporteerde aktiwiteite, geëxporteerde dienste en Inhoudverskaffers** te **eksploiteer** soos jy in die volgende afdelings sal leer. +From [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 interakteer. Dit kan **enige iets doen wat 'n geïnstalleerde toepassing kan doen**, soos gebruik maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel interakteer. .\ +Drozer is 'n nuttige tool om **exported activities, exported services en Content Providers te exploit** soos jy in die volgende afdelings sal leer. -### Eksploiteer geëxporteerde Aktiwiteite +### Exploiting exported Activities -[**Lees dit as jy wil verfris wat 'n Android Aktiwiteit is.**](android-applications-basics.md#launcher-activity-and-other-activities)\ -Onthou ook dat die kode van 'n aktiwiteit begin in die **`onCreate`** metode. +[**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\ +Onthou ook dat die kode van 'n activity begin in die **`onCreate`** metode. -**Outorisering omseiling** +**Authorisation bypass** -Wanneer 'n Aktiwiteit geëxporteer word, kan jy sy skerm van 'n eksterne app aanroep. Daarom, as 'n aktiwiteit met **sensitiewe inligting** **geëxporteer** is, kan jy die **outorisering** meganismes **omseil** om toegang daartoe te verkry. +Wanneer 'n Activity geëxporteer is kan jy sy skerm vanaf 'n eksterne app oproep. Daarom, as 'n activity met **sensitive information** **exported** is, kan jy die **authentication** meganismes **bypass** om toegang daartoe te kry. -[**Leer hoe om geëxporteerde aktiwiteite met Drozer te eksploiteer.**](drozer-tutorial/index.html#activities) +[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/index.html#activities) -Jy kan ook 'n geëxporteerde aktiwiteit van adb begin: +Jy kan ook 'n exported activity vanaf adb begin: -- Pakketnaam is com.example.demo -- Geëxporteerde AktiwiteitNaam is com.example.test.MainActivity +- PackageName is com.example.demo +- Exported ActivityName is com.example.test.MainActivity ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**NOTE**: MobSF sal die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n aktiwiteit as kwaadwillig beskou, maar weens [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), blyk dit dat dit slegs gevaarlik is op ouer weergawes (API weergawes < 21). +**OPMERKING**: MobSF sal die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n activity as kwaadwillig beskou, maar weens [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) blyk dit net gevaarlik te wees op ouer weergawes (API versions < 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. +> Let wel dat 'n authorisation bypass nie altyd 'n kwesbaarheid is nie; dit hang af van hoe die bypass werk en watter inligting blootgestel word. -**Sensitiewe inligting lekkasie** +**Gevoelige inligtinglekkasie** -**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. +**Activities can also return results**. As jy 'n exported en onbeveiligde activity vind wat die **`setResult`**-metode aanroep en **gevoelige inligting teruggee**, is daar 'n gevoelige inligtinglekkasie. #### 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). +As Tapjacking nie voorkom word nie, kan jy die exported activity misbruik om die **gebruiker onverwante aksies te laat uitvoer**. Vir meer info oor [**wat is Tapjacking — volg die skakel**](#tapjacking). -### Exploiting Content Providers - Toegang tot en manipulasie van sensitiewe inligting +### Exploiting Content Providers - Accessing and manipulating sensitive information -[**Lees dit as jy wil opfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\ -Content providers word basies gebruik om **data** te **deel**. As 'n app beskikbare content providers het, mag jy in staat wees om **sensitiewe** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL injections** en **Path Traversals** te toets aangesien hulle kwesbaar kan wees. +[**Lees dit as jy wil hernu wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\ +Content providers word basies gebruik om **data te deel**. As 'n app beskikbare content providers het, kan jy dalk **sensitiewe data** daaruit onttrek. Dit is ook interessant om moontlike **SQL injections** 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) +[**Leer hoe om Content Providers met Drozer te benut.**](drozer-tutorial/index.html#content-providers) ### **Exploiting Services** -[**Lees dit as jy wil opfris wat 'n Service is.**](android-applications-basics.md#services)\ -Onthou dat die aksies van 'n Service begin in die metode `onStartCommand`. +[**Lees dit as jy wil hernu wat 'n Service is.**](android-applications-basics.md#services)\ +Onthou dat die optrede van 'n Service begin in die metode `onStartCommand`. -'n Service is basies iets wat **data kan ontvang**, dit **verwerk** en **gee** (of nie) 'n antwoord terug. As 'n toepassing sekere dienste exporteer, 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 Services met Drozer te exploiteer.**](drozer-tutorial/index.html#services) +'n Service is basies iets wat **data kan ontvang**, dit **verwerk** en (al dan nie) 'n antwoord **teruggee**. As 'n aansoek dus sommige services exporteer, moet jy die **kode** nagaan om te verstaan wat dit doen en dit **dinamies** toets om vertroulike inligting te onttrek, verifikasie-maatreëls te omseil...\ +[**Leer hoe om Services met Drozer te benut.**](drozer-tutorial/index.html#services) ### **Exploiting Broadcast Receivers** -[**Lees dit as jy wil opfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\ -Onthou dat die aksies van 'n Broadcast Receiver begin in die metode `onReceive`. +[**Lees dit as jy wil hernu wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\ +Onthou dat die optrede van 'n Broadcast Receiver begin in die metode `onReceive`. -'n Broadcast receiver sal wag vir 'n tipe boodskap. Afhangende van hoe die receiver die boodskap hanteer, kan dit kwesbaar wees.\ -[**Leer hoe om Broadcast Receivers met Drozer te exploiteer.**](#exploiting-broadcast-receivers) +'n Broadcast receiver sal wag vir 'n tipe boodskap. Afhangend van hoe die receiver die boodskap hanteer, kan dit kwesbaar wees.\ +[**Leer hoe om Broadcast Receivers met Drozer te benut.**](#exploiting-broadcast-receivers) ### **Exploiting Schemes / Deep links** -Jy kan handmatig na deep links soek, met behulp van gereedskap soos MobSF of skripte soos [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ -Jy kan 'n verklaarde **scheme** met **adb** of 'n **blaaier** **oopmaak**: +Jy kan handmatig na deep links soek deur gereedskap soos MobSF of skripte soos [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) te gebruik.\ +Jy kan 'n verklaarde **scheme** oopmaak met **adb** of 'n **browser**: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` -Let daarop dat jy **die pakkie naam kan oorslaan** en die mobiele toestel sal outomaties die app oproep wat daardie skakel moet oopmaak. +_Let wel dat jy die **package name** kan weglaat en die mobiele toestel sal outomaties die app oproep wat daardie link behoort te open._ ```html Click me @@ -387,80 +392,129 @@ Let daarop dat jy **die pakkie naam kan oorslaan** en die mobiele toestel sal ou ``` **Kode uitgevoer** -Om die **kode wat in die App uitgevoer sal word** te vind, gaan na die aktiwiteit wat deur die deeplink aangeroep word en soek die funksie **`onNewIntent`**. +Om die **kode wat in die app uitgevoer sal word** te vind, gaan na die activity wat deur die deeplink aangeroep word en soek die funksie **`onNewIntent`**. ![](<../../images/image (436) (1) (1) (1).png>) **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 deep link vind, kontroleer dat dit nie sensitiewe data (soos wagwoorde) via URL parameters ontvang nie, want enige ander toepassing kan die deep link nadoen en daardie data steel! **Parameters in pad** -Jy **moet ook nagaan 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.\ -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/). +Jy moet ook kyk of enige deep link 'n parameter binne die pad van die URL gebruik soos: `https://api.example.com/v1/users/{username}` , in daardie geval kan jy 'n path traversal dwing deur iets soos te benader: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ +Neem kennis dat as jy die korrekte endpoints binne die toepassing vind, jy dalk 'n **Open Redirect** kan veroorsaak (as deel van die path as domain name gebruik word), **account takeover** (as jy gebruikersdetails kan wysig sonder CSRF token en die vuln endpoint die korrekte metode gebruik) en enige ander vuln. Meer [info hieroor](http://dphoeniixx.com/2020/12/13-2/). -**Meer voorbeelde** +An [interesting bug bounty report](https://hackerone.com/reports/855618) about links (_/.well-known/assetlinks.json_). -'n [interessante bug bounty verslag](https://hackerone.com/reports/855618) oor skakels (_/.well-known/assetlinks.json_). +### Transportlaag-inspeksie en verifikasie-foute -### Transportlaag Inspeksie en Verifikasiefoute +- **Sertifikate word nie altyd behoorlik geïnspekteer nie** deur Android-toepassings. Dit is algemeen dat hierdie toepassings waarskuwings ignoreer en self-signed sertifikate aanvaar of, in sommige gevalle, terugval na die gebruik van HTTP-verbindinge. +- **Onderhandelinge tydens die SSL/TLS-handshake is soms swak**, en gebruik onveilige cipher suites. Hierdie kwesbaarheid maak die verbinding vatbaar vir man-in-the-middle (MITM)-aanvalle, wat aanvallers in staat stel om die data te ontsleutel. +- **Leakage of private information** is 'n risiko wanneer toepassings met sekure kanale autentiseer, maar dan oor nie-sekure kanale kommunikeer vir ander transaksies. Hierdie benadering beskerm nie sensitiewe data, soos sessie cookies of gebruikerbesonderhede, teen onderskep deur kwaadwilliges nie. -- **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. +#### Certificate Verification -#### 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, bied [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) omvattende leiding. +Ons sal fokus op **certificate verification**. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kritieke belang omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor onversleutelde kanale beduidende risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bediener-sertifikate 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. +SSL Pinning is 'n sekuriteitsmaatreël waar die toepassing die bediener se sertifikaat verifieer teen 'n bekende kopie wat binne die toepassing self gestoor is. Hierdie metode is noodsaaklik om MITM-aanvalle te voorkom. Dit word sterk aanbeveel om SSL Pinning te implementeer vir toepassings wat sensitiewe inligting hanteer. #### 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-instrument se sertifikaat te installeer (bv. Burp). Sonder om hierdie sertifikaat te installeer, mag versleutelde 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 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). +Toepassings wat mik op **API Level 24 and above** vereis wysigings aan die Network Security Config om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van versleutelde verkeer. Vir instruksies oor die wysiging van die Network Security Config, [**verwys na hierdie handleiding**](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 te voeg, nie sal werk nie, aangesien Flutter sy eie lys van geldige CA's het. +As **Flutter** gebruik word, moet jy die instruksies op [**hierdie bladsy**](flutter.md) volg. Dit is omdat net om die sertifikaat by die store te voeg nie sal werk nie, aangesien Flutter sy eie lys geldige CAs het. -#### Omseiling van SSL Pinning +#### Statiese deteksie van SSL/TLS pinning -Wanneer SSL Pinning geïmplementeer is, word dit noodsaaklik om dit te omseil om HTTPS-verkeer te inspekteer. Verskeie metodes is beskikbaar vir hierdie doel: +Voordat jy runtime-bypasses probeer, karteer vinnig waar pinning in die APK afgedwing word. Statiese opsporing help jou om hooks/patches te beplan en te fokus op die regte code paths. -- Outomaties **wysig** die **apk** om **SSLPinning** te **omseil** met [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Die grootste voordeel van hierdie opsie is dat jy nie root nodig het om die SSL Pinning te omseil nie, maar jy sal die toepassing moet verwyder en die nuwe een moet herinstalleer, en dit sal nie altyd werk nie. +Tool: SSLPinDetect +- Open-source static-analysis nut wat die APK na Smali dekompileer (via apktool) en skandeer vir gekureerde regex-patrone van SSL/TLS pinning-implementasies. +- Rapporteer die presiese file path, line number en 'n code snippet vir elke ooreenkoms. +- Dek algemene frameworks en custom code paths: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init met custom TrustManagers/KeyManagers, en Network Security Config XML pins. + +Installeer +- Vereistes: Python >= 3.8, Java on PATH, apktool +```bash +git clone https://github.com/aancw/SSLPinDetect +cd SSLPinDetect +pip install -r requirements.txt +``` +Gebruik +```bash +# Basic +python sslpindetect.py -f app.apk -a apktool.jar + +# Verbose (timings + per-match path:line + snippet) +python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v +``` +Voorbeeld patroonreëls (JSON) +Gebruik of brei signatures uit om proprietary/custom pinning styles te detecteer. Jy kan jou eie JSON laai en op skaal scan. +```json +{ +"OkHttp Certificate Pinning": [ +"Lcom/squareup/okhttp/CertificatePinner;", +"Lokhttp3/CertificatePinner;", +"setCertificatePinner" +], +"TrustManager Override": [ +"Ljavax/net/ssl/X509TrustManager;", +"checkServerTrusted" +] +} +``` +Aantekeninge en wenke +- Vinnige skandering op groot apps via multi-threading en memory-mapped I/O; vooraf-gecompileerde regex verminder oorhoofse vrag/vals positiewe. +- Pattern collection: https://github.com/aancw/smali-sslpin-patterns +- Tipiese detectiedoelwitte om volgende te triage: +- OkHttp: CertificatePinner gebruik, setCertificatePinner, okhttp3/okhttp pakketverwysings +- Aangepaste TrustManagers: javax.net.ssl.X509TrustManager, checkServerTrusted oorskrywings +- Aangepaste SSL-kontekste: SSLContext.getInstance + SSLContext.init met aangepaste managers +- Deklaratiewe pins in res/xml network security config en manifest verwysings +- Gebruik die ooreenstemmende lokasies om Frida hooks, statiese patching, of konfigurasie-audits te beplan voordat jy dinamiese toetsing doen. + + + +#### Om SSL Pinning te omseil + +Wanneer SSL Pinning geïmplementeer is, word dit nodig om dit te omseil om HTTPS-verkeer te inspekteer. Verskeie metodes is beskikbaar vir hierdie doel: + +- Outomaties **wysig** die **apk** om SSLPinning te **omseil** met [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Die grootste voordeel van hierdie opsie is dat jy nie root nodig het om die SSL Pinning te omseil nie, maar jy sal die toepassing moet verwyder en die nuwe een herinstalleer, en dit sal nie altyd werk nie. - 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 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) +- Jy kan ook probeer om SSL Pinning outomaties te omseil deur [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` +- Jy kan ook probeer om SSL Pinning outomaties te omseil deur **MobSF dynamic analysis** (hieronder verduidelik) +- As jy steeds dink daar is verkeer wat jy nie vang 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 web-kwesbaarhede -Dit is belangrik om ook te soek na algemene web kwesbaarhede 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. +Dit is belangrik om ook te soek na algemene web-kwesbaarhede binne die toepassing. Gedetailleerde inligting oor die identifisering en verligting van hierdie kwesbaarhede val buite die omvang van hierdie samevatting, maar word elders uitvoerig behandel. ### Frida -[Frida](https://www.frida.re) is 'n dinamiese instrumentasie-gereedskapstel vir ontwikkelaars, omgekeerde ingenieurs, en sekuriteitsnavorsers.\ -**Jy kan lopende toepassings toegang verkry en metodes op tydstip aanroep 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 toolkit vir ontwikkelaars, reverse-engineers, en sekuriteitsnavorsers.\ +**Jy kan toegang tot 'n lopende toepassing kry en metodes op runtime hook om gedrag te verander, waardes te verander, waardes te onttrek, ander kode uit te voer...**\ 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) +- Leer hoe om Frida te gebruik: [**Frida tutorial**](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) -- 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)) +- Ojection is uitstekend 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 Awesome 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) (hulpmiddel [linjector](https://github.com/erfur/linjector-rs)) -#### Anti-instrumentasie & SSL pinning omseil werkvloei +#### Anti-instrumentasie & SSL pinning omseil-werkvloei {{#ref}} android-anti-instrumentation-and-ssl-pinning-bypass.md {{#endref}} -### **Dump Geheue - Fridump** +### **Dump Memory - Fridump** -Kontroleer of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonika. +Kyk of die toepassing sensitiewe inligting in die geheue stoor wat dit nie behoort te stoor nie, soos wagwoorde of mnemonics. Met [**Fridump3**](https://github.com/rootbsd/fridump3) kan jy die geheue van die app dump met: ```bash @@ -471,120 +525,120 @@ python3 fridump3.py -u frida-ps -Uai python3 fridump3.py -u "" ``` -Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep: +Dit sal die geheue in die ./dump map dump, en daarbinne 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, maar met genoeg voorregte is dit steeds **moontlik om daartoe toegang te kry**. Aangesien toepassings geneig is om hier **sensitiewe data in platte teks** te stoor, moet pentests dit as root user of iemand met fisiese toegang tot die toestel nagaan, aangesien hulle hierdie data kan steel. -Selfs al het 'n app data in die keystore gestoor, moet die data geënkripteer wees. +Selfs as 'n app data in die Keystore stoor, moet die data versleuteld 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 tot die data binne die Keystore te kry, kan jy hierdie Frida script 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 ``` -### **Vingerafdruk/Biometriese Omseiling** +### **Fingerprint/Biometrics Bypass** -Deur die volgende Frida-skrip te gebruik, kan dit moontlik wees om **vingerafdrukverifikasie** te **omseil** wat Android-toepassings mag uitvoer om **sekere sensitiewe areas te beskerm:** +Met die volgende Frida-script kan dit moontlik wees om **bypass fingerprint authentication** wat Android-toepassings mag uitvoer om **sekere sensitiewe gebiede te beskerm:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` -### **Agtergrond Beelde** +### **Agtergrondbeelde** -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 na die agtergrond plaas, stoor Android 'n **snapshot van die toepassing**, sodat wanneer dit weer in die voorgrond herstel word, dit eers die beeld laai voordat die app volledig opstart, wat die indruk skep dat 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 **gevoelige inligting** bevat, kan iemand met toegang tot die snapshot daardie inligting **steel** (let wel: jy benodig root om dit te bereik). -Die snapshots word gewoonlik gestoor rondom: **`/data/system_ce/0/snapshots`** +Die snapshots word gewoonlik gestoor by: **`/data/system_ce/0/snapshots`** -Android bied 'n manier om **die skermskootvangs te voorkom deur die FLAG_SECURE** uitlegparameter in te stel. Deur hierdie vlag te gebruik, word die vensterinhoud as veilig beskou, wat voorkom dat dit in skermskote verskyn of op nie-veilige skerms gesien kan word. +Android bied 'n manier om die **opname van skermskote te voorkom deur die FLAG_SECURE te stel** layout-parameter. Deur hierdie flag te gebruik, word die vensterinhoud as veilig beskou, wat verhoed dat dit in skermskote verskyn of op nie-veilige skerms vertoon word. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` -### **Android Toepassing Ontleder** +### **Android Toepassingsontleder** -Hierdie hulpmiddel kan jou help om verskillende hulpmiddels te bestuur tydens die dinamiese analise: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) +Hierdie instrument kan jou help om verskillende gereedskap tydens dinamiese analise te bestuur: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) -### Intent Inspuiting +### Intent Injection -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. +Ontwikkelaars skep dikwels proxy-komponente soos activities, services, en broadcast receivers wat hierdie Intents hanteer en dit aan metodes soos `startActivity(...)` of `sendBroadcast(...)` deurgee, wat riskant kan wees. -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` objektes omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent inspuitings. +Die gevaar lê daarin om aanvallers toe te laat om nie-exported app-komponente te trigger of sensitiewe content providers te bereik deur hierdie Intents verkeerd te rig. 'n Merkwaardige voorbeeld is die `WebView`-komponent wat URLs na `Intent`-objekte omskakel via `Intent.parseUri(...)` en dan uitvoer, wat moontlik tot kwaadwillige Intent-inspuitings kan lei. -### Belangrike Afleidings +### Belangrike punte -- **Intent Inspuiting** is soortgelyk aan die web se Open Redirect probleem. -- Exploits behels die oorplasing van `Intent` objektes as ekstra, 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. +- **Intent Injection** is soortgelyk aan 'n web Open Redirect-kwessie. +- Eksploite behels die deurgee van `Intent`-objekte as extras, wat omgerig kan word om onveilige operasies uit te voer. +- Dit kan nie-exported komponente en content providers aan aanvallers blootstel. +- Die `WebView` se URL-na-`Intent` omskakeling kan onbedoelde aksies vergemaklik. -### Android Kliëntkant Inspuitings en ander +### Android kliëntkant-inspuitings en ander -Waarskynlik weet jy van hierdie soort kwesbaarhede van die Web. Jy moet spesiaal versigtig wees met hierdie kwesbaarhede in 'n Android-toepassing: +Jy ken hierdie soort kwesbaarhede waarskynlik van die web. Jy moet besonders versigtig wees met hierdie kwesbaarhede in 'n Android-toepassing: -- **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. -- [**Veilige Vlag** in koekies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) +- **SQL Injection:** Wanneer jy met dinamiese queries of Content-Providers werk, maak seker dat jy parameterized queries gebruik. +- **JavaScript Injection (XSS):** Verifieer dat JavaScript- en plugin-ondersteuning gedeaktiveer is vir enige WebViews (gedeaktiveer per verstek). [Meer inligting hier](webview-attacks.md#javascript-enabled). +- **Local File Inclusion:** WebViews moet toegang tot die lêerstelsel gedeaktiveer hê (geaktiveer per verstek) - `(webview.getSettings().setAllowFileAccess(false);)`. [Meer inligting hier](webview-attacks.md#javascript-enabled). +- **Eternal cookies:** In verskeie gevalle, wanneer die Android-toepassing die sessie beëindig, word die cookie nie herroep nie of dit kan selfs op skyf gestoor word +- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) --- -## Outomatiese Analise +## Automatiese analise ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) -**Statische analise** +**Statiese analise** ![](<../../images/image (866).png>) -**Kwetsbaarheidsevaluasie van die toepassing** met 'n pragtige web-gebaseerde frontend. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing voorberei). +**Kwetsbaarheidsassessering van die toepassing** gebruik 'n mooi 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. +Notice that MobSF can analyse **Android**(apk)**, IOS**(ipa) **and Windows**(apx) applications (_Windows applications must be analyzed from a MobSF installed in a Windows host_).\ +Also, if you create a **ZIP** file with the source code if an **Android** or an **IOS** app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also. -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 = ` `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 also allows you to **diff/Compare** analysis and to integrate **VirusTotal** (you will need to set your API key in _MobSF/settings.py_ and enable it: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). You can also set `VT_UPLOAD` to `False`, then the **hash** will be **upload** instead of the file. -### Geassisteerde dinamiese analise met MobSF +### Geassisteerde dinamiese ontleding 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: +**MobSF** kan ook baie nuttig wees vir **dinamiese ontleding** op **Android**, maar in daardie geval moet jy MobSF en **genymotion** op jou host installeer (’n VM of Docker sal nie werk nie). _Note: You need to **start first a VM in genymotion** and **then MobSF.**_\ +Die **MobSF dynamic analyser** 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. -- **HTTPS-verkeer** vasvang -- **Frida** gebruik om **runtime** **inligting** te verkry +- **Dump application data** (URLs, logs, clipboard, screenshots made by you, screenshots made by "**Exported Activity Tester**", emails, SQLite databases, XML files, and other created files). Al hierdie data word outomaties versamel behalwe die skermkiekies — jy moet die knoppie druk wanneer jy ’n skermkiekie wil hê of jy moet "**Exported Activity Tester**" druk om skermkiekies van alle exported activities te verkry. +- Vasvang **HTTPS traffic** +- Gebruik **Frida** om **runtime** **information** te verkry -Van Android **weergawe > 5**, sal dit **outomaties Frida begin** en globale **proxy** instellings stel om **verkeer** te **vang**. Dit sal slegs verkeer van die getoetste toepassing vasvang. +Vanaf Android **versions > 5** sal dit **automatically start Frida** en globale **proxy**-instellings opstel om verkeer vas te vang. Dit sal slegs verkeer van die getoetste toepassing vang. **Frida** -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. +Standaard sal dit ook ’n paar Frida-skripte gebruik om **bypass SSL pinning**, **root detection** en **debugger detection** te omseil en om **monitor interesting APIs**.\ +MobSF kan ook **invoke exported activities**, gryp **screenshots** daarvan en **save** dit vir die verslag. -Om die dinamiese toetsing te **begin**, druk die groen knoppie: "**Begin Instrumentasie**". 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 "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). +Om die dinamiese toetsing te **start**, druk die groen knop: "**Start Instrumentation**". Druk op "**Frida Live Logs**" om die logs te sien wat deur die Frida-skripte gegenereer word en "**Live API Monitor**" om alle invokasies na hooked methods, die deurgegewe argumente en die teruggegewe waardes te sien (dit sal verskyn nadat jy "Start Instrumentation" gedruk het).\ +MobSF laat jou ook toe om jou eie **Frida scripts** te laad (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie `send()`). Dit het ook **several pre-written scripts** wat jy kan laai (jy kan meer byvoeg in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), kies hulle net, druk "**Load**" en druk "**Start Instrumentation**" (jy sal die logs van daardie skripte binne "**Frida Live Logs**" kan sien). ![](<../../images/image (419).png>) -Boonop het jy 'n paar bykomende Frida-funksies: +Verder het jy ’n paar bykomende Frida-funksionaliteite: -- **Lade Klasse**: Dit sal al die gelaaide klasse druk -- **Vang Strings**: Dit sal al die gevangenis strings druk terwyl jy die toepassing gebruik (baie lawaaierig) -- **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. +- Enumerate Loaded Classes: Dit sal al die gelaaide classes uitdruk +- Capture Strings: Dit sal alle gevangen strings uitdruk terwyl die toepassing gebruik word (baie luidrugtig) +- Capture String Comparisons: Kan baie nuttig wees. Dit sal die 2 strings wat vergelyk word wys en of die resultaat True of False was. +- Enumerate Class Methods: Voer die klassenaam in (bv. "java.io.File") en dit sal al die methods van die klas uitdruk. +- Search Class Pattern: Soek classes volgens ’n patroon +- Trace Class Methods: Trace ’n hele klas (sien insette en uitsette van alle methods van die klas). Onthou dat MobSF standaard verskeie interessante Android Api methods trace. -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. +Sodra jy die bykomende module gekies het wat jy wil gebruik, moet jy op "**Start Intrumentation**" druk 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 ook ’n shell aan met sommige **adb** commands, **MobSF commands**, en algemene **shell** **commands** onderaan die dinamiese analise-bladsy. ’n Paar interessante commands: ```bash help shell ls @@ -595,32 +649,32 @@ 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.\ -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)). +Wanneer HTTP-verkeer vasgelê word kan jy 'n lelike uitsig van die vasgelê verkeer sien op die "**HTTP(S) Traffic**" knoppie onderaan of 'n netter uitsig in die "**Start HTTPTools**" groen knoppie. Vanaf die tweede opsie kan jy die **vasgelê versoeke** **send** na **proxies** soos Burp of Owasp ZAP.\ +Om dit te doen, _power on Burp -->_ _turn off Intercept --> in MobSB HTTPTools select the request_ --> press "**Send to Fuzzer**" --> _select the proxy address_ ([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 **http versoeke te fuzz** en te 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 na kwesbaarhede te soek. > [!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 kan die proxy-instellings verkeerd gekonfigureer wees en sal jy dit nie via die GUI kan regstel nie. Jy kan die proxy-instellings regmaak deur: > > ``` > adb shell settings put global http_proxy :0 > ``` -### Geassisteerde Dinamiese Analise met Inspeckage +### Geassisteerde dinamiese analise met Inspeckage -Jy kan die gereedskap van [**Inspeckage**](https://github.com/ac-pm/Inspeckage) kry.\ -Hierdie gereedskap sal 'n paar **Hooks** gebruik om jou te laat weet **wat in die toepassing gebeur** terwyl jy 'n **dinamiese analise** uitvoer. +Jy kan die tool kry by [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ +Hierdie tool sal sommige **Hooks** gebruik om jou te laat weet **wat in die aansoek gebeur** terwyl jy 'n **dinamiese analise** uitvoer. ### [Yaazhini](https://www.vegabird.com/yaazhini/) -Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI uit te voer** +Dit is 'n **geweldige tool om statiese analise met 'n GUI uit te voer** ![](<../../images/image (741).png>) ### [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 te benut (Blootgestelde aktiwiteite, intents, tapjacking...). Soos met Drozer, is daar geen behoefte om die toetsapparaat te root nie. +Hierdie tool is ontwerp om te soek na verskeie **security related Android application vulnerabilities**, hetsy in **source code** of **packaged APKs**. Die tool is ook **capable of creating a "Proof-of-Concept" deployable APK** en **ADB commands**, om sommige van die gevonde kwesbaarhede te eksploiteer (Exposed activities, intents, tapjacking...). 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 @@ -629,10 +683,10 @@ qark --java path/to/specific/java/file.java ``` ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) -- Vertoon alle onttrokken lêers vir maklike verwysing -- Decompileer APK-lêers outomaties na Java en Smali-formaat -- Analiseer AndroidManifest.xml vir algemene kwesbaarhede en gedrag -- Statiese bronnekode-analise vir algemene kwesbaarhede en gedrag +- Vertoon alle uitgehaalde lêers vir maklike verwysing +- Decompileer outomaties APK-lêers na Java- en Smali-formaat +- Analiseer AndroidManifest.xml op algemene kwesbaarhede en gedrag +- Statiese bronkode-analise vir algemene kwesbaarhede en gedrag - Toestelinligting - en meer ```bash @@ -640,11 +694,11 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -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. +SUPER is 'n opdragreëltoepassing wat in Windows, MacOS X en Linux gebruik kan word, en wat _.apk_ lêers ontleed om na kwesbaarhede te soek. Dit doen dit deur APKs te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede op te spoor. -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. +Alle reëls is gesentreer in 'n `rules.json`-lêer, en elke maatskappy of toetser kan sy eie reëls skep om te ontleed wat hulle benodig. -Laai die nuutste binaire lêers af van die [aflaai bladsy](https://superanalyzer.rocks/download.html) +Laai die nuutste binaries af vanaf die [download page](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` @@ -652,17 +706,17 @@ 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 hunters en etiese hackers help met die uitvoering van [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) op mobiele toepassings. -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. +Die konsep is dat jy jou mobiele toepassingslêer (.apk of .ipa file) op die StaCoAn-toepassing sleep en dit sal vir jou 'n visuele en draagbare verslag genereer. Jy kan die instellings en wordlists aanpas om 'n aangepaste ervaring te kry. -Laai [nuutste vrystelling](https://github.com/vincentcox/StaCoAn/releases): +Laai af[ latest release](https://github.com/vincentcox/StaCoAn/releases): ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -AndroBugs Framework is 'n Android kwesbaarheid analise stelsel wat ontwikkelaars of hackers help om potensiële sekuriteitskwesbaarhede in Android toepassings te vind.\ +AndroBugs Framework is 'n Android-kwesbaarheidsanalise-stelsel wat ontwikkelaars of hackers help om potensiële sekuriteitskwesbaarhede in Android-toepassings te vind.\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -670,11 +724,11 @@ androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) -**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. +**Androwarn** is 'n hulpmiddel met die hoofdoel om te ontdek en die gebruiker te waarsku oor potensieel kwaadwillige gedrag wat deur 'n Android-toepassing ontwikkel is. -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. +Die detectie word uitgevoer deur middel van die **static analysis** van die toepassing se Dalvik bytecode, voorgestel 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... +Hierdie hulpmiddel soek na **common behavior of "bad" applications** soos: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` @@ -682,79 +736,82 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**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. +**MARA** is 'n **M**obile **A**pplication **R**everse engineering and **A**nalysis Framework. Dit is 'n hulpmiddel wat algemeen gebruikte mobile application reverse engineering en analysis tools bymekaar sit om te help met die toetsing van mobiele toepassings teen OWASP mobile security threats. Die doel is om hierdie taak makliker en meer gebruikersvriendelik te maak vir mobile application developers en security professionals. Dit kan: -- Java en Smali kode onttrek met behulp van verskillende hulpmiddels -- APK's analiseer met: [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. +- Java en Smali kode ekstraheer met verskeie tools +- APKs analiseer met: [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 ekstraheer met behulp van regexps. - Die Manifest analiseer. -- Gevonde domeine analiseer met: [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) +- Gevonde domains analiseer met: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb) +- APK deobfuscate via [apk-deguard.com](http://www.apk-deguard.com) ### Koodous -Nuttig om malware te detecteer: [https://koodous.com/](https://koodous.com) +Nuttig om malware op te spoor: [https://koodous.com/](https://koodous.com/) ## Obfuscating/Deobfuscating code -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, afhangend van die diens en konfigurasie wat jy gebruik om die kode te obfusk, geheime dalk wel of nie obfusk geraak nie. ### [ProGuard]() -Van [Wikipedia](): **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. +From [Wikipedia](): **ProGuard** is 'n open source command-line tool wat Java-kode verklein, optimaliseer en obfuskeer. Dit kan bytecode optimaliseer asook ongebruikte instruksies opspoor en verwyder. ProGuard is vrye sagteware en word versprei onder die GNU General Public License, version 2. -ProGuard word versprei as deel van die Android SDK en loop wanneer die toepassing in vrystellingmodus gebou word. +ProGuard word as deel van die Android SDK versprei en hardloop wanneer die toepassing in release mode gebou word. ### [DexGuard](https://www.guardsquare.com/dexguard) -Vind 'n stap-vir-stap gids om die apk te deobfuskeer in [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) +Find a step-by-step guide to deobfuscate the apk in [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) -(Van daardie gids) Laas keer wat ons gekyk het, was die Dexguard werksmodus: +(From that guide) Last time we checked, the Dexguard mode of operation was: -- laai 'n hulpbron as 'n InputStream; +- laai 'n resource as 'n InputStream; - voer die resultaat aan 'n klas wat van FilterInputStream erf om dit te ontsleutel; -- doen 'n paar nuttelose obfuskerings om 'n paar minute se tyd van 'n omkeerder te mors; +- doen 'n paar nuttelose obfuskasies om 'n paar minute van 'n reverser se tyd te mors; - voer die ontsleutelde resultaat aan 'n ZipInputStream om 'n DEX-lêer te kry; -- laastens laai die resulterende DEX as 'n Hulpbron met behulp van die `loadDex` metode. +- laai uiteindelik die resulterende DEX as 'n Resource met die `loadDex` metode. ### [DeGuard](http://apk-deguard.com) -**DeGuard keer die proses van obfuskerings wat deur Android obfuskeringshulpmiddels uitgevoer word, om. Dit stel talle sekuriteitsanalises in staat, insluitend kode-inspeksie en die voorspellings van biblioteke.** +**DeGuard keert die proses van obfuskasie wat deur Android obfuscation tools uitgevoer is, om. Dit stel talle sekuriteitsanalises in staat, insluitend kode-inspeksie en die voorspellng van libraries.** -Jy kan 'n obfuskeer APK na hul platform oplaai. +Jy kan 'n obfuskede 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 app kode te deobfuskeer. Gebruik Google se Gemini publieke API. +Dit is 'n LLM-hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android apps te vind en android app-kode te deobfuskeer. Gebruik Google's Gemini public API. ### [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 **generic android deobfuscator.** Simplify **virtually executes an app** om die gedrag daarvan te verstaan en probeer dan die kode optimaliseer sodat dit identies optree maar makliker is vir 'n mens om te verstaan. Elke optimaliseringstipe is eenvoudig en generies, so dit maak nie saak watter spesifieke tipe obfuskasie gebruik word nie. ### [APKiD](https://github.com/rednaga/APKiD) -APKiD gee jou inligting oor **hoe 'n APK gemaak is**. Dit identifiseer baie **kompilers**, **packers**, **obfuscators**, en ander vreemde goed. Dit is [_PEiD_](https://www.aldeid.com/wiki/PEiD) vir Android. +APKiD gee jou inligting oor **how an APK was made**. Dit identifiseer baie **compilers**, **packers**, **obfuscators**, en ander vreemde goed. Dit is [_PEiD_](https://www.aldeid.com/wiki/PEiD) vir Android. ### Manual -[Lees hierdie tutoriaal om 'n paar truuks te leer oor **hoe om pasgemaakte obfuskerings te reverseer**](manual-deobfuscation.md) +[Read this tutorial to learn some tricks on **how to reverse custom obfuscation**](manual-deobfuscation.md) ## Labs ### [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 security virtual machine gebaseer op ubuntu-mate en sluit 'n versameling van die nuutste framework, tutorials en labs in van verskeie security geeks en researchers vir reverse engineering en malware analysis. ## References - [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) -- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Dit is 'n wonderlike lys van hulpbronne -- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android vinnige kursus +- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Dit is 'n uitstekende lys van resources +- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android quick course - [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) - [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) - [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec) +- [SSLPinDetect: Advanced SSL Pinning Detection for Android Security Analysis](https://petruknisme.medium.com/sslpindetect-advanced-ssl-pinning-detection-for-android-security-analysis-1390e9eca097) +- [SSLPinDetect GitHub](https://github.com/aancw/SSLPinDetect) +- [smali-sslpin-patterns](https://github.com/aancw/smali-sslpin-patterns) ## Yet to try