hacktricks/mobile-pentesting/android-app-pentesting/README.md

55 KiB

Testiranje Android aplikacija

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!

Hakerski uvidi
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja

Vesti o hakovanju u realnom vremenu
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu

Najnovije najave
Budite informisani o najnovijim nagradama za pronalaženje bagova i bitnim ažuriranjima platformi

Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!

Osnove Android aplikacija

Visoko se preporučuje da počnete sa čitanjem ove stranice kako biste saznali o najvažnijim delovima vezanim za Android bezbednost i najopasnijim komponentama u Android aplikaciji:

{% content-ref url="android-applications-basics.md" %} android-applications-basics.md {% endcontent-ref %}

ADB (Android Debug Bridge)

Ovo je glavni alat koji vam je potreban da se povežete sa Android uređajem (emuliranim ili fizičkim).
ADB omogućava kontrolu uređaja preko USB-a ili Mreže sa računara. Ova alatka omogućava kopiranje fajlova u oba smera, instalaciju i deinstalaciju aplikacija, izvršavanje shell komandi, bekapovanje podataka, čitanje logova, među ostalim funkcijama.

Pogledajte sledeću listu ADB komandi kako biste naučili kako koristiti adb.

Smali

Ponekad je interesantno modifikovati kod aplikacije kako biste pristupili skrivenim informacijama (možda dobro obfuskovanim lozinkama ili zastavama). Zatim, može biti korisno dekompilirati apk, modifikovati kod i ponovo ga kompajlirati.
U ovom tutorijalu možete naučiti kako dekompilirati APK, modifikovati Smali kod i ponovo kompajlirati APK sa novom funkcionalnošću. Ovo može biti veoma korisno kao alternativa za nekoliko testova tokom dinamičke analize koji će biti predstavljeni. Zatim, uvek imajte na umu ovu mogućnost.

Druge interesantne trikove

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

Statička analiza

Prvo, za analizu APK datoteke trebalo bi pogledati Java kod koristeći dekompajler.
Molimo, pročitajte ovde informacije o različitim dostupnim dekompajlerima.

Traženje zanimljivih informacija

Samo pogledom na stringove APK datoteke možete tražiti šifre, URL-ove (https://github.com/ndelphit/apkurlgrep), API ključeve, enkripciju, bluetooth UUID-ove, tokene i bilo šta zanimljivo... tražite čak i backdoor za izvršavanje koda ili backdoor za autentifikaciju (hardkodovane administratorske akreditacije za aplikaciju).

Firebase

Posvetite posebnu pažnju Firebase URL-ovima i proverite da li je loše konfigurisan. Više informacija o tome šta je Firebase i kako ga iskoristiti možete pronaći ovde.

Osnovno razumevanje aplikacije - Manifest.xml, strings.xml

Pregled aplikacije _Manifest.xml i strings.xml fajlova može otkriti potencijalne sigurnosne ranjivosti. Ovim fajlovima se može pristupiti korišćenjem dekompajlera ili preimenovanjem ekstenzije APK fajla u .zip, a zatim raspakivanjem.

Ranjivosti identifikovane iz Manifest.xml uključuju:

  • Aplikacije sa omogućenim debug modom: Aplikacije postavljene kao debuggable (debuggable="true") u Manifest.xml fajlu predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalje razumevanje kako eksploatisati aplikacije sa omogućenim debug modom, pogledajte tutorijal o pronalaženju i eksploataciji aplikacija sa omogućenim debug modom na uređaju.
  • Podešavanja rezervne kopije: Atribut android:allowBackup="false" treba eksplicitno postaviti za aplikacije koje se bave osetljivim informacijama kako bi se sprečile neovlašćene rezervne kopije podataka putem adb-a, posebno kada je omogućeno USB debugovanje.
  • Mrežna sigurnost: Prilagođene konfiguracije mrežne sigurnosti (android:networkSecurityConfig="@xml/network_security_config") u res/xml/ mogu specificirati detalje sigurnosti poput pinova sertifikata i podešavanja HTTP saobraćaja. Primer je dozvola HTTP saobraćaja za određene domene.
  • Izložene aktivnosti i servisi: Identifikacija izloženih aktivnosti i servisa u manifestu može ukazati na komponente koje bi mogle biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako eksploatisati ove komponente.
  • Provajderi sadržaja i FileProvideri: Izloženi provajderi sadržaja mogu dozvoliti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProvidera takođe treba biti pažljivo pregledana.
  • Broadcast prijemnici i URL šeme: Ove komponente mogu biti iskorišćene za eksploataciju, sa posebnom pažnjom na to kako se upravljaju URL šeme radi ranjivosti unosa.
  • SDK verzije: Atributi minSdkVersion, targetSDKVersion i maxSdkVersion ukazuju na podržane verzije Androida, ističući važnost ne podržavanja zastarelih, ranjivih verzija Androida iz sigurnosnih razloga.

Iz strings.xml fajla, osetljive informacije poput API ključeva, prilagođenih šema i drugih beleški razvojnog tima mogu biti otkrivene, naglašavajući potrebu za pažljivim pregledom ovih resursa.

Tapjacking

Tapjacking je napad gde se zlonamerna aplikacija pokreće i pozicionira iznad aplikacije žrtve. Kada vidljivo prekrije aplikaciju žrtve, njen korisnički interfejs je dizajniran na način da prevari korisnika da interaguje sa njom, dok zapravo prenosi interakciju aplikaciji žrtve.
Na taj način, korisnik nije svestan da zapravo obavlja radnje na aplikaciji žrtve.

Pronađite više informacija u:

{% content-ref url="tapjacking.md" %} tapjacking.md {% endcontent-ref %}

Preuzimanje zadatka

Aktivnost sa postavljenim launchMode na singleTask bez definisane taskAffinity je ranjiva na preuzimanje zadatka. To znači da se aplikacija može instalirati i ako se pokrene pre prave aplikacije, može preuzeti zadatak prave aplikacije (tako da će korisnik interagovati sa zlonamernom aplikacijom misleći da koristi pravu).

Više informacija na:

{% content-ref url="android-task-hijacking.md" %} android-task-hijacking.md {% endcontent-ref %}

Nesigurno skladištenje podataka

Interni skladištenje

U Androidu, fajlovi skladišteni u internom skladištu su dizajnirani da budu pristupačni isključivo od strane aplikacije koja ih je kreirala. Ova sigurnosna mera je sprovedena od strane Android operativnog sistema i generalno je dovoljna za sigurnosne potrebe većine aplikacija. Međutim, developeri ponekad koriste režime poput MODE_WORLD_READABLE i MODE_WORLD_WRITABLE da bi omogućili fajlovima da budu deljeni između različitih aplikacija. Ipak, ovi režimi ne ograničavaju pristup ovim fajlovima od strane drugih aplikacija, uključujući potencijalno zlonamerne.

  1. Statička analiza:
  • Proverite da li se korišćenje MODE_WORLD_READABLE i MODE_WORLD_WRITABLE pažljivo ispituje. Ovi režimi mogu potencijalno izložiti fajlove neželjenom ili neovlašćenom pristupu.
  1. Dinamička analiza:
  • Proverite dozvole postavljene na fajlovima kreiranim od strane aplikacije. Konkretno, proverite da li su neki fajlovi postavljeni da budu čitljivi ili upisivi globalno. Ovo može predstavljati značajan sigurnosni rizik, jer bi dozvolilo bilo kojoj aplikaciji instaliranoj na uređaju, bez obzira na poreklo ili nameru, da čita ili modifikuje ove fajlove.

Spoljno skladištenje

Kada se radi sa fajlovima na spoljnom skladištu, poput SD kartica, treba preduzeti određene mere opreza:

  1. Pristupačnost:
  • Fajlovi na spoljnom skladištu su globalno čitljivi i upisivi. To znači da bilo koja aplikacija ili korisnik može pristupiti ovim fajlovima.
  1. Sigurnosne zabrinutosti:
  • S obzirom na laku dostupnost, savetuje se ne čuvati osetljive informacije na spoljnom skladištu.
  • Spoljno skladište može biti uklonjeno ili pristupljeno od strane bilo koje aplikacije, čineći ga manje sigurnim.
  1. Obrada podataka sa spoljnog skladišta:
  • Uvek vršite validaciju unosa podataka dobijenih sa spoljnog skladišta. Ovo je ključno jer podaci potiču od nepoverljivog izvora.
  • Čuvanje izvršnih ili klasnih fajlova na spoljnom skladištu radi dinamičkog učitavanja se snažno ne preporučuje.
  • Ako vaša aplikacija mora da preuzme izvršne fajlove sa spoljnog skladišta, obezbedite da su ovi fajlovi potpisani i kriptografski verifikovani pre nego što budu dinamički učitani. Ovaj korak je od vitalnog značaja za održavanje sigurnosne celovitosti vaše aplikacije.

Spoljno skladište se može pristupiti u /storage/emulated/0, /sdcard, /mnt/sdcard

{% hint style="info" %} Počevši od Androida 4.4 (API 17), SD kartica ima strukturu direktorijuma koja ograničava pristup aplikacije direktorijumu koji je specifičan samo za tu aplikaciju. Ovo sprečava zlonamerne aplikacije da dobiju pristup čitanju ili pisanju u fajlove druge aplikacije. {% endhint %}

Osetljivi podaci čuvani u čistom tekstu

  • Deljeni preferencijali: Android omogućava svakoj aplikaciji da lako sačuva XML fajlove na putanji /data/data/<packagename>/shared_prefs/ i ponekad je moguće pronaći osetljive informacije u čistom tekstu u tom folderu.
  • Baze podataka: Android omogućava svakoj aplikaciji da lako sačuva SQLite baze podataka na putanji /data/data/<packagename>/databases/ i ponekad je moguće pronaći osetljive informacije u čistom tekstu u tom folderu.

Slomljen TLS

Prihvatanje svih sertifikata

Iz nekog razloga, ponekad developeri prihvataju sve sertifikate čak i ako na primer ime hosta ne odgovara sa linijama koda poput sledeće:

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

Slomljena kriptografija

Slabi procesi upravljanja ključevima

Neki programeri čuvaju osetljive podatke u lokalnom skladištu i šifriraju ih ključem koji je unapred definisan/predvidljiv u kodu. Ovo ne bi trebalo raditi jer neko ko vrši reverzni inženjering može izvući poverljive informacije.

Korišćenje nesigurnih i/ili zastarelih algoritama

Programeri ne bi trebalo da koriste zastarele algoritme za izvođenje provera autorizacije, čuvanje ili slanje podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se koriste heševi za čuvanje lozinki na primer, trebalo bi koristiti heševe otporne na bruteforce sa solju.

Ostale provere

  • Preporučuje se obfuskacija APK-a kako bi se otežao rad osobama koje vrše reverzni inženjering.
  • Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi da izvrši svoje provere da vidi da li je mobilni uređaj rutovan i da postupi u skladu s tim.
  • Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi proveriti da li se koristi emulator.
  • Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebalo bi proveriti svoju celovitost pre izvršavanja kako bi se proverilo da li je izmenjena.
  • Koristite APKiD da biste proverili koji je kompajler/paker/obfuskator korišćen za izgradnju APK-a.

Aplikacija napravljena u React Native-u

Pročitajte sledeću stranicu da biste saznali kako lako pristupiti JavaScript kodu React aplikacija:

{% content-ref url="react-native-application.md" %} react-native-application.md {% endcontent-ref %}

Xamarin aplikacije

Pročitajte sledeću stranicu da biste saznali kako lako pristupiti C# kodu Xamarin aplikacija:

{% content-ref url="../xamarin-apps.md" %} xamarin-apps.md {% endcontent-ref %}

Superpakovane aplikacije

Prema ovom blog postu superpakovano je Meta algoritam koji komprimuje sadržaj aplikacije u jedan fajl. Blog govori o mogućnosti kreiranja aplikacije koja dekompresuje ovakve vrste aplikacija... i brži način koji uključuje izvršavanje aplikacije i prikupljanje dekompresovanih fajlova iz fajl sistema.

Automatizovana statička analiza koda

Alatka mariana-trench je sposobna da pronađe ranjivosti skeniranjem koda aplikacije. Ovaj alat sadrži niz poznatih izvora (koji pokazuju alatki mesta gde je unos kontrolisan od strane korisnika), sinks (koji pokazuju alatki opasna mesta gde zlonamerni korisnički unos može prouzrokovati štetu) i pravila. Ova pravila pokazuju kombinaciju izvora-sinks koji ukazuju na ranjivost.

Sa ovim znanjem, mariana-trench će pregledati kod i pronaći moguće ranjivosti u njemu.

Procureli tajni podaci

Aplikacija može sadržati tajne podatke (API ključeve, lozinke, skrivene URL-ove, poddomene...) unutar sebe koje možete otkriti. Možete koristiti alatku poput https://github.com/dwisiswant0/apkleaks

Zaobilaženje biometrijske autentifikacije

{% content-ref url="bypass-biometric-authentication-android.md" %} bypass-biometric-authentication-android.md {% endcontent-ref %}

Druge interesantne funkcije

Druge trikove

{% content-ref url="content-protocol.md" %} content-protocol.md {% endcontent-ref %}


Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!

Uvidi u hakovanje
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja

Vesti o hakovanju u realnom vremenu
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu

Najnovije najave
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i važnim ažuriranjima platformi

Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!


Dinamička analiza

Prvo, potrebno je okruženje gde možete instalirati aplikaciju i sve potrebno (Burp CA sertifikat, Drozer i Frida pre svega). Stoga, korenovani uređaj (emuliran ili ne) je izuzetno preporučljiv.

Online dinamička analiza

Možete kreirati besplatan nalog na: https://appetize.io/. Ova platforma vam omogućava da učitate i izvršite APK-ove, pa je korisno videti kako se APK ponaša.

Čak možete videti dnevnike vaše aplikacije na vebu i povezati se putem adb.

Zahvaljujući ADB vezi, možete koristiti Drozer i Frida unutar emulatora.

Lokalna dinamička analiza

Korišćenje emulatora

  • Android Studio (Možete kreirati x86 i arm uređaje, a prema ovome najnovijim x86 verzijama podržavaju ARM biblioteke bez potrebe za sporim arm emulatorom).
  • Naučite kako da ga podesite na ovoj stranici:

{% content-ref url="avd-android-virtual-device.md" %} avd-android-virtual-device.md {% endcontent-ref %}

  • Genymotion (Besplatna verzija: Personal Edition, treba da kreirate nalog. Preporučuje se da preuzmete verziju SA VirtualBox da biste izbegli potencijalne greške.)
  • Nox (Besplatan, ali ne podržava Fridu ili Drozera).

{% hint style="info" %} Prilikom kreiranja novog emulatora na bilo kojoj platformi, zapamtite da što je veći ekran, to će emulator sporije raditi. Dakle, odaberite male ekrane ako je moguće. {% endhint %}

Da biste instalirali Google usluge (kao što je AppStore) u Genymotionu, treba da kliknete na crveno označeno dugme na sledećoj slici:

Takođe, obratite pažnju da u konfiguraciji Android VM-a u Genymotionu možete odabrati Bridge Network mode (ovo će biti korisno ako ćete se povezivati sa Android VM-a sa drugog VM-a sa alatkama).

Koristite fizički uređaj

Treba da aktivirate opcije za debagovanje i bilo bi dobro ako ga možete rutovati:

  1. Podešavanja.
  2. (Od Android 8.0) Izaberite Sistem.
  3. Izaberite O telefonu.
  4. Pritisnite Broj izdanja 7 puta.
  5. Vratite se nazad i pronaći ćete Opcije za programere.

Kada instalirate aplikaciju, prva stvar koju treba da uradite je da je isprobate i istražite šta radi, kako radi i da se udobno osećate sa njom.
Predlažem da izvršite ovu početnu dinamičku analizu korišćenjem MobSF dinamičke analize + pidcat, tako da ćemo moći saznati kako aplikacija funkcioniše dok MobSF snima mnogo interesantnih podataka koje možete pregledati kasnije.

Neželjeno curenje podataka

Logovanje

Programeri treba da budu oprezni prilikom izlaganja informacija za otklanjanje grešaka javno, jer to može dovesti do curenja osetljivih podataka. Alati pidcat i adb logcat se preporučuju za praćenje logova aplikacije radi identifikacije i zaštite osetljivih informacija. Pidcat je preferiran zbog svoje jednostavnosti korišćenja i čitljivosti.

{% hint style="warning" %} Imajte na umu da od kasnijih verzija novijih od Android 4.0, aplikacije mogu pristupiti samo svojim logovima. Dakle, aplikacije ne mogu pristupiti logovima drugih aplikacija.
U svakom slučaju, i dalje se preporučuje ne logovati osetljive informacije. {% endhint %}

Keširanje kopiranja/lepljenja u baferu

Android-ov sistem zasnovan na klipbordu omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer druge aplikacije mogu pristupiti klipbordu, potencijalno izlažući osetljive podatke. Važno je onemogućiti funkcije kopiranja/lepljenja za osetljive delove aplikacije, poput detalja kreditne kartice, kako bi se sprečilo curenje podataka.

Logovi o padovima

Ako aplikacija padne i sačuva logove, ti logovi mogu pomoći napadačima, posebno kada aplikacija ne može biti reverzno inženjerisana. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom padova, a ako logovi moraju biti preneti preko mreže, obezbedite da budu poslati putem SSL kanala radi bezbednosti.

Kao pentester, pokušajte da pogledate ove logove.

Analitički podaci poslati trećim stranama

Aplikacije često integrišu usluge poput Google Adsense-a, što može nenamerno procureti osetljive podatke zbog nepravilne implementacije od strane programera. Da biste identifikovali potencijalna curenja podataka, preporučljivo je interceptovati saobraćaj aplikacije i proveriti da li se šalju osetljive informacije trećim stranama.

SQLite baze podataka

Većina aplikacija će koristiti interne SQLite baze podataka za čuvanje informacija. Tokom pentesta, pogledajte baze podataka koje su kreirane, imena tabela i kolona i sve podatke sačuvane jer biste mogli pronaći osetljive informacije (što bi predstavljalo ranjivost).
Baze podataka treba da se nalaze u /data/data/naziv.paketa/baze podataka poput /data/data/com.mwr.example.sieve/baze podataka

Ako baza podataka čuva poverljive informacije i enkriptovana je ali možete pronaći lozinku unutar aplikacije, to i dalje predstavlja ranjivost.

Enumerišite tabele koristeći .tables i enumerišite kolone tabela koristeći .schema <ime_tabele>

Drozer (Aktivnosti eksploatacije, pružaoci sadržaja i servisi)

Iz Drozer Dokumenata: Drozer vam omogućava da preuzmete ulogu Android aplikacije i interagujete sa drugim aplikacijama. Može raditi sve što i instalirana aplikacija može, kao što je korišćenje Android-ovog mehanizma za međuprocesnu komunikaciju (IPC) i interakcija sa osnovnim operativnim sistemom. .
Drozer je koristan alat za eksploataciju izloženih aktivnosti, izloženih servisa i pružalaca sadržaja, kako ćete naučiti u narednim sekcijama.

Eksploatacija izloženih aktivnosti

Pročitajte ovo ako želite da osvežite šta je Android Aktivnost.
Takođe zapamtite da kod aktivnosti počinje u metodi onCreate.

Bajpas autorizacije

Kada je Aktivnost izložena, možete pozvati njen ekran iz spoljne aplikacije. Dakle, ako je aktivnost sa osetljivim informacijama izložena, mogli biste bajpasovati mehanizme autentifikacije da biste joj pristupili.

Naučite kako da eksploatišete izložene aktivnosti pomoću Drozera.

Takođe možete pokrenuti izloženu aktivnost iz adb-a:

  • NazivPaketa je com.example.demo
  • NazivIzloženeAktivnosti je com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity

NAPOMENA: MobSF će otkriti kao zlonamjernu upotrebu singleTask/singleInstance kao android:launchMode u aktivnosti, ali zbog ovoga, očigledno je da je ovo opasno samo na starim verzijama (API verzije < 21).

{% hint style="info" %} Imajte na umu da zaobilazak autorizacije nije uvek ranjivost, to bi zavisilo od toga kako zaobilazak funkcioniše i koje informacije su izložene. {% endhint %}

Curenje osetljivih informacija

Aktivnosti takođe mogu vraćati rezultate. Ako uspete da pronađete izloženu i nezaštićenu aktivnost koja poziva metodu setResult i vraća osetljive informacije, to predstavlja curenje osetljivih informacija.

Tapjacking

Ako tapjacking nije sprečen, možete zloupotrebiti izloženu aktivnost da naterate korisnika da izvrši neočekivane radnje. Za više informacija o šta je Tapjacking pratite link.

Iskorišćavanje Provajdera Sadržaja - Pristupanje i manipulisanje osetljivim informacijama

Pročitajte ovo ako želite da osvežite šta je Provajder Sadržaja.
Provajderi sadržaja se uglavnom koriste za deljenje podataka. Ako aplikacija ima dostupne provajdere sadržaja, možda ćete moći da izvučete osetljive podatke iz njih. Takođe je zanimljivo testirati moguće SQL ubacivanja i pretrage putanja jer bi mogli biti ranjivi.

Naučite kako da iskoristite Provajdere Sadržaja sa Drozerom.

Iskorišćavanje Servisa

Pročitajte ovo ako želite da osvežite šta je Servis.
Zapamtite da akcije Servisa počinju u metodi onStartCommand.

Servis je uglavnom nešto što može primiti podatke, ih obraditi i vratiti (ili ne) odgovor. Zatim, ako aplikacija izvozi neke servise, trebalo bi da proverite kod da biste razumeli šta radi i testirali ga dinamički kako biste izvukli poverljive informacije, zaobišli mere autentifikacije...
Naučite kako da iskoristite Servise sa Drozerom.

Iskorišćavanje Prijemnika Emitovanja

Pročitajte ovo ako želite da osvežite šta je Prijemnik Emitovanja.
Zapamtite da akcije Prijemnika Emitovanja počinju u metodi onReceive.

Prijemnik emitovanja će čekati određenu vrstu poruke. Zavisno o tome kako prijemnik obrađuje poruku, može biti ranjiv.
Naučite kako da iskoristite Prijemnike Emitovanja sa Drozerom.

Iskorišćavanje Šema / Dubokih linkova

Možete ručno tražiti duboke linkove, koristeći alate poput MobSF-a ili skripte poput ove.
Možete otvoriti deklarisanu šemu koristeći adb ili pregledač:

{% code overflow="wrap" %}

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

{% endcode %}

Napomena da možete izostaviti ime paketa i mobilni uređaj će automatski pozvati aplikaciju koja treba da otvori taj link.

{% code overflow="wrap" %}

<!-- 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>

{% endcode %}

Izvršeni kod

Da biste pronašli kod koji će se izvršiti u aplikaciji, idite na aktivnost pozvanu preko dubinskog linka i potražite funkciju onNewIntent.

Osetljive informacije

Svaki put kada pronađete duboki link, proverite da ne prima osetljive podatke (kao što su lozinke) putem URL parametara, jer bi bilo koja druga aplikacija mogla preuzeti identitet dubinskog linka i ukrasti te podatke!

Parametri u putanji

Takođe morate proveriti da li bilo koji duboki link koristi parametar unutar putanje URL-a kao što je: https://api.example.com/v1/users/{username}, u tom slučaju možete izazvati prolazak putanje pristupajući nečemu poput: example://app/users?username=../../unwanted-endpoint%3fparam=value.
Imajte na umu da ako pronađete tačne krajnje tačke unutar aplikacije, možda ćete moći izazvati Otvoreno preusmeravanje (ako je deo putanje korišćen kao ime domena), preuzimanje naloga (ako možete izmeniti detalje korisnika bez CSRF tokena i ranjiva tačka koristi odgovarajuću metodu) i bilo koju drugu ranjivost. Više informacija o tome ovde.

Još primera

Jedan interesantan izveštaj o nagradi za otkrivanje grešaka o linkovima (/.well-known/assetlinks.json).

Pregled i neuspesi provere sloja transportnog sloja

  • Sertifikati se ne inspiciraju uvek pravilno od strane Android aplikacija. Često je za ove aplikacije uobičajeno da zanemare upozorenja i prihvate samopotpisane sertifikate ili, u nekim slučajevima, da se vrate na korišćenje HTTP veza.
  • Pregovori tokom SSL/TLS rukovanja su ponekad slabi, koristeći nesigurne šifrovane pakete. Ova ranjivost čini vezu podložnom napadima čoveka usred (MITM), omogućavajući napadačima da dešifruju podatke.
  • Otkrivanje privatnih informacija je rizik kada aplikacije autentifikuju korišćenjem sigurnih kanala, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, poput sesijskih kolačića ili detalja korisnika, od presretanja od strane zlonamernih entiteta.

Provera sertifikata

Fokusiraćemo se na proveru sertifikata. Integritet serverskog sertifikata mora biti proveren radi poboljšanja sigurnosti. To je ključno jer nesigurne TLS konfiguracije i prenos osetljivih podataka preko nešifrovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o proveri serverskih sertifikata i rešavanju ranjivosti, ovaj resurs pruža sveobuhvatno vođstvo.

SSL Pinning

SSL Pinning je sigurnosna mera gde aplikacija proverava serverski sertifikat prema poznatoj kopiji koja je smeštena unutar same aplikacije. Ova metoda je ključna za sprečavanje napada čoveka usred (MITM). Implementacija SSL Pinninga se snažno preporučuje za aplikacije koje rukuju osetljivim informacijama.

Inspekcija saobraćaja

Da biste inspicirali HTTP saobraćaj, neophodno je instalirati sertifikat alata za proksiranje (npr. Burp). Bez instaliranja ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proksi. Za vodič o instaliranju prilagođenog CA sertifikata, kliknite ovde.

Aplikacije koje ciljaju API nivo 24 i više zahtevaju modifikacije Network Security Config-a kako bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspiciranje šifrovanog saobraćaja. Za uputstva o modifikaciji Network Security Config-a, pogledajte ovaj tutorijal.

Zaobilazak SSL Pinninga

Kada je implementiran SSL Pinning, postaje neophodno zaobići ga radi inspiciranja HTTPS saobraćaja. Različite metode su dostupne u tu svrhu:

Traženje uobičajenih ranjivosti veb aplikacija

Važno je takođe tražiti uobičajene ranjivosti veb aplikacija unutar aplikacije. Detaljne informacije o identifikaciji i ublažavanju ovih ranjivosti su van obima ovog sažetka, ali su obuhvaćene na drugim mestima.

Frida

Frida je alat za dinamičku instrumentaciju za programere, inženjere za obrnuti inženjering i istraživače sigurnosti.
Možete pristupiti pokrenutoj aplikaciji i kvačiti metode u vreme izvršavanja da biste promenili ponašanje, vrednosti, izvukli vrednosti, izvršili drugačiji kod...
Ako želite da testirate sigurnost Android aplikacija, morate znati kako koristiti Fridu.

Izdvajanje memorije - Fridump

Proverite da li aplikacija čuva osetljive informacije unutar memorije koje ne bi trebalo da čuva poput lozinki ili mnemonika.

Korišćenjem Fridump3 možete izdvojiti memoriju aplikacije sa:

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

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

Ovo će izbaciti memoriju u ./dump fascikli, a zatim možete koristiti grep sa nečim poput:

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]+$"

{% endcode %}

Osetljivi podaci u Keystore-u

Na Androidu je Keystore najbolje mesto za čuvanje osetljivih podataka, međutim, sa dovoljno privilegija i dalje je moguće pristupiti. Pošto aplikacije često ovde čuvaju osetljive podatke u obliku čistog teksta, pentesteri bi trebalo da provere ovo, jer korisnik sa root privilegijama ili neko sa fizičkim pristupom uređaju može ukrasti ove podatke.

Čak i ako aplikacija čuva podatke u keystore-u, podaci bi trebalo da budu enkriptovani.

Da biste pristupili podacima unutar keystore-a, možete koristiti ovaj Frida skript: 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

Bypass otiska prsta/biometrije

Korišćenjem sledećeg Frida skripta moguće je zaobići autentifikaciju otiskom prsta koju Android aplikacije mogu sprovoditi kako bi zaštitile određena osetljiva područja:

{% code overflow="wrap" %}

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

{% endcode %}

Pozadinske slike

Kada stavite aplikaciju u pozadinu, Android čuva snapshot aplikacije tako da kada se vrati u prednji plan, počinje učitavanje slike pre aplikacije kako bi izgledalo da je aplikacija učitana brže.

Međutim, ako ovaj snapshot sadrži osetljive informacije, osoba sa pristupom snapshotu može ukrasti te informacije (imajte na umu da je potreban root pristup).

Snapshoti se obično čuvaju na lokaciji: /data/system_ce/0/snapshots

Android pruža način da sprečite snimanje ekrana podešavanjem FLAG_SECURE parametra rasporeda. Korišćenjem ovog flaga, sadržaj prozora se tretira kao siguran, sprečavajući ga da se pojavi na snimcima ekrana ili da bude prikazan na nebezbednim ekranima.

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

Analizator Android aplikacija

Ovaj alat može vam pomoći u upravljanju različitim alatima tokom dinamičke analize: https://github.com/NotSoSecure/android_application_analyzer

Ubacivanje Intencija

Programeri često kreiraju proxy komponente poput aktivnosti, servisa i broadcast receiver-a koji obrađuju ove Intencije i prosleđuju ih metodama poput startActivity(...) ili sendBroadcast(...), što može biti rizično.

Opasnost leži u tome što omogućava napadačima da pokrenu neizložene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intencija. Značajan primer je komponenta WebView koja konvertuje URL-ove u Intent objekte putem Intent.parseUri(...) i zatim ih izvršava, što potencijalno može dovesti do zlonamernih ubacivanja Intencija.

Ključne informacije

  • Ubacivanje Intencija je slično problemu otvorenog preusmeravanja na vebu.
  • Eksploatacije uključuju prosleđivanje Intent objekata kao dodatnih informacija, koje mogu biti preusmerene da izvrše nesigurne operacije.
  • Može otkriti neizložene komponente i provajdere sadržaja napadačima.
  • Konverzija URL-ova u Intent objekte u WebView-u može olakšati neželjene akcije.

Ubacivanje na Android klijentskoj strani i ostalo

Verovatno već znate o ovakvim ranjivostima sa veba. Morate biti posebno oprezni sa ovim ranjivostima u Android aplikaciji:

  • SQL Injection: Prilikom rukovanja dinamičkim upitima ili Content-Providerima, proverite da koristite parametrizovane upite.
  • JavaScript Injection (XSS): Proverite da je podrška za JavaScript i dodatke onemogućena za sve WebViews (podrazumevano onemogućeno). Više informacija ovde.
  • Uključivanje lokalnih fajlova: WebViews bi trebalo da imaju onemogućen pristup fajl sistemu (podrazumevano omogućeno) - (webview.getSettings().setAllowFileAccess(false);). Više informacija ovde.
  • Večni kolačići: U nekoliko slučajeva kada Android aplikacija završi sesiju, kolačić nije povučen ili čak može biti sačuvan na disku
  • Sigurna oznaka u kolačićima

Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!

Uvidi u hakovanje
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja

Vesti o hakovanju u realnom vremenu
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu

Najnovije objave
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme

Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!

Automatska analiza

MobSF

Statička analiza

Procena ranjivosti aplikacije korišćenjem lepo dizajniranog veb baziranog korisničkog interfejsa. Takođe možete izvršiti dinamičku analizu (ali morate pripremiti okruženje).

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

Primetite da MobSF može analizirati Android(apk), IOS(ipa) i Windows(apx) aplikacije (Windows aplikacije se moraju analizirati sa MobSF instaliranim na Windows hostu).
Takođe, ako kreirate ZIP fajl sa izvornim kodom Android ili IOS aplikacije (idite u osnovni folder aplikacije, izaberite sve i kreirajte ZIP fajl), takođe će biti u mogućnosti da ga analizira.

MobSF takođe omogućava diff/Upoređivanje analize i integraciju VirusTotal (treba da postavite svoj API ključ u MobSF/settings.py i omogućite ga: VT_ENABLED = TRUE VT_API_KEY = <Vaš API ključ> VT_UPLOAD = TRUE). Takođe možete postaviti VT_UPLOAD na False, tada će hash biti uploadovan umesto fajla.

Asistirana dinamička analiza sa MobSF

MobSF takođe može biti veoma koristan za dinamičku analizu u Androidu, ali u tom slučaju će vam biti potrebno instalirati MobSF i genymotion na vašem hostu (VM ili Docker neće raditi). Napomena: Morate prvo pokrenuti VM u genymotionu a zatim MobSF.
MobSF dinamički analizator može:

  • Izvući podatke aplikacije (URL-ove, logove, clipboard, screenshotove koje ste napravili, screenshotove koje je napravio "Exported Activity Tester", emailove, SQLite baze podataka, XML fajlove i druge kreirane fajlove). Sve ovo se radi automatski osim screenshotova, morate pritisnuti kada želite screenshot ili pritisnuti "Exported Activity Tester" da biste dobili screenshotove svih izvezenih aktivnosti.
  • Snimiti HTTPS saobraćaj
  • Koristiti Fridu da dobije informacije u toku izvršavanja

Od android verzije > 5, automatski će pokrenuti Fridu i postaviti globalne proxy postavke za hvatanje saobraćaja. Hvataće saobraćaj samo od testirane aplikacije.

Frida

Podrazumevano, takođe će koristiti neke Frida skripte da zaobiđe SSL pinning, detekciju root-a i detekciju debugger-a i da prati interesantne API-je.
MobSF takođe može pozvati izvezene aktivnosti, uhvatiti njihove screenshotove i sačuvati ih za izveštaj.

Za pokretanje dinamičkog testiranja pritisnite zeleno dugme: "Start Instrumentation". Pritisnite "Frida Live Logs" da vidite logove generisane od Frida skripti i "Live API Monitor" da vidite sve pozive ka hakovanim metodama, prosleđene argumente i vraćene vrednosti (ovo će se pojaviti nakon što pritisnete "Start Instrumentation").
MobSF vam takođe omogućava da učitate svoje Frida skripte (da biste poslali rezultate vaših Frida skripti MobSF-u koristite funkciju send()). Takođe ima nekoliko unapred napisanih skripti koje možete učitati (možete dodati više u MobSF/DynamicAnalyzer/tools/frida_scripts/others/), samo ih izaberite, pritisnite "Load" i pritisnite "Start Instrumentation" (moći ćete videti logove tih skripti unutar "Frida Live Logs").

Osim toga, imate neke Pomoćne Frida funkcionalnosti:

  • Enumerate Loaded Classes: Ispisaće sve učitane klase
  • Capture Strings: Ispisaće sve uhvaćene stringove prilikom korišćenja aplikacije (vrlo bučno)
  • Capture String Comparisons: Može biti veoma korisno. Pokazaće 2 upoređena stringa i da li je rezultat bio Tačan ili Netačan.
  • Enumerate Class Methods: Unesite ime klase (kao "java.io.File") i ispisuje sve metode klase.
  • Search Class Pattern: Pretražuje klase po obrascu
  • Trace Class Methods: Prati celu klasu (vidi ulaze i izlaze svih metoda te klase). Zapamtite da MobSF podrazumevano prati nekoliko interesantnih Android Api metoda.

Kada ste izabrali pomoćni modul koji želite da koristite, treba da pritisnete "Start Intrumentation" i videćete sve izlaze u "Frida Live Logs".

Shell

Mobsf takođe donosi shell sa nekim adb komandama, MobSF komandama i uobičajenim shell komandama na dnu stranice dinamičke analize. Neke interesantne komande:

help
shell ls
activities
exported_activities
services
receivers

HTTP alati

Kada se uhvati http saobraćaj, možete videti ružan prikaz uhvaćenog saobraćaja na dnu "HTTP(S) Traffic" ili lepši prikaz na zelenom dugmetu "Start HTTPTools". Iz druge opcije, možete poslati uhvaćene zahteve ka proxy serverima poput Burp-a ili Owasp ZAP-a.
Da biste to uradili, uključite Burp --> isključite Intercept --> u MobSB HTTPTools izaberite zahtev --> pritisnite "Send to Fuzzer" --> izaberite adresu proxy servera (http://127.0.0.1:8080\).

Kada završite dinamičku analizu sa MobSF-om, možete pritisnuti "Start Web API Fuzzer" da fuzzujete http zahteve i tražite ranjivosti.

{% hint style="info" %} Nakon obavljanja dinamičke analize sa MobSF-om, podešavanja proxy servera mogu biti netačna i nećete moći da ih popravite iz GUI-ja. Podešavanja proxy servera možete popraviti tako što ćete:

adb shell settings put global http_proxy :0

{% endhint %}

Pomoćna dinamička analiza pomoću Inspeckage alata

Alat možete preuzeti sa Inspeckage.
Ovaj alat koristi neke kuke kako bi vam omogućio da saznate šta se dešava u aplikaciji dok vršite dinamičku analizu.

Yaazhini

Ovo je odličan alat za obavljanje statičke analize sa grafičkim korisničkim interfejsom

Qark

Ovaj alat je dizajniran da traži nekoliko bezbednosno povezanih ranjivosti Android aplikacija, bilo u izvornom kodu ili zapakovanim APK datotekama. Alat je takođe sposoban da kreira "Proof-of-Concept" APK koji se može implementirati i ADB komande, kako bi iskoristio neke od pronađenih ranjivosti (izložene aktivnosti, namere, tapjacking...). Kao i sa Drozer-om, nije potrebno rutovati test uređaj.

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

  • Prikazuje sve izvučene datoteke radi lakšeg referisanja
  • Automatsko dekompiliranje APK datoteka u Java i Smali format
  • Analiza AndroidManifest.xml datoteke radi otkrivanja uobičajenih ranjivosti i ponašanja
  • Statistička analiza izvornog koda radi otkrivanja uobičajenih ranjivosti i ponašanja
  • Informacije o uređaju
  • i još više
reverse-apk relative/path/to/APP.apk

SUPER Android Analyzer

SUPER je aplikacija za komandnu liniju koja se može koristiti u Windows-u, MacOS X-u i Linux-u, a koja analizira .apk fajlove u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.

Sva pravila su centrirana u rules.json fajlu, i svaka kompanija ili testera može kreirati svoja pravila za analizu onoga što im je potrebno.

Preuzmite najnovije binarne fajlove sa stranice za preuzimanje

super-analyzer {apk_file}

StaCoAn

StaCoAn je alatka koja pomaže developerima, istraživačima ranjivosti i etičkim hakerima u izvođenju statičke analize koda mobilnih aplikacija.

Koncept je da prevučete i otpustite datoteku vaše mobilne aplikacije (datoteku .apk ili .ipa) na aplikaciju StaCoAn i ona će generisati vizualni i prenosivi izveštaj za vas. Možete prilagoditi postavke i liste reči da biste dobili personalizovano iskustvo.

Preuzmite najnovije izdanje:

./stacoan

AndroBugs

AndroBugs Framework je sistem analize ranjivosti Androida koji pomaže developerima ili hakerima da pronađu potencijalne sigurnosne ranjivosti u Android aplikacijama.
Windows izdanja

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

Androwarn

Androwarn je alat čiji je glavni cilj da otkrije i upozori korisnika na potencijalno zlonamerne radnje razvijene od strane Android aplikacije.

Otkrivanje se vrši statičkom analizom Dalvik bajtkoda aplikacije, predstavljenog kao Smali, pomoću biblioteke androguard.

Ovaj alat traži uobičajeno ponašanje "loših" aplikacija poput: izvlačenje telefonskih identifikatora, presretanje audio/video tokova, modifikacija PIM podataka, izvršavanje proizvoljnog koda...

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

MARA Framework

MARA je Mobilni Aplikacija za Reverzno inženjerstvo i Analizu okvira. To je alat koji objedinjuje često korišćene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP pretnji mobilne sigurnosti. Njegov cilj je da olakša ovaj zadatak i da bude prijateljski nastrojen prema razvojnim programerima mobilnih aplikacija i profesionalcima za sigurnost.

Može da:

Koodous

Korisno za otkrivanje malvera: https://koodous.com/

Obfuskacija/Deobfuskacija koda

Imajte na umu da zavisi od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu biti ili ne obfuskirane.

ProGuard

Sa Vikipedije: ProGuard je alat otvorenog koda za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. Može da optimizuje bajtkod kao i da otkrije i ukloni nekorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2.

ProGuard se distribuira kao deo Android SDK-a i pokreće se prilikom izgradnje aplikacije u režimu izdanja.

DexGuard

Pronađite vodič korak po korak za deobfuskaciju apk-a na https://blog.lexfo.fr/dexguard.html

(Iz tog vodiča) Poslednji put kada smo proverili, režim rada Dexguard-a bio je:

  • učitavanje resursa kao InputStream;
  • prosleđivanje rezultata klasi koja nasleđuje od FilterInputStream-a da ga dešifruje;
  • obavljanje neke beskorisne obfuskacije da bi se potrošilo nekoliko minuta vremena od osobe koja reverzira;
  • prosleđivanje dešifrovanog rezultata ZipInputStream-u da bi se dobio DEX fajl;
  • konačno učitavanje rezultujućeg DEX-a kao Resurs koristeći metod loadDex.

DeGuard

DeGuard vraća proces obfuskacije koji su obavili alati za obfuskaciju Androida. To omogućava brojne sigurnosne analize, uključujući inspekciju koda i predviđanje biblioteka.

Možete otpremiti obfuskirani APK na njihovu platformu.

Simplify

To je generički android deobfuskator. Simplify virtuelno izvršava aplikaciju kako bi razumeo njen ponašanje, a zatim pokušava da optimizuje kod tako da se ponaša identično, ali je lakši za razumevanje ljudima. Svaka vrsta optimizacije je jednostavna i generička, pa nije važno koji je specifičan tip obfuskacije korišćen.

APKiD

APKiD vam pruža informacije o načinu na koji je APK napravljen. Identifikuje mnoge kompajlere, pakere, obfuskatore i druge čudne stvari. To je PEiD za Android.

Ručno

Pročitajte ovaj tutorijal da biste naučili neke trikove o kako da reverzujete prilagođenu obfuskaciju

Laboratorije

Androl4b

AndroL4b je Android sigurnosna virtuelna mašina zasnovana na ubuntu-mate koja uključuje kolekciju najnovijih okvira, tutorijala i laboratorija od različitih sigurnosnih entuzijasta i istraživača za reverzno inženjerstvo i analizu malvera.

Reference

Još uvek treba probati

Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!

Hakerski uvidi
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja

Vesti u realnom vremenu o hakovanju
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu

Najnovije objave
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme

Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!

Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: