Android Applications Pentesting
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnove Android aplikacija
Toplo 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:
ADB (Android Debug Bridge)
Ovo je glavni alat koji vam treba za povezivanje sa Android uređajem (emuliranim ili fizičkim).
ADB omogućava kontrolu uređaja preko USB ili mreže sa računara. Ovaj alat omogućava kopiranje fajlova u oba smera, instalaciju i deinstalaciju aplikacija, izvršavanje shell komandi, pravljenje rezervnih kopija podataka, čitanje logova, između ostalih funkcija.
Pogledajte sledeću listu ADB Commands da naučite kako da koristite adb.
Smali
Ponekad je interesantno izmeniti kod aplikacije kako biste pristupili skrivenim informacijama (možda dobro obfuskovanim lozinkama ili flagovima). Zbog toga može biti korisno dekompilirati apk, izmeniti kod i ponovo ga kompajlirati.
In this tutorial you can learn how to decompile and APK, modify Smali code and recompile the APK with the new functionality. Ovo može biti veoma korisno kao alternativa za nekoliko testova tokom dinamičke analize koji će biti predstavljeni. Zbog toga, uvek imajte na umu ovu mogućnost.
Ostali zanimljivi trikovi
- Spoofing your location in Play Store
- Play Integrity attestation spoofing (SafetyNet replacement)
- Android app-level virtualization / app cloning abuse & detection
- Shizuku Privileged API (ADB-based non-root privileged access)
- Exploiting Insecure In-App Update Mechanisms
- Abusing Accessibility Services (Android RAT)
- Android IME / InputMethodService Abuse (Malicious Keyboards)
- NFC/EMV Relay via HCE (Android Tap-to-Pay abuse)
- Preuzimanje APK-ova: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/, https://github.com/kiber-io/apkd
Automatizovano pribavljanje APK-ova iz više izvora (justapk)
pip install justapk (Python 3.11+). CLI ispisuje JSON na stdout i napredak na stderr (pogodno za pipe). Pokušava deterministički fallback lanac preko APK20 → F-Droid → APKPure (mobile API) → APKMirror (HTML scrape) → Uptodown (mobile API) → APKCombo (HTML scrape). Izvori zaštićeni Cloudflare koriste curl_cffi sa impersonacijom TLS fingerprinta da oponašaju prave klijente i smanje blokade zbog detekcije botova.
justapk download <package> # auto fallback
justapk download <package> -s apkpure # pin a source / version / output dir
justapk search telegram
justapk info org.telegram.messenger
justapk convert app.xapk -o output/ # merges splits, re-signs with debug key
convert spaja XAPK/split APKs i potpisuje ih sa debug key, tako da se nastali APK potpis/poreklo razlikuje od originala (koristiti za testiranje/analizu, ne za produkcijske instalacije).
- Izvuci APK sa uređaja:
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
- Spojite sve splits i base apks pomoću APKEditor:
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
Tehnike Android malware-a (loaders, fileless DEX, persistence)
Native staging + fileless DEX loaders
Neki Android dropperi embeduju native biblioteku (lib*.so) koja dešifruje i upisuje drugi ELF (npr. l.so) u privremenu putanju, učitava ga preko JNI, i zatim učitava stvarnu logiku kao DEX samo u memoriji koristeći dalvik.system.InMemoryDexClassLoader. Ovo smanjuje statičku vidljivost payload-a i izbegava upisivanje classes*.dex na disk.
Praktične smernice za trijažu:
- Tražite native libove koji pozivaju
dlopeniliSystem.loadLibraryvrlo rano, zatim rešavaju Java metode preko obfuskovanih stringova na steku (npr. XOR dešifrovano na steku). - Obratite pažnju na
InMemoryDexClassLoaderu logovima/stringovima ili hooks, što ukazuje na fileless DEX izvršavanje.
Kratak Frida hook za dump in‑memory DEX buffera:
Java.perform(() => {
const IM = Java.use('dalvik.system.InMemoryDexClassLoader');
IM.$init.overload('java.nio.ByteBuffer','java.lang.ClassLoader').implementation = function(buf, parent){
const arr = Java.array('byte', buf.array());
const fos = Java.use('java.io.FileOutputStream').$new("/sdcard/memdex.dex");
fos.write(arr); fos.close();
return this.$init(buf, parent);
};
});
Anti-analysis kill-switch
Packed loaders često self-terminate kada provere emulatora ili analize ne uspeju (npr. validacija CPU_ABI) pozivom:
android.os.Process.killProcess(android.os.Process.myPid());
Persistence via foreground service + MediaPlayer loop
Jedan lagani obrazac za persistence je da se održava foreground service aktivnim sa pinned notification i kontinuirano reprodukuje skoro-nečujni audio loop preko MediaPlayer. Ovo održava proces „aktivnim“ i smanjuje ubijanja procesa od strane OS-a zbog neaktivnosti. Potražite upotrebu ForegroundService + MediaPlayer koja vrti mali asset (često dug samo nekoliko sekundi).
Accessibility overlay + ACTION_SET_TEXT hijacking
Nakon što korisnik omogući Accessibility, banking trojanci mogu nadgledati foreground app, prikazati realističan overlay (često WebView HTML sačuvan kao Base64) i zameniti polja transakcije koristeći AccessibilityNodeInfo.ACTION_SET_TEXT. Ovo omogućava tihu zamenu adrese primaoca dok žrtva vidi verodostojan UI.
Minimalni primer zamene teksta:
Bundle args = new Bundle();
args.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
"ATTACKER_USDT_ADDRESS");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, args);
Legitimna push infrastruktura kao C2 gating
Umesto prilagođenih soketa, neki malware koristi Firebase Cloud Messaging (FCM) kao C2 kanal. FCM poruke mogu pokretati telemetry provere (stanje punjenja, battery %, temperatura, neaktivnost korisnika) i gate akcije kao što su mining ili fraud radi prikrivanja.
Encrypted native payload staging with filename‑derived keys
Native payloads mogu biti isporučeni kao šifrovani ELF blobovi i dešifrovani pomoću CipherInputStream(), koristeći ključ derived from SHA‑1 of the downloaded filename. Svako filename/version daje jedinstven ključ, otežavajući ponovnu upotrebu statičkih IOC-ova.
Jezail rooted Android pentesting toolkit (REST API + web UI)
- Radi na rooted device (Magisk/rootAVD) i pokreće HTTP server on tcp/8080 sa Flutter web UI i REST API.
- Install the release APK with perms:
adb install -g -r jezail.apk, then launch the app (server auto-starts). - Endpoints:
http://<device-ip>:8080/(UI),http://<device-ip>:8080/api/json(API listing),http://<device-ip>:8080/api/swagger(Swagger). - Emulator port-forward to reach UI/API from the host:
adb forward tcp:8080 tcp:8080then browsehttp://localhost:8080.
Android Enterprise & Work Profile Attacks
Android Enterprise Work Profile Bypass
Case Studies & Vulnerabilities
Air Keyboard Remote Input Injection
Android Rooting Frameworks Manager Auth Bypass Syscall Hook
Abusing Android Media Pipelines Image Parsers
Firmware Level Zygote Backdoor Libandroid Runtime
Static Analysis
Pre svega, za analysing an APK trebalo bi da pogledate Java kod koristeći decompiler.
Molimo, read here to find information about different available decompilers.
Looking for interesting Info
Samo pregledom strings APK-a možete tražiti passwords, URLs (https://github.com/ndelphit/apkurlgrep), api keys, encryption, bluetooth uuids, tokens i sve drugo interesantno… tražite čak i code execution backdoors ili authentication backdoors (hardcoded admin credentials to the app).
Firebase
Obratite posebnu pažnju na firebase URLs i proverite da li je loše konfigurisano. More information about whats is FIrebase and how to exploit it here.
Basic understanding of the application - Manifest.xml, strings.xml
The Pregled of an application’s Manifest.xml and strings.xml files can reveal potential security vulnerabilities. Ovi fajlovi se mogu pristupiti pomoću decompilera ili preimenovanjem APK ekstenzije u .zip i raspakivanjem.
Vulnerabilities identified from the Manifest.xml include:
- Debuggable Applications: Aplikacije postavljene kao debuggable (
debuggable="true") u Manifest.xml predstavljaju rizik jer omogućavaju konekcije koje mogu dovesti do eksploatacije. Za dalje razumevanje kako eksploatirati debuggable aplikacije, pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija na uređaju. - Backup Settings: The
android:allowBackup="false"attribute treba eksplicitno postaviti za aplikacije koje rade sa osetljivim informacijama kako bi se sprečile neovlašćene rezervne kopije podataka putem adb-a, posebno kada je usb debugging omogućen. - Network Security: Custom network security configurations (
android:networkSecurityConfig="@xml/network_security_config") u res/xml/ mogu specificirati bezbednosne detalje poput certificate pins i HTTP traffic podešavanja. Primer je dozvoljavanje HTTP saobraćaja za određene domene. - Exported Activities and Services: Identifikovanje exported activities and services u manifestu može istaći komponente koje bi mogle biti zloupotrebljene. Dalja analiza tokom dynamic testing-a može otkriti kako eksploatisati ove komponente.
- Content Providers and FileProviders: Izloženi content providers mogu omogućiti neovlašćen pristup ili izmenu podataka. Konfiguracija FileProviders takođe treba biti pažljivo pregledana.
- Broadcast Receivers and URL Schemes: Ove komponente mogu biti iskorišćene za eksploataciju, sa posebnom pažnjom na to kako su URL schemes upravljane zbog input ranjivosti.
- SDK Versions:
minSdkVersion,targetSDKVersion, imaxSdkVersionatributi ukazuju na podržane Android verzije, naglašavajući značaj ne podržavanja zastarelih, ranjivih Android verzija iz bezbednosnih razloga.
Iz strings.xml fajla mogu se otkriti osetljivi podaci poput API keys, custom schemas i drugih developerskih beleški, što naglašava potrebu za pažljivim pregledom ovih resursa.
Tapjacking
Tapjacking je napad gde se pokreće maliciozna aplikacija i pozicionira iznad aplikacije žrtve. Kada vizuelno zakloni aplikaciju žrtve, njen korisnički interfejs je dizajniran tako da prevari korisnika da sa njim interaguje, dok istovremeno prosleđuje interakciju stvarnoj aplikaciji žrtve.
U suštini, to oslepljuje korisnika da zna da zapravo izvršava akcije na aplikaciji žrtve.
Find more information in:
Task Hijacking
An activity sa launchMode podešenim na singleTask bez definisanog taskAffinity je podložna task Hijacking-u. To znači da se aplikacija može instalirati i ako se pokrene pre prave aplikacije može hijack-ovati task prave aplikacije (tako da će korisnik interagovati sa malicioznom aplikacijom misleći da koristi pravu).
More info in:
Insecure data storage
Interna memorija
U Androidu, fajlovi stored u internal storage su dizajnirani da budu dostupni isključivo aplikaciji koja ih je kreirala. Ova bezbednosna mera je enforced od strane Android operativnog sistema i generalno je adekvatna za bezbednosne potrebe većine aplikacija. Međutim, developeri ponekad koriste režime kao što su MODE_WORLD_READABLE i MODE_WORLD_WRITABLE da allow fajlovima da budu shared između različitih aplikacija. Ipak, ovi režimi ne ograničavaju pristup ovim fajlovima od strane drugih aplikacija, uključujući potencijalno maliciozne.
- Static Analysis:
- Ensure da se upotreba
MODE_WORLD_READABLEiMODE_WORLD_WRITABLEpažljivo preispita. Ovi režimi mogu potencijalno izložiti fajlove nenamernom ili neovlašćenom pristupu.
- Dynamic Analysis:
- Verify permissions postavljene na fajlovima koje aplikacija kreira. Konkretno, proverite da li su neki fajlovi set to be readable or writable worldwide. Ovo može predstavljati značajan bezbednosni rizik, jer bi omogućilo bilo kojoj aplikaciji instaliranoj na uređaju, bez obzira na poreklo ili nameru, da read or modify ove fajlove.
Eksterno skladište
Kada radite sa fajlovima na external storage, kao što su SD kartice, treba preduzeti određene mere:
- Accessibility:
- Fajlovi na external storage su globally readable and writable. To znači da bilo koja aplikacija ili korisnik može pristupiti ovim fajlovima.
- Security Concerns:
- Zbog lakoće pristupa, se ne preporučuje čuvanje osetljivih informacija na external storage.
- External storage se može ukloniti ili pristupiti od strane bilo koje aplikacije, čineći ga manje sigurnim.
- Handling Data from External Storage:
- Uvek perform input validation na podatke preuzete sa external storage. Ovo je ključno jer podaci dolaze iz nepouzdanog izvora.
- Čuvanje executables ili class fajlova na external storage za dinamičko učitavanje se snažno ne preporučuje.
- Ako vaša aplikacija mora da preuzme executable fajlove sa external storage, osigurajte da su ti fajlovi signed and cryptographically verified pre nego što budu dinamčki učitani. Ovaj korak je vitalan za održavanje bezbednosnog integriteta aplikacije.
External storage se može pristupiti u /storage/emulated/0 , /sdcard , /mnt/sdcard
Tip
Počevši od Android 4.4 (API 17), SD kartica ima strukturu direktorijuma koja ograničava pristup aplikacije samo na direktorijum koji je namenjen toj aplikaciji. Ovo sprečava maliciozne aplikacije da dobiju read ili write pristup fajlovima druge aplikacije.
Sensitive data stored in clear-text
- Shared preferences: Android dozvoljava svakoj aplikaciji da lako sačuva xml fajlove u putanji
/data/data/<packagename>/shared_prefs/i ponekad je moguće pronaći osetljive informacije u clear-text u tom folderu. - Databases: Android dozvoljava svakoj aplikaciji da lako sačuva sqlite baze u putanji
/data/data/<packagename>/databases/i ponekad je moguće pronaći osetljive informacije u clear-text u tom folderu.
Broken TLS
Accept All Certificates
Iz nekog razloga, ponekad developeri prihvataju sve sertifikate čak i kada, na primer, hostname ne odgovara, sa linijama koda poput sledeće:
SSLSocketFactory sf = new cc(trustStore);
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.
Slaba kriptografija
Loši procesi upravljanja ključevima
Neki developeri čuvaju osetljive podatke u lokalnom skladištu i enkriptuju ih ključem koji je hardkodiran/predvidiv u kodu. Ovo ne bi trebalo raditi jer reverzno inženjerstvo može omogućiti napadačima da izvuku poverljive informacije.
Korišćenje nebezbednih i/ili zastarelih algoritama
Developeri ne bi trebalo da koriste zastarele algoritme za izvršavanje autorizacionih provera, čuvanje ili slanje podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1… Ako se hešovi koriste za čuvanje lozinki, na primer, treba koristiti hešove otpornije na brute-force zajedno sa salt-om.
Ostale provere
- Preporučuje se da se obfuscate the APK kako bi se otežao posao reverznim inženjerima i napadačima.
- Ako je aplikacija osetljiva (npr. bankarske aplikacije), treba da izvrši svoje sopstvene provere da li je uređaj root-ovan i postupi u skladu s tim.
- Ako je aplikacija osetljiva (npr. bankarske aplikacije), treba da proveri da li se koristi emulator.
- Ako je aplikacija osetljiva (npr. bankarske aplikacije), treba da proveri sopstveni integritet pre izvršavanja kako bi utvrdila da li je izmenjena.
- Use APKiD to check which compiler/packer/obfuscator was used to build the APK
React Native Application
Read the following page to learn how to easily access javascript code of React applications:
Xamarin Applications
Read the following page to learn how to easily access C# code of a xamarin applications:
Superpacked Applications
According to this blog post 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
The tool mariana-trench is capable of finding ranjivosti by skeniranje the koda of the application. This tool contains a series of poznatih izvora (koji označavaju alatima mesta gde je input kontrolisan od strane korisnika), sinks (koji označavaju alatima opasna mesta gde zlonameran unos korisnika može prouzrokovati štetu) i pravila. Ova pravila označavaju kombinaciju izvora-sinkova koja ukazuje na ranjivost.
Sa ovim znanjem, mariana-trench će pregledati kod i pronaći moguće ranjivosti u njemu.
Secrets leaked
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
Bypass Biometric Authentication
Bypass Biometric Authentication (Android)
Other interesting functions
- Izvršavanje koda:
Runtime.exec(), ProcessBuilder(), native code:system() - Slanje SMS-ova:
sendTextMessage, sendMultipartTestMessage - Native funkcije deklarisane kao
native:public native, System.loadLibrary, System.load - Read this to learn how to reverse native functions
- In-memory native code execution via JNI (downloaded shellcode → mmap/mprotect → call):
In Memory Jni Shellcode Execution
Other tricks
Dinamička analiza
Prvo, potrebna vam je sredina u kojoj možete instalirati aplikaciju i kompletno okruženje (Burp CA cert, Drozer i Frida pre svega). Zbog toga, root-ovan uređaj (emuliran ili ne) je izuzetno preporučen.
Online Dynamic analysis
You can create a free account in: 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.
.png)
Thanks to the ADB connection you can use Drozer and Frida inside the emulators.
Lokalna dinamička analiza
Korišćenje emulatora
- Android Studio (Možete kreirati x86 i arm uređaje, i prema ovomenajnovije x86 verzije podržavaju ARM biblioteke bez potrebe za sporim arm emulatorom).
- Learn to set it up in this page:
- Genymotion (Free version: Personal Edition, you need to create an account. It’s recommend to download the version WITH VirtualBox to avoid potential errors.)
- Nox (Free, but it doesn’t support Frida or Drozer).
Tip
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.
To install google services (like AppStore) in Genymotion you need to click on the red marked button of the following image:
.png)
Also, notice that in the configuration of the Android VM in Genymotion you can select Bridge Network mode (this will be useful if you will be connecting to the Android VM from a different VM with the tools).
Use a physical device
You need to activate the debugging options and it will be cool if you can root it:
- Settings.
- (FromAndroid 8.0) Select System.
- Select About phone.
- Press Build number 7 times.
- Go back and you will find the Developer options.
Once you have installed the application, the first thing you should do is to try it and investigate what does it do, how does it work and get comfortable with it.
I will suggest to perform this initial dynamic analysis using MobSF dynamic analysis + pidcat, so we will be able to learn how the application works while MobSF captures a lot of interesting data you can review later on.
Magisk/Zygisk quick notes (recommended on Pixel devices)
- Patch boot.img with the Magisk app and flash via fastboot to get systemless root
- Enable Zygisk + DenyList for root hiding; consider LSPosed/Shamiko when stronger hiding is required
- Keep original boot.img to recover from OTA updates; re-patch after each OTA
- For screen mirroring, use scrcpy on the host
Neplanirano leak-ovanje podataka
Logging
Developeri treba da budu oprezni sa izlaganjem debugging informacija javno, jer to može dovesti do curenja osetljivih podataka. Alati pidcat i adb logcat se preporučuju za praćenje logova aplikacije kako biste identifikovali i zaštitili osetljive informacije. Pidcat je favorit zbog jednostavnosti upotrebe i čitljivosti.
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.
Keširanje međuspomenika (clipboard)
Android-ov okvir zasnovan na clipboard-u omogućava funkcionalnost kopiranja/pejstovanja u aplikacijama, ali predstavlja rizik jer druge aplikacije mogu pristupiti clipboard-u, potencijalno otkrivajući osetljive podatke. Vrlo je važno onemogućiti copy/paste funkcije za osetljive delove aplikacije, kao što su podaci o kreditnim karticama, kako bi se sprečilo leak-ovanje podataka.
Crash logovi
Ako aplikacija padne i sačuva logove, ti logovi mogu pomoći napadačima, naročito kada aplikacija ne može biti reverzno inženjerisana. Da bi se umanjio ovaj rizik, izbegavajte logovanje pri padovima, a ako logovi moraju biti poslati preko mreže, obezbedite njihovo slanje putem SSL kanala.
As pentester, try to take a look to these logs.
Analitički podaci poslati trećim stranama
Aplikacije često integrišu servise poput Google Adsense, koji mogu nenamerno leak osetljive podatke zbog nepravilne implementacije od strane developera. Da biste identifikovali potencijalna leak-ovanja podataka, preporučuje se da interceptujete saobraćaj aplikacije i proverite da li se bilo kakve osetljive informacije šalju trećim stranama.
SQLite DBs
Većina aplikacija koristi internu SQLite bazu za čuvanje informacija. Tokom pentest-a pogledajte baze podataka koje su kreirane, imena tabela i kolona i sve sačuvane podatke, jer možete pronaći osetljive informacije (što bi predstavljalo ranjivost).
Baze podataka bi trebale biti locirane u /data/data/the.package.name/databases kao npr. /data/data/com.mwr.example.sieve/databases
Ako baza podataka čuva poverljive informacije i šifrovana je, ali možete pronaći lozinku unutar aplikacije, to je i dalje ranjivost.
Enumerišite tabele koristeći .tables i enumerišite kolone tabela pomoću .schema <table_name>
Drozer (Exploit Activities, Content Providers and Services)
From Drozer Docs: 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 Android’s 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.
Eksploatisanje exported Activities
Read this if you want to refresh what is an Android Activity.
Takođe setite se da kod Activity-ja počinje u metodi onCreate.
Zaobilaženje autorizacije
Kada je Activity exported, možete pokrenuti njen ekran iz eksternе aplikacije. Dakle, ako je activity sa osetljivim informacijama exported, možete bypass-ovati mehanizme autentikacije kako biste mu pristupili.
Learn how to exploit exported activities with Drozer.
Takođe možete pokrenuti exported activity iz adb-a:
- PackageName is com.example.demo
- Exported ActivityName is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
NAPOMENA: MobSF will detect as malicious the use of singleTask/singleInstance as android:launchMode in an activity, but due to this, apparently this is only dangerous on old versions (API versions < 21).
Tip
Imajte na umu da authorisation bypass nije uvek ranjivost; zavisi od načina na koji bypass funkcioniše i koje informacije su izložene.
Curenje osetljivih informacija
Activities can also return results. Ako uspete da pronađete izvezenu i nezaštićenu activity koja poziva metodu setResult i vraća osetljive informacije, dolazi do curenja osetljivih informacija.
Tapjacking
Ako Tapjacking nije sprečen, možete zloupotrebiti izvezenu activity da naterate korisnika da izvrši neočekivane akcije. Za više informacija o what is Tapjacking follow the link.
Exploiting Content Providers - Accessing and manipulating sensitive information
Pročitajte ovo ako želite da obnovite šta je a Content Provider.
Content providers se u suštini 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 korisno testirati moguće SQL injections i Path Traversals jer mogu biti ranjivi.
Saznajte kako da eksploatišete Content Providers pomoću Drozer.
Exploiting Services
Pročitajte ovo ako želite da obnovite šta je a Service.
Zapamtite da akcije Service počinju u metodi onStartCommand.
Service je u osnovi nešto što može primati podatke, procesuirati ih i vraćati (ili ne) odgovor. Dakle, ako aplikacija izveze neke services trebalo bi da proverite kod da biste razumeli šta radi i testirate ga dinamički radi izvlačenja poverljivih informacija, zaobilaženja mera autentifikacije… Saznajte kako da eksploatišete Services pomoću Drozer.
Exploiting Broadcast Receivers
Pročitajte ovo ako želite da obnovite šta je a Broadcast Receiver.
Zapamtite da akcije Broadcast Receiver počinju u metodi onReceive.
Broadcast receiver će čekati određenu vrstu poruke. U zavisnosti od toga kako receiver obrađuje poruku, može biti ranjiv.
Saznajte kako da eksploatišete Broadcast Receivers pomoću Drozer.
Exploiting Schemes / Deep links
Možete ručno tražiti deep links, koristeći alate kao što su MobSF ili skripte kao this one.
Možete otvoriti deklarisani scheme koristeći adb ili browser:
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
Imajte na umu da možete izostaviti naziv paketa i mobilni uređaj će automatski pokrenuti aplikaciju koja treba da otvori tu vezu.
<!-- 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>
Kod koji se izvršava
Da biste pronašli kod koji će se izvršiti u App-u, idite na aktivnost koju poziva deeplink i potražite funkciju onNewIntent.
 (1) (1) (1).png)
Osetljive informacije
Svaki put kada nađete deep link proverite da li on ne prima osetljive podatke (npr. lozinke) putem URL parametara, jer bilo koja druga aplikacija može lažno se predstaviti kao taj deep link i ukrasti te podatke!
Parametri u putanji
Takođe morate proveriti da li neki deep link koristi parametar unutar putanje URL-a kao npr: https://api.example.com/v1/users/{username}, u tom slučaju možete prisiliti path traversal pristupom nečemu poput: example://app/users?username=../../unwanted-endpoint%3fparam=value .
Imajte na umu da, ako pronađete odgovarajuće endpoint-e unutar aplikacije, možete izazvati Open Redirect (ako se deo putanje koristi kao domen), account takeover (ako možete izmeniti detalje korisnika bez CSRF tokena i ranjivi endpoint koristi odgovarajuću metodu) i druge ranjivosti. Više info about this here.
Više primera
Zanimljiv bug bounty report o linkovima (/.well-known/assetlinks.json).
Inspekcija transportnog sloja i greške u verifikaciji
- Sertifikati nisu uvek pravilno proveravani od strane Android aplikacija. Često ove aplikacije ignorišu upozorenja i prihvataju self-signed certificates ili, u nekim slučajevima, vraćaju se na korišćenje HTTP konekcija.
- Pregovori tokom SSL/TLS handshake-a ponekad su slabi, koristeći nesigurne cipher suite-ove. Ova ranjivost čini konekciju podložnom man-in-the-middle (MITM) napadima, omogućavajući napadačima da dekriptuju podatke.
- Curjenje privatnih informacija predstavlja rizik kada se aplikacije autentifikuju koristeći sigurne kanale, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovakav pristup ne uspeva da zaštiti osetljive podatke, kao što su session cookies ili podaci o korisniku, od presretanja od strane malicioznih entiteta.
Verifikacija sertifikata
Fokusiraćemo se na verifikaciju sertifikata. Integritet serverskog sertifikata mora biti potvrđen radi povećanja sigurnosti. Ovo je ključno zato što nesigurne TLS konfiguracije i prenos osetljivih podataka preko nekriptovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o verifikaciji serverskih sertifikata i otklanjanju ranjivosti, this resource pruža sveobuhvatne smernice.
SSL Pinning
SSL Pinning je bezbednosna mera gde aplikacija proverava serverski sertifikat u odnosu na poznatu kopiju uskladištenu unutar same aplikacije. Ova metoda je bitna za sprečavanje MITM napada. Implementacija SSL Pinning-a se snažno preporučuje za aplikacije koje rukovode osetljivim informacijama.
Inspekcija saobraćaja
Za inspekciju HTTP saobraćaja neophodno je instalirati sertifikat proxy alata (npr. Burp). Bez instaliranja tog sertifikata, kriptovani saobraćaj možda neće biti vidljiv preko proxy-a. Za vodič o instaliranju custom CA sertifikata, kliknite ovde.
Aplikacije koje targetuju API Level 24 and above zahtevaju izmene u Network Security Config-u kako bi prihvatile CA sertifikat proxy-a. Ovaj korak je ključan za inspekciju kriptovanog saobraćaja. Za instrukcije o izmeni Network Security Config-a, refer to this tutorial.
Ako se koristi Flutter, potrebno je pratiti instrukcije na ovoj stranici. Razlog je što samo dodavanje sertifikata u store neće funkcionisati jer Flutter ima sopstvenu listu validnih CAs.
Statičko otkrivanje SSL/TLS pinning-a
Pre nego što pokušate runtime bypass-ove, brzo mapirajte gde je pinning primenjen u APK-u. Statičko otkrivanje pomaže da isplanirate hook-ove/patch-e i fokusirate se na prave code path-ove.
Tool: SSLPinDetect
- Open-source statički alat za analizu koji dekompajlira APK u Smali (preko apktool) i skenira kurirane regex pattern-e implementacija SSL/TLS pinning-a.
- Izveštava tačnu putanju fajla, broj linije i isecak koda za svako poklapanje.
- Pokriva uobičajene framework-e i custom code path-ove: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init with custom TrustManagers/KeyManagers, and Network Security Config XML pins.
Install
- Zahtevi: Python >= 3.8, Java na PATH-u, apktool
git clone https://github.com/aancw/SSLPinDetect
cd SSLPinDetect
pip install -r requirements.txt
Korišćenje
# Basic
python sslpindetect.py -f app.apk -a apktool.jar
# Verbose (timings + per-match path:line + snippet)
python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v
Primer pattern pravila (JSON) Koristite ili proširite signatures da biste detektovali proprietary/custom pinning stilove. Možete učitati svoj JSON i scan at scale.
{
"OkHttp Certificate Pinning": [
"Lcom/squareup/okhttp/CertificatePinner;",
"Lokhttp3/CertificatePinner;",
"setCertificatePinner"
],
"TrustManager Override": [
"Ljavax/net/ssl/X509TrustManager;",
"checkServerTrusted"
]
}
Napomene i saveti
- Brzo skeniranje velikih aplikacija pomoću multithreadinga i memory-mapped I/O; pre-kompajlirani regex smanjuje režiju i lažno pozitivne rezultate.
- Pattern collection: https://github.com/aancw/smali-sslpin-patterns
- Tipični ciljevi detekcije za dalje razmatranje:
- OkHttp: CertificatePinner usage, setCertificatePinner, okhttp3/okhttp package references
- Custom TrustManagers: javax.net.ssl.X509TrustManager, checkServerTrusted overrides
- Custom SSL contexts: SSLContext.getInstance + SSLContext.init with custom managers
- Declarative pins in res/xml network security config and manifest references
- Iskoristite pronađene lokacije za planiranje Frida hooks, statičkih patch-eva ili pregleda konfiguracija pre dinamičkog testiranja.
Zaobilaženje SSL Pinning-a
Kada je SSL Pinning implementiran, potrebno ga je zaobići da bi se pregledao HTTPS saobraćaj. Za ovu svrhu postoje različite metode:
- Automatski izmenite apk da zaobiđete SSLPinning pomoću apk-mitm. Najveća prednost ove opcije je što vam neće trebati root da biste zaobišli SSL Pinning, ali ćete morati deinstalirati aplikaciju i ponovo instalirati novu, i ovo neće uvek raditi.
- Možete koristiti Frida (obrađeno dole) da zaobiđete ovu zaštitu. Evo vodiča za korišćenje Burp+Frida+Genymotion: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- Takođe možete pokušati automatski da zaobiđete SSL Pinning koristeći objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable" - Takođe možete pokušati automatski da zaobiđete SSL Pinning koristeći MobSF dynamic analysis (objašnjeno dole)
- Ako i dalje mislite da postoji saobraćaj koji ne hvatate, možete pokušati da prosledite saobraćaj ka burp-u koristeći iptables. Pročitajte ovaj blog: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62
Traženje uobičajenih web ranjivosti
Važno je takođe pretražiti aplikaciju za uobičajene web ranjivosti. Detaljne informacije o identifikaciji i ublažavanju ovih ranjivosti su izvan opsega ovog sažetka, ali su opširno pokrivene drugde.
Frida
Frida je alatka za dinamičku instrumentaciju za developere, reverse-engineere i security istraživače.
Možete pristupiti pokrenutoj aplikaciji i hook-ovati metode u runtime-u da promenite ponašanje, menjate vrednosti, ekstrahujete vrednosti, pokrećete drugi kod…
Ako želite da pentestirate Android aplikacije, morate znati kako da koristite Frida.
- Naučite kako da koristite Frida: Frida tutorial
- Neki “GUI” za rad sa Frida: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Objection je odličan za automatizaciju korišćenja Frida: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Možete pronaći neke Awesome Frida skripte ovde: https://codeshare.frida.re/
- Pokušajte da zaobiđete anti-debugging / anti-frida mehanizme učitavanjem Frida na način opisan u https://erfur.github.io/blog/dev/code-injection-without-ptrace (alat linjector)
Anti-instrumentation & SSL pinning bypass workflow
Android Anti Instrumentation And Ssl Pinning Bypass
Dump memorije - Fridump
Proverite da li aplikacija čuva osetljive informacije u memoriji koje ne bi trebalo da čuva, kao što su lozinke ili mnemonics.
Using Fridump3 you can dump the memory of the app with:
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
Ovo će dump memoriju u ./dump folder, i tamo 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]+$"
Osetljivi podaci u Keystore-u
U Androidu, Keystore je najbolje mesto za čuvanje osetljivih podataka, ali uz dovoljne privilegije i dalje je moguće pristupiti. Pošto aplikacije često ovde čuvaju sensitive data in clear text, pentesti bi trebalo da to provere, jer root korisnik ili neko sa fizičkim pristupom uređaju može da ukrade te podatke.
Čak i ako aplikacija skladišti podatke u Keystore-u, podaci bi trebalo da budu šifrovani.
Za pristup 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
Fingerprint/Biometrics Bypass
Korišćenjem sledećeg Frida skripta moguće je bypass fingerprint authentication koje Android aplikacije mogu sprovoditi kako bi zaštitile određene osetljive oblasti:
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
Pozadinske slike
Kada aplikaciju pošaljete u pozadinu, Android sačuva snapshot of the application tako da kad se vrati u foreground počne da učitava sliku pre same aplikacije, pa deluje kao da je aplikacija učitana brže.
Međutim, ako ovaj snapshot sadrži osetljive informacije, neko ko ima pristup snapshot-u može ukrasti te podatke (napomena: potreban je root za pristup).
Snapshots se obično čuvaju na lokaciji: /data/system_ce/0/snapshots
Android omogućava način da se spreči screenshot capture podešavanjem FLAG_SECURE layout parametra. Korišćenjem ovog flag-a, sadržaj prozora se tretira kao siguran, sprečavajući njegovo pojavljivanje u screenshots ili pregled na non-secure displays.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Android Application Analyzer
Ovaj alat može pomoći pri upravljanju različitim alatima tokom dinamičke analize: https://github.com/NotSoSecure/android_application_analyzer
Intent Injection
Programeri često prave proxy komponente kao što su activities, services i broadcast receivers koje obrađuju ove Intente i prosleđuju ih metodama kao što su startActivity(...) ili sendBroadcast(...), što može biti rizično.
Opasnost leži u tome što napadači mogu pokrenuti non-exported komponente aplikacije ili pristupiti osetljivim content providers tako što će pogrešno usmeriti ove Intente. Značajan primer je WebView komponenta koja pretvara URL-ove u Intent objekte putem Intent.parseUri(...) i zatim ih izvršava, što potencijalno može dovesti do malicioznih Intent injections.
Ključne napomene
- Intent Injection je sličan web Open Redirect issue-u.
- Eksploatacije uključuju prosleđivanje
Intentobjekata kao extras, koji se mogu preusmeriti da izvrše nesigurne operacije. - Može izložiti non-exported komponente i content providers napadačima.
WebView-ova konverzija URL-ova uIntentmože omogućiti neželjene akcije.
Android Client Side Injections i ostalo
Verovatno znate za ovu vrstu ranjivosti sa Web-a. Treba biti posebno oprezan sa ovim ranjivostima u Android aplikaciji:
- SQL Injection: Kada radite sa dinamičkim upitima ili Content-Providers, osigurajte da koristite parameterized queries.
- JavaScript Injection (XSS): Proverite da je JavaScript i podrška za Plugin-ove onemogućena za sve WebView-e (disabled by default). More info here.
- Local File Inclusion: WebView-ovima treba onemogućiti pristup fajl sistemu (enabled by default) -
(webview.getSettings().setAllowFileAccess(false);). More info here. - Eternal cookies: U više slučajeva, kada android aplikacija završi sesiju, cookie nije opozvan ili čak može biti sačuvan na disku
- Secure Flag in cookies
Automatska analiza
MobSF
Static analysis
.png)
Procena ranjivosti aplikacije koristeći lep web-based frontend. 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
Notice that MobSF can analyse Android(apk), IOS(ipa) and Windows(apx) applications (Windows applications must be analyzed from a MobSF installed in a Windows host).
Also, if you create a ZIP file with the source code if an Android or an IOS app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also.
MobSF 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.
Asistirana dinamička analiza sa MobSF
MobSF može biti veoma koristan za dinamičku analizu na Android, ali u tom slučaju morate instalirati MobSF i genymotion na vaš host (a VM ili Docker neće raditi). Note: You need to start first a VM in genymotion and then MobSF.
MobSF dinamički analizator može:
- 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.
- Snimati HTTPS traffic
- Koristiti Frida da bi se dobile 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”).
.png)
Moreover, you have some Auxiliary Frida functionalities:
- Enumerate Loaded Classes: Ispisaće sve učitane klase
- Capture Strings: Ispisaće sve uhvaćene stringove tokom korišćenja aplikacije (veoma bučno)
- Capture String Comparisons: Može biti veoma korisno. Pokazaće 2 stringa koji se porede i da li je rezultat True ili False.
- Enumerate Class Methods: Unesite ime klase (like “java.io.File”) i ispišaće sve metode te klase.
- Search Class Pattern: Pretražuje klase po patternu
- Trace Class Methods: Trace celu klasu (vidi ulaze i izlaze svih metoda te klase). Zapamtite da po defaultu MobSF traces nekoliko interesantnih Android Api metoda.
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:
help
shell ls
activities
exported_activities
services
receivers
HTTP alati
Kada se HTTP saobraćaj snimi, možete videti ružan prikaz zabeleženog saobraćaja na dugmetu “HTTP(S) Traffic” pri dnu ili lepši prikaz na zelenom dugmetu “Start HTTPTools”. Iz druge opcije, možete send the captured requests to proxies like Burp or Owasp ZAP.
Da biste to uradili, power on Burp –> turn off Intercept –> in MobSB HTTPTools select the request –> pritisnite “Send to Fuzzer” –> select the proxy address (http://127.0.0.1:8080\).
Kada završite dinamičku analizu sa MobSF možete pritisnuti “Start Web API Fuzzer” da biste fuzz-ovali HTTP zahteve i tražili ranjivosti.
Tip
Nakon izvođenja dinamičke analize sa MobSF, proxy podešavanja mogu biti pogrešno konfigurisana i nećete moći da ih popravite iz GUI-ja. Možete ispraviti proxy podešavanja ovako:
adb shell settings put global http_proxy :0
Assisted Dynamic Analysis with Inspeckage
Alat možete preuzeti sa Inspeckage.
Ovaj alat koristi neke Hooks da vam pokaže šta se dešava u aplikaciji dok vršite dinamičku analizu.
Yaazhini
Ovo je great tool to perform static analysis with a GUI
.png)
Qark
Ovaj alat je dizajniran da traži nekoliko security related Android application vulnerabilities, bilo u source code ili packaged APKs. Alat je takođe capable of creating a “Proof-of-Concept” deployable APK and ADB commands, kako bi iskoristio neke od pronađenih ranjivosti (Exposed activities, intents, tapjacking…). Kao i kod Drozer, nema potrebe da root-ujete 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 izvađene fajlove radi lakšeg pregleda
- Automatski dekompajlira APK fajlove u Java i Smali format
- Analizira AndroidManifest.xml na uobičajene ranjivosti i ponašanja
- Statička analiza izvornog koda na uobičajene ranjivosti i ponašanja
- Informacije o uređaju
- i još mnogo toga
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER je aplikacija komandne linije koja se može koristiti na Windows, MacOS X i Linux, i koja analizira .apk fajlove u potrazi za ranjivostima. To radi raspakivanjem APK-ova i primenom niza pravila da bi otkrila te ranjivosti.
Sva pravila su smeštena u fajlu rules.json, i svaka kompanija ili tester može napraviti sopstvena pravila za analizu onoga što im treba.
Preuzmite najnovije binarne fajlove sa download page
super-analyzer {apk_file}
StaCoAn
.png)
StaCoAn je crossplatform alat koji pomaže developers, bugbounty hunters i ethical hackers pri izvođenju static code analysis na mobilnim aplikacijama.
Koncept je da prevučete i otpustite fajl vaše mobilne aplikacije (.apk ili .ipa file) na StaCoAn aplikaciju i on će generisati vizuelan i prenosiv izveštaj za vas. Možete prilagoditi settings i wordlists da biste dobili prilagođeno iskustvo.
Preuzmi latest release:
./stacoan
AndroBugs
AndroBugs Framework je sistem za analizu ranjivosti Android aplikacija koji pomaže developerima i hakerima da pronađu potencijalne sigurnosne ranjivosti u Android aplikacijama.
Windows releases
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 zlonamerna ponašanja razvijena u Android aplikaciji.
Detekcija se vrši pomoću static analysis Dalvik bytecode-a aplikacije, predstavljenog kao Smali, koristeći biblioteku androguard.
Ovaj alat traži common behavior of “bad” applications kao što su: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution…
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
MARA Framework
.png)
MARA je okvir za reverzno inženjerstvo i analizu mobilnih aplikacija. To je alat koji okuplja često korišćene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP pretnji za bezbednost mobilnih aplikacija. Njegov cilj je da ovaj zadatak učini lakšim i pristupačnijim za developere mobilnih aplikacija i stručnjake za bezbednost.
Može da:
- Extract Java and Smali code using different tools
- Analyze APKs using: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Extract private information from the APK using regexps.
- Analyze the Manifest.
- Analyze found domains using: pyssltest, testssl and whatweb
- Deobfuscate APK via apk-deguard.com
Koodous
Korisno za detekciju malware-a: https://koodous.com/
Obfuscating/Deobfuscating code
Imajte na umu da, u zavisnosti od servisa i konfiguracije koje koristite za obfuskaciju koda, osetljivi podaci možda hoće — a možda i neće — ostati obfuskirani.
ProGuard
From Wikipedia: ProGuard is an open source command-line tool that shrinks, optimizes and obfuscates Java code. It is able to optimize bytecode as well as detect and remove unused instructions. ProGuard is free software and is distributed under the GNU General Public License, version 2.
ProGuard is distributed as part of the Android SDK and runs when building the application in release mode.
DexGuard
Find a step-by-step guide to deobfuscate the apk in https://blog.lexfo.fr/dexguard.html
(From that guide) Last time we checked, the Dexguard mode of operation was:
- učitaj resurs kao InputStream;
- prosledi rezultat klasi koja nasleđuje FilterInputStream da ga dekriptujete;
- uradi neku besmislenu obfuskaciju da izgubiš nekoliko minuta reverzerovog vremena;
- prosledi dekriptovani rezultat ZipInputStream-u da dobiješ DEX fajl;
- na kraju učitaj nastali DEX kao Resource koristeći
loadDexmethod.
DeGuard
DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.
Možete upload-ovati obfuskovani APK na njihovu platformu.
[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
This is a LLM tool to find any potential security vulnerabilities in android apps and deobfuscate android app code. Uses Google’s Gemini public API.
Simplify
It is a generic android deobfuscator. Simplify virtually executes an app to understand its behavior and then tries to optimize the code so it behaves identically but is easier for a human to understand. Each optimization type is simple and generic, so it doesn’t matter what the specific type of obfuscation is used.
APKiD
APKiD gives you information about how an APK was made. It identifies many compilers, packers, obfuscators, and other weird stuff. It’s PEiD for Android.
Manual
Read this tutorial to learn some tricks on how to reverse custom obfuscation
Labs
Androl4b
AndroL4b je Android security virtual machine bazirana na ubuntu-mate koja uključuje kolekciju najnovijih framework-ova, tutorijala i labova od različitih security geeka i istraživača za reverse engineering i malware analizu.
References
- Play Integrity API: How It Works & How to Bypass It
- https://owasp.org/www-project-mobile-app-security/
- https://appsecwiki.com/#/ Odlična lista resursa
- https://maddiestone.github.io/AndroidAppRE/ Android quick course
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
- https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
- SSLPinDetect: Advanced SSL Pinning Detection for Android Security Analysis
- SSLPinDetect GitHub
- smali-sslpin-patterns
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
- CoRPhone — Android in-memory JNI execution and packaging pipeline
- justapk — multi-source APK downloader with Cloudflare bypass
- Jezail rooted Android pentesting toolkit (REST API + Flutter UI)
- BeatBanker: A dual‑mode Android Trojan
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


