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

842 lines
55 KiB
Markdown
Raw Normal View History

# Android Applications Pentesting
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-03 10:43:38 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
2022-10-27 23:22:18 +00:00
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
2023-02-27 09:28:45 +00:00
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
2023-02-27 09:28:45 +00:00
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Android Applications Basics
Preporučuje se da započnete čitanje 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](android-applications-basics.md)
{% endcontent-ref %}
2021-04-20 15:03:28 +00:00
2022-05-01 13:25:53 +00:00
## ADB (Android Debug Bridge)
Ovo je glavni alat koji vam je potreban za povezivanje sa android uređajem (emuliranim ili fizičkim).\
**ADB** omogućava kontrolu uređaja preko **USB** ili **mreže** sa računara. Ova alatka omogućava **kopiranje** fajlova u oba pravca, **instalaciju** i **deinstalaciju** aplikacija, **izvršavanje** shell komandi, **pravljenje rezervnih kopija** podataka, **čitanje** logova, između ostalih funkcija.
Pogledajte sledeću listu [**ADB Commands**](adb-commands.md) da biste naučili kako koristiti adb.
2022-05-01 13:25:53 +00:00
## Smali
Ponekad je zanimljivo **modifikovati kod aplikacije** da biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili zastavicama). Tada bi moglo biti zanimljivo 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](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Tada, **uvek imajte na umu ovu mogućnost**.
## Other interesting tricks
2022-03-01 00:31:19 +00:00
* [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md)
* **Download APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
* Extract APK from device:
```bash
2022-03-01 00:31:19 +00:00
adb shell pm list packages
com.android.insecurebankv2
2024-02-10 13:11:20 +00:00
adb shell pm path com.android.insecurebankv2
2022-03-01 00:31:19 +00:00
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
```
* Spojite sve delove i osnovne apk-ove sa [APKEditor](https://github.com/REAndroid/APKEditor):
```bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
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
2022-03-01 00:31:19 +00:00
```
## Staticka Analiza
Prvo, za analizu APK-a trebate **pogledati Java kod** koristeći dekompajler.\
Molimo, [**pročitajte ovde da biste pronašli informacije o različitim dostupnim dekompajlerima**](apk-decompilers.md).
### Traženje zanimljivih informacija
Samo gledajući **stringove** APK-a možete tražiti **lozinke**, **URL-ove** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** ključeve, **enkripciju**, **bluetooth uuids**, **tokene** i sve što je zanimljivo... potražite čak i **backdoor-e** za izvršavanje koda ili backdoor-e za autentifikaciju (hardkodirane admin kredencijale za aplikaciju).
2022-04-28 23:27:22 +00:00
**Firebase**
Obratite posebnu pažnju na **firebase URL-ove** i proverite da li je loše konfigurisano. [Više informacija o tome šta je Firebase i kako ga iskoristiti ovde.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
2024-02-08 03:08:28 +00:00
### Osnovno razumevanje aplikacije - Manifest.xml, strings.xml
2024-02-08 03:08:28 +00:00
**Istraživanje \_Manifest.xml**_\*\* i \*\*_**strings.xml**\_\*\* datoteka može otkriti potencijalne sigurnosne ranjivosti\*\*. Ove datoteke se mogu pristupiti koristeći dekompajlere ili preimenovanjem ekstenzije APK datoteke u .zip i zatim raspakivanjem.
2024-02-08 03:08:28 +00:00
**Ranjivosti** identifikovane iz **Manifest.xml** uključuju:
2024-02-08 03:08:28 +00:00
* **Debuggable aplikacije**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ datoteci predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalju razumevanje kako iskoristiti debuggable aplikacije, pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija 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, posebno kada je usb debugging omogućen.
* **Mrežna sigurnost**: Prilagođene konfiguracije mrežne sigurnosti (`android:networkSecurityConfig="@xml/network_security_config"`) u _res/xml/_ mogu specificirati sigurnosne detalje kao što su pinovi sertifikata i podešavanja HTTP saobraćaja. Primer je omogućavanje HTTP saobraćaja za određene domene.
* **Izvezene aktivnosti i servisi**: Identifikacija izvezenih aktivnosti i servisa u manifestu može istaknuti komponente koje bi mogle biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako iskoristiti ove komponente.
* **Content Providers i FileProviders**: Izloženi content provider-i mogli bi omogućiti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProvider-a takođe treba biti pažljivo ispitana.
* **Broadcast Receiver-i i URL sheme**: Ove komponente se mogu iskoristiti za eksploataciju, sa posebnim naglaskom na to kako se URL sheme upravljaju za ranjivosti unosa.
* **SDK verzije**: Atributi `minSdkVersion`, `targetSDKVersion` i `maxSdkVersion` ukazuju na podržane Android verzije, ističući važnost ne podržavanja zastarelih, ranjivih Android verzija iz sigurnosnih razloga.
2024-02-08 03:08:28 +00:00
Iz **strings.xml** datoteke, osetljive informacije kao što su API ključevi, prilagođene sheme i druge beleške programera mogu se otkriti, naglašavajući potrebu za pažljivim pregledom ovih resursa.
2020-10-13 11:29:54 +00:00
2022-05-01 13:25:53 +00:00
### Tapjacking
2021-04-22 11:37:18 +00:00
**Tapjacking** je napad gde se **maliciozna** **aplikacija** pokreće i **pozicionira iznad aplikacije žrtve**. Kada vidljivo prikrije aplikaciju žrtve, njen korisnički interfejs je dizajniran na način da prevari korisnika da interaguje s njom, dok zapravo prosleđuje interakciju aplikaciji žrtve.\
U suštini, to je **oslepljivanje korisnika da ne zna da zapravo izvršava radnje na aplikaciji žrtve**.
2021-05-29 13:27:23 +00:00
2024-02-10 13:11:20 +00:00
Pronađite više informacija u:
{% content-ref url="tapjacking.md" %}
[tapjacking.md](tapjacking.md)
{% endcontent-ref %}
2021-04-22 11:51:49 +00:00
### Preuzimanje zadataka
**aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na preuzimanje zadataka. To znači da se **aplikacija** može instalirati i ako se pokrene pre stvarne aplikacije, mogla bi **preuzeti zadatak stvarne aplikacije** (tako da će korisnik interagovati sa **malicioznom aplikacijom misleći da koristi pravu**).
Više informacija u:
{% content-ref url="android-task-hijacking.md" %}
[android-task-hijacking.md](android-task-hijacking.md)
{% endcontent-ref %}
### Nesigurno skladištenje podataka
2024-02-05 02:28:59 +00:00
**Interno skladište**
U Androidu, datoteke **smeštene** u **interno** skladište su **dizajnirane** da budu **pristupačne** isključivo od strane **aplikacije** koja ih je **napravila**. Ova sigurnosna mera je **propisana** od strane Android operativnog sistema i obično je adekvatna za sigurnosne potrebe većine aplikacija. Međutim, programeri ponekad koriste režime kao što su `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` da **omoguće** deljenje datoteka između različitih aplikacija. Ipak, ovi režimi **ne ograničavaju pristup** ovim datotekama od strane drugih aplikacija, uključujući potencijalno maliciozne.
1. **Staticka analiza:**
* **Osigurajte** da se korišćenje `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` **pažljivo ispita**. Ovi režimi **mogu potencijalno izložiti** datoteke **neprikladnom ili neovlašćenom pristupu**.
2024-02-10 13:11:20 +00:00
2. **Dinamička analiza:**
* **Proverite** **dozvole** postavljene na datotekama koje kreira aplikacija. Konkretno, **proverite** da li su neke datoteke **postavljene da budu čitljive ili zapisive globalno**. Ovo može predstavljati značajan sigurnosni rizik, jer bi omogućilo **bilo kojoj aplikaciji** instaliranoj na uređaju, bez obzira na njen izvor ili nameru, da **čita ili modifikuje** ove datoteke.
**Eksterno skladište**
Kada se radi o datotekama na **eksternom skladištu**, kao što su SD kartice, treba preduzeti određene mere opreza:
1. **Pristupačnost**:
* Datoteke na eksternom skladištu su **globalno čitljive i zapisive**. To znači da bilo koja aplikacija ili korisnik može pristupiti tim datotekama.
2. **Sigurnosne brige**:
* S obzirom na lakoću pristupa, savetuje se **da se ne čuvaju osetljive informacije** na eksternom skladištu.
* Eksterno skladište može biti uklonjeno ili dostupno bilo kojoj aplikaciji, što ga čini manje sigurnim.
3. **Rukovanje podacima iz eksternog skladišta**:
* Uvek **izvršite validaciju unosa** na podacima preuzetim iz eksternog skladišta. Ovo je ključno jer su podaci iz nepouzdanog izvora.
* Čuvanje izvršnih ili klasa datoteka na eksternom skladištu za dinamičko učitavanje se snažno ne preporučuje.
* Ako vaša aplikacija mora preuzeti izvršne datoteke iz eksternog skladišta, osigurajte da su te datoteke **potpisane i kriptografski verifikovane** pre nego što se dinamički učitaju. Ovaj korak je vitalan za održavanje sigurnosne integriteta vaše aplikacije.
2024-02-05 02:28:59 +00:00
Eksterno skladište može biti **pristupačno** u `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
{% hint style="info" %}
Počevši od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja **ograničava pristup aplikaciji na direktorijum koji je specifično za tu aplikaciju**. Ovo sprečava malicioznu aplikaciju da dobije pristup za čitanje ili pisanje datoteka druge aplikacije.
{% endhint %}
**Osetljivi podaci pohranjeni u čistom tekstu**
2021-04-22 12:26:30 +00:00
* **Deljene preferencije**: Android omogućava svakoj aplikaciji da lako sačuva xml datoteke na putanji `/data/data/<packagename>/shared_prefs/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u toj fascikli.
* **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 toj fascikli.
2021-04-22 12:26:30 +00:00
### Slomljeni TLS
2021-04-21 16:33:42 +00:00
**Prihvati sve sertifikate**
Iz nekog razloga, ponekad programeri prihvataju sve sertifikate čak i ako, na primer, ime hosta ne odgovara sa linijama koda poput sledeće:
2021-04-21 16:33:42 +00:00
```java
2021-04-22 09:27:31 +00:00
SSLSocketFactory sf = new cc(trustStore);
2021-04-21 16:33:42 +00:00
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
A good way to test this is to try to capture the traffic using some proxy like Burp without authorising Burp CA inside the device. Also, you can generate with Burp a certificate for a different hostname and use it.
### Broken Cryptography
**Loši procesi upravljanja ključevima**
Neki programeri čuvaju osetljive podatke u lokalnoj memoriji i šifruju ih sa ključem koji je hardkodiran/predvidljiv u kodu. To ne bi trebalo da se radi jer bi neki proces obrnute inženjeringa mogao omogućiti napadačima da izvuku poverljive informacije.
2024-02-10 13:11:20 +00:00
**Korišćenje nesigurnih i/ili zastarelih algoritama**
Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash** koriste za čuvanje lozinki, na primer, treba koristiti hash koji je otporan na brute-force sa solju.
2024-02-10 13:11:20 +00:00
### Ostale provere
* Preporučuje se da se **obfuskira APK** kako bi se otežao posao obrnute inženjeringa napadačima.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), treba da izvrši **svoje provere da vidi da li je mobilni uređaj root-ovan** i da deluje u skladu s tim.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), treba da proveri da li se koristi **emulator**.
* Ako je aplikacija osetljiva (kao što su bankarske aplikacije), treba da **proveri svoju integritet pre izvršavanja** kako bi proverila da li je modifikovana.
* Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji je kompajler/paker/obfuskator korišćen za izradu APK-a.
### React Native Application
2021-02-01 09:24:10 +00:00
Read the following page to learn how to easily access javascript code of React applications:
2021-02-01 09:24:10 +00:00
{% content-ref url="react-native-application.md" %}
[react-native-application.md](react-native-application.md)
{% endcontent-ref %}
2021-02-01 09:24:10 +00:00
### Xamarin Applications
2021-08-11 20:47:23 +00:00
Read the following page to learn how to easily access C# code of a xamarin applications:
2021-08-11 20:47:23 +00:00
{% content-ref url="../xamarin-apps.md" %}
[xamarin-apps.md](../xamarin-apps.md)
{% endcontent-ref %}
2021-08-11 20:47:23 +00:00
### Superpacked Applications
According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked is a Meta algorithm that compress the content of an application into a single file. The blog talks about the possibility of creating an app that decompress these kind of apps... and a faster way which involves to **execute the application and gather the decompressed files from the filesystem.**
### Automated Static Code Analysis
2021-11-07 16:13:04 +00:00
The tool [**mariana-trench**](https://github.com/facebook/mariana-trench) is capable of finding **vulnerabilities** by **scanning** the **code** of the application. This tool contains a series of **known sources** (that indicates to the tool the **places** where the **input** is **controlled by the user**), **sinks** (which indicates to the tool **dangerous** **places** where malicious user input could cause damages) and **rules**. These rules indicates the **combination** of **sources-sinks** that indicates a vulnerability.
2021-11-07 16:13:04 +00:00
With this knowledge, **mariana-trench will review the code and find possible vulnerabilities on it**.
2021-11-07 16:13:04 +00:00
### Tajne otkrivene
2022-05-19 12:02:10 +00:00
An application may contain secrets (API keys, passwords, hidden urls, subdomains...) inside of it that you might be able to discover. You could us a tool such as [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
2022-05-19 12:02:10 +00:00
### Bypass Biometric Authentication
2022-10-26 09:06:33 +00:00
{% content-ref url="bypass-biometric-authentication-android.md" %}
[bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md)
{% endcontent-ref %}
### Other interesting functions
2024-02-10 13:11:20 +00:00
* **Izvršavanje koda**: `Runtime.exec(), ProcessBuilder(), native code:system()`
* **Slanje SMS-ova**: `sendTextMessage, sendMultipartTestMessage`
2024-02-10 13:11:20 +00:00
* **Nativne funkcije** deklarisane kao `native`: `public native, System.loadLibrary, System.load`
* [Read this to learn **how to reverse native functions**](reversing-native-libraries.md)
### **Ostali trikovi**
2021-05-04 11:44:49 +00:00
{% content-ref url="content-protocol.md" %}
[content-protocol.md](content-protocol.md)
{% endcontent-ref %}
***
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
2023-02-27 09:28:45 +00:00
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
2023-02-27 09:28:45 +00:00
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
2022-10-27 23:22:18 +00:00
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
2023-02-27 09:28:45 +00:00
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
2022-10-27 23:22:18 +00:00
***
2024-02-10 13:11:20 +00:00
## Dinamička analiza
> Prvo, potrebno je okruženje u kojem možete instalirati aplikaciju i sve potrebne alate (Burp CA cert, Drozer i Frida). Stoga, root-ovan uređaj (emulirani ili ne) je izuzetno preporučen.
2024-02-10 13:11:20 +00:00
### Online dinamička analiza
You can create a **free account** in: [https://appetize.io/](https://appetize.io). This platform allows you to **upload** and **execute** APKs, so it is useful to see how an apk is behaving.
You can even **see the logs of your application** in the web and connect through **adb**.
![](<../../.gitbook/assets/image (831).png>)
Thanks to the ADB connection you can use **Drozer** and **Frida** inside the emulators.
2024-02-10 13:11:20 +00:00
### Lokalna dinamička analiza
#### Korišćenje emulatore
* [**Android Studio**](https://developer.android.com/studio) (Možete kreirati **x86** i **arm** uređaje, a prema [**ovim**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**najnovijim x86** verzijama **podržavaju ARM biblioteke** bez potrebe za sporim arm emulatorom).
* Learn to set it up in this page:
{% content-ref url="avd-android-virtual-device.md" %}
[avd-android-virtual-device.md](avd-android-virtual-device.md)
{% endcontent-ref %}
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, potrebno je da kreirate nalog. _Preporučuje se da **preuzmete** verziju **SA**_ _**VirtualBox** kako biste izbegli potencijalne greške._)
* [**Nox**](https://es.bignox.com) (Besplatno, ali ne podržava Frida ili Drozer).
{% hint style="info" %}
When creating a new emulator on any platform remember that the bigger the screen is, the slower the emulator will run. So select small screens if possible.
{% endhint %}
To **instalirate google usluge** (kao što je AppStore) u Genymotion potrebno je da kliknete na crveno označeno dugme na sledećoj slici:
![](<../../.gitbook/assets/image (277).png>)
Takođe, primetite da u **konfiguraciji Android VM u Genymotion** možete odabrati **Bridge Network mode** (to će biti korisno ako se povezujete na Android VM iz druge VM sa alatima).
#### Koristite fizički uređaj
Potrebno je aktivirati **debugging** opcije i bilo bi dobro ako možete **root**-ovati uređaj:
1. **Podešavanja**.
2. (Od Android 8.0) Izaberite **Sistem**.
3. Izaberite **O telefonu**.
4. Pritisnite **Broj izrade** 7 puta.
5. Vratite se i naći ćete **Opcije za programere**.
> Kada instalirate aplikaciju, prva stvar koju treba da uradite je da je isprobate i istražite šta radi, kako funkcioniše i da se upoznate sa njom.\
> Preporučujem da **izvršite ovu inicijalnu dinamičku analizu koristeći MobSF dinamičku analizu + pidcat**, tako da ćemo moći da **naučimo kako aplikacija funkcioniše** dok MobSF **prikuplja** mnogo **zanimljivih** **podataka** koje možete kasnije pregledati.
### Neprintentional Data Leakage
2024-02-10 13:11:20 +00:00
**Logovanje**
Programeri bi trebali biti oprezni da ne izlažu **debugging informacije** javno, jer to može dovesti do curenja osetljivih podataka. Preporučuju se alati [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` za praćenje logova aplikacije kako bi se identifikovale i zaštitile osetljive informacije. **Pidcat** je omiljen zbog svoje jednostavnosti korišćenja i čitljivosti.
2021-04-22 13:58:44 +00:00
{% hint style="warning" %}
Note that from **later newer than Android 4.0**, **applications are only able to access their own logs**. So applications cannot access other apps logs.\
Anyway, it's still recommended to **not log sensitive information**.
2021-04-22 13:58:44 +00:00
{% endhint %}
**Kopiranje/Lepljenje Bafer Keširanje**
Androidov **framework zasnovan na clipboard-u** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** clipboard-u, potencijalno izlažući osetljive podatke. Ključno je **onemogućiti funkcije kopiranja/lepljenja** za osetljive delove aplikacije, kao što su podaci o kreditnim karticama, kako bi se sprečilo curenje podataka.
**Logovi grešaka**
2024-02-08 03:08:28 +00:00
Ako aplikacija **pukne** i **sačuva logove**, ovi logovi mogu pomoći napadačima, posebno kada aplikaciju nije moguće obrnuti inženjirati. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom grešaka, a ako logovi moraju biti preneseni preko mreže, osigurajte da se šalju putem SSL kanala radi sigurnosti.
Kao pentester, **pokušajte da pogledate ove logove**.
**Podaci o analitici poslati trećim stranama**
Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno **procuriti osetljive podatke** zbog nepravilne implementacije od strane programera. Da biste identifikovali potencijalna curenja podataka, preporučuje se da **presretnete saobraćaj aplikacije** i proverite da li se šalju osetljive informacije trećim stranama.
### SQLite DBs
Većina aplikacija će koristiti **internu SQLite baze podataka** za čuvanje informacija. Tokom pentesta obratite pažnju na **baze podataka** koje su kreirane, imena **tabela** i **kolona** i sve **podatke** sačuvane jer biste mogli pronaći **osetljive informacije** (što bi bila ranjivost).\
Baze podataka bi trebale biti locirane u `/data/data/the.package.name/databases` kao `/data/data/com.mwr.example.sieve/databases`.
Ako baza podataka čuva poverljive informacije i je **šifrovana**, ali možete **pronaći** **lozinku** unutar aplikacije, to je i dalje **ranjivost**.
Enumerišite tabele koristeći `.tables` i enumerišite kolone tabela koristeći `.schema <table_name>`.
### Drozer (Eksploatacija aktivnosti, provajdera sadržaja i usluga)
From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** allows you to **assume the role of an Android app** and interact with other apps. It can do **anything that an installed application can do**, such as make use of Androids Inter-Process Communication (IPC) mechanism and interact with the underlying operating system. .\
Drozer is s useful tool to **exploit exported activities, exported services and Content Providers** as you will learn in the following sections.
2021-04-22 12:26:30 +00:00
### Eksploatacija eksportovanih aktivnosti
2021-04-22 12:26:30 +00:00
[**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\
Also remember that the code of an activity starts in the **`onCreate`** method.
**Zaobilaženje autorizacije**
2024-02-08 03:08:28 +00:00
Kada je aktivnost eksportovana, možete pozvati njen ekran iz spoljne aplikacije. Stoga, ako je aktivnost sa **osetljivim informacijama** **eksportovana**, mogli biste **zaobići** mehanizme **autentifikacije** **da biste joj pristupili.**
[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/#activities)
You can also start an exported activity from adb:
* PackageName is com.example.demo
* Exported ActivityName is com.example.test.MainActivity
```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity
```
**NAPOMENA**: MobSF će detektovati kao zlonameran korišćenje _**singleTask/singleInstance**_ kao `android:launchMode` u aktivnosti, ali zbog [ovoga](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), očigledno je da je ovo opasno samo na starim verzijama (API verzije < 21).
2021-04-22 12:26:30 +00:00
{% hint style="info" %}
Imajte na umu da zaobilaženje autorizacije nije uvek ranjivost, to zavisi od načina na koji zaobilaženje funkcioniše i koje informacije su izložene.
2021-04-22 12:26:30 +00:00
{% endhint %}
**Curjenje osetljivih informacija**
2021-04-22 12:26:30 +00:00
**Aktivnosti takođe mogu vraćati rezultate**. Ako uspete da pronađete izvezenu i nezaštićenu aktivnost koja poziva **`setResult`** metodu i **vraća osetljive informacije**, dolazi do curenja osetljivih informacija.
2021-04-22 12:26:30 +00:00
#### Tapjacking
Ako tapjacking nije sprečen, mogli biste zloupotrebiti izvezenu aktivnost da naterate **korisnika da izvrši neočekivane radnje**. Za više informacija o [**šta je Tapjacking pratite link**](./#tapjacking).
### Eksploatacija Content Providers - Pristup i manipulacija osetljivim informacijama
[**Pročitajte ovo ako želite da osvežite šta je Content Provider.**](android-applications-basics.md#content-provider)\
Content providers se osnovno koriste za **deljenje podataka**. Ako aplikacija ima dostupne content providers, možda ćete moći da **izvučete osetljive** podatke iz njih. Takođe je zanimljivo testirati moguće **SQL injekcije** i **Path Traversals** jer bi mogli biti ranjivi.
2024-02-08 03:08:28 +00:00
[**Saznajte kako da eksploatišete Content Providers sa Drozer-om.**](drozer-tutorial/#content-providers)
### **Eksploatacija Servisa**
[**Pročitajte ovo ako želite da osvežite šta je Servis.**](android-applications-basics.md#services)\
Zapamtite da akcije Servisa počinju u metodi `onStartCommand`.
2021-04-22 12:26:30 +00:00
Servis je osnovno nešto što **može primati podatke**, **obrađivati** ih i **vraćati** (ili ne) odgovor. Dakle, ako aplikacija izveze neke servise, trebali biste **proveriti** **kod** da biste razumeli šta radi i **testirati** ga **dinamički** za izvlačenje poverljivih informacija, zaobilaženje mera autentifikacije...\
[**Saznajte kako da eksploatišete Servise sa Drozer-om.**](drozer-tutorial/#services)
### **Eksploatacija Broadcast Receivers**
[**Pročitajte ovo ako želite da osvežite šta je Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\
Zapamtite da akcije Broadcast Receiver-a počinju u metodi `onReceive`.
2021-04-22 12:26:30 +00:00
Broadcast receiver će čekati na određenu vrstu poruke. U zavisnosti od toga kako receiver obrađuje poruku, mogao bi biti ranjiv.\
[**Saznajte kako da eksploatišete Broadcast Receivers sa Drozer-om.**](./#exploiting-broadcast-receivers)
### **Eksploatacija Schemes / Deep links**
Možete ručno tražiti deep links, koristeći alate kao što je MobSF ili skripte poput [ove](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
Možete **otvoriti** deklarisani **scheme** koristeći **adb** ili **pregledač**:
{% code overflow="wrap" %}
```bash
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 tu vezu._
{% code overflow="wrap" %}
```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>
```
{% endcode %}
2024-02-10 13:11:20 +00:00
**Izvršeni kod**
Da biste pronašli **kod koji će biti izvršen u aplikaciji**, idite na aktivnost koju poziva deeplink i potražite funkciju **`onNewIntent`**.
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
2024-02-10 13:11:20 +00:00
**Osetljive informacije**
2020-12-30 09:57:37 +00:00
Svaki put kada pronađete deep link, proverite da **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bi bilo koja druga aplikacija mogla **da se pretvara da je deep link i ukrade te podatke!**
2020-12-30 09:57:37 +00:00
2024-02-10 13:11:20 +00:00
**Parametri u putanji**
2020-12-30 09:57:37 +00:00
Trebalo bi da **proverite i da li neki deep link koristi parametar unutar putanje** URL-a kao što je: `https://api.example.com/v1/users/{username}`, u tom slučaju možete primorati putanju da pređe na nešto poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Imajte na umu da ako pronađete ispravne krajnje tačke unutar aplikacije, možda ćete moći da izazovete **Open Redirect** (ako je deo putanje korišćen kao naziv domena), **preuzimanje naloga** (ako možete da modifikujete korisničke podatke bez CSRF tokena i ranjiva krajnja tačka koristi ispravnu metodu) i bilo koju drugu ranjivost. Više [informacija o ovome ovde](http://dphoeniixx.com/2020/12/13-2/).
2020-12-30 09:57:37 +00:00
**Još primera**
2020-11-28 17:30:36 +00:00
Jedan [zanimljiv izveštaj o bug bounty](https://hackerone.com/reports/855618) o linkovima (_/.well-known/assetlinks.json_).
2020-07-29 09:22:22 +00:00
### Inspekcija i verifikacija transportnog sloja
2024-02-08 03:08:28 +00:00
* **Sertifikati se ne proveravaju uvek pravilno** od strane Android aplikacija. Uobičajeno je da ove aplikacije zanemaruju upozorenja i prihvataju samopotpisane sertifikate ili, u nekim slučajevima, vraćaju se na korišćenje HTTP veza.
* **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne kriptografske suite. Ova ranjivost čini vezu podložnom napadima "čoveka u sredini" (MITM), omogućavajući napadačima da dekriptuju podatke.
* **Curjenje privatnih informacija** je rizik kada aplikacije autentifikuju koristeći sigurne kanale, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, kao što su kolačići sesije ili korisnički podaci, od presretanja od strane zlonamernih entiteta.
#### Verifikacija sertifikata
Fokusiraćemo se na **verifikaciju sertifikata**. Integritet sertifikata servera mora biti verifikovan kako bi se poboljšala sigurnost. Ovo je ključno jer nesigurne TLS konfiguracije i prenos osetljivih podataka preko nekriptovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o verifikaciji sertifikata servera i rešavanju ranjivosti, [**ovaj resurs**](https://manifestsecurity.com/android-application-security-part-10/) pruža sveobuhvatne smernice.
2024-02-08 03:08:28 +00:00
#### SSL Pinning
SSL Pinning je mera sigurnosti gde aplikacija proverava sertifikat servera u odnosu na poznatu kopiju smeštenu unutar same aplikacije. Ova metoda je ključna za sprečavanje MITM napada. Implementacija SSL Pinning-a se snažno preporučuje za aplikacije koje obrađuju osetljive informacije.
2024-02-10 13:11:20 +00:00
#### Inspekcija saobraćaja
Da biste inspekciju HTTP saobraćaja, potrebno je **instalirati sertifikat alata za proxy** (npr. Burp). Bez instalacije ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proxy. Za vodič o instalaciji prilagođenog CA sertifikata, [**kliknite ovde**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
2021-04-21 16:33:42 +00:00
Aplikacije koje ciljaju **API nivo 24 i više** zahtevaju izmene u konfiguraciji bezbednosti mreže kako bi prihvatile CA sertifikat proxy-a. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni konfiguracije bezbednosti mreže, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
#### Obilaženje SSL Pinning-a
Kada je SSL Pinning implementiran, obilaženje postaje neophodno za inspekciju HTTPS saobraćaja. Različite metode su dostupne za ovu svrhu:
* Automatski **modifikujte** **apk** da **obidjete** SSLPinning koristeći [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je što vam neće biti potrebna root privilegija da obidjete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate novu, a to ne mora uvek da funkcioniše.
* Možete koristiti **Frida** (o kojoj se govori u nastavku) da obidjete ovu zaštitu. Ovde imate vodič za korišćenje Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* Takođe možete pokušati da **automatski obidjete SSL Pinning** koristeći [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* Takođe možete pokušati da **automatski obidjete SSL Pinning** koristeći **MobSF dinamičku analizu** (objašnjeno u nastavku)
* Ako i dalje mislite da postoji neki saobraćaj koji ne presrećete, možete pokušati da **prosledite saobraćaj do burp-a koristeći iptables**. Pročitajte ovaj blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Traženje uobičajenih web ranjivosti
Važno je takođe tražiti uobičajene web ranjivosti unutar aplikacije. Detaljne informacije o identifikaciji i ublažavanju ovih ranjivosti su van okvira ovog sažetka, ali su opširno pokrivene na drugim mestima.
2022-05-01 13:25:53 +00:00
### Frida
[Frida](https://www.frida.re) je alat za dinamičku instrumentaciju za programere, inženjere obrnutog inženjeringa i istraživače bezbednosti.\
**Možete pristupiti pokrenutim aplikacijama i povezati metode u vreme izvođenja da promenite ponašanje, promenite vrednosti, izvučete vrednosti, pokrenete različit kod...**\
Ako želite da radite pentesting Android aplikacija, morate znati kako koristiti Frida.
* Naučite kako koristiti Frida: [**Frida tutorijal**](frida-tutorial/)
* Neki "GUI" za akcije sa Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* Ojection je odličan za automatizaciju korišćenja Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* Možete pronaći neke sjajne Frida skripte ovde: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Pokušajte da obidjete mehanizme protiv debagovanja / anti-frida učitavanjem Frida kao što je naznačeno u [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (alat [linjector](https://github.com/erfur/linjector-rs))
### **Dump Memorije - Fridump**
Proverite da li aplikacija čuva osetljive informacije unutar memorije koje ne bi trebala da čuva, kao što su lozinke ili mnemoničke fraze.
Korišćenjem [**Fridump3**](https://github.com/rootbsd/fridump3) možete dumpovati memoriju aplikacije sa:
```bash
# With PID
2024-02-10 13:11:20 +00:00
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
```
Ovo će isprazniti memoriju u ./dump folderu, a tamo možete koristiti grep sa nečim poput:
{% code overflow="wrap" %}
```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]+$"
```
{% endcode %}
2024-02-10 13:11:20 +00:00
### **Osetljivi podaci u Keystore-u**
U Androidu, Keystore je najbolje mesto za čuvanje osetljivih podataka, međutim, uz dovoljno privilegija, još uvek je **moguće pristupiti mu**. Kako aplikacije obično čuvaju **osetljive podatke u čistom tekstu**, pentestovi bi trebali proveriti to kao root korisnik ili neko sa fizičkim pristupom uređaju mogao bi biti u mogućnosti da ukrade ove podatke.
Čak i ako aplikacija čuva podatke u keystore-u, podaci bi trebali biti enkriptovani.
2024-02-10 13:11:20 +00:00
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](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
```
### **Zaobilaženje otiska prsta/bio-metrike**
Korišćenjem sledećeg Frida skripta može biti moguće **zaobići autentifikaciju otiskom prsta** koju Android aplikacije mogu izvoditi kako bi **zaštitile određena osetljiva područja:**
{% code overflow="wrap" %}
```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
```
{% endcode %}
### **Pozadine Slike**
Kada stavite aplikaciju u pozadinu, Android čuva **snimak aplikacije** tako da kada se vrati u fokus, počinje da učitava sliku pre aplikacije, tako da izgleda kao da je aplikacija učitana brže.
Međutim, ako ovaj snimak sadrži **osetljive informacije**, neko ko ima pristup snimku može **ukrasti te informacije** (napomena: potrebno je imati root pristup da biste mu pristupili).
Snimci se obično čuvaju na: **`/data/system_ce/0/snapshots`**
Android pruža način da se **spreči hvatanje ekrana postavljanjem FLAG\_SECURE** parametra rasporeda. Korišćenjem ove oznake, sadržaj prozora se tretira kao siguran, sprečavajući da se pojavi na snimcima ekrana ili da se vidi na nesigurnim ekranima.
```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
### **Android Application Analyzer**
Ovaj alat može pomoći u upravljanju različitim alatima tokom dinamičke analize: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
### Intent Injection
Programeri često kreiraju proxy komponente kao što su aktivnosti, servisi i emitovani prijemnici koji obrađuju ove Intente i prosleđuju ih metodama kao što su `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično.
2021-07-19 19:50:23 +00:00
Opasnost leži u omogućavanju napadačima da aktiviraju neizvezene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intenta. Značajan primer je `WebView` komponenta koja konvertuje URL-ove u `Intent` objekte putem `Intent.parseUri(...)` i zatim ih izvršava, što može dovesti do zlonamernih Intent injekcija.
2024-02-08 03:08:28 +00:00
### Essential Takeaways
2024-02-08 03:08:28 +00:00
* **Intent Injection** je sličan problemu Open Redirect na webu.
* Eksploati uključuju prosleđivanje `Intent` objekata kao dodataka, koji se mogu preusmeriti da izvrše nesigurne operacije.
* Može izložiti neizvezene komponente i provajdere sadržaja napadačima.
* Konverzija URL-a u `Intent` kod `WebView`-a može olakšati nepredviđene radnje.
2021-07-19 19:50:23 +00:00
### Android Client Side Injections and others
Verovatno znate o ovakvim ranjivostima sa weba. Morate biti posebno oprezni sa ovim ranjivostima u Android aplikaciji:
* **SQL Injection:** Kada se bavite dinamičkim upitima ili Content-Providers, osigurajte da koristite parametarske upite.
* **JavaScript Injection (XSS):** Proverite da li je podrška za JavaScript i Plugin onemogućena za bilo koje WebViews (onemogućena po defaultu). [Više informacija ovde](webview-attacks.md#javascript-enabled).
* **Local File Inclusion:** WebViews bi trebale imati onemogućen pristup sistemu datoteka (omogućen po defaultu) - `(webview.getSettings().setAllowFileAccess(false);)`. [Više informacija ovde](webview-attacks.md#javascript-enabled).
* **Eternal cookies**: U nekoliko slučajeva kada Android aplikacija završi sesiju, kolačić nije opozvan ili može čak biti sačuvan na disku.
* [**Secure Flag** u kolačićima](../../pentesting-web/hacking-with-cookies/#cookies-flags)
***
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
2023-03-05 19:54:13 +00:00
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
2023-02-27 09:28:45 +00:00
**Hacking Insights**\
Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja.
2023-02-27 09:28:45 +00:00
**Real-Time Hack News**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu.
2023-07-14 15:03:41 +00:00
**Latest Announcements**\
Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platforme.
2023-07-14 15:03:41 +00:00
**Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
2022-10-27 23:22:18 +00:00
## Automatic Analysis
2022-05-01 13:25:53 +00:00
### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)
**Static analysis**
![](<../../.gitbook/assets/image (866).png>)
**Procena ranjivosti aplikacije** koristeći lep web-baziran frontend. Takođe možete izvršiti dinamičku analizu (ali morate pripremiti okruženje).
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
```
Notice that MobSF can analyse **Android**(apk)**, IOS**(ipa) **and Windows**(apx) applications (_Windows aplikacije moraju biti analizirane sa MobSF instaliranim na Windows hostu_).\
Also, if you create a **ZIP** file with the source code if an **Android** or an **IOS** app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also.
MobSF also allows you to **diff/Compare** analysis and to integrate **VirusTotal** (you will need to set your API key in _MobSF/settings.py_ and enable it: `VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`). You can also set `VT_UPLOAD` to `False`, then the **hash** will be **upload** instead of the file.
### Assisted Dynamic analysis with MobSF
**MobSF** can also be very helpful for **dynamic analysis** in **Android**, but in that case you will need to install MobSF and **genymotion** in your host (a VM or Docker won't work). _Napomena: Prvo treba da **pokrenete VM u genymotion** i **onda MobSF.**_\
The **MobSF dynamic analyser** can:
* **Dump application data** (URLs, logs, clipboard, screenshots made by you, screenshots made by "**Exported Activity Tester**", emails, SQLite databases, XML files, and other created files). All of this is done automatically except for the screenshots, you need to press when you want a screenshot or you need to press "**Exported Activity Tester**" to obtain screenshots of all the exported activities.
* Capture **HTTPS traffic**
* Use **Frida** to obtain **runtime** **information**
From android **versions > 5**, it will **automatically start Frida** and will set global **proxy** settings to **capture** traffic. It will only capture traffic from the tested application.
**Frida**
By default, it will also use some Frida Scripts to **bypass SSL pinning**, **root detection** and **debugger detection** and to **monitor interesting APIs**.\
MobSF can also **invoke exported activities**, grab **screenshots** of them and **save** them for the report.
To **start** the dynamic testing press the green bottom: "**Start Instrumentation**". Press the "**Frida Live Logs**" to see the logs generated by the Frida scripts and "**Live API Monitor**" to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing "Start Instrumentation").\
MobSF also allows you to load your own **Frida scripts** (to send the results of your Friday scripts to MobSF use the function `send()`). It also has **several pre-written scripts** you can load (you can add more in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), just **select them**, press "**Load**" and press "**Start Instrumentation**" (you will be able to see the logs of that scripts inside "**Frida Live Logs**").
![](<../../.gitbook/assets/image (419).png>)
Moreover, you have some Auxiliary Frida functionalities:
* **Enumerate Loaded Classes**: It will print all the loaded classes
* **Capture Strings**: It will print all the capture strings while using the application (super noisy)
* **Capture String Comparisons**: Could be very useful. It will **show the 2 strings being compared** and if the result was True or False.
* **Enumerate Class Methods**: Put the class name (like "java.io.File") and it will print all the methods of the class.
* **Search Class Pattern**: Search classes by pattern
* **Trace Class Methods**: **Trace** a **whole class** (see inputs and outputs of all methods of th class). Remember that by default MobSF traces several interesting Android Api methods.
Once you have selected the auxiliary module you want to use you need to press "**Start Intrumentation**" and you will see all the outputs in "**Frida Live Logs**".
**Shell**
Mobsf also brings you a shell with some **adb** commands, **MobSF commands**, and common **shell** **commands** at the bottom of the dynamic analysis page. Some interesting commands:
```bash
help
shell ls
activities
exported_activities
services
receivers
```
2024-02-10 13:11:20 +00:00
**HTTP alati**
Kada se http saobraćaj uhvati, možete videti ružan prikaz uhvaćenog saobraćaja na "**HTTP(S) Traffic**" dnu ili lepši prikaz na "**Start HTTPTools**" zelenom dnu. Iz druge opcije, možete **poslati** **uhvaćene zahteve** na **proksije** kao što su Burp ili Owasp ZAP.\
Da biste to uradili, _uključite Burp -->_ _isključite Intercept --> u MobSB HTTPTools izaberite zahtev_ --> pritisnite "**Send to Fuzzer**" --> _izaberite adresu proksija_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
Kada završite dinamičku analizu sa MobSF, možete pritisnuti na "**Start Web API Fuzzer**" da **fuzz-ujete http zahteve** i tražite ranjivosti.
{% hint style="info" %}
Nakon izvođenja dinamičke analize sa MobSF, podešavanja proksija mogu biti pogrešno konfigurisana i nećete moći da ih popravite iz GUI-a. Možete popraviti podešavanja proksija tako što ćete:
```
adb shell settings put global http_proxy :0
```
{% endhint %}
### Assisted Dynamic Analysis with Inspeckage
2021-07-20 10:40:58 +00:00
Možete preuzeti alat sa [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\
Ovaj alat koristi neke **Hooks** da vam omogući **da znate šta se dešava u aplikaciji** dok vršite **dinamičku analizu**.
2021-07-20 10:40:58 +00:00
2022-05-01 13:25:53 +00:00
### [Yaazhini](https://www.vegabird.com/yaazhini/)
Ovo je **sjajan alat za izvođenje statičke analize sa GUI-jem**
![](<../../.gitbook/assets/image (741).png>)
2022-05-01 13:25:53 +00:00
### [Qark](https://github.com/linkedin/qark)
Ovaj alat je dizajniran da traži nekoliko **ranjivosti vezanih za bezbednost Android aplikacija**, bilo u **izvor kodu** ili **pakovanim APK-ima**. Alat je takođe **sposoban da kreira "Proof-of-Concept" deployable APK** i **ADB komande**, da iskoristi neke od pronađenih ranjivosti (Izložene aktivnosti, intencije, tapjacking...). Kao i sa Drozer-om, nije potrebno root-ovati test uređaj.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
2021-07-31 09:02:13 +00:00
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
```
2022-05-01 13:25:53 +00:00
### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git)
* Prikazuje sve ekstrahovane datoteke za laku referencu
* Automatski dekompajlira APK datoteke u Java i Smali format
* Analizira AndroidManifest.xml za uobičajene ranjivosti i ponašanje
* Staticka analiza izvornog koda za uobičajene ranjivosti i ponašanje
2024-02-10 13:11:20 +00:00
* Informacije o uređaju
* i još mnogo toga
2024-02-08 03:08:28 +00:00
```bash
reverse-apk relative/path/to/APP.apk
```
2022-05-01 13:25:53 +00:00
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPER je aplikacija za komandnu liniju koja se može koristiti na Windows, MacOS X i Linux, koja analizira _.apk_ datoteke u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.
Sva pravila su centrirana u `rules.json` datoteci, a svaka kompanija ili tester može kreirati svoja pravila za analizu onoga što im je potrebno.
Preuzmite najnovije binarne datoteke sa [strane za preuzimanje](https://superanalyzer.rocks/download.html)
```
super-analyzer {apk_file}
```
2022-05-01 13:25:53 +00:00
### [StaCoAn](https://github.com/vincentcox/StaCoAn)
![](<../../.gitbook/assets/image (297).png>)
StaCoAn je **crossplatform** alat koji pomaže programerima, lovcima na greške i etičkim hakerima u izvođenju [static code analysis](https://en.wikipedia.org/wiki/Static\_program\_analysis) na mobilnim aplikacijama.
Koncept je da prevučete i ispustite datoteku vaše mobilne aplikacije (datoteka .apk ili .ipa) na StaCoAn aplikaciju i ona će generisati vizuelni i prenosivi izveštaj za vas. Možete prilagoditi postavke i liste reči kako biste dobili prilagođeno iskustvo.
Preuzmite [najnovije izdanje](https://github.com/vincentcox/StaCoAn/releases):
```
./stacoan
```
2022-05-01 13:25:53 +00:00
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
AndroBugs Framework je sistem za analizu ranjivosti na Androidu koji pomaže programerima ili hakerima da pronađu potencijalne sigurnosne ranjivosti u Android aplikacijama.\
2024-02-10 13:11:20 +00:00
[Windows izdanja](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
```
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
```
2022-05-01 13:25:53 +00:00
### [Androwarn](https://github.com/maaaaz/androwarn)
**Androwarn** je alat čija je glavna svrha da detektuje i upozori korisnika na potencijalno zloćudno ponašanje koje razvija Android aplikacija.
Detekcija se vrši **statčkom analizom** Dalvik bytecode-a aplikacije, predstavljenog kao **Smali**, uz pomoć biblioteke [`androguard`](https://github.com/androguard/androguard).
Ovaj alat traži **uobičajeno ponašanje "loših" aplikacija** kao što su: Ekstrakcija telekomunikacionih identifikatora, presretanje audio/video toka, modifikacija PIM podataka, izvršavanje proizvoljnog koda...
```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
```
### [MARA Framework](https://github.com/xtiankisutsa/MARA\_Framework)
![](<../../.gitbook/assets/image (595).png>)
**MARA** je **M**obila **A**plikacija **R**everzno inženjerstvo i **A**naliza okvir. To je alat koji okuplja uobičajene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP mobilnih bezbednosnih pretnji. Njegov cilj je da ovu zadatak učini lakšim i prijatnijim za programere mobilnih aplikacija i stručnjake za bezbednost.
Može da:
* Izvlači Java i Smali kod koristeći različite alate
* Analizira APK-ove koristeći: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs\_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
* Izvlači privatne informacije iz APK-a koristeći regex.
* Analizira Manifest.
* Analizira pronađene domene koristeći: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) i [whatweb](https://github.com/urbanadventurer/WhatWeb)
* Deobfuskira APK putem [apk-deguard.com](http://www.apk-deguard.com)
2022-05-01 13:25:53 +00:00
### Koodous
Koristan za otkrivanje malvera: [https://koodous.com/](https://koodous.com)
## Obfuskacija/Deobfuskacija koda
Imajte na umu da zavisno od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane.
2021-04-20 15:03:28 +00:00
2022-05-01 13:25:53 +00:00
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
Sa [Vikipedije](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** je open source alat za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. U stanju je da optimizuje bajtkod kao i da detektuje i ukloni neiskorišć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 objavljivanja.
2022-05-03 09:20:29 +00:00
### [DexGuard](https://www.guardsquare.com/dexguard)
Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
2022-05-03 09:20:29 +00:00
(Prema tom vodiču) Poslednji put kada smo proveravali, način rada Dexguard-a bio je:
2022-05-03 09:20:29 +00:00
* učitati resurs kao InputStream;
* proslediti rezultat klasi koja nasleđuje FilterInputStream da bi ga dekriptovali;
* uraditi neku beskorisnu obfuskaciju da bi se izgubilo nekoliko minuta vremena od reverzera;
* proslediti dekriptovani rezultat ZipInputStream-u da bi se dobio DEX fajl;
* konačno učitati dobijeni DEX kao resurs koristeći metodu `loadDex`.
2022-05-03 09:20:29 +00:00
2022-05-01 13:25:53 +00:00
### [DeGuard](http://apk-deguard.com)
**DeGuard obrnuta proces obfuskacije koji izvode Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.**
Možete da otpremite obfuskovani APK na njihovu platformu.
2022-05-01 13:25:53 +00:00
### [Simplify](https://github.com/CalebFenton/simplify)
To je **generički android deobfuskator.** Simplify **virtuelno izvršava aplikaciju** da bi razumeo njeno ponašanje i zatim **pokušava da optimizuje kod** tako da se ponaša identično, ali je lakše za razumevanje ljudima. Svaka vrsta optimizacije je jednostavna i generička, tako da nije važno koja specifična vrsta obfuskacije se koristi.
2022-05-01 13:25:53 +00:00
### [APKiD](https://github.com/rednaga/APKiD)
APKiD vam daje informacije o **kako je APK napravljen**. Identifikuje mnoge **kompilatore**, **pakere**, **obfuskatore** i druge čudne stvari. To je [_PEiD_](https://www.aldeid.com/wiki/PEiD) za Android.
### Manual
[Pročitajte ovaj tutorijal da naučite neke trikove o **kako da obrnuto inženjerstvo prilagođene obfuskacije**](manual-deobfuscation.md)
## Labs
2022-05-01 13:25:53 +00:00
### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b je Android bezbednosna virtuelna mašina zasnovana na ubuntu-mate koja uključuje kolekciju najnovijih okvira, tutorijala i laboratorija od različitih bezbednosnih entuzijasta i istraživača za reverzno inženjerstvo i analizu malvera.
## References
2024-02-08 03:08:28 +00:00
* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) To je odlična lista resursa
* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Brzi kurs o Androidu
* [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
2021-08-19 09:17:14 +00:00
* [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
2024-02-08 03:08:28 +00:00
* [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec)
## Yet to try
2020-09-26 09:34:54 +00:00
* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
2020-09-26 10:35:08 +00:00
* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
2022-04-28 16:01:33 +00:00
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
2023-03-05 19:54:13 +00:00
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
2023-02-27 09:28:45 +00:00
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
2023-02-27 09:28:45 +00:00
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
2023-02-27 09:28:45 +00:00
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
2022-10-27 23:22:18 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2024-01-03 10:43:38 +00:00
</details>
{% endhint %}