
Ahora todos usamos aplicaciones bancarias. Es conveniente, rápido y, en nuestra opinión, seguro. Los bancos incluso ingresaron códigos PIN adicionales para que, incluso si pierde su teléfono o cae en manos de un extraño, sus fondos y datos confidenciales están protegidos. ¡Y es genial! ¡Los bancos se preocupan por nuestra seguridad!
Pero, desafortunadamente, si abre la misma aplicación bancaria en el administrador de tareas, verá todo el contenido de su pantalla (por ejemplo, información de cuenta, tarjeta bancaria, chat, en el que discutió algo con un empleado del banco). Puede verificar esto en sus aplicaciones bancarias. Estudié todos los más famosos, y todos ellos no ocultan información confidencial cuando estás en segundo plano.
Por ejemplo, crují latas abstractas, en páginas abstractas. Y ahora te haré una pregunta de inmediato: ¿vas a transferir dinero a tu madre / novia / perro, ya estás en la página de transferencia y dejaste la aplicación para copiar el código de sms (si denegaste el acceso a la aplicación bancaria en un ataque de paranoia), o ver qué Cualquier informacion. Pero cuando decide volver a su aplicación bancaria, ¿qué pantalla elige?
Como vemos, antes de que sean dos pantallas absolutamente idénticas y con prisa, es posible que no se den cuenta de esto. Haga clic en la última aplicación, vaya a ella, ingrese los datos y listo, su dinero ha sido transferido. ¿Dónde fueron transferidos? A quien?
Y el asunto no es solo en ese banco abstracto, miré a varios de los bancos más populares y todos sufren de ese problema.
Curiosamente, en el lado de iOS, los contenidos de la pantalla en el administrador de tareas están ocultos.
Y hay una explicación para esto. Pero más sobre eso más tarde, ahora estamos hablando de Android. Entonces, ¿por qué ocultar el contenido de la pantalla si el usuario ha abandonado la aplicación?
Primero comprendamos cómo funciona el administrador de pantalla (pantalla Recientes)
En esta pantalla vemos una lista de nuestras aplicaciones abiertas anteriormente. Incluso se nos muestra el lugar donde detuvimos nuestra interacción con una aplicación específica. Pero el hecho es que no vemos la aplicación en sí, vemos una instantánea que se realiza antes de salir de la aplicación.
Lo que realmente sucede (brevemente):
- La aplicación ha cambiado a un segundo plano.
- Window Manager coloca la instantánea de la aplicación en GraphicBuffer
- GraphicBuffer se envía a SystemUI a través de Binder para obtener una vista previa de la aplicación.
Entonces, lo que vemos aquí no es el contenido de la aplicación, sino solo una instantánea tomada en el último momento antes de la transición de una aplicación específica al fondo.
Pero, lo has adivinado, no es tan simple, puedes acceder a estas instantáneas y, por ejemplo, también mostrar al usuario en la pantalla Recientes otra aplicación con el pretexto de la banca, que es lo que usan los troyanos. El usuario regresa a la aplicación bancaria, ingresa todos los detalles solicitados, el dinero se transfiere, pero no del todo donde nos gustaría.
O simplemente puede enviar estas imágenes, por ejemplo, a China, donde los duros chinos acumulan información sobre todo y sobre todos. Los métodos para usar las capturas de pantalla obtenidas se pueden pensar sin fin.
En su mayor parte, por supuesto, las aplicaciones bancarias o las aplicaciones que contienen información crítica que no está destinada a miradas indiscretas deben ocuparse de ocultar datos confidenciales.
Negar la realización de instantáneas, o borrarlas solo es posible dentro de una aplicación específica. Y la
documentación dice que solo los fabricantes de dispositivos pueden modificar la clase responsable del mecanismo para recibir y almacenar instantáneas.
Cómo evitar que el sistema realice instantáneas
Hay varias formas, sin embargo, desafortunadamente, no todas son bastante optimistas. Si desea utilizar alguno de ellos en su aplicación, asegúrese de que todo funcione bien en todos los dispositivos.
Puede establecer el parámetro para la actividad:
android:excludeFromRecents = "true"
Sin embargo, este método violará la lógica de la interacción del usuario con la aplicación, ya que la aplicación no aparecerá en absoluto en la pantalla Recientes.
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); } setContentView()
Este método no viola la lógica de interacción, pero el sistema comienza a tratar el contenido de la pantalla de la aplicación como protegido, lo que no permite que se realicen instantáneas. El siguiente es un ejemplo de cómo se verá esto en la pantalla Recientes.
Además, hay una manera de rastrear onPause (). Pero aquí debe mantener constantemente la vista preparada en el estado View.GONE, de modo que cuando la aplicación pase a segundo plano pueda hacer View.VISIBLE. Pero esto tampoco funcionará de manera muy confiable, ya que, desafortunadamente, es imposible controlar el tiempo de eliminación de la instantánea.
Por cierto, el carrito podría, bueno, quién lo dudaría :) En la pantalla hay un chat secreto, en este caso se usa FLAG_SECURE.
Entonces, ¿por qué los bancos ocultan el contenido de una aplicación en la plataforma iOS, que por lo tanto se considera más segura (que es engañosa), y la dejan como está para la plataforma Android? Lo más probable es que no les guste cómo se verá la aplicación en la pantalla Recientes. Eso es solo un lienzo blanco. En iOS, la implementación te permite hacerlo maravillosamente. Como resultado, obtenemos daños de seguridad por el bien de la belleza. Quizás no le importe, siempre y cuando su dinero esté donde le gustaría, y la confidencialidad de los datos es inquebrantable. ¿Pero estás listo para pagar?
Entonces, para no terminar con una nota tan pesimista, plantearemos la pregunta: ¿también se puede hacer maravillosamente para Android? De hecho, ya se me ocurrió una forma, pero primero debes probarlo.
Si está interesado en este tema, puedo describir cómo funciona todo desde adentro. ¿Cómo puedo obtener instantáneas, cómo funciona el sistema Android, sobre las vulnerabilidades de las aplicaciones móviles?
Decidí desafiarme a mí mismo y escribir algo útil regularmente. Publicaré bocetos en mi canal
@paradisecurity en telegramas y luego los recopilaré en publicaciones completas. Adios adios