Android Toepassings Pentesting

Reading time: 38 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Android Toepassings Basiese Beginsels

Dit word sterk aanbeveel om hierdie bladsy te begin lees om te weet oor die belangrikste dele wat verband hou met Android-sekuriteit en die gevaarlikste komponente in 'n Android-toepassing:

Android Applications Basics

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 is in staat om lêers in beide rigtings te kopieer, toepassings te installeer en verwyder, skulpopdragte uit te voer, data te rugsteun, logs te lees, onder andere funksies.

Kyk na die volgende lys van ADB Opdragte 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 compileer.
In hierdie tutoriaal kan jy leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK met die nuwe funksionaliteit weer te compileer. Dit kan baie nuttig wees as 'n alternatief vir verskeie toetse tydens die dinamiese analise wat gaan aangebied word. Dan, hou altyd hierdie moontlikheid in gedagte.

Ander interessante truuks

bash
adb shell pm list packages
com.android.insecurebankv2

adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk

adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
  • Kombineer alle splits en basis apks met APKEditor:
bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
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

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.

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), api sleutels, versleuteling, bluetooth uuids, tokens en enigiets interessant... kyk selfs vir kode-uitvoering backdoors of verifikasie backdoors (hardcoded admin akrediteer inligting vir die app).

Firebase

Gee spesiale aandag aan firebase URL's en kyk of dit sleg geconfigureer is. Meer inligting oor wat FIrebase is en hoe om dit te benut hier.

Basiese begrip van die toepassing - Manifest.xml, strings.xml

Die ondersoek van 'n toepassing se _Manifest.xml** en **strings.xml_** lêers kan potensiële sekuriteitskwesbaarhede 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.

Kwesbaarhede wat in die Manifest.xml geïdentifiseer is, sluit in:

  • Debuggable Toepassings: Toepassings wat as debuggable (debuggable="true") in die Manifest.xml lêer gestel is, stel 'n risiko omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debuggable toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debuggable toepassings op 'n toestel.
  • Back-up Instellings: Die android:allowBackup="false" attribuut moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongeoorloofde databack-ups via adb te voorkom, veral wanneer usb-debugging geaktiveer is.
  • Netwerk Sekuriteit: Aangepaste netwerk sekuriteit konfigurasies (android:networkSecurityConfig="@xml/network_security_config") in res/xml/ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat.
  • Gedeelde Aktiwiteite en Dienste: Die identifisering van gedeelde aktiwiteite en dienste in die manifest kan komponente uitlig wat misbruik kan word. Verdere analise tydens dinamiese toetsing kan onthul hoe om hierdie komponente te benut.
  • Inhoud Verskaffers en LêerVerskaffers: Blootgestelde inhoud verskaffers kan ongeoorloofde toegang of wysiging van data toelaat. Die konfigurasie van LêerVerskaffers moet ook ondersoek word.
  • Uitsending Ontvangers en URL Skemas: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL skemas bestuur word vir invoer kwesbaarhede.
  • SDK Weergawes: Die minSdkVersion, targetSDKVersion, en maxSdkVersion attribuut dui die ondersteunde Android weergawes aan, wat die belangrikheid beklemtoon om nie verouderde, kwesbare Android weergawes vir sekuriteitsredes te ondersteun nie.

Uit die strings.xml lêer kan sensitiewe inligting soos API sleutels, aangepaste skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon.

Tapjacking

Tapjacking is 'n aanval waar 'n kwaadwillige toepassing geloods word en homself bo-op 'n slagoffer toepassing posisioneer. Sodra dit die slagoffer app sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer app oorgedra.
In werklikheid, dit is blindings die gebruiker van weet dat hulle eintlik aksies op die slagoffer app uitvoer.

Vind meer inligting in:

Tapjacking

Taak Hijacking

'n aktiwiteit met die launchMode gestel op singleTask sonder enige taskAffinity gedefinieer is kwesbaar vir taak hijacking. Dit beteken dat 'n toepassing geïnstalleer kan word en as dit voor die werklike toepassing geloods word, kan dit die taak van die werklike toepassing oorneem (sodat die gebruiker met die kwaadwillige toepassing interaksie het terwyl hy dink hy gebruik die werklike een).

Meer inligting in:

Android Task Hijacking

Onveilige data stoor

Interne Stoor

In Android, lêers gestoor in interne stoor is ontwerp om uitsluitend deur die app wat dit 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 toegang tot lêers tussen verskillende toepassings toe te laat. Tog beperk hierdie modi nie toegang tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige.

  1. Statiese Analise:
  • Verseker dat die gebruik van MODE_WORLD_READABLE en MODE_WORLD_WRITABLE versigtig ondersoek word. Hierdie modi kan potensieel lêers aan onbedoelde of ongeoorloofde toegang blootstel.
  1. Dinamiese Analise:
  • Verifieer die toestemmings wat op lêers wat deur die app geskep is, gestel is. Spesifiek, kyk of enige lêers gestel is om wêreldwyd leesbaar of skryfbaar te wees. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit enige toepassing wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om hierdie lêers te lees of te wysig.

Eksterne Stoor

Wanneer jy met lêers op eksterne stoor werk, soos SD Kaarte, moet sekere voorsorgmaatreëls geneem 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.
  1. Sekuriteitskwessies:
  • Gegewe die maklike toegang, word dit aanbeveel om nie sensitiewe inligting op eksterne stoor te stoor nie.
  • Eksterne stoor kan verwyder of deur enige toepassing benader word, wat dit minder veilig maak.
  1. Hantering van Data van Eksterne Stoor:
  • Voer altyd invoer validasie uit op data wat van eksterne stoor verkry is. Dit is van kardinale belang omdat die data van 'n onbetroubare bron kom.
  • Dit word sterk ontmoedig om uitvoerbare lêers of klas lêers op eksterne stoor vir dinamiese laai te stoor.
  • As jou toepassing uitvoerbare lêers van eksterne stoor moet verkry, verseker dat hierdie lêers onderteken en kriptografies geverifieer is voordat hulle dinamies gelaai word. Hierdie stap is van kardinale belang om die sekuriteitsintegriteit van jou toepassing te handhaaf.

Eksterne stoor kan toegang verkry in /storage/emulated/0, /sdcard, /mnt/sdcard

note

Begin met Android 4.4 (API 17), het die SD kaart 'n gidsstruktuur wat toegang van 'n app tot die gids wat spesifiek vir daardie app is, beperk. Dit voorkom dat kwaadwillige toepassings lees- of skryftoegang tot 'n ander app se lêers verkry.

Sensitiewe data gestoor in duidelike teks

  • Gedeelde voorkeure: Android laat elke toepassing toe om maklik xml lêers in die pad /data/data/<packagename>/shared_prefs/ te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.
  • Databasisse: Android laat elke toepassing toe om maklik sqlite databasisse in die pad /data/data/<packagename>/databases/ te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.

Gebroke TLS

Aanvaar Alle Sertifikate

Vir een of ander rede aanvaar ontwikkelaars soms al die sertifikate, selfs al stem die hostname nie ooreen met lyne kode soos die volgende nie:

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.

Gebroke Kryptografie

Swak Sleutelbestuurproses

Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en enkripteer dit met 'n sleutel wat hardgecodeer/voorspelbaar in die kode is. Dit moet nie gedoen word nie, aangesien sommige omgekeerde ingenieurswese aanvallers kan toelaat om die vertroulike inligting te onttrek.

Gebruik van Onveilige en/of Verouderde Algoritmes

Ontwikkelaars moet nie verouderde algoritmes gebruik om 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 brute-force bestand is, met sout gebruik word.

Ander kontroles

  • Dit word aanbeveel om die APK te obfuskeer om die omgekeerde ingenieurswese vir aanvallers te bemoeilik.
  • As die app sensitief is (soos bankapps), moet dit sy eie kontroles uitvoer om te sien of die mobiele toestel ge-root is en dienooreenkomstig optree.
  • As die app sensitief is (soos bankapps), moet dit nagaan of 'n emulator gebruik word.
  • As die app sensitief is (soos bankapps), moet dit sy eie integriteit nagaan voordat dit uitgevoer word om te kyk of dit gewysig is.
  • Gebruik APKiD om te kyk watter kompilator/pakker/obfuskeerder gebruik is om die APK te bou.

React Native Toepassing

Lees die volgende bladsy om te leer hoe om maklik toegang te verkry tot javascript-kode van React-toepassings:

React Native Application

Xamarin Toepassings

Lees die volgende bladsy om te leer hoe om maklik toegang te verkry tot C#-kode van 'n xamarin-toepassing:

Xamarin Apps

Superpacked Toepassings

Volgens hierdie blogpos 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.

Geoutomatiseerde Statiese Kode Analise

Die hulpmiddel mariana-trench is in staat om kwesbaarhede te vind deur die kode van die toepassing te skandeer. Hierdie hulpmiddel bevat 'n reeks bekende bronne (wat aan die hulpmiddel die plekke aandui waar die invoer deur die gebruiker beheer word), sinks (wat aan die hulpmiddel gevaarlike plekke aandui waar kwaadwillige gebruikersinvoer skade kan aanrig) en reëls. Hierdie reëls dui die kombinasie van bronne-sinks aan wat 'n kwesbaarheid aandui.

Met hierdie kennis, sal mariana-trench die kode hersien en moontlike kwesbaarhede daarin vind.

Geheime gelekt

'n Toepassing kan geheime (API-sleutels, wagwoorde, verborge URL's, subdomeine...) daarin bevat wat jy dalk kan ontdek. Jy kan 'n hulpmiddel soos https://github.com/dwisiswant0/apkleaks gebruik.

Om Biometriese Outorisering te Omseil

Bypass Biometric Authentication (Android)

Ander interessante funksies

Ander truuks

content:// protocol



Dinamiese Analise

Eerstens, jy het 'n omgewing nodig waar jy die toepassing en al die omgewing (Burp CA sertifikaat, Drozer en Frida hoofsaaklik) kan installeer. Daarom word 'n ge-root toestel (geëmuleer of nie) uiters aanbeveel.

Aanlyn Dinamiese analise

Jy kan 'n gratis rekening aanmeld by: 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 selfs die logs van jou toepassing op die web sien en deur adb aansluit.

Dankie aan die ADB-verbinding kan jy Drozer en Frida binne die emulators gebruik.

Plaaslike Dinamiese Analise

Gebruik 'n emulator

  • Android Studio (Jy kan x86 en arm toestelle skep, en volgens hierdienuutste x86 weergawes ondersteun ARM biblioteke sonder om 'n stadige arm-emulator te benodig).
  • Leer hoe om dit op te stel op hierdie bladsy:

AVD - Android Virtual Device

  • Genymotion (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 (Gratis, maar dit ondersteun nie Frida of Drozer nie).

note

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.

Om google dienste (soos AppStore) in Genymotion te installeer, moet jy op die rooi gemerkte knoppie van die volgende beeld klik:

Let ook daarop dat jy in die konfigurasie van die Android VM in Genymotion Bridge Network mode kan kies (dit sal nuttig wees as jy aan die Android VM van 'n ander VM met die hulpmiddels sal aansluit).

Gebruik 'n fisiese toestel

Jy moet die debugging opsies aktiveer en dit sal goed 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.

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.

Onbedoelde Data Lek

Logging

Ontwikkelaars moet versigtig wees om debugging inligting publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die hulpmiddels pidcat en adb logcat word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. Pidcat is verkieslik vir sy gebruiksgemak en leesbaarheid.

warning

Let daarop dat vanaf later nuwer as Android 4.0, toepassings slegs toegang tot hul eie logs kan hê. So toepassings kan nie ander apps se logs toegang nie.
Dit word steeds aanbeveel om nie sensitiewe inligting te log nie.

Kopie/Plak Buffer Kaping

Android se clipboard-gebaseerde raamwerk stel kopie-plak funksionaliteit in apps in, maar dit stel 'n risiko in aangesien ander toepassings die klembord kan toegang en moontlik sensitiewe data blootstel. Dit is van kardinale belang om kopie/plak funksies vir sensitiewe afdelings van 'n toepassing, soos kredietkaartbesonderhede, te deaktiveer om data lek te voorkom.

Crash Logs

As 'n toepassing crash en logs stoor, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om te log op crashes, en as logs oor die netwerk oorgedra moet word, moet jy verseker dat dit via 'n SSL-kanaal vir sekuriteit gestuur word.

As pentester, probeer om na hierdie logs te kyk.

Analitiese Data Gestuur Aan 3de Partye

Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk sensitiewe data kan lek as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om die toepassing se verkeer te onderskep en na te gaan of enige sensitiewe inligting aan derdeparty dienste gestuur word.

SQLite DB's

Die meeste toepassings sal interne SQLite databasisse gebruik om inligting te stoor. Tydens die pentest, kyk na die databasisse wat geskep is, die name van tabelle en kolomme en al die data wat gestoor is, want jy kan sensitiewe inligting vind (wat 'n kwesbaarheid sou wees).
Databasisse moet geleë wees in /data/data/the.package.name/databases soos /data/data/com.mwr.example.sieve/databases.

As die databasis vertroulike inligting stoor en is geënkripteer maar jy kan die wagwoord binne die toepassing vind, is dit steeds 'n kwesbaarheid.

Lys die tabelle met .tables en lys die kolomme van die tabelle met .schema <table_name>.

Drozer (Eksploiteer Aktiwiteite, Inhoud Verskaffers en Dienste)

Van Drozer Docs: Drozer laat jou toe om die rol van 'n Android-app aan te neem en met ander apps te kommunikeer. Dit kan enigiets doen wat 'n geïnstalleerde toepassing kan doen, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.
Drozer is 'n nuttige hulpmiddel om geëksporteerde aktiwiteite, geëksporteerde dienste en Inhoud Verskaffers te eksploiteer soos jy in die volgende afdelings sal leer.

Eksploiteer geëksporteerde Aktiwiteite

Lees dit as jy wil verfris wat 'n Android Aktiwiteit is.
Onthou ook dat die kode van 'n aktiwiteit begin in die onCreate metode.

Outorisering omseiling

Wanneer 'n Aktiwiteit geëksporteer word, kan jy sy skerm vanaf 'n eksterne app aanroep. Daarom, as 'n aktiwiteit met sensitiewe inligting geëksporteer is, kan jy die outorisering meganismes omseil om toegang daartoe te verkry.

Leer hoe om geëksporteerde aktiwiteite met Drozer te eksploiteer.

Jy kan ook 'n geëksporteerde aktiwiteit vanaf adb begin:

  • Pakketnaam is com.example.demo
  • Geëksporteerde AktiwiteitNaam is com.example.test.MainActivity
bash
adb shell am start -n com.example.demo/com.example.test.MainActivity

NOTE: MobSF sal die gebruik van singleTask/singleInstance as android:launchMode in 'n aktiwiteit as kwaadwillig beskou, maar weens this, blyk dit dat dit slegs gevaarlik is op ou weergawe (API weergawes < 21).

note

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.

Sensitiewe inligting lekkasie

Aktiwiteite kan ook resultate teruggee. As jy daarin slaag om 'n geexporteerde en onbeveiligde aktiwiteit te vind wat die setResult metode aanroep en sensitiewe inligting teruggee, is daar 'n sensitiewe inligting lekkasie.

Tapjacking

As tapjacking nie voorkom word nie, kan jy die geexporteerde aktiwiteit misbruik om die gebruiker onverwachte aksies te laat uitvoer. Vir meer inligting oor wat is Tapjacking volg die skakel.

Exploiting Content Providers - Toegang tot en manipulasie van sensitiewe inligting

Lees dit as jy wil verfris wat 'n Content Provider is.
Inhoudverskaffers word basies gebruik om data te deel. As 'n app beskikbare inhoudverskaffers het, mag jy in staat wees om sensitiewe data daaruit te onttrek. Dit is ook interessant om moontlike SQL-inspuitings en Path Traversals te toets aangesien hulle kwesbaar kan wees.

Leer hoe om Content Providers met Drozer te exploiteer.

Exploiting Services

Lees dit as jy wil verfris wat 'n Service is.
Onthou dat die aksies van 'n Service begin in die metode onStartCommand.

Aangesien 'n diens basies iets is wat data kan ontvang, dit verwerk en teruggee (of nie) 'n antwoord. As 'n toepassing sekere dienste eksport, moet jy die kode nagaan om te verstaan wat dit doen en dit dynamies toets om vertroulike inligting te onttrek, magtiging maatreëls te omseil...
Leer hoe om Dienste met Drozer te exploiteer.

Exploiting Broadcast Receivers

Lees dit as jy wil verfris wat 'n Broadcast Receiver is.
Onthou dat die aksies van 'n Broadcast Receiver begin in die metode onReceive.

'n Uitzendingontvanger sal wag vir 'n tipe boodskap. Afhangende van hoe die ontvanger die boodskap hanteer, kan dit kwesbaar wees.
Leer hoe om Uitzendingontvangers met Drozer te exploiteer.

Jy kan handmatig na diep skakels soek, met behulp van gereedskap soos MobSF of skripte soos hierdie een.
Jy kan 'n verklaarde skema met adb of 'n blaaier oopmaak:

bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]

Let daarop dat jy die pakkie naam kan oorslaan en die mobiele toestel sal outomaties die app oproep wat daardie skakel moet oopmaak.

markup
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>

Kode uitgevoer

Om die kode wat in die App uitgevoer sal word te vind, gaan na die aktiwiteit wat deur die deeplink genoem word en soek die funksie onNewIntent.

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!

Parameters in pad

Jy moet ook kyk of enige diep skakel 'n parameter binne die pad van die URL gebruik, soos: https://api.example.com/v1/users/{username}, in daardie geval kan jy 'n pad traversie afdwing deur iets soos: example://app/users?username=../../unwanted-endpoint%3fparam=value te benader.
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.

Meer voorbeelde

'n interessante bug bounty verslag oor skakels (/.well-known/assetlinks.json).

Vervoer Laag Inspeksie en Verifikasie Foute

  • Sertifikate word nie altyd behoorlik ondersoek nie deur Android-toepassings. Dit is algemeen dat hierdie toepassings waarskuwings oorsien en self-onderteken sertifikate aanvaar of, in sommige gevalle, terugkeer na die gebruik van HTTP-verbindinge.
  • Onderhandelinge tydens die SSL/TLS handdruk is soms swak, wat onveilige cipher suites gebruik. Hierdie kwesbaarheid maak die verbinding kwesbaar vir man-in-the-middle (MITM) aanvalle, wat aanvallers in staat stel om die data te ontsleutel.
  • Lek van private inligting is 'n risiko wanneer toepassings verifieer deur veilige kanale, maar dan oor nie-veilige kanale kommunikeer vir ander transaksies. Hierdie benadering beskerm nie sensitiewe data, soos sessie koekies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie.

Sertifikaat Verifikasie

Ons sal fokus op sertifikaat verifikasie. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kardinale belang omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor nie-geënkripteerde kanale beduidende risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bediener sertifikate en die aanspreek van kwesbaarhede, hierdie hulpbron bied omvattende leiding.

SSL Pinning

SSL Pinning is 'n sekuriteitsmaatreël waar die toepassing die bediener se sertifikaat teen 'n bekende kopie wat binne die toepassing self gestoor is, verifieer. Hierdie metode is noodsaaklik om MITM-aanvalle te voorkom. Die implementering van SSL Pinning word sterk aanbeveel vir toepassings wat sensitiewe inligting hanteer.

Verkeer Inspeksie

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 aangepaste CA-sertifikaat, klik hier.

Toepassings wat API-vlak 24 en hoër teiken, vereis wysigings aan die Netwerk Sekuriteit Konfigurasie om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van geënkripteerde verkeer. Vir instruksies oor die wysiging van die Netwerk Sekuriteit Konfigurasie, verwys na hierdie tutoriaal.

Omseiling van SSL 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:

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 is buite die omvang van hierdie opsomming, maar word elders uitgebreid behandel.

Frida

Frida 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 te onttrek, verskillende kode te loop...
As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik.

Dump Geheue - Fridump

Kontroleer of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics.

Met Fridump3 kan jy die geheue van die app dump met:

bash
# With PID
python3 fridump3.py -u <PID>

# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"

Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep:

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.

Selfs al het 'n app data in die keystore gestoor, moet die data geënkripteer wees.

Om toegang tot die data binne die keystore te verkry, kan jy hierdie Frida-skrip gebruik: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js

bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js

Vingerafdruk/Biometriese Omseiling

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:

bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>

Agtergrond Beelde

Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n snapshot van die toepassing sodat wanneer dit herstel word na die voorgrond, dit begin laai die beeld voordat die app, sodat dit lyk asof die app vinniger gelaai is.

As hierdie snapshot egter sensitiewe inligting bevat, kan iemand met toegang tot die snapshot daardie inligting steel (let daarop dat jy root nodig het om toegang te verkry).

Die snapshots word gewoonlik gestoor rondom: /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.

bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

Android Toepassing Ontleder

Hierdie hulpmiddel kan jou help om verskillende hulpmiddels te bestuur tydens die dinamiese analise: https://github.com/NotSoSecure/android_application_analyzer

Intent Inspuiting

Ontwikkelaars skep dikwels proxy-komponente soos aktiwiteite, dienste en uitsendingsontvangers wat hierdie Intents hanteer en dit aan metodes soos startActivity(...) of sendBroadcast(...) oorplaas, wat riskant kan wees.

Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang tot sensitiewe inhoudverskaffers te verkry deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die WebView komponent wat URL's na Intent-objekte omskakel via Intent.parseUri(...) en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent-inspuitings.

Belangrike Afleidings

  • Intent Inspuiting is soortgelyk aan die web se Open Redirect probleem.
  • Exploits behels die oorplasing van Intent-objekte as ekstra's, wat omgerig kan word om onveilige operasies uit te voer.
  • Dit kan nie-geëksporteerde komponente en inhoudverskaffers aan aanvallers blootstel.
  • WebView’s URL na Intent omskakeling kan onbedoelde aksies fasiliteer.

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:

  • SQL Inspuiting: Wanneer jy met dinamiese navrae of Inhoudverskaffers werk, verseker dat jy geparametriseerde navrae gebruik.
  • JavaScript Inspuiting (XSS): Verifieer dat JavaScript en Plugin-ondersteuning vir enige WebViews gedeaktiveer is (standaard gedeaktiveer). Meer inligting hier.
  • Plaaslike Lêer Insluiting: WebViews moet toegang tot die lêerstelsel gedeaktiveer hê (standaard geaktiveer) - (webview.getSettings().setAllowFileAccess(false);). Meer inligting hier.
  • 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

Outomatiese Analise

MobSF

Statiese analise

Kwetsbaarheidsevaluasie van die toepassing met 'n pragtige web-gebaseerde frontend. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing voorberei).

bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

Let wel dat MobSF Android(apk), IOS(ipa) en Windows(apx) toepassings kan analiseer (Windows toepassings moet geanaliseer word vanaf 'n MobSF wat op 'n Windows-gasheer geïnstalleer is).
As jy ook 'n ZIP-lêer met die bronkode van 'n Android of IOS app skep (gaan na die wortelgids van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.

MobSF laat jou ook toe om diff/vergelyking analises te doen en om VirusTotal te integreer (jy sal jou API-sleutel in MobSF/settings.py moet instel en dit aktiveer: VT_ENABLED = TRUE VT_API_KEY = <Your API key> VT_UPLOAD = TRUE). Jy kan ook VT_UPLOAD op False stel, dan sal die hash ge upload word in plaas van die lêer.

Geassisteerde dinamiese analise met MobSF

MobSF kan ook baie nuttig wees vir dinamiese analise in Android, maar in daardie geval sal jy MobSF en genymotion op jou gasheer moet installeer (n VM of Docker sal nie werk nie). Let wel: Jy moet eers 'n VM in genymotion begin en dan MobSF.
Die MobSF dinamiese ontleder kan:

  • Dump toepassingsdata (URL's, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "Exported Activity Tester", e-posse, SQLite-databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "Exported Activity Tester" om skermskote van al die uitgevoerde aktiwiteite te verkry.
  • HTTPS-verkeer vasvang
  • Frida gebruik om runtime inligting 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.

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.

Om die dinamiese toetsing te begin, druk die groen knoppie: "Start Instrumentation". Druk op die "Frida Live Logs" om die logs te sien wat deur die Frida-skripte gegenereer word en "Live API Monitor" om al die aanroepings na gehookte metodes, oorgedraagde argumente en teruggegee waardes te sien (dit sal verskyn nadat jy "Start Instrumentation" gedruk het).
MobSF laat jou ook toe om jou eie Frida-skripte te laai (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie send()). Dit het ook verskeie vooraf geskryfde skripte wat jy kan laai (jy kan meer by MobSF/DynamicAnalyzer/tools/frida_scripts/others/ voeg), kies net hulle, druk "Load" en druk "Start Instrumentation" (jy sal in staat wees om die logs van daardie skripte binne "Frida Live Logs" te sien).

Boonop het jy 'n paar bykomende Frida-funksies:

  • Lade Klasse: Dit sal al die gelaaide klasse druk
  • Vang Strings: Dit sal al die gevangenis strings druk terwyl jy die toepassing gebruik (baie lawaaiig)
  • Vang String Vergelykings: Kan baie nuttig wees. Dit sal die 2 strings wat vergelyk word wys en of die resultaat Waar of Onwaar was.
  • Lade Klas Metodes: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk.
  • Soek Klas Patroon: Soek klasse volgens patroon
  • Trace Klas Metodes: Trace 'n hele klas (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes traceer.

Sodra jy die bykomende module wat jy wil gebruik gekies het, moet jy druk op "Start Instrumentation" en jy sal al die uitsette in "Frida Live Logs" sien.

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:

bash
help
shell ls
activities
exported_activities
services
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\).

Sodra jy die dinamiese analise met MobSF voltooi het, kan jy op "Start Web API Fuzzer" druk om fuzz http versoeke en soek na kwesbaarhede.

note

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:

adb shell settings put global http_proxy :0

Geassisteerde Dinamiese Analise met Inspeckage

Jy kan die gereedskap van 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.

Yaazhini

Dit is 'n wonderlike gereedskap om statiese analise met 'n GUI uit te voer.

Qark

Hierdie gereedskap is ontwerp om na verskeie veiligheidsverwante Android-toepassing kwesbaarhede te soek, hetsy in bronkode of gepakde APK's. Die gereedskap is ook in staat om 'n "Proof-of-Concept" ontploembare APK en ADB-opdragte te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toets toestel te root nie.

bash
pip3 install --user qark  # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java

ReverseAPK

  • Vertoon alle onttrokken lêers vir maklike verwysing
  • Decompileer outomaties APK-lêers na Java en Smali-formaat
  • Analiseer AndroidManifest.xml vir algemene kwesbaarhede en gedrag
  • Statiese bronnekode-analise vir algemene kwesbaarhede en gedrag
  • Toestelinligting
  • en meer
bash
reverse-apk relative/path/to/APP.apk

SUPER Android Analyzer

SUPER is 'n opdraglyn-toepassing wat in Windows, MacOS X en Linux gebruik kan word, wat .apk lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek.

Alle reëls is gefokus in 'n rules.json lêer, en elke maatskappy of toetsers kan hul eie reëls skep om te analiseer wat hulle nodig het.

Laai die nuutste binêre af van die download page

super-analyzer {apk_file}

StaCoAn

StaCoAn is 'n crossplatform hulpmiddel wat ontwikkelaars, bugbounty jagters en etiese hackers help om statische kode analise op mobiele toepassings uit te voer.

Die konsep is dat jy jou mobiele toepassingslêer (n .apk of .ipa lêer) op die StaCoAn-toepassing sleep en dit sal 'n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde ervaring te kry.

Laai nuutste vrystelling:

./stacoan

AndroBugs

AndroBugs Framework is 'n Android kwesbaarheid analise stelsel wat ontwikkelaars of hackers help om potensiële sekuriteitskwesbaarhede in Android toepassings te vind.
Windows vrylatinge

python androbugs.py -f [APK file]
androbugs.exe -f [APK file]

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.

Die detectie word uitgevoer met die statische analise van die toepassing se Dalvik bytecode, verteenwoordig as Smali, met die androguard biblioteek.

Hierdie hulpmiddel soek na gewone gedrag van "slegte" toepassings soos: Telefoonidentifiseerders eksfiltrasie, Klank/video vloei onderskepping, PIM data wysiging, Willekeurige kode uitvoering...

python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3

MARA Framework

MARA is 'n Mobiele Applicatie Reverse engineering en Analise Raamwerk. Dit is 'n hulpmiddel wat algemeen gebruikte mobiele toepassings reverse engineering en analise hulpmiddels saamvoeg, om te help met die toetsing van mobiele toepassings teen die OWASP mobiele sekuriteitsbedreigings. Die doel daarvan is om hierdie taak makliker en vriendeliker te maak vir mobiele toepassingsontwikkelaars en sekuriteitsprofessionals.

Dit kan:

Koodous

Nuttig om malware te detecteer: https://koodous.com/

Obfuskerende/Deobfuskerende kode

Let daarop dat dit afhang van die diens en konfigurasie wat jy gebruik om die kode te obfuskeer. Geheime mag of mag nie obfuskeer wees nie.

ProGuard

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.

ProGuard word versprei as deel van die Android SDK en loop wanneer die toepassing in vrystellingmodus gebou word.

DexGuard

Vind 'n stap-vir-stap gids om die apk te deobfuskeer in https://blog.lexfo.fr/dexguard.html

(Van daardie gids) Laas keer wat ons gekontroleer het, was die Dexguard werksmodus:

  • laai 'n hulpbron as 'n InputStream;
  • voer die resultaat aan 'n klas wat van FilterInputStream erf om dit te ontsleutel;
  • doen 'n nuttelose obfuskeringsproses om 'n paar minute se tyd van 'n omkeerder 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.

DeGuard

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.

Jy kan 'n obfuskeer APK na hul platform oplaai.

[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app

Dit is 'n LLM hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android toepassings te vind en android toepassingskode te deobfuskeer. Gebruik Google se Gemini publieke API.

Simplify

Dit is 'n generiese android deobfuskeerder. Simplify voortvirtueel 'n app om sy gedrag te verstaan en dan probeer om die kode te optimaliseer sodat dit identies optree, maar makliker vir 'n mens om te verstaan. Elke optimalisering tipe is eenvoudig en generies, so dit maak nie saak watter spesifieke tipe obfuskering gebruik word nie.

APKiD

APKiD gee jou inligting oor hoe 'n APK gemaak is. Dit identifiseer baie kompilers, packers, obfuscators, en ander vreemde goed. Dit is PEiD vir Android.

Manual

Lees hierdie tutoriaal om 'n paar truuks te leer oor hoe om pasgemaakte obfuskering te reverseer

Labs

Androl4b

AndroL4b is 'n Android sekuriteits virtuele masjien gebaseer op ubuntu-mate wat die versameling van die nuutste raamwerk, tutoriaal en laboratoriums van verskillende sekuriteitsgeeks en navorsers vir reverse engineering en malware analise insluit.

References

Yet to try

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks