Android Toepassings Pentesting
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Android Applications Basics
Dit word sterk aanbeveel om hierdie bladsy te begin lees om te weet oor die belangrikste dele wat verband hou met Android-sekuriteit en die gevaarlikste komponente in ’n Android-toepassing:
ADB (Android Debug Bridge)
Dit is die hoofinstrument wat jy nodig het om aan ’n android-toestel (geëmuleer of fisies) te koppel.
ADB laat toe om toestelle te beheer óf oor USB of Network vanaf ’n rekenaar. Hierdie nutsprogram stel in staat tot die kopiëring van lêers in albei rigtings, installasie en uninstallation van apps, uitvoering van shell-opdragte, rugsteun van data, lees van logs, en ander funksies.
Kyk na die volgende lys van ADB Commands om te leer hoe om adb te gebruik.
Smali
Soms is dit interessant om die toepassingskode te wysig om toegang te kry tot verborge inligting (miskien goed obfuskated wagwoorde of flags). Dan kan dit sinvol wees om die apk te dekompileer, die kode te wysig en dit weer te kompileer.
In this tutorial you can learn how to decompile and APK, modify Smali code and recompile the APK with the new functionality. Dit kan baie nuttig wees as ’n alternatief vir verskeie toetse tydens die dinamiese analise wat aangebied gaan word. Hou hierdie moontlikheid altyd in gedagte.
Other interesting tricks
- 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)
- Download APKs: 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
Automated multi-source APK acquisition (justapk)
pip install justapk (Python 3.11+). Die CLI gee JSON na stdout en vordering na stderr (pipe-friendly). Dit probeer ’n deterministiese terugval-ketting oor APK20 → F-Droid → APKPure (mobile API) → APKMirror (HTML scrape) → Uptodown (mobile API) → APKCombo (HTML scrape). Bronne wat deur Cloudflare beskerm word, gebruik curl_cffi met TLS-fingerprint-imponering om werklike kliënte na te boots en bot-detektering te verminder.
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 voeg XAPK/split APKs saam en teken dit met ’n debug key, sodat die resulterende APK-handtekening/provenansie van die oorspronklike verskil (gebruik vir toetsing/ontleding, nie vir produksie-installasies nie).
- Ekstraheer APK vanaf toestel:
adb shell pm list packages
com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
- Voeg alle split- en base-apks saam met 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
Android malware tradecraft (loaders, fileless DEX, persistence)
Native staging + fileless DEX loaders
Sommige Android-droppers inkorporeer ’n native library (lib*.so) wat ontsleutels en ’n tweede ELF skryf (bv. l.so) na ’n tydelike pad, dit laai via JNI, en laai dan die werklike logika as DEX slegs in geheue met dalvik.system.InMemoryDexClassLoader. Dit verminder die statiese sigbaarheid van die payload en voorkom dat classes*.dex op skyf geskryf word.
Praktiese triage-punte:
- Soek na native libs wat vroeg
dlopenofSystem.loadLibraryaanroep, en dan Java-metodes oplos via geobfuskeerde strings op die stapel (bv. XOR-gedekodeer op die stapel). - Let op vir
InMemoryDexClassLoaderin logs/strings of hooks, wat dui op fileless DEX-uitvoering.
Quick Frida hook to dump the in‑memory DEX buffer:
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 often self-terminate wanneer emulator- of analise-kontroles misluk (bv. CPU_ABI validasie) deur te roep:
android.os.Process.killProcess(android.os.Process.myPid());
Persistence via foreground service + MediaPlayer loop
’n Liggewig persistensie-patroon is om ’n foreground service lewendig te hou met ’n pinned notification en deurlopend ’n byna-onhoorbare klanklus te speel via MediaPlayer. Dit hou die proses “aktief” en verminder OS-beëindigings weens inaktiwiteit. Soek gebruik van ForegroundService + MediaPlayer wat ’n klein asset herhaal (dikwels ’n paar sekondes lank).
Accessibility overlay + ACTION_SET_TEXT hijacking
Nadat ’n gebruiker Accessibility toegestaan het, kan banking trojans die foreground app monitor, ’n realistiese overlay render (dikwels WebView HTML gestoor as Base64), en transaksievelde vervang deur AccessibilityNodeInfo.ACTION_SET_TEXT te gebruik. Dit maak stil vervanging van die ontvangeradres moontlik terwyl die slagoffer ’n geloofwaardige UI sien.
Minimale voorbeeld van teksvervanging:
Bundle args = new Bundle();
args.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
"ATTACKER_USDT_ADDRESS");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, args);
Legitieme push-infrastruktuur as C2 gating
In plaas van pasgemaakte sockets gebruik sommige malware Firebase Cloud Messaging (FCM) as die C2-kanaal. FCM-boodskappe kan telemetry-kontroles veroorsaak (charging state, battery %, temperature, user inactivity) en gate aksies soos mining of fraud vir stealth.
Encrypted native payload staging with filename‑derived keys
Native payloads kan as encrypted ELF blobs afgelewer word en met CipherInputStream() ontsleutel word, met ’n sleutel derived from SHA‑1 of the downloaded filename. Elke filename/version lewer ’n afsonderlike sleutel, wat statiese IOC-hergebruik bemoeilik.
Jezail rooted Android pentesting toolkit (REST API + web UI)
- Draai op ’n rooted device (Magisk/rootAVD) en begin ’n HTTP server on tcp/8080 met ’n Flutter web UI en 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
Eerstens, om ’n APK te analiseer moet jy na die Java code kyk using a decompiler.
Lees asseblief, read here to find information about different available decompilers.
Looking for interesting Info
Deur net na die strings van die APK te kyk kan jy soek na passwords, URLs (https://github.com/ndelphit/apkurlgrep), api keys, encryption, bluetooth uuids, tokens en enigiets interessant… kyk selfs vir code execution backdoors of authentication backdoors (hardcoded admin credentials to the app).
Firebase
Betaal spesiale aandag aan firebase URLs en kontroleer of dit verkeerd gekonfigureer is. More information about whats is FIrebase and how to exploit it here.
Basic understanding of the application - Manifest.xml, strings.xml
Die examination of an application’s Manifest.xml and strings.xml files can reveal potential security vulnerabilities. Hierdie lêers kan verkry word deur dekompilers te gebruik of deur die APK-lêeruitbreiding na .zip te hernoem en dit dan uit te pak.
Vulnerabilities identified from the Manifest.xml include:
- Debuggable Applications: Toepassings gestel as debuggable (
debuggable="true") in die Manifest.xml lêer vorm ’n risiko aangesien dit verbindings toelaat wat tot eksploitasie kan lei. Vir verdere begrip oor hoe om debuggable applications te eksploiteer, verwys na ’n tutorial oor die vind en eksploitasie van debuggable applications op ’n toestel. - Backup Settings: Die attribuut
android:allowBackup="false"moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongemagtigde data-backups via adb te voorkom, veral wanneer usb debugging aangeskakel is. - Network Security: Custom network security configurations (
android:networkSecurityConfig="@xml/network_security_config") in res/xml/ kan sekuriteitsbesonderhede spesifiseer soos certificate pins en HTTP traffic-instellings. ’n Voorbeeld is om HTTP traffic vir spesifieke domains toe te laat. - Exported Activities and Services: Die identifisering van exported activities and services in die manifest kan komponente uitwys wat misbruik kan word. Verdere analise tydens dynamic testing kan openbaar hoe om hierdie komponente te eksploiteer.
- Content Providers and FileProviders: Blootgestelde content providers kan ongemagtigde toegang of wysiging van data toelaat. Die konfigurering van FileProviders moet ook noukeurig ondersoek word.
- Broadcast Receivers and URL Schemes: Hierdie komponente kan vir eksploitasie aangewend word, met besondere aandag aan hoe URL schemes bestuur word vir input-kwesbaarhede.
- SDK Versions: Die
minSdkVersion,targetSDKVersion, enmaxSdkVersionattributen dui die ondersteunede Android-weergawes aan, wat die belangrikheid uitlig om nie verouderde, kwesbare Android-weergawes te ondersteun nie.
Uit die strings.xml lêer kan sensitiewe inligting soos API keys, custom schemas, en ander developer notes gevind word, wat die behoefte aan ’n noukeurige hersiening van hierdie hulpbronne beklemtoon.
Tapjacking
Tapjacking is ’n aanval waar ’n malicious application gelanseer word en homself bo-op ’n slagoffer-applikasie posisioneer. Sodra dit sigbaar die slagoffer-app verskerm, is sy gebruikerskoppelvlak so ontwerp om die gebruiker te mislei om daarmee te interaksioneer, terwyl dit die interaksie aan die slagoffer-app deurgee.
In werklikheid is dit ’n manier om die gebruiker te blind vir die wete dat hulle eintlik aksies op die slagoffer-app uitvoer.
Find more information in:
Task Hijacking
’n activity met die launchMode gestel op singleTask sonder enige taskAffinity gedefinieer is kwesbaar vir Task Hijacking. Dit beteken dat ’n application geïnstalleer kan word en as dit voor die regte toepassing gelanseer word, dit die taak van die regte toepassing kan hijack (sodat die gebruiker met die malicious application dink hy gebruik die regte een).
More info in:
Insecure data storage
Internal Storage
In Android is lêers stored in internal storage ontwerp om uitsluitlik deur die app wat dit geskep het toeganklik te wees. Hierdie sekuriteitsmaatreël word deur die Android-bedryfstelsel afgedwing en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van meeste toepassings. Ontwikkelaars gebruik egter soms modi soos MODE_WORLD_READABLE en MODE_WORLD_WRITABLE om lêers tussen verskillende toepassings te share. Hierdie modi beperk egter nie toegang tot hierdie lêers deur ander toepassings nie, insluitend moontlik malicious ones.
- Static Analysis:
- Ensure dat die gebruik van
MODE_WORLD_READABLEenMODE_WORLD_WRITABLEnoukeurig ondersoek word. Hierdie modi kan lêers blootstel aan ongemagtigde toegang.
- Dynamic Analysis:
- Verify die permissions op lêers wat deur die app geskep is. Spesifiek, kontroleer of enige lêers ingestel is om wêreldwyd leesbaar of skryfbaar te wees. Dit kan ’n beduidende sekuriteitsrisiko inhou aangesien dit enige toepassing op die toestel toelaat om hierdie lêers te read of te modify, ongeag oorsprong of doel.
External Storage
Wanneer daar met lêers op external storage, soos SD Cards, gewerk word, moet sekere voorsorgmaatreëls getref word:
- Accessibility:
- Lêers op external storage is globaal leesbaar en skryfbaar. Dit beteken enige toepassing of gebruiker kan toegang tot hierdie lêers kry.
- Security Concerns:
- Gegewe die maklike toegang, word dit aangeraai om nie sensitiewe inligting op external storage te stoor nie.
- External storage kan verwyder of deur enige toepassing benader word, wat dit minder veilig maak.
- Handling Data from External Storage:
- Voer altyd input validation uit op data wat vanaf external storage verkry word. Dit is noodsaaklik omdat die data van ’n untrusted source afkomstig is.
- Dit word sterk ontrafel om executables of class files op external storage te stoor vir dinamiese lading.
- As jou toepassing executable files vanaf external storage moet oplaai, verseker dat hierdie lêers signed and cryptographically verified is voordat hulle dinamies gelaai word. Hierdie stap is noodsaaklik om die sekuriteitsintegriteit van jou toepassing te behou.
External storage kan accessed word in /storage/emulated/0 , /sdcard , /mnt/sdcard
Tip
Vanaf Android 4.4 (API 17) het die SD card ’n gidsstruktuur wat toegang van ’n app beperk tot die gids wat spesifiek vir daardie app is. Dit verhinder dat malicious application lees- of skryfaksie op ’n ander app se lêers kry.
Sensitive data stored in clear-text
- Shared preferences: Android laat elke toepassing toe om maklik xml-lêers te stoor in die pad
/data/data/<packagename>/shared_prefs/en soms is dit moontlik om sensitiewe inligting in clear-text in daardie gids te vind. - Databases: Android laat elke toepassing toe om sqlite-databasisse te stoor in die pad
/data/data/<packagename>/databases/en soms is dit moontlik om sensitiewe inligting in clear-text in daardie gids te vind.
Broken TLS
Accept All Certificates
Om een of ander rede aanvaar ontwikkelaars soms alle certificates selfs al stem byvoorbeeld die hostname nie ooreen nie, met reëls kode soos die volgende:
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.
Gebroke Kriptografie
Swak Sleutelbestuursprosesse
Sommige ontwikkelaars stoor sensitiewe data in die lokale stoorplek en enkripteer dit met ’n sleutel wat hardcoded/voorspelbaar in die kode is. Dit behoort nie te gebeur nie aangesien omgekeerde ingenieurswese aanvallers in staat kan stel om die vertroulike inligting uit te trek.
Gebruik van Onveilige en/of Verouderde Algoritmes
Ontwikkelaars behoort nie verouderde algoritmes te gebruik om magtigingstoetse uit te voer, data te stoor of te stuur nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1… As hashes byvoorbeeld gebruik word om wagwoorde te stoor, behoort hashes te gebruik wat weerstandbiedend is teen brute-force en met salt.
Ander kontroles
- It’s recommended to obfuscate the APK to difficult the reverse engineer labour to attackers.
- If the app is sensitive (like bank apps), it should perform it’s own checks to see if the mobile is rooted and act in consequence.
- If the app is sensitive (like bank apps), it should check if an emulator is being used.
- If the app is sensitive (like bank apps), it should check it’s own integrity before executing it to check if it was modified.
- 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.
Geautomatiseerde Statiese Kode-analise
Die tool mariana-trench is in staat om vulnerabilities te vind deur die code van die toepassing te scan. Hierdie tool bevat ’n reeks known sources (wat die tool aandui waar die input deur die gebruiker beheer word), sinks (wat gevaarlike plekke aandui waar kwaadwillige gebruikersinvoer skade kan veroorsaak) en rules. Hierdie rules dui die kombinasie van sources-sinks aan wat ’n kwetsbaarheid aandui.
Met hierdie kennis sal mariana-trench die kode hersien en moontlike vulnerabilities daarin vind.
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)
Ander interessante funksies
- Code execution:
Runtime.exec(), ProcessBuilder(), native code:system() - Send SMSs:
sendTextMessage, sendMultipartTestMessage - Native functions declared as
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
Ander truuks
Dinamiese analise
First of all, you need an environment where you can install the application and all the environment (Burp CA cert, Drozer and Frida mainly). Therefore, a rooted device (emulated or not) is extremely recommended.
Aanlyn dinamiese analise
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.
Lokale dinamiese analise
Gebruik van ’n emulator
- Android Studio (You can create x86 and arm devices, and according to this latest x86 versions support ARM libraries without needing an slow arm emulator).
- 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).
Gebruik ’n fisiese toestel
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
Onbedoelde Data Leakage
Logging
Ontwikkelaars behoort versigtig te wees om debugging information publieklik bloot te stel, aangesien dit tot sensitiewe data leaks kan lei. Die tools pidcat en adb logcat word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. Pidcat word verkies vir sy gebruiksgemak en leesbaarheid.
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.
Copy/Paste Buffer Caching
Android’s clipboard-based framework enables copy-paste functionality in apps, yet poses a risk as other applications can access the clipboard, potentially exposing sensitive data. It’s crucial to disable copy/paste functions for sensitive sections of an application, like credit card details, to prevent data leaks.
Crash Logs
If an application crashes and saves logs, these logs can assist attackers, particularly when the application cannot be reverse-engineered. To mitigate this risk, avoid logging on crashes, and if logs must be transmitted over the network, ensure they are sent via an SSL channel for security.
As pentester, try to take a look to these logs.
Analytics Data Sent To 3rd Parties
Applications often integrate services like Google Adsense, which can inadvertently leak sensitive data due to improper implementation by developers. To identify potential data leaks, it’s advisable to intercept the application’s traffic and check for any sensitive information being sent to third-party services.
SQLite DBs
Most of the applications will use internal SQLite databases to save information. During the pentest take a look to the databases created, the names of tables and columns and all the data saved because you could find sensitive information (which would be a vulnerability).
Databases should be located in /data/data/the.package.name/databases like /data/data/com.mwr.example.sieve/databases
If the database is saving confidential information and is encrypted but you can find the password inside the application it’s still a vulnerability.
Enumerate the tables using .tables and enumerate the columns of the tables doing .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.
Exploiting exported Activities
Read this if you want to refresh what is an Android Activity.
Also remember that the code of an activity starts in the onCreate method.
Magtigingsomseiling
When an Activity is exported you can invoke its screen from an external app. Therefore, if an activity with sensitive information is exported you could bypass the authentication mechanisms to access it.
Learn how to exploit exported activities with Drozer.
You can also start an exported activity from adb:
- PackageName is com.example.demo
- Exported ActivityName is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
NOTE: MobSF sal die gebruik van singleTask/singleInstance as android:launchMode in an activity as kwaadwillig beskou, maar volgens this blyk dit net gevaarlik te wees op ouer weergawes (API versions < 21).
Tip
Note that an authorisation bypass is not always a vulnerability, it would depend on how the bypass works and which information is exposed.
Sensitive information leakage
Activities kan ook resultate teruggee. As jy daarin slaag om ’n exported en unprotected activity te vind wat die setResult metode aanroep en sensitiewe inligting teruggee, is daar ’n sensitive information leakage.
Tapjacking
As Tapjacking nie voorkom word nie, kan jy die exported activity misbruik om die gebruiker onvoorsiene handelinge uit te laat voer. For more info about what is Tapjacking follow the link.
Exploiting Content Providers - Accessing and manipulating sensitive information
Read this if you want to refresh what is a Content Provider.
Content providers word hoofsaaklik gebruik om data te deel. As ’n app beskikbare content providers het, kan jy dalk sensitiewe data daaruit onttrek. Dit is ook interessant om moontlike SQL injections en Path Traversals te toets aangesien hulle kwesbaar kan wees.
Learn how to exploit Content Providers with Drozer.
Exploiting Services
Read this if you want to refresh what is a Service.
Onthou dat die aksies van ’n Service in die metode onStartCommand begin.
’n Service is basies iets wat data kan ontvang, dit kan verwerk en ’n reaksie (of nie) kan teruggee. As ’n toepassing sekere services blootstel, behoort jy die code na te gaan om te verstaan wat dit doen en dit dinamies te test om vertroulike inligting te onttrek, authentication measures te omseil…
Learn how to exploit Services with Drozer.
Exploiting Broadcast Receivers
Read this if you want to refresh what is a Broadcast Receiver.
Onthou dat die aksies van ’n Broadcast Receiver in die metode onReceive begin.
’n Broadcast receiver wag op ’n tipe boodskap. Afhangend van hoe die receiver die boodskap hanteer, kan dit kwesbaar wees.
Learn how to exploit Broadcast Receivers with Drozer.
Exploiting Schemes / Deep links
Jy kan deep links handmatig soek deur gereedskap soos MobSF of skripte soos this one.
Jy kan open ’n verklaarde scheme met adb of ’n browser:
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
Let daarop dat jy die pakketnaam kan weglaat en die mobiele toestel sal outomaties die app aanroep wat daardie skakel behoort oop te maak.
<!-- 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>
Code executed
Om die code that will be executed in the App te vind, gaan na die activity wat deur die deeplink aangeroep word en soek die funksie onNewIntent.
 (1) (1) (1).png)
Sensitiewe inligting
Elke keer as jy ’n deep link vind, kontroleer dat dit nie sensitiewe data (soos wagwoorde) via URL-parameters ontvang nie, omdat enige ander toepassing die deep link kan naboots en daardie data steel!
Parameters in path
Jy moet ook nagaan of enige deep link ’n parameter binne die path van die URL gebruik, soos: https://api.example.com/v1/users/{username} , in daardie geval kan jy ’n path traversal afdwing deur iets soos toe te gaan: example://app/users?username=../../unwanted-endpoint%3fparam=value .
Let daarop dat as jy die korrekte endpoints binne die toepassing vind jy moontlik ’n Open Redirect kan veroorsaak (as ’n deel van die path as domeinnaam gebruik word), account takeover (as jy gebruikersbesonderhede kan wysig sonder ’n CSRF token en die vuln endpoint die korrekte metode gebruik) en enige ander vuln. More info about this here.
Meer voorbeelde
’n Interessante bug bounty verslag oor links (/.well-known/assetlinks.json).
Transportlaag-inspeksie en verifikasie-foute
- Sertifikate word nie altyd behoorlik geïnspekteer nie deur Android-apps. Dit is algemeen dat hierdie toepassings waarskuwings ignoreer en self-ondertekende sertifikate aanvaar of, in sommige gevalle, terugval na die gebruik van HTTP-verbindinge.
- Onderhandelinge tydens die SSL/TLS-handshake is soms swak, en gebruik onveilige cipher suites. Hierdie kwesbaarheid maak die verbinding vatbaar vir man-in-the-middle (MITM)-aanvalle, wat aanvallers toelaat om die data te ontsleutel.
- Leakage of private information is ’n risiko wanneer toepassings met veilige kanale autentiseer maar dan oor nie-veilige kanale kommunikeer vir ander transaksies. Hierdie benadering beskerm nie sensitiewe data, soos sessie-cookies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie.
Sertifikaatverifikasie
Ons sal fokus op certificate verification. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kritieke belang, aangesien onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor ongeënkripteerde kanale beduidende risiko’s kan inhou. Vir gedetailleerde stappe oor die verifikasie van bedienersertifikate en die aanspreek van kwesbaarhede, verskaf hierdie hulpbron omvattende leiding.
SSL Pinning
SSL Pinning is ’n sekuriteitsmaatreël waar die toepassing die bediener se sertifikaat verifieer teen ’n bekende kopie wat binne die toepassing self gestoor is. Hierdie metode is essensieel om MITM-aanvalle te voorkom. Die implementering van SSL Pinning word sterk aanbeveel vir toepassings wat sensitiewe inligting hanteer.
Verkeerinspeksie
Om HTTP-verkeer te inspekteer, is dit nodig om die proxy tool se sertifikaat te installeer (bv. Burp). Sonder die installering van hierdie sertifikaat mag gekodeerde verkeer nie deur die proxy sigbaar wees nie. Vir ’n gids oor die installering van ’n custom CA certificate, klik hier.
Toepassings wat gemik is op API Level 24 and above vereis wysigings aan die Network Security Config om die proxy se CA certificate te aanvaar. Hierdie stap is krities vir die inspeksie van gekodeerde verkeer. Vir instruksies oor die wysiging van die Network Security Config, raadpleeg hierdie tutorial.
As Flutter gebruik word, moet jy die instruksies op hierdie bladsy volg. Dit is omdat net om die sertifikaat in die store by te voeg nie sal werk nie, aangesien Flutter sy eie lys van geldige CAs het.
Statiese opsporing van SSL/TLS pinning
Voordat jy runtime bypasses probeer, karteer vinnig waar pinning in die APK afgedwing word. Statiese ontdekking help jou om hooks/patches te beplan en op die regte code paths te fokus.
Tool: SSLPinDetect
- Open-source static-analysis utility wat die APK na Smali (via apktool) dekompileer en skandeer vir gekuurateerde regex-patrone van SSL/TLS pinning implementasies.
- Rapporteer die presiese file path, lynnommer, en ’n code snippet vir elke treffers.
- Dek algemene frameworks en custom code paths: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init met custom TrustManagers/KeyManagers, en Network Security Config XML pins.
Installeer
- Vereistes: Python >= 3.8, Java on PATH, apktool
git clone https://github.com/aancw/SSLPinDetect
cd SSLPinDetect
pip install -r requirements.txt
Gebruik
# 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
Voorbeeld patroonreëls (JSON) Gebruik of brei signatures uit om proprietary/custom pinning styles op te spoor. Jy kan jou eie JSON laai en op groot skaal scan.
{
"OkHttp Certificate Pinning": [
"Lcom/squareup/okhttp/CertificatePinner;",
"Lokhttp3/CertificatePinner;",
"setCertificatePinner"
],
"TrustManager Override": [
"Ljavax/net/ssl/X509TrustManager;",
"checkServerTrusted"
]
}
Notas en wenke
- Vinnige skandering op groot apps via multi-threading en memory-mapped I/O; vooraf-gekombileerde regex verminder overhead/valse positiewe.
- Patroonversameling: https://github.com/aancw/smali-sslpin-patterns
- Tipiese detectiedoelwitte om daarna te triage:
- OkHttp: CertificatePinner usage, setCertificatePinner, okhttp3/okhttp pakketverwysings
- Aangepaste TrustManagers: javax.net.ssl.X509TrustManager, checkServerTrusted overskrywings
- Aangepaste SSL contexts: SSLContext.getInstance + SSLContext.init met aangepaste managers
- Deklaratiewe pins in res/xml network security config en manifest verwysings
- Gebruik die ooreenstemmende lokasies om Frida hooks, static patches, of config reviews te beplan voordat jy dinamiese toetsing doen.
Om SSL Pinning te omseil
Wanneer SSL Pinning geïmplementeer is, word dit nodig om dit te omseil om HTTPS-verkeer te inspekteer. Verskeie metodes is beskikbaar vir hierdie doel:
- Outomaties wysig die apk om SSLPinning te omseil met apk-mitm. Die grootste voordeel van hierdie opsie is dat jy nie root nodig het om SSL Pinning te omseil nie, maar jy sal die toepassing moet verwyder en die nuwe een herinstalleer, en dit werk nie altyd nie.
- Jy kan Frida (hieronder bespreek) gebruik om hierdie beskerming te omseil. Hier is ’n gids om Burp+Frida+Genymotion te gebruik: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- Jy kan ook probeer om outomaties SSL Pinning te omseil deur objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable" - Jy kan ook probeer om outomaties SSL Pinning te omseil deur MobSF dynamic analysis te gebruik (hieronder verduidelik)
- As jy steeds dink daar is verkeer wat jy nie vasvang nie, kan jy probeer om die verkeer na Burp te stuur deur iptables. Lees hierdie blog: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62
Soek na algemene webkwesbaarhede
Dit is belangrik om ook binne die toepassing na algemene webkwesbaarhede te soek. Gedetailleerde inligting oor die identifisering en vermindering van hierdie kwesbaarhede val buite die bestek van hierdie opsomming, maar word elders uitgebreid behandel.
Frida
Frida is ’n dinamiese instrumenteringstoolkit vir ontwikkelaars, reverse-engineers, en veiligheidsnavorsers.
Jy kan toegang kry tot ’n toepassing wat aan die hardloop is en hook methods tydens runtime gebruik om die gedrag te verander, waardes te verander, waardes te onttrek of ander kode uit te voer.
As jy Android-toepassings wil pentest jy moet weet hoe om Frida te gebruik.
- Leer hoe om Frida te gebruik: Frida tutorial
- Sommige “GUI” vir aksies met Frida: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection is goed om die gebruik van Frida te automatiseer: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Jy kan sommige Awesome Frida-skripte hier vind: https://codeshare.frida.re/
- Probeer om anti-debugging / anti-frida meganismes te omseil deur Frida te laai soos aangedui in https://erfur.github.io/blog/dev/code-injection-without-ptrace (tool linjector)
Anti-instrumentasie & SSL pinning omseil-werkstroom
Android Anti Instrumentation And Ssl Pinning Bypass
Dump Geheue - Fridump
Kontroleer of die toepassing sensitiewe inligting in die geheue stoor wat dit nie behoort te stoor nie, soos wagwoorde of mnemonics.
Met Fridump3 kan jy die geheue van die app dump met:
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
Dit sal die geheue in die ./dump folder dump, en daarbinne kan jy met iets soos grep soek:
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
Sensitiewe data in Keystore
In Android is die Keystore die beste plek om sensitiewe data te stoor, maar met genoeg voorregte is dit steeds moontlik om toegang daartoe te kry. Aangesien toepassings hier geneig is om sensitiewe data in clear text te stoor, behoort die pentests dit as root user te kontroleer, aangesien iemand met fisiese toegang tot die toestel hierdie data kan steel.
Selfs as ’n app data in die keystore stoor, moet die data versleuteld wees.
Om toegang tot die data binne die keystore te kry, kan jy hierdie Frida script gebruik: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
Fingerprint/Biometrics Bypass
Deur die volgende Frida-skrip te gebruik, kan dit moontlik wees om die bypass fingerprint authentication wat Android-toepassings dalk uitvoer om sekere beskerm sekere sensitiewe gebiede:
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
Agtergrondbeelde
Wanneer jy ’n toepassing op die agtergrond plaas, stoor Android ’n snapshot of the application sodat wanneer dit na die voorgrond herstel word, dit die beeld begin laai voordat die app self laai, sodat dit lyk asof die app vinniger gelaai het.
As hierdie snapshot egter sensitiewe inligting bevat, kan iemand met toegang tot die snapshot daardie inligting steel daardie inligting (let wel: jy het root-toegang nodig om dit te bereik).
Die snapshots word gewoonlik gestoor by: /data/system_ce/0/snapshots
Android bied ’n manier om die vaslegging van skermskote te voorkom deur die FLAG_SECURE layout parameter te stel. Deur hierdie flag te gebruik, word die vensterinhoud as veilig beskou, wat verhoed dat dit in skermskote verskyn of op nie-veilige skerms vertoon word.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Android Application Analyzer
Hierdie hulpmiddel kan jou help om verskillende gereedskap tydens die dinamiese analise te bestuur: https://github.com/NotSoSecure/android_application_analyzer
Intent Injection
Ontwikkelaars skep dikwels proxy-komponente soos activities, services, en broadcast receivers wat hierdie Intents hanteer en dit aan metodes soos startActivity(...) of sendBroadcast(...) deurgee, wat riskant kan wees.
Die gevaar lê in die toelaat van aanvallers om non-exported app-komponente te aktiveer of sensitiewe content providers te bereik deur hierdie Intents te mislei. ’n Noemenswaardige voorbeeld is die WebView-komponent wat URLs na Intent-objekte omskakel via Intent.parseUri(...) en dit dan uitvoer, wat moontlik tot kwaadwillige Intent injections kan lei.
Belangrike punte
- Intent Injection is soortgelyk aan die web se Open Redirect-kwessie.
- Eksploite behels dat
Intent-objekte as extras deurgegee word, wat omgeleid kan word om onveilige operasies uit te voer. - Dit kan non-exported komponente en content providers aan aanvallers blootstel.
WebViewse URL-na-Intentomskakeling kan onbedoelde aksies vergemaklik.
Android Client Side Injections en ander
Jy ken waarskynlik hierdie tipe kwesbaarhede vanuit die web. Wees besonders versigtig met hierdie kwesbaarhede in ’n Android-toepassing:
- SQL Injection: Wanneer jy met dinamiese navrae of Content-Providers werk, maak seker jy gebruik geparameteriseerde navrae.
- JavaScript Injection (XSS): Verifieer dat JavaScript- en Plugin-ondersteuning vir enige WebViews gedeaktiveer is (standaard gedeaktiveer). More info here.
- Local File Inclusion: WebViews moet toegang tot die lêerstelsel gedeaktiveer hê (standaard geaktiveer) -
(webview.getSettings().setAllowFileAccess(false);). More info here. - Eternal cookies: In verskeie gevalle, wanneer die Android-toepassing die sessie beëindig, word die koekie nie ingetrek nie of dit kan selfs na skyf geskryf word
- Secure Flag in cookies
Outomatiese Analise
MobSF
Statiese analise
.png)
Kwetsbaarheidsassessering van die toepassing met ’n netjiese webgebaseerde frontend. Jy kan ook dinamiese analise uitvoer (maar jy moet die omgewing voorberei).
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.
Geassisteerde Dynamic analysis with MobSF
MobSF kan ook baie nuttig wees vir dynamic analysis in Android, maar in daardie geval sal jy MobSF en genymotion op jou host moet installeer (a VM of Docker sal nie werk nie). Nota: You need to start first a VM in genymotion and then MobSF.
Die MobSF dynamic analyser kan:
- 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). Al hierdie word outomaties gedoen, behalwe vir die skermskote — jy moet druk wanneer jy ’n skermskoot wil neem of jy moet op “Exported Activity Tester” druk om skermskote van al die exported activities te kry.
- 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 kan ook 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: Dit sal al die gelaaide classes druk
- Capture Strings: Dit sal al die gevangen strings druk terwyl die toepassing gebruik word (baie rumoerig)
- Capture String Comparisons: Kan baie nuttig wees. Dit sal die 2 strings wat vergelyk word wys en of die resultaat True of False was.
- Enumerate Class Methods: Voer die klasnaam in (soos “java.io.File”) en dit sal alle metodes van die klas druk.
- Search Class Pattern: Soek klasse volgens patroon
- Trace Class Methods: Trace ’n hele klas (sien insette en uitsette van alle metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android Api metodes trace.
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 gee jou ook ’n shell met sommige adb commands, MobSF commands, en algemene shell commands onderaan die dynamic analysis bladsy. Sommige interessante commands:
help
shell ls
activities
exported_activities
services
receivers
HTTP tools
Wanneer HTTP-verkeer vasgelê word, kan jy ’n lelike weergawe van die vasgelêde verkeer sien op die “HTTP(S) Traffic” onderknoppie of ’n netter weergawe in die groen “Start HTTPTools” knoppie. Vanaf die tweede opsie kan jy die vasgelêde requests na proxies soos Burp of Owasp ZAP stuur.
Om dit te doen, skakel Burp aan –> skakel Intercept af –> in MobSB HTTPTools kies die request –> druk “Send to Fuzzer” –> kies die proxy address (http://127.0.0.1:8080\).
Sodra jy die dynamic analysis met MobSF klaar het, kan jy op “Start Web API Fuzzer” druk om fuzz http requests en na kwetsbaarhede te soek.
Tip
Na die uitvoering van ’n dynamic analysis met MobSF kan die proxy-instellings verkeerd gekonfigureer wees en sal jy dit nie vanaf die GUI kan regmaak nie. Jy kan die proxy-instellings regstel deur:
adb shell settings put global http_proxy :0
Geassisteerde Dynamic Analysis met Inspeckage
Jy kan die tool kry by Inspeckage.
Hierdie tool gebruik ’n paar Hooks om vir jou te wys wat in die toepassing gebeur terwyl jy ’n dynamic analysis uitvoer.
Yaazhini
Dit is ’n geweldige tool om static analysis met ’n GUI uit te voer
.png)
Qark
Hierdie tool is ontwerp om te soek na verskeie security related Android application vulnerabilities, hetsy in source code of packaged APKs. Die tool is ook capable of creating a “Proof-of-Concept” deployable APK en ADB commands, om sommige van die gevonde kwetsbaarhede te benut (Exposed activities, intents, tapjacking…). Soos met Drozer, hoef die toetstoestel nie geroot te word nie.
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
ReverseAPK
- Toon alle onttrekte lêers vir maklike verwysing
- Dekompileer APK-lêers outomaties na Java- en Smali-formaat
- Analiseer AndroidManifest.xml vir algemene kwesbaarhede en gedrag
- Statiese bronkode-ontleding vir algemene kwesbaarhede en gedrag
- Toestelinligting
- en meer
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER is ’n command-line toepassing wat in Windows, MacOS X en Linux gebruik kan word, wat .apk lêers ontleed op soek na kwesbaarhede. Dit doen dit deur APKs te dekomprimeer en ’n reeks reëls toe te pas om daardie kwesbaarhede op te spoor.
Alle reëls is gesentraliseer in ’n rules.json lêer, en elke maatskappy of tester kan hul eie reëls skep om te ontleed wat hulle benodig.
Laai die nuutste binaries af vanaf die download page
super-analyzer {apk_file}
StaCoAn
.png)
StaCoAn is ’n crossplatform hulpmiddel wat ontwikkelaars, bugbounty hunters en ethical hackers help met die uitvoering van static code analysis op mobiele toepassings.
Die konsep is dat jy jou mobiele toepassingslêer (.apk of .ipa lêer) op die StaCoAn-toepassing sleep en dit sal ’n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en wordlists aanpas om ’n aangepaste ervaring te kry.
Laai latest release:
./stacoan
AndroBugs
AndroBugs Framework is ’n Android kwesbaarheid-analise stelsel wat ontwikkelaars of hackers help om potensiële sekuriteitskwesbaarhede in Android-toepassings te vind.
Windows releases
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn is ’n hulpmiddel waarvan die hoofdoel is om die gebruiker te identifiseer en te waarsku oor potensieel kwaadwillige gedraginge wat deur ’n Android-toepassing ontwikkel is.
Die deteksie word uitgevoer deur die static analysis van die toepassing se Dalvik bytecode, voorgestel as Smali, met die androguard biblioteek.
Hierdie hulpmiddel soek na algemene gedrag van “slegte” toepassings soos: 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 is a Mobile Application Reverse engineering and Analysis Framework. Dit is ’n instrument wat algemeen gebruikte mobiele toepassings reverse engineering- en analise-instrumente saamvoeg om te help met die toetsing van mobiele toepassings teen die OWASP mobile security threats. Die doel is om hierdie taak makliker en gebruikersvriendelik te maak vir mobiele toepassing-ontwikkelaars en sekuriteitsprofessionals.
It is able to:
- Extract Java and Smali code using different tools
- Analiseer APKs met gebruik van: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Onttrek private inligting uit die APK using regexps.
- Analiseer die Manifest.
- Analiseer gevonde domeine met: pyssltest, testssl and whatweb
- Deobfuscate APK via apk-deguard.com
Koodous
Nuttig om malware op te spoor: https://koodous.com/
Obfuscating/Deobfuscating code
Note that depending the service and configuration you use to obfuscate the code. Secrets may or may not ended obfuscated.
ProGuard
From Wikipedia: ProGuard is an open source command-line tool that shrinks, optimizes and obfuscates Java code. Dit is in staat om bytecode te optimaliseer asook om ongebruikte instruksies op te spoor en te verwyder. ProGuard is gratis sagteware en word versprei onder die GNU General Public License, version 2.
ProGuard word versprei as deel van die Android SDK en loop wanneer die toepassing in release mode gebou word.
DexGuard
Vind ’n stap-vir-stap gids om die apk te deobfuscate by https://blog.lexfo.fr/dexguard.html
(From that guide) Last time we checked, the Dexguard mode of operation was:
- load a resource as an InputStream;
- feed the result to a class inheriting from FilterInputStream to decrypt it;
- do some useless obfuscation to waste a few minutes of time from a reverser;
- feed the decrypted result to a ZipInputStream to get a DEX file;
- finally load the resulting DEX as a Resource using the
loadDexmethod.
DeGuard
DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.
Jy kan ’n obfuscated APK na hul platform oplaai.
[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
Dit is ’n LLM tool om enige potensiële sekuriteitskwesbaarhede in android apps te vind en android app-kode te deobfuscate. Gebruik 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 is an Android security virtual machine based on ubuntu-mate and includes a collection of the latest framework, tutorials and labs from different security geeks and researchers for reverse engineering and malware analysis.
References
- Play Integrity API: How It Works & How to Bypass It
- https://owasp.org/www-project-mobile-app-security/
- https://appsecwiki.com/#/ Dit is ’n uitstekende lys van hulpbronne
- https://maddiestone.github.io/AndroidAppRE/ Android vinnige kursus
- 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
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


