6.7 KiB
Tapjacking
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repository di GitHub.
Informazioni di base
Tapjacking è un attacco in cui un'applicazione malintenzionata viene avviata e si posiziona sopra un'applicazione vittima. Una volta che oscura visibilmente l'app vittima, la sua interfaccia utente è progettata in modo tale da ingannare l'utente a interagire con essa, mentre sta passando l'interazione all'app vittima.
In pratica, acceca l'utente facendogli credere di eseguire azioni sull'app vittima.
Rilevamento
Per individuare le app vulnerabili a questo attacco, è necessario cercare le attività esportate nel manifesto di Android (nota che un'attività con un intent-filter viene automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, verificare se richiedono qualche permesso. Questo perché l'applicazione malintenzionata avrà bisogno anche di quel permesso.
Protezione
Android 12 (API 31,32) e versioni successive
Secondo questa fonte, gli attacchi di tapjacking sono automaticamente prevenuti da Android dalla versione 12 (API 31 e 30) in poi. Quindi, anche se l'applicazione è vulnerabile, non sarà possibile sfruttarla.
filterTouchesWhenObscured
Se android:filterTouchesWhenObscured
è impostato su true
, la View
non riceverà toccate quando 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>
Sfruttamento
Tapjacking-ExportedActivity
L'applicazione Android più recente che esegue un attacco Tapjacking (+ invocando prima un'attività esportata dell'applicazione attaccata) può essere trovata su: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Segui le istruzioni nel file README per usarla.
FloatingWindowApp
Un progetto di esempio che implementa FloatingWindowApp, che può essere utilizzato per sovrapporre altre attività per eseguire un attacco di clickjacking, può essere trovato su FloatingWindowApp (un po' vecchio, buona fortuna a compilare l'apk).
Qark
{% hint style="danger" %} Sembra che questo progetto non sia più mantenuto e questa funzionalità non funzioni correttamente. {% endhint %}
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 dello sviluppatore Android:
A volte è essenziale che un'applicazione sia in grado di verificare che un'azione venga eseguita con la piena conoscenza e il consenso dell'utente, ad esempio concedere una richiesta di autorizzazione, effettuare un acquisto o fare clic su un annuncio. Purtroppo, un'applicazione malintenzionata potrebbe cercare di ingannare l'utente a eseguire queste azioni, ignaro, nascondendo lo scopo previsto della vista. Come rimedio, il framework offre un meccanismo di filtraggio del tocco che può essere utilizzato per migliorare la sicurezza delle viste che forniscono accesso a funzionalità sensibili.
Per abilitare il filtraggio del tocco, 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 una toast, una finestra di dialogo o un'altra finestra sopra la finestra della vista.
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF, controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository di HackTricks e HackTricks Cloud.