Android Applications Pentesting

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Sluit aan by HackenProof Discord bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!

Hakinsigte Gaan in gesprek met inhoud wat die opwinding en uitdagings van hak bevat

Haknuus in Werklikheid Bly op hoogte van die snelveranderende hakwêreld deur werklike nuus en insigte

Nuutste Aankondigings Bly ingelig met die nuutste foutbelonings wat bekendgestel word en belangrike platformopdaterings

Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!

Basiese beginsels van Android-toepassings

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

pageAndroid Applications Basics

ADB (Android Debug Bridge)

Dit is die belangrikste gereedskap wat jy nodig het om aan 'n Android-toestel (nageboots of fisies) te koppel. ADB maak dit moontlik om toestelle te beheer oor USB of Netwerk vanaf 'n rekenaar. Hierdie nut stel die kopieer van lêers in beide rigtings, installeer en deïnstalleer van programme, uitvoer van skelopdragte, back-up van data, lees van logboeke, onder andere funksies, moontlik.

Neem 'n kykie na die volgende lys van ADB-opdragte om te leer hoe om adb te gebruik.

Smali

Dit is soms interessant om die toepassingskode te verander om toegang te verkry tot verskuilde inligting (miskien goed verduisterde wagwoorde of vlae). Dan kan dit interessant wees om die apk te dekompilieer, die kode te wysig en dit weer saam te stel. In hierdie handleiding kan jy leer hoe om 'n APK te dekompilieer, Smali-kode te wysig en die APK weer saam te stel met die nuwe funksionaliteit. 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

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
  • Voeg alle splits en basis apks saam met APKEditor:

mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 1 | 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

Statische Analise

Eerstens, vir die analisering van 'n APK moet jy 'n kykie neem na die Java-kode deur 'n decompiler te gebruik. Lees asseblief hier om inligting oor verskillende beskikbare decompilers te vind.

Op soek na interessante Inligting

Deur net na die strings van die APK te kyk, kan jy soek na wagwoorde, URL's (https://github.com/ndelphit/apkurlgrep), api sleutels, enkripsie, bluetooth uuids, tokens en enige iets interessant... soek selfs vir kode-uitvoer agterdeure of outentiseringsagterdeure (hardgekode admin-gedragskode vir die app).

Firebase

Betaal 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 aansoek - Manifest.xml, strings.xml

Die ondersoek van 'n aansoek se _Manifest.xml en strings.xml lêers kan potensiële sekuriteitskwessies aan die lig bring. Hierdie lêers kan benader word deur decompilers te gebruik of deur die APK-lêernaamuitbreiding na .zip te verander en dit dan te ontzip.

Kwessies wat geïdentifiseer word vanuit die Manifest.xml sluit in:

  • Toepassings wat gedebug kan word: Toepassings wat as gedebug kan word (debuggable="true") ingestel is in die Manifest.xml lêer, stel 'n risiko omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir 'n verdere begrip van hoe om gedebugbare toepassings te benut, verwys na 'n handleiding oor die vind en benutting van gedebugbare toepassings op 'n toestel.

  • Agtergrondinstellings: Die android:allowBackup="false" eienskap moet uitdruklik ingestel word vir toepassings wat met sensitiewe inligting werk om ongemagtigde databack-ups via adb te voorkom, veral wanneer usb-debogging geaktiveer is.

  • Netwerksekuriteit: Aangepaste netwerksekuriteitskonfigurasies (android:networkSecurityConfig="@xml/network_security_config") in res/xml/ kan sekuriteitsbesonderhede soos sertifikaatpenne en HTTP-verkeersinstellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat.

  • Geëksporteerde Aktiwiteite en Dienste: Die identifisering van geëksporteerde 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.

  • Inhoudsverskaffers en Lêerverskaffers: Blootgestelde inhoudsverskaffers kan ongemagtigde toegang of wysiging van data toelaat. Die konfigurasie van Lêerverskaffers moet ook deeglik ondersoek word.

  • Uitsaai-ontvangers en URL-skemas: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL-skemas bestuur word vir insetkwessies.

  • SDK-weergawes: Die minSdkVersion, targetSDKVersion, en maxSdkVersion eienskappe dui die ondersteunde Android-weergawes aan, wat die belangrikheid beklemtoon om verouderde, kwesbare Android-weergawes nie te ondersteun vir sekuriteitsredes nie.

Uit die strings.xml lêer kan sensitiewe inligting soos API-sleutels, aangepaste skemas, en ander ontwikkelaarnotas ontdek word, wat die noodsaaklikheid van 'n sorgvuldige hersiening van hierdie bronne beklemtoon.

Tikjacking

Tikjacking is 'n aanval waar 'n boosaardige aansoek gelanseer word en sigself bo-op 'n slagoffer-aansoek posisioneer. Wanneer dit die slagoffer-aansoek sigbaar verduister, is sy gebruikerskoppelvlak so ontwerp dat dit die gebruiker mislei om daarmee te interaksioneer, terwyl dit die interaksie na die slagoffer-aansoek deurgee. In werklikheid verblind dit die gebruiker om te weet dat hulle eintlik handelinge op die slagoffer-aansoek uitvoer.

Vind meer inligting in:

pageTapjacking

Taakontvoering

'n Aktiwiteit met die launchMode ingestel op singleTask sonder enige taskAffinity gedefinieer is vatbaar vir taakontvoering. Dit beteken dat 'n aansoek geïnstalleer kan word en as dit voor die werklike aansoek begin word, kan dit die taak van die werklike aansoek ontvoer (sodat die gebruiker met die boosaardige aansoek dink hy gebruik die regte een).

Meer inligting in:

pageAndroid Task Hijacking

Onveilige data-opberging

Interne Opberging

In Android is lêers wat in interne opberging gestoor word, ontwerp om eksklusief deur die aansoek wat dit geskep 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 aansoeke. Ontwikkelaars gebruik egter soms modusse soos MODE_WORLD_READABLE en MODE_WORLD_WRITABLE om lêers toe te laat om tussen verskillende aansoeke gedeel te word. Tog beperk hierdie modusse nie toegang tot hierdie lêers deur ander aansoeke nie, insluitend moontlik boosaardige aansoeke.

  1. Statische Analise:

  • Verseker dat die gebruik van MODE_WORLD_READABLE en MODE_WORLD_WRITABLE sorgvuldig ondersoek word. Hierdie modusse kan potensieel lêers blootstel aan ongewenste of ongemagtigde toegang.

  1. Dinamiese Analise:

  • Verifieer die toestemmings wat op lêers geskep deur die aansoek ingestel is. Spesifiek, kontroleer of enige lêers ingestel is om wêreldwyd leesbaar of skryfbaar te wees. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit enige aansoek wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om hierdie lêers te lees of te wysig.

Eksterne Opberging

Wanneer daar gewerk word met lêers op eksterne opberging, soos SD-kaarte, moet sekere voorbehoudsmaatreëls getref word:

  1. Toeganklikheid:

  • Lêers op eksterne opberging is wêreldwyd leesbaar en skryfbaar. Dit beteken enige aansoek of gebruiker kan by hierdie lêers kom.

  1. Sekuriteitskwessies:

  • Gegewe die maklikheid van toegang, word dit aanbeveel om nie sensitiewe inligting op eksterne opberging te stoor nie.

  • Eksterne opberging kan verwyder of deur enige aansoek benader word, wat dit minder veilig maak.

  1. Hantering van Data van Eksterne Opberging:

  • Voer altyd insetvalidering uit op data wat van eksterne opberging herwin word. Dit is krities omdat die data van 'n onbetroubare bron afkomstig is.

  • Dit word sterk afgeraai om uitvoerbare lêers of klaslêers op eksterne opberging vir dinamiese laai te stoor.

  • As jou aansoek uitvoerbare lêers van eksterne opberging moet herwin, verseker dat hierdie lêers onderteken en kriptografies geverifieer word voordat hulle dinamies gelaai word. Hierdie stap is noodsaaklik vir die handhawing van die sekuriteitsintegriteit van jou aansoek.

Eksterne opberging kan benader word in /storage/emulated/0, /sdcard, /mnt/sdcard

Van Android 4.4 (API 17) af, het die SD-kaart 'n gidsstruktuur wat toegang van 'n aansoek tot die gids wat spesifiek vir daardie aansoek is, beperk. Dit voorkom dat boosaardige aansoeke lees- of skryftoegang tot 'n ander aansoek se lêers verkry.

Sensitiewe data in die teks

  • Gedeelde voorkeure: Android laat elke aansoek toe om maklik xml-lêers in die pad /data/data/<pakketnaam>/shared_prefs/ te stoor en soms is dit moontlik om sensitiewe inligting in die teks in daardie vouer te vind.

  • Databasisse: Android laat elke aansoek toe om maklik sqlite-databasisse in die pad /data/data/<pakketnaam>/databases/ te stoor en soms is dit moontlik om sensitiewe inligting in die teks in daardie vouer te vind.

Gebreekte TLS

Aanvaar Alle Sertifikate

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

SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

Gebroke Kriptografie

Swak Sleutelbestuurprosesse

Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en enkripteer dit met 'n sleutel wat hardgekodel/voorspelbaar in die kode is. Dit behoort nie gedoen te word nie, aangesien sommige omkeerwerk dit vir aanvallers moontlik kan maak om die vertroulike inligting te onttrek.

Gebruik van Onveilige en/of Verouderde Algoritmes

Ontwikkelaars behoort nie verouderde algoritmes te gebruik om outorisasie kontroles, stoor of stuur data uit te voer nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As hashe byvoorbeeld gebruik word om wagwoorde te stoor, behoort hashe wat bestand is teen kragaanvalle gebruik te word met sout.

Ander kontroles

  • Dit word aanbeveel om die APK te verduister om die omkeerder se arbeid vir aanvallers te bemoeilik.

  • As die program sensitief is (soos bankprogramme), behoort dit sy eie kontroles uit te voer om te sien of die mobiele toestel gewortel is en daarna op te tree.

  • As die program sensitief is (soos bankprogramme), behoort dit te kontroleer of 'n emuleerder gebruik word.

  • As die program sensitief is (soos bankprogramme), behoort dit sy eie integriteit te kontroleer voordat dit uitgevoer word om te sien of dit gewysig is.

  • Gebruik APKiD om te sien watter samesteller/pakker/verduisteraar gebruik is om die APK te bou.

React Native-toepassing

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

pageReact Native Application

Xamarin-toepassings

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

pageXamarin Apps

Supergepakte Toepassings

Volgens hierdie blogpos is supergepakte 'n Meta-algoritme wat die inhoud van 'n toepassing in 'n enkele lêer saamdruk. Die blog praat oor die moontlikheid om 'n toepassing te skep wat hierdie soort toepassings dekomprimeer... en 'n vinniger manier wat behels om die toepassing uit te voer en die gedekomprimeerde lêers van die lêersisteem te versamel.

Geoutomatiseerde Statische Kode-analise

Die instrument mariana-trench is in staat om kwesbaarhede te vind deur die kode van die toepassing te skandeer. Hierdie instrument bevat 'n reeks bekende bronne (wat die instrument aandui waar die invoer deur die gebruiker beheer word), sinks (wat die instrument gevaarlike plekke aandui waar skadelike gebruikersinvoer skade kan veroorsaak) 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 deurkyk en moontlike kwesbaarhede daarop vind.

Gelekte Geheime

'n Toepassing mag geheime (API-sleutels, wagwoorde, verskuilde URL's, subdomeine...) binne-in hê wat jy dalk kan ontdek. Jy kan 'n instrument soos https://github.com/dwisiswant0/apkleaks gebruik

Om Biometriese Outentifikasie te Verbygaan

pageBypass Biometric Authentication (Android)

Ander interessante funksies

Ander truuks

pagecontent:// protocol

Sluit aan by HackenProof Discord bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!

Hack-insigte Gaan in gesprek met inhoud wat die opwinding en uitdagings van hack ondersoek

Nuus oor Hack in Werklikheid Bly op hoogte van die vinnige hackwêreld deur middel van nuus en insigte in werklikheid

Nuutste Aankondigings Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings

Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!


Dinamiese Analise

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

Aanlyn Dinamiese analise

Jy kan 'n gratis rekening skep by: https://appetize.io/. Hierdie platform stel jou in staat om APK's te laai en uit te voer, sodat jy kan sien hoe 'n apk optree.

Jy kan selfs die logs van jou toepassing op die web sien en deur middel van adb koppel.

Dankie aan die ADB-koppeling kan jy Drozer en Frida binne-in die emuleerders gebruik.

Plaaslike Dinamiese Analise

Gebruik van 'n emuleerder

  • Android Studio (Jy kan x86 en arm toestelle skep, en volgens hierdie nuutste x86 weergawes ondersteun ARM-biblioteke sonder 'n stadige arm-emuleerder nodig te hê).

  • Leer om dit op te stel op hierdie bladsy:

pageAVD - Android Virtual Device
  • Genymotion (Gratis weergawe: Persoonlike Uitgawe, jy moet 'n rekening skep. Dit word aanbeveel om die weergawe MET VirtualBox af te laai om potensiële foute te vermy.)

  • Nox (Gratis, maar dit ondersteun nie Frida of Drozer nie).

Wanneer jy 'n nuwe emuleerder op enige platform skep, onthou dat hoe groter die skerm is, hoe stadiger die emuleerder sal loop. Kies dus klein skerms as moontlik.

Om Google-dienste te installeer (soos AppStore) in Genymotion 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 die Bridge Network-modus kan kies (dit sal nuttig wees as jy die Android VM vanaf 'n ander VM met die gereedskap verbind).

Gebruik 'n fisiese toestel

Jy moet die afskakeling-opsies aktiveer en dit sal goed wees as jy dit kan wortel:

  1. Instellings.

  2. (Vanaf Android 8.0) Kies Stelsel.

  3. Kies Oor foon.

  4. Druk Bou-nommer 7 keer.

  5. Gaan terug en jy sal die Ontwikkelaar-opsies vind.

Nadat jy die toepassing geïnstalleer het, is die eerste ding wat jy moet doen, om dit te probeer en ondersoek in te stel wat dit doen, hoe werk dit en gemaklik daarmee te voel. Ek sal voorstel om hierdie aanvanklike dinamiese analise uit te voer met MobSF dinamiese analise + pidcat, sodat ons in staat sal wees om te leer hoe die toepassing werk terwyl MobSF 'n baie van interessante data vasvang wat jy later kan deurkyk.

Onbedoelde Datalek

Logging

Ontwikkelaars moet versigtig wees om foutopsporingsinligting openlik bloot te stel, aangesien dit kan lei tot die lek van sensitiewe data. Die gereedskap pidcat en adb logcat word aanbeveel vir die monitor van aansoeklogboeke om sensitiewe inligting te identifiseer en te beskerm. Pidcat word verkies vanweë sy gebruiksgemak en leesbaarheid.

Let daarop dat van later nuwer as Android 4.0, toepassings slegs toegang tot hul eie logboeke kan hê. So toepassings kan nie by ander toepassings se logboeke kom nie. Hoe dan ook, dit word steeds aanbeveel om nie sensitiewe inligting te log nie.

Kopieer/Plak Buffer Kaching

Android se klembord-gebaseerde raamwerk maak kopieer/plak-funksionaliteit in programme moontlik, maar hou 'n risiko in aangesien ander toepassings die klembord kan benader, wat moontlik sensitiewe data kan blootstel. Dit is noodsaaklik om kopieer/plak-funksies vir sensitiewe dele van 'n aansoek, soos kredietkaartbesonderhede, te deaktiveer om datalekke te voorkom.

Kraaklogboeke

As 'n aansoek kraak en logboeke stoor, kan hierdie logboeke aanvallers help, veral wanneer die aansoek nie omgekeer-ingenieurswese kan word nie. Om hierdie risiko te verminder, moet gelog word op kraakgevalle vermy word, en as logboeke oor die netwerk gestuur moet word, moet verseker word dat hulle via 'n SSL-kanaal vir sekuriteit gestuur word.

As pentester, probeer om na hierdie logboeke te kyk.

Analitiese Data Gestuur Na 3de Partye

Toepassings integreer dikwels dienste soos Google Adsense, wat onbedoeld sensitiewe data kan lek as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële datalekke te identifiseer, is dit raadsaam om die toepassing se verkeer te onderskep en te kyk vir enige sensitiewe inligting wat aan derdepartydiens gestuur word.

SQLite-databasisse

Meeste van die toepassings sal interne SQLite-databasisse gebruik om inligting te stoor. Tydens die pentest moet 'n kykie na die databasisse wat geskep is, die name van tabelle en kolomme en al die data wat gestoor is, geneem word omdat jy sensitiewe inligting (wat 'n kwesbaarheid sou wees) kan vind. Databasisse behoort in /data/data/die.pakket.naam/databasisse soos /data/data/com.mwr.example.sieve/databasisse geleë te wees.

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

Tel die tabelle op deur .tabelle te gebruik en tel die kolomme van die tabelle op deur .skema <tabel_naam> te doen.

Drozer (Uitbuitingsaktiwiteite, Inhoudsverskaffers en Dienste)

Vanaf Drozer-dokumente: Drozer laat jou toe om die rol van 'n Android-aansoek aan te neem en met ander aansoeke te interaksieer. Dit kan enigiets doen wat 'n geïnstalleerde aansoek kan doen, soos gebruik maak van Android se Interproseskommunikasie (IPC)-meganisme en interaksie met die onderliggende bedryfstelsel. Drozer is 'n nuttige gereedskap om uitgevoerde aktiwiteite, uitgevoerde dienste en Inhoudsverskaffers uit te buit soos wat jy in die volgende afdelings sal leer.

Uitbuiting van uitgevoerde Aktiwiteite

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

Outorisasie-omleiding

Wanneer 'n Aktiwiteit uitgevoer word, kan jy sy skerm vanaf 'n eksterne aansoek aanroep. Daarom, as 'n aktiwiteit met sensitiewe inligting uitgevoer word, kan jy die outentiserings-meganismes omseil om dit te benader.

Leer hoe om uitgevoerde aktiwiteite met Drozer uit te buit.

Jy kan ook 'n uitgevoerde aktiwiteit vanaf adb begin:

  • Pakketnaam is com.example.demo

  • Uitgevoerde Aktiwiteitsnaam is com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity

NOTA: MobSF sal as skadelik beskou die gebruik van singleTask/singleInstance as android:launchMode in 'n aktiwiteit, maar as gevolg van hierdie, blyk dit dat dit slegs gevaarlik is op ou weergawes (API weergawes < 21).

Let daarop dat 'n outorisasie-omleiding nie altyd 'n kwesbaarheid is nie, dit sal afhang van hoe die omleiding werk en watter inligting blootgestel word.

Sensitiewe inligting lekkasie

Aktiwiteite kan ook resultate teruggee. As jy 'n uitgevoerde en onbeskermde aktiwiteit 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 uitgevoerde aktiwiteit misbruik om die gebruiker onverwagte aksies te laat uitvoer. Vir meer inligting oor wat is Tapjacking volg die skakel.

Uitbuiting van Inhoudsverskaffers - Toegang tot en manipulering van sensitiewe inligting

Lees dit as jy wil onthou wat 'n Inhoudsverskaffer is. Inhoudsverskaffers word basies gebruik om data te deel. As 'n toepassing beskikbare inhoudsverskaffers het, kan jy moontlik sensitiewe data daaruit onttrek. Dit is ook interessant om moontlike SQL-injeksies en Padaflaaie te toets aangesien hulle kwesbaar kan wees.

Leer hoe om Inhoudsverskaffers uit te buit met Drozer.

Uitbuiting van Dienste

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

'n Diens is basies iets wat data kan ontvang, dit kan verwerk en 'n antwoord teruggee (of nie). As 'n toepassing dienste uitvoer, moet jy die kode nagaan om te verstaan wat dit doen en dit dinamies toets vir die onttrekking van vertroulike inligting, omseilings van outentiseringsmaatreëls... Leer hoe om Dienste uit te buit met Drozer.

Uitbuiting van Uitsaai-Ontvangers

Lees dit as jy wil onthou wat 'n Uitsaai-Ontvanger is. Onthou dat die aksies van 'n Uitsaai-Ontvanger begin in die metode onReceive.

'n Uitsaai-ontvanger sal wag vir 'n tipe boodskap. Afhangende van hoe die ontvanger die boodskap hanteer, kan dit kwesbaar wees. Leer hoe om Uitsaai-Ontvangers uit te buit met Drozer.

Uitbuiting van Skemas / Diep skakels

Jy kan handmatig vir diep skakels soek, gebruik makende van gereedskap soos MobSF of skripte soos hierdie. Jy kan 'n verklaarde skema open met adb of 'n blaaier:

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

Merk op dat jy die pakketnaam kan weglaat en die mobiele toestel sal outomaties die program oproep wat die skakel behoort te open.

<!-- 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 program uitgevoer sal word te vind, gaan na die aktiwiteit wat deur die deeplink geroep word en soek die funksie onNewIntent.

Sensitiewe inligting

Elke keer as jy 'n diep skakel vind, moet jy nagaan dat dit nie sensitiewe data (soos wagwoorde) via URL parameters ontvang nie, omdat enige ander program die diep skakel kan impersoneer en daardie data kan 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 padtraversie afdwing deur iets soos te benader: example://app/users?username=../../unwanted-endpoint%3fparam=value. Let daarop dat as jy die korrekte eindpunte binne die program vind, jy dalk 'n Oop Aanstuur kan veroorsaak (as deel van die pad as domeinnaam gebruik word), rekeningoorneming (as jy gebruikersbesonderhede sonder CSRF-token kan wysig en die kwesbare eindpunt die korrekte metode gebruik) en enige ander kwesbaarheid. Meer inligting hieroor hier.

Meer voorbeelde

'n Interessante foutvondsrapport oor skakels (/.well-known/assetlinks.json).

Vervoerlaag Inspeksie en Verifikasie Mislukkings

  • Sertifikate word nie altyd behoorlik geïnspekteer deur Android-toepassings nie. Dit is algemeen vir hierdie toepassings om waarskuwings te ignoreer en selfondertekende sertifikate te aanvaar of, in sommige gevalle, terug te keer na die gebruik van HTTP-verbindings.

  • Onderhandelinge tydens die SSL/TLS-handdruk is soms swak, waar onveilige siferreeks gebruik word. Hierdie kwesbaarheid maak die verbinding vatbaar vir man-in-die-middel (MITM) aanvalle, wat aanvallers in staat stel om die data te ontsluit.

  • Lekkasie van private inligting is 'n risiko wanneer toepassings gebruik maak van veilige kanale vir verifikasie, maar dan kommunikeer oor nie-veilige kanale vir ander transaksies. Hierdie benadering slaag daarin om sensitiewe data, soos sessiekoekies of gebruikersbesonderhede, te beskerm teen onderskepping deur skadelike entiteite.

Sertifikaatverifikasie

Ons sal fokus op sertifikaatverifikasie. Die integriteit van die bediener se sertifikaat moet geverifieer word om die veiligheid te verbeter. Dit is noodsaaklik omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor ongekripteer kanale aansienlike risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bedienersertifikate en die aanspreek van kwesbaarhede, bied hierdie bron 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 word, verifieer. Hierdie metode is noodsaaklik om MITM-aanvalle te voorkom. Die implementering van SSL Pinning word sterk aanbeveel vir toepassings wat sensitiewe inligting hanteer.

Verkeersinspeksie

Om HTTP-verkeer te inspekteer, is dit nodig om die sertifikaat van die proksigereedskap te installeer (bv. Burp). Sonder die installering van hierdie sertifikaat mag versleutelde verkeer nie sigbaar wees deur die proksi nie. Vir 'n gids oor die installeer van 'n aangepaste CA-sertifikaat, klik hier.

Toepassings wat API-vlak 24 en hoër teiken, vereis wysigings aan die Netwerksekuriteitskonfig om die proksi se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van versleutelde verkeer. Vir instruksies oor die wysiging van die Netwerksekuriteitskonfig, verwys na hierdie handleiding.

Bypassing SSL Pinning

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:

Soek na Algemene Web Kwesbaarhede

Dit is ook belangrik om na algemene web kwesbaarhede binne die toepassing te soek. Gedetailleerde inligting oor die identifisering en die verminder van hierdie kwesbaarhede val buite die bestek van hierdie opsomming, maar word elders uitgebreid gedek.

Frida

Frida is 'n dinamiese instrumenteringstoolkit vir ontwikkelaars, omgekeerde-ingenieurs en sekuriteitsnavorsers. Jy kan die lopende toepassing toegang en metodes op tyd hardloop om die gedrag te verander, waardes te verander, waardes te onttrek, verskillende kode uit te voer... As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik.

Gedagtegeheue aflaai - Fridump

Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie behoort te stoor nie, soos wagwoorde of mnemoniese woorde.

Deur Fridump3 te gebruik, kan jy die geheue van die program aflaai met:

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

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

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

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, maar met genoeg voorregte is dit steeds moontlik om dit te benader. Aangesien programme geneig is om hier sensitiewe data in teksformaat te stoor, moet die pentests hiervoor nagaan, aangesien 'n root-gebruiker of iemand met fisiese toegang tot die toestel in staat kan wees om hierdie data te steel.

Selfs as 'n program data in die keystore stoor, moet die data versleutel word.

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

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

Vingerafdruk/Biometriese Omgang

Deur die volgende Frida-skrip te gebruik, kan dit moontlik wees om vingerafdruk-verifikasie wat Android-toepassings mag uitvoer om sekere sensitiewe areas te beskerm, te omseil:

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

Agtergrondbeelde

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

Maar, as hierdie momentopname sensitiewe inligting bevat, kan iemand met toegang tot die momentopname dalk daardie inligting steel (let wel dat jy worteltoegang nodig het om dit te kan bereik).

Die momentopnames word gewoonlik gestoor rondom: /data/system_ce/0/snapshots

Android bied 'n manier om die skermafbeelding vas te vang deur die FLAG_SECURE uitlegparameter in te stel. Deur hierdie vlag te gebruik, word die vensterinhoud as veilig beskou, wat voorkom dat dit in skermafbeeldings verskyn of op nie-veilige vertonings besigtig kan word.

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

Android Aansoek Analiseerder

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

Intent Inspruiting

Ontwikkelaars skep dikwels plasing komponente soos aktiwiteite, dienste, en uitsaai-ontvangers wat hierdie Intents hanteer en hulle deurgee na metodes soos startActivity(...) of sendBroadcast(...), wat riskant kan wees.

Die gevaar lê daarin dat aanvallers nie-uitgevoerde app komponente kan aktiveer of toegang kan verkry tot sensitiewe inhoudsverskaffers deur hierdie Intents te mislei. 'n Noemenswaardige voorbeeld is die WebView komponent wat URL's na Intent-voorwerpe omskakel via Intent.parseUri(...) en dit dan uitvoer, wat moontlik kan lei tot skadelike Intent inspuitings.

Belangrike Punte

  • Intent Inspruiting is soortgelyk aan die web se Oop Herleiingsprobleem.

  • Uitbuitings behels die deurgang van Intent-voorwerpe as ekstras, wat omgelei kan word om onveilige operasies uit te voer.

  • Dit kan nie-uitgevoerde komponente en inhoudsverskaffers aan aanvallers blootstel.

  • Die omskakeling van WebView se URL na Intent kan onbedoelde aksies fasiliteer.

Android Kliëntkant Inspruitings en ander

Jy ken waarskynlik van hierdie soort kwesbaarhede van die Web. Wees spesifiek versigtig met hierdie kwesbaarhede in 'n Android-aansoek:

  • SQL Inspruiting: Wanneer jy te make het met dinamiese navrae of Inhoudsverskaffers, verseker dat jy geparametriseerde navrae gebruik.

  • JavaScript Inspruiting (XSS): Verifieer dat JavaScript en Plugin-ondersteuning gedeaktiveer is vir enige WebViews (standaard gedeaktiveer). Meer inligting hier.

  • Plaaslike Lêer Insluiting: WebViews moet nie toegang tot die lêersisteem hê nie (standaard geaktiveer) - (webview.getSettings().setAllowFileAccess(false);). Meer inligting hier.

  • Ewige koekies: In verskeie gevalle, wanneer die Android-aansoek die sessie afsluit, word die koekie nie herroep nie of dit kan selfs na die skyf gestoor word.


Sluit aan by HackenProof Discord bediener om te kommunikeer met ervare hackers en foutbeloningsjagters!

Hack-insigte Betrokkenheid by inhoud wat die opwinding en uitdagings van hack bekyk

Reële Tyd Hack Nuus Bly op hoogte van die vinnige hack-wêreld deur middel van nuus en insigte in werklike tyd

Nuutste Aankondigings Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings

Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!

Outomatiese Analise

Statiese analise

Kwesbaarheidsassessering van die aansoek deur 'n aangename web-gebaseerde voorkant. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing gereed maak).

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

Let daarop dat MobSF Android(apk), IOS(ipa) en Windows(apx) aansoeke kan analiseer (Windows-aansoeke moet geanaliseer word vanaf 'n MobSF wat op 'n Windows-gashuis geïnstalleer is). Ook, as jy 'n ZIP-lêer met die bronkode van 'n Android of 'n IOS-toep (gaan na die hoofmap van die aansoek, 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/Vergelyk analise te doen en om VirusTotal te integreer (jy sal jou API-sleutel in MobSF/settings.py moet instel en dit aktiveer: VT_ENABLED = TRUE VT_API_KEY = <Jou API-sleutel> VT_UPLOAD = TRUE). Jy kan ook VT_UPLOAD op False instel, dan sal die hash in plaas van die lêer opgelaai word.

Ondersteunde 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). Nota: Jy moet eers 'n VM in genymotion begin en dan MobSF. Die MobSF dinamiese analiseerder kan:

  • Toepassingsdata dump (URL's, logboeke, knipbuiskakels, skermskote deur jou geneem, skermskote deur "Geëksporteerde Aktiwiteitstoetser" geneem, e-posse, SQLite-databasisse, XML-lêers, en ander geskep lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet "Geëksporteerde Aktiwiteitstoetser" druk om skermskote van al die uitgevoerde aktiwiteite te verkry.

  • Vang HTTPS-verkeer

  • Gebruik Frida om runtime-inligting te verkry

Vanaf android weergawes > 5, sal dit outomaties Frida begin en sal globale proxy-instellings stel om verkeer vas te vang. Dit sal slegs verkeer van die getoetste aansoek vasvang.

Frida

Standaard sal dit ook van sommige Frida-skripte gebruik maak om SSL-pinning te omseil, wortelopsporing en afskakelingsopsporing en om interessante API's te monitor. MobSF kan ook uitgevoerde aktiwiteite aanroep, skermskote daarvan gryp en hulle vir die verslag stoor.

Om die dinamiese toetsing te begin, druk die groen knoppie: "Begin Instrumentasie". Druk die "Frida Lewende Logboeke" om die logboeke wat deur die Frida-skripte gegenereer is te sien en "Lewende API-monitor" om al die aanroepings na gehaakte metodes, argumente wat oorgedra is en teruggekeerde 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 Vrydag-skripte na MobSF te stuur, gebruik die funksie send()). Dit het ook verskeie voorafgeskrewe 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 die logboeke van daardie skripte binne "Frida Lewende Logboeke" kan sien).

Verder het jy 'n paar Hulp Frida-funksies:

  • Tel Gelaai Klas: Dit sal al die gelaai klas druk

  • Vang Strings: Dit sal al die gevangen strings druk terwyl jy die aansoek 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.

  • Tel Klas Metodes op: Plaas die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk.

  • Soek Klaspatroon: Soek klasse volgens patroon

  • Spoor Klas Metodes op: Spoor 'n hele klas (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android Api-metodes nagaan.

Sodra jy die hulpmodule wat jy wil gebruik gekies het, moet jy "Begin Instrumentasie" druk en jy sal al die uitsette in "Frida Lewende Logboeke" sien.

Shell

Mobsf bring ook 'n skaal met 'n paar adb-opdragte, MobSF-opdragte, en algemene skaalopdragte aan die onderkant van die dinamiese analisepagina. Sommige interessante opdragte:

help
shell ls
activities
exported_activities
services
receivers

HTTP-gereedskap

Wanneer http-verkeer vasgelê word, kan jy 'n lelike aansig van die vasgelê verkeer sien op die "HTTP(S) Verkeer" onderkant of 'n mooier aansig in "Begin HTTPTools" groen onderkant. Van die tweede opsie af kan jy die vasgelê versoek na proksi's soos Burp of Owasp ZAP stuur. Om dit te doen, skakel Burp aan --> skakel Intercept af --> in MobSB HTTPTools kies die versoek --> druk "Stuur na Fuzzer" --> kies die proksi-adres (http://127.0.0.1:8080\).

Nadat jy die dinamiese analise met MobSF voltooi het, kan jy op "Begin Web API Fuzzer" druk om http-versoeke te fuzz en vir kwesbaarhede te soek.

Na die uitvoering van 'n dinamiese analise met MobSF kan die proksi-instellings verkeerd geconfigureer wees en sal jy nie in staat wees om dit vanaf die GUI reg te stel nie. Jy kan die proksi-instellings regstel deur die volgende te doen:

adb shell settings put global http_proxy :0

Ondersteunde Dinamiese Analise met Inspeckage

Jy kan die instrument kry vanaf Inspeckage. Hierdie instrument sal van Hooks gebruik maak om jou te laat weet wat in die aansoek gebeur terwyl jy 'n dinamiese analise uitvoer.

Dit is 'n groot instrument om statiese analise met 'n GUI uit te voer

Hierdie instrument is ontwerp om verskeie sekuriteitsverwante Android-toepassing kwesbaarhede te soek, of in bronkode of verpakte APK's. Die instrument is ook in staat om 'n "Proof-of-Concept" implementeerbare APK en ADB-opdragte te skep, om van die gevonde kwesbaarhede te misbruik (Blootgestelde aktiwiteite, bedoelings, tapjacking...). Soos met Drozer, is daar geen nodigheid om die toestel te root nie.

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

  • Vertoon alle onttrekte lêers vir maklike verwysing

  • Ontbind outomaties APK-lêers na Java- en Smali-formaat

  • Analiseer AndroidManifest.xml vir algemene kwesbaarhede en gedrag

  • Statiese bronkode-analise vir algemene kwesbaarhede en gedrag

  • Toestelinligting

  • en meer

reverse-apk relative/path/to/APP.apk

SUPER is 'n opdraggereëltoepassing wat in Windows, MacOS X en Linux gebruik kan word, wat .apk lêers ontleed op soek na kwesbaarhede. Dit doen dit deur APK's te dekompres en 'n reeks reels toe te pas om daardie kwesbaarhede op te spoor.

Alle reels is gesentreer in 'n rules.json lêer, en elke maatskappy of toetsers kan sy eie reels skep om te analiseer wat hulle nodig het.

Laai die nuutste bineêre lêers af van die aflaaiblad

super-analyzer {apk_file}

StaCoAn is 'n kruisplatform-werktuig wat ontwikkelaars, foutbeloningsjagters en etiese hackers help om statische kode-analise op mobiele aansoeke uit te voer.

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

Laai die nuutste vrystelling af:

./stacoan

AndroBugs Framework is 'n Android kwetsbaarheidsanalise-sisteem wat ontwikkelaars of hackers help om potensiële sekuriteitskwessies in Android-toepassings te vind. Windows vrystellings

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

Androwarn is 'n instrument wat hoofsaaklik daarop gemik is om potensiële skadelike gedrag wat deur 'n Android-toepassing ontwikkel is, op te spoor en die gebruiker te waarsku.

Die opsporing word uitgevoer met die statische analise van die toepassing se Dalvik-bytekode, verteenwoordig as Smali, met die androguard biblioteek.

Hierdie instrument soek na algemene gedrag van "slegte" toepassings soos: Telefoonidentifiseerders wat uitgelek word, Klank-/videovloei onderskepping, PIM-data-wysiging, Willekeurige kode-uitvoering...

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

MARA is 'n Mobiele Applikasie Reverse engineering en Analise Raamwerk. Dit is 'n instrument wat algemeen gebruikte mobiele applikasie reverse engineering en analise gereedskap bymekaar sit, om te help met die toets van mobiele toepassings teen die OWASP mobiele sekuriteitsbedreigings. Sy doel is om hierdie taak makliker en vriendeliker te maak vir mobiele toepassing-ontwikkelaars en sekuriteitsprofessionals.

Dit is in staat om:

Koodous

Nuttig om malware op te spoor: https://koodous.com/

Kode Obfuskasie/Deobfuskasie

Let daarop dat afhangende van die diens en konfigurasie wat jy gebruik om die kode te obfuskasie. Geheime mag al dan nie geëindig obfuskasie nie.

Vanaf Wikipedia: ProGuard is 'n oopbron-kommalyn-instrument wat Java-kode verklein, optimaliseer en obfuskasie. Dit is in staat om bytecode te optimaliseer sowel as ongebruikte instruksies te identifiseer en te verwyder. ProGuard is vrye sagteware en word versprei onder die GNU Algemene Openbare Lisensie, weergawe 2.

ProGuard word versprei as deel van die Android SDK en hardloop wanneer die aansoek in vrystellingmodus gebou word.

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

(Uit daardie gids) Laaste keer wat ons gekyk het, was die Dexguard-modus van werking:

  • laai 'n hulpbron as 'n InputStream;

  • voer die resultaat aan 'n klas wat van FilterInputStream erf om dit te dekripteer;

  • doen 'n paar nuttelose obfuskasie om 'n paar minute van 'n reverser se tyd te mors;

  • voer die dekripteerde resultaat aan 'n ZipInputStream om 'n DEX-lêer te kry;

  • laai uiteindelik die resulterende DEX as 'n Hulpbron deur die loadDex metode te gebruik.

DeGuard keer die proses van obfuskasie wat deur Android obfuskasie gereedskap uitgevoer is, om. Dit maak talryke sekuriteitsontledings moontlik, insluitend kode-inspeksie en voorspelling van biblioteke.

Jy kan 'n obfuskasie APK na hul platform oplaai.

Dit is 'n generiese Android deobfuskator. Vereenvoudig voer feitlik 'n app uit om sy gedrag te verstaan en probeer dan die kode te optimaliseer sodat dit identies optree, maar makliker vir 'n mens is om te verstaan. Elke optimiseringssoort is eenvoudig en generies, dus maak dit nie saak watter spesifieke tipe obfuskasie gebruik word nie.

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

Handleiding

Lees hierdie handleiding om 'n paar truuks te leer oor hoe om aangepaste obfuskasie te keer

Laboratoriums

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

Verwysings

Nog om te probeer

Sluit aan by HackenProof Discord bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!

Hack-insigte Gaan in gesprek met inhoud wat die opwinding en uitdagings van hack ondersoek

Nuus oor Hack in Werklikheid Bly op hoogte van die vinnige tempo van die hack-wêreld deur middel van nuus en insigte in werklikheid

Nuutste Aankondigings Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings

Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!

Leer AWS-hack van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated