mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/tapjacking.md'
This commit is contained in:
parent
b48daaa7d5
commit
7f360401bd
@ -2,14 +2,15 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## **Basiese Inligting**
|
||||
|
||||
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** geloods word en **homself bo-op 'n slagoffer-toepassing posisioneer**. Sodra dit die slagoffer-toepassing sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer-toepassing oorgedra.\
|
||||
In werklikheid, dit is **blindings die gebruiker om te weet dat hulle eintlik aksies op die slagoffer-toepassing uitvoer**.
|
||||
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** gelanseer word en **homself bo-op 'n slagoffer-toepassing posisioneer**. Sodra dit die slagoffer-toepassing sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer-toepassing oorgedra.\
|
||||
In werklikheid, dit **blind die gebruiker om te weet dat hulle eintlik aksies op die slagoffer-toepassing uitvoer**.
|
||||
|
||||
### Opsporing
|
||||
|
||||
Om toepassings wat kwesbaar is vir hierdie aanval te ontdek, moet jy soek na **geëxporteerde aktiwiteite** in die android-manifes (let daarop dat 'n aktiwiteit met 'n intent-filter outomaties geëxporteer word as standaard). Sodra jy die geëxporteerde aktiwiteite gevind het, **kyk of hulle enige toestemming vereis**. Dit is omdat die **kwaadwillige toepassing daardie toestemming ook nodig sal hê**.
|
||||
Om toepassings wat kwesbaar is vir hierdie aanval te ontdek, moet jy soek na **geëksporteerde aktiwiteite** in die android-manifes (let daarop dat 'n aktiwiteit met 'n intent-filter outomaties geëksporteer word as standaard). Sodra jy die geëksporteerde aktiwiteite gevind het, **kyk of hulle enige toestemming vereis**. Dit is omdat die **kwaadwillige toepassing daardie toestemming ook nodig sal hê**.
|
||||
|
||||
Jy kan ook die minimum SDK-weergawe van die toepassing nagaan, deur die waarde van **`android:minSdkVersion`** in die **`AndroidManifest.xml`**-lêer te kontroleer. As die waarde **laer as 30** is, is die toepassing kwesbaar vir Tapjacking.
|
||||
|
||||
@ -21,7 +22,7 @@ Jy kan ook die minimum SDK-weergawe van die toepassing nagaan, deur die waarde v
|
||||
|
||||
#### `filterTouchesWhenObscured`
|
||||
|
||||
As **`android:filterTouchesWhenObscured`** op **`true`** gestel is, sal die `View` nie aanrakinge ontvang wanneer die venster van die weergawe deur 'n ander sigbare venster obscuur word nie.
|
||||
As **`android:filterTouchesWhenObscured`** op **`true`** gestel is, sal die `View` nie aanrakinge ontvang wanneer die venster van die view deur 'n ander sigbare venster obscuur word nie.
|
||||
|
||||
#### **`setFilterTouchesWhenObscured`**
|
||||
|
||||
@ -39,13 +40,13 @@ android:filterTouchesWhenObscured="true">
|
||||
|
||||
### Tapjacking-ExportedActivity
|
||||
|
||||
Die mees **onlangs Android-toepassing** wat 'n Tapjacking-aanval uitvoer (+ aanroep voor 'n geexporteerde aktiwiteit van die aangevalde toepassing) kan gevind word in: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
Die mees **onlangse Android-toepassing** wat 'n Tapjacking-aanval uitvoer (+ aanroep voor 'n geexporteerde aktiwiteit van die aangevalde toepassing) kan gevind word in: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
|
||||
Volg die **README-instruksies om dit te gebruik**.
|
||||
|
||||
### FloatingWindowApp
|
||||
|
||||
'n Voorbeeldprojek wat **FloatingWindowApp** implementeer, wat gebruik kan word om bo ander aktiwiteite te plaas om 'n clickjacking-aanval uit te voer, kan gevind word in [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (bietjie oud, goeie geluk met die bou van die apk).
|
||||
'n Voorbeeldprojek wat **FloatingWindowApp** implementeer, wat gebruik kan word om bo ander aktiwiteite te plaas om 'n clickjacking-aanval uit te voer, kan gevind word in [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (dit is 'n bietjie oud, goeie geluk met die bou van die apk).
|
||||
|
||||
### Qark
|
||||
|
||||
@ -54,11 +55,53 @@ Volg die **README-instruksies om dit te gebruik**.
|
||||
|
||||
Jy kan [**qark**](https://github.com/linkedin/qark) gebruik met die `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` parameters om 'n kwaadwillige toepassing te skep om moontlike **Tapjacking** kwesbaarhede te toets.\
|
||||
|
||||
Die mitigasie is relatief eenvoudig aangesien die ontwikkelaar kan kies om nie aanraakgebeurtenisse te ontvang wanneer 'n weergawe deur 'n ander bedek is nie. Gebruik die [Android Developer’s Reference](https://developer.android.com/reference/android/view/View#security):
|
||||
Die mitigasie is relatief eenvoudig aangesien die ontwikkelaar kan kies om nie aanraakgebeurtenisse te ontvang wanneer 'n weergawe deur 'n ander bedek word nie. Gebruik die [Android Ontwikkelaar se Verwysing](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> Soms is dit noodsaaklik dat 'n toepassing in staat is om te verifieer dat 'n aksie uitgevoer word met die volle kennis en toestemming van die gebruiker, soos om 'n toestemming versoek toe te staan, 'n aankoop te doen of op 'n advertensie te klik. Ongelukkig kan 'n kwaadwillige toepassing probeer om die gebruiker te mislei om hierdie aksies uit te voer, sonder dat hulle daarvan bewus is, deur die beoogde doel van die weergawe te verberg. As 'n remedie bied die raamwerk 'n aanraakfiltermeganisme wat gebruik kan word om die sekuriteit van weergawes wat toegang tot sensitiewe funksionaliteit bied, te verbeter.
|
||||
> Soms is dit noodsaaklik dat 'n toepassing in staat is om te verifieer dat 'n aksie uitgevoer word met die volle kennis en toestemming van die gebruiker, soos om 'n toestemming versoek toe te staan, 'n aankoop te doen of op 'n advertensie te klik. Ongelukkig kan 'n kwaadwillige toepassing probeer om die gebruiker te mislei om hierdie aksies uit te voer, sonder dat hulle daarvan bewus is, deur die beoogde doel van die weergawe te verberg. As 'n remedie bied die raamwerk 'n aanraakfiltreringsmeganisme wat gebruik kan word om die sekuriteit van weergawes wat toegang tot sensitiewe funksionaliteit bied, te verbeter.
|
||||
>
|
||||
> Om aanraakfiltrering in te skakel, bel [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) of stel die android:filterTouchesWhenObscured uitleg eienskap op waar. Wanneer geaktiveer, sal die raamwerk aanrakings wat ontvang word wanneer die weergawe se venster deur 'n ander sigbare venster bedek is, verwerp. As gevolg hiervan sal die weergawe nie aanrakings ontvang wanneer 'n toast, dialoog of ander venster bo die weergawe se venster verskyn nie.
|
||||
> Om aanraakfiltrering in te skakel, bel [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) of stel die android:filterTouchesWhenObscured uitleg eienskap op waar. Wanneer dit geaktiveer is, sal die raamwerk aanrakings wat ontvang word wanneer die weergawe se venster deur 'n ander sigbare venster bedek is, verwerp. As gevolg hiervan sal die weergawe nie aanrakings ontvang wanneer 'n toast, dialoog of ander venster bo die weergawe se venster verskyn nie.
|
||||
|
||||
---
|
||||
|
||||
## Toeganklikheid Oorlay Phishing (Banking-Trojan Variant)
|
||||
|
||||
Benewens klassieke Tapjacking, misbruik moderne Android bank malware gesinne (bv. **ToxicPanda**, BrasDex, Sova, ens.) die **Toeganklikheidsdiens** om 'n volle skerm WebView **oorlay** bo die wettige toepassing te plaas terwyl dit steeds in staat is om die **gebruikersinvoer** na die weergawe onder dit te stuur. Dit verhoog dramaties die geloofwaardigheid en stel aanvallers in staat om akrediteer, OTP's of selfs bedrogspeldtransaksies te steel.
|
||||
|
||||
### Hoe dit werk
|
||||
1. Die kwaadwillige APK versoek die hoogs sensitiewe `BIND_ACCESSIBILITY_SERVICE` toestemming, gewoonlik deur die versoek agter 'n vals Google/Chrome/PDF-kyker dialoog te verberg.
|
||||
2. Sodra die gebruiker die diens aktiveer, simuleer die malware programmaties die tikke wat benodig word om addisionele gevaarlike toestemmings (`READ_SMS`, `SYSTEM_ALERT_WINDOW`, `REQUEST_INSTALL_PACKAGES`, …) toe te staan.
|
||||
3. 'n **WebView** word opgeblase en by die vensterbestuurder gevoeg met die **`TYPE_ACCESSIBILITY_OVERLAY`** venstertipe. Die oorlay kan heeltemal ondoorzichtig of semi-deursigtig wees en kan as *“deur”* gemerk word sodat die oorspronklike aanrakings steeds aan die agtergrondaktiwiteit gelewer word (dus gebeur die transaksie werklik terwyl die slagoffer net die phishingvorm sien).
|
||||
```java
|
||||
WebView phishingView = new WebView(getApplicationContext());
|
||||
phishingView.getSettings().setJavaScriptEnabled(true);
|
||||
phishingView.loadUrl("file:///android_asset/bank_login.html");
|
||||
|
||||
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY, // <-- bypasses SYSTEM_ALERT_WINDOW prompt
|
||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, // «through» flag → forward touches
|
||||
PixelFormat.TRANSLUCENT);
|
||||
wm.addView(phishingView, lp);
|
||||
```
|
||||
### Tipiese werksvloei gebruik deur bank Trojans
|
||||
* Vra geïnstalleerde pakkette (`QUERY_ALL_PACKAGES`) om uit te vind watter bank / beurs app tans oop is.
|
||||
* Laai 'n **HTML/JS oortrek sjabloon** van die C2 af wat daardie spesifieke toepassing perfek naboots (Logo, kleure, i18n strings…).
|
||||
* Vertoon die oortrek, versamel akkurate inligting/ PIN/patroon.
|
||||
* Gebruik die **Accessibility API** (`performGlobalAction`, `GestureDescription`) om oordragte in die agtergrond te outomatiseer.
|
||||
|
||||
### Opsporing & Versagting
|
||||
* Ou dit die lys van geïnstalleerde toepassings met `adb shell pm list packages -3 -e BIND_ACCESSIBILITY_SERVICE`.
|
||||
* Van die toepassing kant (bank / beurs):
|
||||
- Aktiveer **`android:accessibilityDataSensitive="accessibilityDataPrivateYes"`** (Android 14+) op sensitiewe weergawes om nie-Play-Store dienste te blokkeer.
|
||||
- Kombineer met `setFilterTouchesWhenObscured(true)` en `FLAG_SECURE`.
|
||||
* Stelselharding:
|
||||
- Deaktiveer *Installeer van Onbekende Bronne* & *Toeganklikheid vir onbetroubare toepassings*.
|
||||
- Handhaaf PlayProtect & op datum toestelle.
|
||||
|
||||
## Verwysings
|
||||
* [Bitsight – ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user