Tapjacking
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Taarifa za Msingi
Tapjacking ni shambulio ambapo hasidi programu inazinduliwa na inaweka mwenyewe juu ya programu ya mwathiriwa. Mara inapoficha kwa uwazi programu ya mwathiriwa, kiolesura chake cha mtumiaji kimeundwa ili kumdanganya mtumiaji kuingiliana nayo, wakati kinapitisha mwingiliano huo kwa programu ya mwathiriwa.
Kwa ufanisi, inamficha mtumiaji ukweli kwamba kwa kweli anafanya vitendo kwenye programu ya mwathiriwa.
Utambuzi
- Angalia exported activities katika Android manifest (an activity with an intent-filter is exported by default). Ikiwa activity iliyotumwa imehifadhiwa na permission, attacking app itahitaji permission ile ile, ambayo inapunguza exploitability.
- Angalia toleo la minimum SDK
android:minSdkVersionkatikaAndroidManifest.xml. Ikiwa ni chini ya 30, mwenendo wa chaguo-msingi wa zamani unaweza kufanya tapjacking iwe rahisi kutumika. - Wakati wa runtime, tumia
logcatkubaini blocked touches kwenye Android 12+: mfumo unaandika logiUntrusted touch due to occlusion by <package>wakati overlays zinapoonekana kama zinasafishwa.
Ulinzi
Android 12+ kuzuia kwa chaguo-msingi & compat flags
Android 12 (API 31) ilianzisha “Block untrusted touches”: touches coming from another UID window of type TYPE_APPLICATION_OVERLAY (opacity ≥0.8) are dropped. Hii imewezeshwa kwa chaguo-msingi. Wakati wa majaribio unaweza kuibadilisha:
# disable blocking for a specific package (for PoC crafting)
adb shell am compat disable BLOCK_UNTRUSTED_TOUCHES com.example.victim
# re‑enable
adb shell am compat reset BLOCK_UNTRUSTED_TOUCHES com.example.victim
Madirisha ya kuaminika (accessibility, IME, assistant) bado hupokea matukio. Overlays zisizoonekana au zenye uwazi kabisa pia hupitia kizuizi, na washambuliaji hujaribu kutumia hili kwa kuweka alpha < 0.8.
Kushughulikia kufichika kwa sehemu
Overlays za sehemu zinazowacha eneo lengwa liweonekana hazizuiwi kiotomatiki. Punguza hatari katika sensitive views kwa kukataa matukio yenye FLAG_WINDOW_IS_PARTIALLY_OBSCURED flag:
@Override
public boolean onFilterTouchEventForSecurity(MotionEvent event) {
if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
return false; // drop tap when anything partially obscures us
}
return super.onFilterTouchEventForSecurity(event);
}
filterTouchesWhenObscured
Ikiwa android:filterTouchesWhenObscured imewekwa kuwa true, View haitapokea kugusa wakati wowote dirisha la view litakapofichwa na dirisha jingine linaloonekana.
setFilterTouchesWhenObscured
Sifa setFilterTouchesWhenObscured ikitekwa kuwa true pia inaweza kuzuia matumizi mabaya ya udhaifu huu ikiwa toleo la Android ni la chini.
Ikiwa imewekwa kuwa true, kwa mfano, kitufe kinaweza kuzimwa moja kwa moja ikiwa kimefunikwa:
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
Utekelezaji
Tapjacking-ExportedActivity
Programu ya Android ya hivi karibuni inayofanya shambulio la Tapjacking (ikiita kabla ya exported activity ya programu iliyoshambuliwa) inapatikana katika: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Fuata maelekezo ya README ili kuvitumia.
FloatingWindowApp
Mfano wa mradi unaotekeleza FloatingWindowApp, ambao unaweza kutumiwa kuwekwa juu ya activities nyingine kufanya shambulio la clickjacking, upo katika FloatingWindowApp (mzee kidogo, bahati njema kujenga apk).
Qark
Caution
Inaonekana mradi huu hauendeshwi tena na utendakazi huu haufanyi kazi ipasavyo tena
Unaweza kutumia qark na vigezo --exploit-apk –sdk-path /Users/username/Library/Android/sdk kuunda programu yenye nia mbaya kujaribu uwezekano wa udhaifu wa Tapjacking.\
Mirekebisho ni rahisi kwa kuwa developer anaweza kuchagua kutoipokea touch events wakati view imefunikwa na nyingine. Kutumia Android Developer’s Reference:
Wakati mwingine ni muhimu kwa programu kuthibitisha kwamba kitendo kinafanyika kwa uelewa na ridhaa kamili ya mtumiaji, kama vile kutoa ombi la ruhusa, kufanya ununuzi au kubofya tangazo. Kwa bahati mbaya, programu yenye nia mbaya inaweza kujaribu kumdanganya mtumiaji kufanya vitendo hivi bila kujua, kwa kuficha kusudi halisi la view. Kama tiba, framework inatoa mfumo wa kuchuja mguso ambao unaweza kutumiwa kuboresha usalama wa views zinazotoa ufikiaji kwa kazi nyeti.
Ili kuwezesha touch filtering, piga
setFilterTouchesWhenObscured(boolean)au weka sifa ya layout android:filterTouchesWhenObscured kuwa true. Wakati imewezeshwa, framework itatupa miguso inayopokelewa wakati dirisha la view limefunikwa na dirisha lingine linaloonekana. Matokeo yake, view haitapokea miguso wakati toast, dialog au dirisha lingine linapojitokeza juu ya dirisha la view.
Recent overlay-based malware techniques
- Hook/Ermac variants hutumia overlays karibu wazi (e.g., fake NFC prompts) ili kunasa ishara za kugusa na PIN za lock-screen huku zikiruhusu miguso kupelekwa kwa kile kilicho chini, zikitolewa kupitia moduli za Accessibility-ATS.
- Anatsa/TeaBot droppers husambaza overlays kwa mamia ya apps za benki/crypto na kuonyesha overlays za skrini nzima za “maintenance” kuwakatisha tamaa waathiriwa wakati ATS inamalizia uhamishaji.
- Hidden-VNC banking RATs zinaonyesha kwa muda mfupi overlays za phishing kunasa credentials, kisha zinategemea VNC ya siri pamoja na Accessibility kurudia taps huku zikitengeneza alama chache kwenye kifaa.
Ufunuo wa vitendo kwa red teams: changanya overlay yenye alpha < 0.8 ili kupita vizuizi vya Android 12, kisha ongeza hadi overlay ya accessibility ya skrini nzima mara mtumiaji atakapotoggle huduma. Tumia GestureDescription au headless VNC kudumisha udhibiti baada ya credentials kunaswa.
Accessibility Overlay Phishing (Banking-Trojan Variant)
Mbali na Tapjacking ya jadi, familia za kisasa za malware za benki za Android (mfano ToxicPanda, BrasDex, Sova, n.k.) zinanyanyasa Accessibility Service kuweka WebView ya skrini nzima kama overlay juu ya programu halali huku zikibaki zikiwezesha kupeleka pembejeo za mtumiaji kwa view iliyo chini. Hii inaongeza uhalisia kwa kiasi kikubwa na inawawezesha wadukuzi kuiba credentials, OTPs au hata kuendesha moja kwa moja miamala ya udanganyifu.
Jinsi inavyofanya kazi
- APK yenye nia mbaya inaomba ruhusa yenye nyeti sana
BIND_ACCESSIBILITY_SERVICE, mara nyingi ikificha ombi hilo nyuma ya dialogu ya bandia ya Google/Chrome/PDF-viewer. - Mara mtumiaji atakapowasha service, malware kwa njia ya program inasimulate taps zinazohitajika kutoa ruhusa za hatari zaidi (
READ_SMS,SYSTEM_ALERT_WINDOW,REQUEST_INSTALL_PACKAGES, …). - WebView imepanuliwa na kuongezwa kwa window manager kwa kutumia aina ya dirisha
TYPE_ACCESSIBILITY_OVERLAY. Overlay inaweza kuchorwa kabisa isiyoonekana au nusu-uwazi na inaweza kuwekwa lebo kama “through” ili miguso ya asili iendelezwe kwa activity ya nyuma (hivyo muamala unafanyika kwa kweli wakati mwathiriwa anaona tu fomu ya phishing).
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);
Mtiririko wa kawaida unaotumiwa na banking Trojans
- Ulizia vifurushi vilivyowekwa (
QUERY_ALL_PACKAGES) ili kubaini programu gani ya benki/pochi imefunguliwa sasa. - Pakua HTML/JS overlay template kutoka kwa C2 inayoiga kabisa programu husika (Logo, colours, i18n strings…).
- Onyesha overlay, ukusanye credentials/PIN/pattern.
- Tumia Accessibility API (
performGlobalAction,GestureDescription) ili kuendesha uhamisho kiotomatiki kwa usuli.
Ugunduzi na Kupunguza
- Kagua orodha ya programu zilizosakinishwa kwa kutumia
adb shell pm list packages -3 -e BIND_ACCESSIBILITY_SERVICE. - Kutoka upande wa programu (benki / pochi):
- Wezesha
android:accessibilityDataSensitive="accessibilityDataPrivateYes"(Android 14+) kwenye views nyeti ili kuzuia huduma zisizo za Play Store. - Changanya na
setFilterTouchesWhenObscured(true)naFLAG_SECURE.
Kwa maelezo zaidi juu ya kutumia Accessibility Services kwa udhibiti kamili wa kifaa kwa mbali (kwa mfano PlayPraetor, SpyNote, n.k.) angalia:
Marejeo
- Android Developers – Tapjacking risk & mitigations (updated 2024)
- Zimperium – HOOK v3 overlay expansion (Aug 2025)
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.


