Tapjacking
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Informazioni di base
Tapjacking è un attacco in cui un applicazione maligna viene lanciata e si posiziona sopra unâapplicazione vittima. Una volta che oscura visibilmente lâapp vittima, la sua interfaccia utente è progettata in modo da ingannare lâutente a interagire con essa, mentre passa lâinterazione allâapp vittima.
In effetti, sta accecato lâutente dal sapere che sta effettivamente eseguendo azioni sullâapp vittima.
Rilevamento
Per rilevare app vulnerabili a questo attacco, dovresti cercare attivitĂ esportate nel manifesto android (nota che unâattivitĂ con un intent-filter è automaticamente esportata per impostazione predefinita). Una volta trovate le attivitĂ esportate, controlla se richiedono qualche permesso. Questo perchĂŠ lâapplicazione maligna avrĂ bisogno di quel permesso.
Puoi anche controllare la versione SDK minima dellâapp, verificando il valore di android:minSdkVersion nel file AndroidManifest.xml. Se il valore è inferiore a 30, lâapp è vulnerabile al Tapjacking.
Protezione
Android 12 (API 31,32) e superiori
Secondo questa fonte, gli attacchi di tapjacking sono automaticamente prevenuti da Android a partire da Android 12 (API 31 & 30) e superiori. Quindi, anche se lâapplicazione è vulnerabile, non sarai in grado di sfruttarla.
filterTouchesWhenObscured
Se android:filterTouchesWhenObscured è impostato su true, il View non riceverĂ tocchi ogni volta che la finestra della vista è oscurata da unâaltra finestra visibile.
setFilterTouchesWhenObscured
Lâattributo setFilterTouchesWhenObscured impostato su true può anche prevenire lo sfruttamento di questa vulnerabilitĂ se la versione di Android è inferiore.
Se impostato su true, ad esempio, un pulsante può essere automaticamente disabilitato se è oscurato:
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
Exploitation
Tapjacking-ExportedActivity
Lâultima applicazione Android che esegue un attacco Tapjacking (+ invocando prima unâattivitĂ esportata dellâapplicazione attaccata) può essere trovata in: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Segui le istruzioni del README per utilizzarla.
FloatingWindowApp
Un progetto di esempio che implementa FloatingWindowApp, che può essere utilizzato per sovrapporsi ad altre attivitĂ per eseguire un attacco clickjacking, può essere trovato in FloatingWindowApp (un poâ vecchio, buona fortuna a costruire lâapk).
Qark
Caution
Sembra che questo progetto non sia piĂš mantenuto e questa funzionalitĂ non funzioni piĂš correttamente
Puoi utilizzare qark con i parametri --exploit-apk âsdk-path /Users/username/Library/Android/sdk per creare unâapplicazione malevola per testare possibili vulnerabilitĂ di Tapjacking.\
La mitigazione è relativamente semplice poichĂŠ lo sviluppatore può scegliere di non ricevere eventi touch quando una vista è coperta da unâaltra. Utilizzando il Riferimento per sviluppatori Android:
A volte è essenziale che unâapplicazione possa verificare che unâazione venga eseguita con la piena conoscenza e il consenso dellâutente, come concedere una richiesta di autorizzazione, effettuare un acquisto o cliccare su un annuncio. Sfortunatamente, unâapplicazione malevola potrebbe cercare di ingannare lâutente nel compiere queste azioni, senza che se ne accorga, nascondendo lo scopo previsto della vista. Come rimedio, il framework offre un meccanismo di filtraggio dei tocchi che può essere utilizzato per migliorare la sicurezza delle viste che forniscono accesso a funzionalitĂ sensibili.
Per abilitare il filtraggio dei tocchi, chiama
setFilterTouchesWhenObscured(boolean)o imposta lâattributo di layout android:filterTouchesWhenObscured su true. Quando abilitato, il framework scarterĂ i tocchi ricevuti ogni volta che la finestra della vista è oscurata da unâaltra finestra visibile. Di conseguenza, la vista non riceverĂ tocchi ogni volta che un toast, un dialogo o unâaltra finestra appare sopra la finestra della vista.
Accessibility Overlay Phishing (Variante Banking-Trojan)
Oltre al classico Tapjacking, le moderne famiglie di malware bancario Android (ad es. ToxicPanda, BrasDex, Sova, ecc.) abusano del Servizio di AccessibilitĂ per posizionare un overlay WebView a schermo intero sopra lâapplicazione legittima, pur essendo in grado di inoltrare lâinput dellâutente alla vista sottostante. Questo aumenta drammaticamente la credibilitĂ e consente agli attaccanti di rubare credenziali, OTP o persino automatizzare transazioni fraudolente.
Come funziona
- LâAPK malevolo richiede il permesso altamente sensibile
BIND_ACCESSIBILITY_SERVICE, solitamente nascondendo la richiesta dietro un falso dialogo di Google/Chrome/visualizzatore PDF. - Una volta che lâutente abilita il servizio, il malware simula programmaticamente i tocchi necessari per concedere ulteriori permessi pericolosi (
READ_SMS,SYSTEM_ALERT_WINDOW,REQUEST_INSTALL_PACKAGES, âŚ). - Un WebView viene inflazionato e aggiunto al gestore delle finestre utilizzando il tipo di finestra
TYPE_ACCESSIBILITY_OVERLAY. Lâoverlay può essere reso completamente opaco o semi-trasparente e può essere contrassegnato come âattraversoâ in modo che i tocchi originali vengano comunque consegnati allâattivitĂ di sfondo (cosĂŹ la transazione avviene realmente mentre la vittima vede solo il modulo di 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);
Flusso di lavoro tipico utilizzato dai Trojan bancari
- Interrogare i pacchetti installati (
QUERY_ALL_PACKAGES) per capire quale app bancaria / portafoglio è attualmente aperta. - Scaricare un modello di sovrapposizione HTML/JS dal C2 che imita perfettamente quella specifica applicazione (Logo, colori, stringhe i18nâŚ).
- Visualizzare la sovrapposizione, raccogliere credenziali/PIN/modello.
- Utilizzare lâAPI di AccessibilitĂ (
performGlobalAction,GestureDescription) per automatizzare i trasferimenti in background.
Rilevamento e mitigazione
- Auditare lâelenco delle app installate con
adb shell pm list packages -3 -e BIND_ACCESSIBILITY_SERVICE. - Dal lato dellâapplicazione (banca / portafoglio):
- Abilitare
android:accessibilityDataSensitive="accessibilityDataPrivateYes"(Android 14+) su viste sensibili per bloccare i servizi non Play Store. - Combinare con
setFilterTouchesWhenObscured(true)eFLAG_SECURE.
- Indurimento del sistema:
- Disabilitare Installa da fonti sconosciute e AccessibilitĂ per app non attendibili.
- Applicare PlayProtect e dispositivi aggiornati.
Per ulteriori dettagli su come sfruttare i Servizi di AccessibilitĂ per il controllo remoto completo del dispositivo (ad es. PlayPraetor, SpyNote, ecc.) vedere:
Riferimenti
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

