====== Seguridad en Android ====== ===== Sistema de permisos ===== Android utiliza un sistema de permisos de aplicaciones para protegera al usuario. Dependiendo de la funcionalidad de la aplicación, requerirá unos permisos concretos. Los permisos de las aplicaciones vienen definidos en el fichero ''AndroidManifest.xml'', en las líneas '''' En Android 6.0 y posteriores, el sistema concede automáticamente los permisos normales a la aplicación en el momento de la instalación, mientras que los permisos peligrosos deben ser concedidos explícitamente por el usuario durante la ejecución de la aplicación. ===== Rooting ===== En sistemas Unix, el usuario con máximos privilegios es ''root'' Por defecto, Android no habilita esta característica para proteger al usuario. Es relativamente sencillo obtener permisos de root en el teléfono. Se dice que se //rootea// el dispositivo accediendo así a funciones muy avanzadas no orientadas al usuario final, como por ejemplo instalar ROMs alternativas o desinstalar las aplicaciones preinstaladas del terminal. Un teléfono //rooteado// es más potente, pero conlleva riesgos de seguridad. Una aplicación con permisos de root puede, por ejemplo, romper el //sandboxing// y acceder a datos de otras aplicaciones. Algunas aplicaciones como **SuperSu** mitigan parcialmente el riesgo de asignación de permisos root concediendo estos permisos solamente a aplicaciones concretas. ===== Google Play Protect ===== Servicio de Google para protección contra amenazas en dispositivos móviles. Realiza análisis del terminal automáticamente y de forma periódica. En caso de perdida del dispositivo, permite localizarlo, bloquearlo de forma remota, mostrar en pantalla un mensaje para que la persona que pueda encontrarlo sepa con quién contactar, etc. El mismo servicio es el encargado de analizar las aplicaciones que se suben a Google Play y de descartar aquellas que no cumplen c on los requisitos mínimos de seguridad. También ofrece protección web, bloqueando el acceso a páginas potencialmente maliciosas. ===== Protección contra malware ===== * CONAN mobile * Cifrar dispositivo * Realización de copias de seguridad. * Mantener el sistema operativo actualizado. * Descargar aplicaciones solo de tiendas oficiales (Google Play) * Revisar quién es el desarrollador de la app. * Revisar los comentarios de otros usuarios. * Comprobar el número de descargas. * [[https://www.osi.es/es/campanas/dispositivos-moviles/instale-app-no-fiable|¡Ayuda! Instalé una app no fiable]] ===== Análisis de código ===== ==== Descomprimir APK ===== Con cualquier herramienta que maneje ficheros zip, podemos descomprimir un fichero ''.apk''. El fichero ''AndroidManifest.xml'' no es legible directamente porque está en formato binario, es necesario utilizar ''apktool'': java -jar apktool_2.0.3.jar d applicacion.apk ==== Decompilar ==== Utilizando la herramienta [[https://github.com/pxb1988/dex2jar|dex2jar]], podemos obtener un fichero ''.jar'' (''.class'' comprimido) que luego puede ser cargado en [[http://java-decompiler.github.io/|JD-GUI]], un decompilador, para obtener el código fuente. ==== Análisis del código fuente ==== Una vez obtenido el código de una aplicación, se puede realizar una búsqueda estratégica para identificar rápidamente sentencias sospechosas: * Acceso s SQLite: db, sqlite, database, insert, delete, select, table, cursor... * Notificaciones toast (//tapjacking//): toast * Identificadores: uid, user-id, imei, deviceId, deviceSerialNumber... * Conexiones: http, url, HttpURLConnection, URLConnection... * Intents * Localización GPS: getLastKnownLocation, requestLocationUpdates, getLatitude... * Credenciales: username, user, pass, password...