Tapjacking
Reading time: 7 minutes
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.
Basiese Inligting
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 spoor, 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.
Beskerming
Android 12 (API 31,32) en hoër
Volgens hierdie bron, tapjacking-aanvalle word outomaties deur Android van Android 12 (API 31 & 30) en hoër voorkom. So, selfs al is die toepassing kwesbaar, sal jy dit nie kan benut nie.
filterTouchesWhenObscured
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
Die attribuut setFilterTouchesWhenObscured
wat op true gestel is, kan ook die benutting van hierdie kwesbaarheid voorkom as die Android-weergawe laer is.
As dit op true
gestel is, kan 'n knoppie byvoorbeeld outomaties gedeaktiveer word as dit obscuur is:
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
Exploitatie
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.
Volg die README instruksies om dit te gebruik.
FloatingWindowApp
'n Voorbeeldprojek wat FloatingWindowApp implementeer, wat gebruik kan word om bo-op ander aktiwiteite te plaas om 'n clickjacking-aanval uit te voer, kan gevind word in FloatingWindowApp (dit is 'n bietjie oud, goeie geluk met die bou van die apk).
Qark
caution
Dit lyk of hierdie projek nou nie meer onderhou word nie en hierdie funksionaliteit werk nie meer behoorlik nie
Jy kan 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 word nie. Gebruik die Android Developer’s Reference:
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)
of stel die android:filterTouchesWhenObscured uitleg eienskap op true. 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.
Toeganklikheid Oorlay Phishing (Banking-Trojan Variant)
Benewens klassieke Tapjacking, misbruik moderne Android bank malware gesinne (bv. ToxicPanda, BrasDex, Sova, ens.) die Toeganklikheiddiens 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 aansienlik die geloofwaardigheid en stel aanvallers in staat om akrediteer, OTP's of selfs bedrogspeldtransaksies te steel.
Hoe dit werk
- Die kwaadwillige APK versoek die hoogs sensitiewe
BIND_ACCESSIBILITY_SERVICE
toestemming, gewoonlik deur die versoek agter 'n vals Google/Chrome/PDF-kijker dialoog te verberg. - 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. - '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).
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 oortjie sjabloon van die C2 af wat daardie spesifieke toepassing perfek naboots (Logo, kleure, i18n strings…).
- Vertoon die oortjie, 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 uitsigte om nie-Play-Store dienste te blokkeer. - Kombineer met
setFilterTouchesWhenObscured(true)
enFLAG_SECURE
.
- Stelselharding:
- Deaktiveer Installeer van Onbekende Bronne & Toeganklikheid vir onbetroubare toepassings.
- Handhaaf PlayProtect & op datum toestelle.
Vir addisionele besonderhede oor die benutting van Toeganklikheidsdienste vir volle afstandbeheer van toestelle (bv. PlayPraetor, SpyNote, ens.) sien:
Verwysings
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.