hacktricks/mobile-pentesting/android-app-pentesting/tapjacking.md

82 lines
7.6 KiB
Markdown

# Tapjacking
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## **Información básica**
**Tapjacking** es un ataque en el que se lanza una **aplicación maliciosa** y se **posiciona encima de una aplicación víctima**. Una vez que oculta visiblemente la aplicación víctima, su interfaz de usuario está diseñada de tal manera que engaña al usuario para que interactúe con ella, mientras pasa la interacción a la aplicación víctima.\
En efecto, **ciega al usuario para que no sepa que en realidad está realizando acciones en la aplicación víctima**.
### Detección
Para detectar aplicaciones vulnerables a este ataque, debes buscar **actividades exportadas** en el manifiesto de Android (ten en cuenta que una actividad con un intent-filter se exporta automáticamente por defecto). Una vez que hayas encontrado las actividades exportadas, **verifica si requieren algún permiso**. Esto se debe a que la **aplicación maliciosa también necesitará ese permiso**.
### Protección
#### Android 12 (API 31,32) y versiones superiores
[**Según esta fuente**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** los ataques de tapjacking se previenen automáticamente en Android a partir de Android 12 (API 31 y 30) y versiones superiores. Por lo tanto, incluso si la aplicación es vulnerable, **no podrás explotarla**.
#### `filterTouchesWhenObscured`
Si se establece **`android:filterTouchesWhenObscured`** en **`true`**, la `View` no recibirá toques cuando la ventana de la vista esté oculta por otra ventana visible.
#### **`setFilterTouchesWhenObscured`**
El atributo **`setFilterTouchesWhenObscured`** establecido en true también puede prevenir la explotación de esta vulnerabilidad si la versión de Android es inferior.\
Si se establece en **`true`**, por ejemplo, un botón puede ser automáticamente **deshabilitado si está oculto**:
```markup
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
```
## Explotación
### Tapjacking-ExportedActivity
La aplicación más **reciente de Android** que realiza un **ataque de Tapjacking** (+ invocando antes una **actividad exportada** de la aplicación atacada) se puede encontrar en [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
Sigue las **instrucciones del README para usarla**.
### FloatingWindowApp
Un proyecto de ejemplo que implementa **FloatingWindowApp**, que se puede utilizar para colocar encima de otras actividades y realizar un ataque de clickjacking, se puede encontrar en [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un poco antiguo, buena suerte construyendo el apk).
### Qark
{% hint style="danger" %}
Parece que este proyecto ya no se mantiene y esta funcionalidad ya no funciona correctamente.
{% endhint %}
Puedes usar [**qark**](https://github.com/linkedin/qark) con los parámetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para crear una aplicación maliciosa y probar posibles vulnerabilidades de **Tapjacking**.
La mitigación es relativamente sencilla, ya que el desarrollador puede optar por no recibir eventos táctiles cuando una vista está cubierta por otra. Utilizando la [Referencia del Desarrollador de Android](https://developer.android.com/reference/android/view/View#security):
> A veces es esencial que una aplicación pueda verificar que una acción se realiza con el pleno conocimiento y consentimiento del usuario, como conceder una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Desafortunadamente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones sin darse cuenta, ocultando el propósito previsto de la vista. Como remedio, el marco ofrece un mecanismo de filtrado táctil que se puede utilizar para mejorar la seguridad de las vistas que proporcionan acceso a funcionalidades sensibles.
>
> Para habilitar el filtrado táctil, llama a [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o establece el atributo de diseño android:filterTouchesWhenObscured en true. Cuando está habilitado, el marco descartará los toques que se reciban siempre que la ventana de la vista esté oculta por otra ventana visible. Como resultado, la vista no recibirá toques cada vez que aparezca un toast, un diálogo u otra ventana por encima de la ventana de la vista.
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>