Tapjacking
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Tapjacking è un attacco in cui un applicazione malevola 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 ciecando l'utente dal sapere che sta effettivamente eseguendo azioni sull'app vittima.
Per rilevare le app vulnerabili a questo attacco, dovresti cercare attività esportate nel manifest 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 malevola avrà bisogno di quel permesso.
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:
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.
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).
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 per eseguire queste azioni, senza che ne sia consapevole, 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 appare un toast, un dialogo o un'altra finestra sopra la finestra della vista.
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)