Cómo auditar aplicaciones de Android (para actividad de captura de pantalla)

¿Cómo audito las aplicaciones de mi Android para determinar qué aplicaciones están tomando capturas de pantalla de mi actividad?

Recientemente instalé y ejecuté diskdigger para recuperar una imagen que había eliminado accidentalmente, pero los restos de imágenes que encontró diskdigger fueron impactantes. Había docenas (¿tal vez más de 100?) capturas de pantalla de mi actividad, que iban desde tomas inocuas de mi pantalla de inicio hasta imágenes tomadas cuando estaba dentro de mis aplicaciones de chat (encriptadas) y mi billetera bitcoin.

No hace falta decir que no tomé ni eliminé estas capturas de pantalla.

Mi teléfono es un Nexus 5X rooteado que ejecuta Lineage OS 15-1 (Android 8.1.0). Uso principalmente software de fdroid, aunque tengo algunos descargados de yalp (no tengo gapps instalados), como whatsapp y diskdigger.

¿Cómo audito las aplicaciones que tengo instaladas para determinar quién es el responsable de tomar (y luego eliminar) estas capturas de pantalla de mi actividad? Para empezar, ¿cómo puedo:

  1. Enumerar todas mis aplicaciones, ordenadas por la cantidad de veces que la aplicación ha tomado una captura de
    pantalla desde que se instaló
  2. Enumerar todas mis aplicaciones, ordenadas por la cantidad de veces que la aplicación ha escrito un archivo en el disco desde que se instaló
  3. Genere un registro y/o un brindis cada vez que se tome una captura de pantalla, registrando la marca de tiempo, el responsable de la aplicación y el nombre del archivo.
  4. Genere un registro y/o un brindis cada vez que una aplicación escriba un archivo en el disco, registrando la marca de tiempo, el responsable de la aplicación y el nombre del archivo.
  5. Genere un registro y/o un brindis cada vez que una aplicación elimine un archivo del disco, registrando la marca de tiempo, el responsable de la aplicación y el nombre del archivo.

¡TIA!

Respuestas (2)

Tomar una captura de pantalla requiere permisos de root o del sistema (o un exploit de root). Supongo que tu ROM es una versión oficial de Lineage. Suponiendo además que su clave de firma no se haya filtrado, la aplicación que está buscando debería usar permisos de raíz es parte del sistema operativo. Por lo tanto, un primer paso sería revocar todos los permisos para que las aplicaciones usen permisos de root.

  1. Enumerar todas mis aplicaciones, ordenadas por la cantidad de veces que la aplicación ha tomado una captura de pantalla desde que se instaló

Android es un sistema operativo optimizado para teléfonos inteligentes con memoria flash. La memoria flash se degrada al escribir en ella, por lo que Android está optimizado para reducir las operaciones de escritura. Por lo tanto, Android no crea extensos archivos de registro. Solo existen algunos pequeños registros en la RAM (por ejemplo, logcat). Por lo tanto, AFAIK, no existe un registro que registre qué aplicación ha creado una captura de pantalla.

  1. Enumerar todas mis aplicaciones, ordenadas por la cantidad de veces que la aplicación ha escrito un archivo en el disco desde que se instaló

Una vez más, no existe tal registro. Sin embargo, si la aplicación aún está activa, puede monitorear la actividad del "disco" usando inotifywait-for-Android, una aplicación de línea de comandos que puede registrar el acceso de lectura y/o escritura a cierta carpeta en su teléfono. Parece que tienes que compilarlo tú mismo usando NDK antes de usarlo; no encontré una versión precompilada.

Una API similar a la utilizada por inotifytools está disponible para las aplicaciones de Android, por lo que puede haber aplicaciones que brinden una funcionalidad similar.

  1. Genere un registro y/o un brindis cada vez que se tome una captura de pantalla, registrando la marca de tiempo, el responsable de la aplicación y el nombre del archivo.

Si las capturas de pantalla que encontró se crearon con el screencapbinario (la herramienta de Android para crear capturas de pantalla que se incluye en Android), puede intentar reemplazar este binario con algún otro binario.

Sin embargo, si las capturas de pantalla se crearon de una manera diferente, no veo una forma de detectar o prevenir esto.

  1. Genere un registro y/o un brindis cada vez que una aplicación escriba un archivo en el disco, registrando la marca de tiempo, el responsable de la aplicación y el nombre del archivo.
  2. Genere un registro y/o un brindis cada vez que una aplicación elimine un archivo del disco, registrando la marca de tiempo, el responsable de la aplicación y el nombre del archivo.

-> Mira lo que escribí en (2.) sobre inotifytools

Gracias. Para tu información, deshabilité los permisos de root (para todas las aplicaciones + adb) durante unos días, luego lo rooteé nuevamente (tuve que rootearlo nuevamente para ejecutar diskdigger para encontrar las capturas de pantalla eliminadas). Desafortunadamente, descubrí que las capturas de pantalla todavía se estaban tomando cuando no se permitía la raíz. Todavía no he tenido la oportunidad de probar inotifytools..

También puede usar las reglas de política de selinux en modo permisivo para auditar una aplicación de Android, pero Google lo hace extremadamente difícil intencionalmente.

En caso de que alguien esté interesado, terminé encontrando la fuente de las imágenes de captura de pantalla: es el selector de "aplicaciones recientes" incorporado de Android. Para obtener más información, documenté mi proceso de investigación y los hallazgos en mi blog.