Professional Documents
Culture Documents
El sistema Operativo Android fue desarrollado por Android INC. Esta empresa fue
comprada por Google en el 2005 y posteriormente en el 2008 fue cuando se popularizó,
debido a la creación de un consorcio formado por 48 empresas quienes decidieron popularizar
el software libre y se centraron en el desarrollo de hardware, software y telecomunicaciones.
Allá por octubre del año 2003, Andy Rubin, Rich Miner, Nick Sears y Chris White daban
forma a Android Inc. En sus inicios, únicamente trascendió que la actividad de la empresa
se centraba en “el desarrollo de software para teléfonos móviles“. Android Inc. pasó casi
dos años trabajando “en la sombra”, hasta que Google comenzó a “reclutar” a fuerza de
talonario a algunas “startup” (término que se refiere a nuevas compañías con un futuro
prometedor) del sector móvil, con la clara intención de replicar su éxito de la Web en el
futuro de las telecomunicaciones inalámbricas. En Mayo del mismo año Google se hacía
con Dodgeball, la empresa que desarrolló un sistema de red social y posicionamiento móvil
que, una vez integrada en la estructura empresarial de los chicos de Mountain View, cesó
su actividad en 2009 para dar paso a Google Latitude. Llegó el mes de agosto y le tocó el
turno a Android Inc., la fecha clave para llegar a entender mejor el éxito de Android es el 5
de noviembre de 2007. Ese día se fundaba la OHA (Open Handset Alliance), una alianza
comercial de 35 componentes iniciales liderada por Google, que contaba con fabricantes de
terminales móviles, operadores de telecomunicaciones, fabricantes de chips y
desarrolladores de software. El mismo día se dio a conocer por vez primera lo que hoy
conocemos como Android, una plataforma de código abierto para móviles que se
presentaba con la garantía de estar basada en el sistema operativo Linux. Ha sido Google
quien ha publicado la mayor parte del código fuente del sistema operativo, gracias al
software Apache, que es una fundación que da soporte a proyectos software de código
abierto. Aunque no fue hasta un año después, en Octubre de 2008 cuando lo vimos por
primera vez funcionando en un HTC Dream. Veía la luz en los USA un móvil con la
primera versión final de Android, la 1.0. El modelo G1 de HTC quedará para la historia
como el iniciador de este gigante llamado Android. (Herraíz, 2012, p. 4).
6. Seguridad y Privacidad en dispositivos con SO Android
Figura 1. Dos aplicaciones de Android, cada una con sus propios recintos de seguridad o
proceso básicos Diagrama.
Fuente: Ortiz, 2013.
Las aplicaciones de Android se ejecutan en su propio proceso de Linux y tienen asignadas un
ID de usuario único. De manera predeterminada, las aplicaciones se ejecutan dentro de un
proceso de recinto de seguridad básico sin permisos asignados, lo que impide así que tales
aplicaciones puedan acceder al sistema o a sus recursos. Sin embargo, las aplicaciones de
Android pueden solicitar permisos a través del archivo de manifiesto de la aplicación.
Las aplicaciones de Android pueden permitir a otras aplicaciones acceder a sus recursos de la
siguiente manera:
- Android impide que aplicaciones tengan acceso directo al hardware o interfieran con
recursos de otras aplicaciones.
- Toda aplicación ha de ser firmada con un certificado digital que identifique a su autor.
La firma digital también nos garantiza que el fichero de la aplicación no ha sido
modificado.
- Si se desea modificar la aplicación esta tendrá que ser firmada de nuevo, y esto solo
podrá hacerlo el propietario de la clave privada. No es preciso (ni frecuente) que el
certificado digital sea firmado por una autoridad de certificación. p. 28
Si se quiere que una aplicación tenga acceso a recursos del sistema se debe utilizar un
modelo de permisos de forma que el usuario conozca los riesgos antes de instalar la
aplicación.
Usuario Linux y acceso a archivos. Para proteger el acceso a recursos utilizados por otras
aplicaciones, Android crea una cuenta de usuario Linux (user ID) nueva por cada paquete
(APK) instalado en el sistema. Este usuario es creado cuando se instala la aplicación y
permanece constante durante toda su vida en el dispositivo.
Cualquier dato almacenado por la aplicación será asignado al usuario Linux, por lo que
normalmente no tendrán acceso otras aplicaciones. No obstante, cuando se crea un fichero se
pueden usar los modos mode_world_readable y/o mode_world_writeable para permitir que
otras aplicaciones puedan leer o escribir en el fichero. Aunque otras aplicaciones puedan
escribir el fichero, el propietario siempre será el usuario asignado a la aplicación que lo creo.
Dado que las restricciones de seguridad se garantizan a nivel de proceso, el código de dos
paquetes no puede, normalmente, ejecutarse en el mismo proceso. Para ello sería necesario
usar el mismo usuario. Se puede utilizar el atributo shareduserid en AndroidManifest.xml para
asignar un mismo usuario Linux a dos aplicaciones. Con esto se consigue que a efectos de
seguridad ambas aplicaciones sean tratadas como una sola. Por razones de seguridad, ambas
aplicaciones han de estar firmadas con el mismo certificado digital.
- Kernel de Linux: Linux posee un núcleo estable y seguro. Kernel de Linux tiene varias
características de seguridad a saber: modelos de permisos basados en el usuario, el
aislamiento de procesos, la comunicación segura y la capacidad para eliminar partes
innecesarias y potencialmente inseguras del kernel
- Sandboxing: Las aplicaciones en Android son independientes, por lo que cada proceso se
ejecuta dentro de su propia máquina virtual. Android trabaja basado en programas sobre la
exclusión del privilegio, es decir, cada aplicación se ejecuta con su propia ID de grupo (GID)
y el ID de usuario (UID), Android evita que los usuarios recuperen los recursos de otro UID.
Esto se traduce en tener aislamiento de aplicaciones.
6.3 Seguridad a nivel de aplicación
Funciones de cámara.
Funciones bluetooth.
Funciones de telefonía.
Funciones SMS/MMS.
Estos recursos son accesibles únicamente desde el Sistema Operativo. Para que una aplicación
pueda usar estos recursos debe declararlo en el manifiest de la aplicación. Cuando un usuario
instala la aplicación se le mostrará los permisos que requiere esa aplicación y será el usuario
el que permita la ejecución de dicha aplicación que llevará implícito el uso de estas APIs. El
permiso de uso de esta API es solamente a nivel de esa aplicación, una vez que se desinstalen
los permisos de esas aplicaciones desaparecen y si el usuario vuelve a instalar la aplicación se
le volverá a pedir autorización para el acceso a estas APIs.
Android proporciona API para comprobar, hacer cumplir, otorgar y revocar permisos durante
el tiempo de ejecución. Estas API son parte de la clase android.content.Context, la cual
proporciona información global sobre el entorno de la aplicación. Por ejemplo, si desea
manipular permisos correctamente, puede determinar si a su aplicación se le otorgó acceso a
Internet
10.1.1.2. Firmado de aplicaciones El firmado de aplicaciones es la forma de identificar el
autor de la aplicación, y de esta forma permitir las actualizaciones de las aplicaciones sin
mecanismos complejos de verificación de propiedad del autor. Cada aplicación en la
plataforma Android debe estar firmada y cualquier intento de subir una aplicación a Google
Play sin firmar será rechazado. Cuando una aplicación se instala en un dispositivo Android se
comprueba que dicha aplicación está correctamente firmada por el certificado incluido en el
APK.
García, (2013). A nivel de sistema operativo, la plataforma Android ofrece la seguridad del
kernel Linux, así como una comunicación segura entre procesos (IPC) permitiendo la
posibilidad de comunicación segura entre aplicaciones que se ejecutan en diferentes procesos.
Estas características de seguridad a nivel de sistema operativo aseguran que incluso el código
nativo del sistema se ve limitado por el recinto de seguridad de aplicaciones. Ya sea este
código el resultado del comportamiento de las aplicaciones ya incluidas, o la explotación de
una vulnerabilidad de la aplicación, el sistema impedirá a la aplicación atacante hacer daño a
otras aplicaciones, el sistema Android, o el propio dispositivo.
6.4.1 La seguridad del Kernel Linux La base de la plataforma Android es el núcleo de Linux.
6.4.3 Partición del sistema y el modo seguro La partición del sistema contiene el kernel de
Android, así como las bibliotecas del sistema operativo, “runtime” de aplicación, marco de
aplicación, y las aplicaciones. Esta partición se encuentra en modo sólo lectura. Cuando un
usuario inicia el dispositivo en modo seguro, sólo las aplicaciones básicas de Android están
disponibles. Esto asegura que el usuario pueda arrancar su teléfono en un ambiente que esté
libre de software de terceros o malicioso.
6.4.4 Permisos del sistema de archivos En un entorno de tipo UNIX, los permisos del sistema
de archivos aseguran que un usuario no puede modificar o leer archivos de otro usuario. En el
caso de Android, cada aplicación se ejecuta como su propio usuario. A menos que el
desarrollador exponga explícitamente los archivos a otras aplicaciones, los archivos creados
por una aplicación no puede ser leído o modificado por otra aplicación.
6.4.5 Cifrado del sistema de archivos Android 3.0 y versiones posteriores proporcionan un
cifrado del sistema de ficheros completo, por lo que todos los datos se pueden cifrar en el
kernel mediante la implementación dmcrypt de AES128 con CBC y ESIVV: SHA256. La
clave de cifrado está protegido por AES128 utilizando una clave derivada de la contraseña del
usuario, evitando el acceso no autorizado a los datos almacenados sin la contraseña del
dispositivo del usuario. Para proporcionar resistencia contra los ataques de adivinar la
contraseña sistemática (por ejemplo, “rainbow tables” o fuerza bruta), la contraseña se
combina con algoritmos “salt” y “hash” aleatoriamente con SHA1 en varias ocasiones con el
uso del algoritmo estándar PBKDF2 antes de ser utilizado para descifrar la clave del sistema
de archivos. Para proporcionar resistencia contra los ataques de adivinar contraseñas de
diccionario, Android proporciona reglas de complejidad de contraseñas que se pueden
configurar por el administrador del dispositivo y ejecutadas por el sistema operativo. El
cifrado del sistema de archivos requiere el uso de una contraseña de usuario, los patrones
basados en el bloqueo de pantalla no son compatibles.
6.4.6 Protección por contraseña Android se puede configurar para validar contraseñas
introducidas por el usuario antes de proporcionar el acceso de este al dispositivo. Además de
prevenir el uso no autorizado del dispositivo, la contraseña protege la clave para el cifrado de
sistema de ficheros completo. El uso de una contraseña y/o reglas de complejidad de
contraseñas puede ser requerido por el administrador del dispositivo.
6.4.7 Administración de dispositivos Desde la versión del sistema operativo Android 2.2 y
posteriores, se proporciona un API para la administración de dispositivos Android, que
proporciona funciones de administración de dispositivos a nivel del sistema. Por ejemplo, la
aplicación integrada de correo electrónico utiliza la API de Android para mejorar el soporte
“Exchange”. A través de la aplicación de correo electrónico, los administradores de Exchange
pueden aplicar políticas de contraseñas (incluyendo contraseñas alfanuméricas o PIN
numérico) a través de los dispositivos. Los administradores también pueden borrar de forma
remota (es decir, restaurar los valores predeterminados de fábrica) en caso de pérdida o robo
del teléfono móvil. Además de su uso en las aplicaciones incluidas o integradas en el sistema
Android, estas API están disponibles para proveedores externos de soluciones de gestión de
dispositivos. Los detalles de la API se ofrecen a continuación en este mismo capítulo.
Ataques a dispositivos con sistema operativo Android. Las primeras aplicaciones maliciosas
dirigidas a las plataformas móviles más recientes, como iPhone y Android, aparecieron
durante el año 2009. Pese a que en el caso del iPhone solo podían infectar a los usuarios que
habían realizado el jailbreak del terminal, en el caso de Android podían afectar
potencialmente a todos los usuarios. A finales de 2009 se descubrió que una nueva aplicación
para el acceso a la banca online desde móvil publicada por Android, diseñada para
dispositivos Android y disponible en el Android Marketplace, recopilaba información
bancaria de los usuarios y sus cuentas. Varias entidades financieras alertaron a sus clientes de
la existencia de dicha aplicación fraudulenta y de los riegos de su utilización. (Guía de
seguridad en dispositivos móviles, 2013, p.28)
Informe Destacan en un primer lugar aplicaciones que requieren de acceso root pero que no
son maliciosas. En cambio le siguen, casi en mismo número, las aplicaciones con fraudes por
mensaje SMS, seguido de aplicaciones de espionaje. En la cola están los troyanos, puertas
traseras, fraudes phishing y exploits maliciosos
- Tap Snake: Primer caso de malware conocido, aplicación del juego conocido Snake que
incluía permisos de acceso a las coordenadas GPS:
android.permission.ACCESS_COARSE_LOCATIONy
android.permission.ACCESS_FINE_LOCATION.
- Fake Player: Malware creado en agosto del 2010 que pretendía ser un reproductor
multimedia. Entre sus permisos estaban android.permission. SEND_SMS teniendo como
objetivo el envío de mensajes en ruso SMS a números de tarificación especial a países como
Kazajistán.
- Gemini: Markets de terceros de dudosa reputación que ofrecen aplicaciones del market de
google las mismas aplicaciones gratuitas. Se trata de una aplicación procedente de China que
a partir de aplicaciones legítimas modifican el código original incluyendo funcionalidades
para recolectar todo tipo de información privada.
- Droid Kungfu: Primer malware troyano capaz de pasar inadvertido por los antivirus,
publicado en 2011permitía infectar versiones de Android 2.2 Froyo y tomar el control del
dispositivo. Una vez instalado, DroidKungFu intenta rootear el teléfono para obtener el
control del sistema usando el uso de exploits como el método Rageagainstthecage de root. El
código se almacena en el paquete del malware y se cifran con una clave para que no pueda ser
detectado por un antivirus.
Bibliografía
Jesús Perez Y Mario Merino. (2015). https://definicion.de/android/.
Báez, M., Borrego, A., Cordero, J., Cruz, L., González, M., Hernández, F., Palomero, D.,
Rodríguez de Llera, J., Sanz, D., Saucedo, M., Torralbo, P. y Zapata, A. (2010).
Introducción a Android. Recuperado el 05 de febrero de 2019 de http://www.it-
docs.net/ddata/18.pdf.
Ludwig, A. (2015). Android, practical security from the ground up. Recuperado el 05 de
febrero de 2019 de https://bit.ly/2E5SHlM
Ortiz, E. (2013). Cómo comprender la seguridad en Android. Recuperado el 02 de febrero de
2019 de: https://www.ibm.com/developerworks/ssa/library/x-androidsecurity/
P
https://rootear.com/android/seguridad-en-android Publicado por Moisés
Simón en Android el 03/04/2014 a l Cómo funciona la seguridad en Android
https://www.importancia.org/android.php
https://elcosmonauta.es/impacto-smartphones-sociedad-moderna/
Varela F 2019