controles y seguridad bajo entorno androidiii título: controles y seguridad bajo entorno android...

331
INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN PROYECTO FIN DE CARRERA CONTROLES Y SEGURIDAD BAJO ENTORNO ANDROID Autor: Christian Madero García. Tutor: Miguel Ángel Ramos. Leganés, Octubre de 2013 DEPARTAMENTO DE INFORMÁTICA

Upload: others

Post on 24-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

  • INGENIERÍA TÉCNICA EN INFORMÁTICA DE

    GESTIÓN

    PROYECTO FIN DE CARRERA

    CONTROLES Y SEGURIDAD

    BAJO ENTORNO ANDROID

    Autor: Christian Madero García.

    Tutor: Miguel Ángel Ramos.

    Leganés, Octubre de 2013

    DEPARTAMENTO DE INFORMÁTICA

  • ii

  • iii

    Título: CONTROLES Y SEGURIDAD BAJO ENTORNO ANDROID

    Autor: Christian Madero García

    Director: Miguel Ángel Ramos

    EL TRIBUNAL

    Presidente:

    Vocal:

    Secretario:

    Realizado el acto de defensa y lectura del Proyecto Fin de Carrera el día 24 de Octubre de

    2013 en Leganés, en la Escuela Politécnica Superior de la Universidad Carlos III de

    Madrid, acuerda otorgarle la CALIFICACIÓN de

    VOCAL

    SECRETARIO PRESIDENTE

  • iv

  • v

    Agradecimientos

    En primer lugar me gustaría agradecer a mis padres, Justo y Otilia, por darme la

    oportunidad de adquirir esta educación y estar ahí en los momentos difíciles que he

    pasado en la universidad, sin su apoyo y dedicación no habría sido posible llegar hasta el

    final de este viaje. También a mi hermana Miriam por estar junto a nosotros e

    incordiarme a lo largo de los años con el tema de la carrera. Gracias.

    También me gustaría agradecer su apoyo a mis compañeros de universidad, con los

    que he pasado buenos, malos momentos y momentos inolvidables durante estos años de

    carrera; Gracias a Nando, Miguel, Marcos, Abel, Elisa, Edu, Alberto…

    Como mención especial y por supuesto sin olvidarme de Maila, gracias a ella por

    estar a mi lado en cada paso antes y durante este proyecto, gracias a ella me ha sido

    posible confeccionar este proyecto final de carrera, por su apoyo incondicional y por

    alentarme pasito a pasito ha sido posible llegar hasta la meta. Gracias.

    Para finalizar, me gustaría agradecer a mi tutor Miguel Ángel, por su dedicación,

    esfuerzo, paciencia y experiencia, por guiarme a través de esta aventura. Gracias.

  • vi

  • vii

    Resumen

    Los dispositivos móviles, smartphones y tablets, constituyen un avance importante en lo

    que al mundo de las comunicaciones y tratamiento de la información se refiere, el avance

    tecnológico en esto últimos años ha sido exponencial respecto a estas tecnologías,

    permitiendo a las empresas procesar y gestionar información sensible de manera más

    versátil y dinámica, de una forma que hace tan sólo unos años nos parecería impensable,

    alcanzando una gran cuota de mercado el sistema operativo móvil Android, motivo de

    estudio en el presente proyecto.

    Con dicho proyecto se busca conocer y comprender las características, el funcionamiento,

    seguridad y controles de los que dispone este sistema operativo, descubriendo sus

    posibilidades y ventajas. Además, abarca el desarrollo completo de una aplicación de

    nombre AgendaPersonal, que nos ha permitido ahondar en lo que ha desarrollo,

    seguridad, controles y herramientas para esta plataforma se refiere y con la que se busca

    ilustrar de forma práctica la construcción y naturaleza de las aplicaciones Android, ya que

    a menudo, este tipo de dispositivos alberga información importante que debe ser

    protegida de agentes externos.

    Para finalizar propondremos una serie de añadidos que a nuestro juicio mejorarían

    algunos puntos de la plataforma.

  • viii

  • ix

    Abstract

    Mobile devices, smartphones and tablets represent important progress in the world of

    communications and data processing. Over the last few years,technological advances

    have led to an exponential growth in new technology being implemented, which in turn

    has allowed companies to manage sensitive information in a more versatile and

    dynamic manner. This was not possible only a few years ago and has earned the Android

    operating system a high market share, which will be studied in this document.

    With this thesis we want to study and understand the properties, controls, security and

    behaviour of the operating system, focusing on its odds and benefits. We also explain the

    development of an application called AgendaPersonal, which has allowed us to work

    directly with different operating system tools and controls. With AgendaPersonal we

    want to show how to create an Android application in a practical way, demostrating that

    this kind of devices has important information that must be protected against external

    agents.

    Finally we propose some changes that would probably improve some features of the

    platform.

  • Índice general

    1 Introducción ........................................................................................... 1

    1.1 Objetivos ............................................................................................................. 4

    1.2 Fases del desarrollo ........................................................................................... 5

    1.3 Medios empleados .............................................................................................. 6

    1.4 Estructura de la memoria .................................................................................. 7

    2 Seguridad Informática ........................................................................... 9

    2.1 Objetivos de la Seguridad Informática ........................................................... 10

    2.2 Las amenazas y sus tipos ................................................................................. 11

    2.3 Problemas que repercuten en la seguridad .................................................... 12

    2.4 Los reglas básicas de la seguridad informática .............................................. 13

    2.5 Principales fallos genéricos en los sistemas operativos ................................. 14

    2.6 Vulnerabilidades de un sistema operativo ...................................................... 16

    2.7 Tipos de ataques a sistemas operativos ........................................................... 21

    2.8 Posibles o futuros problemas y amenazas ...................................................... 25

    3 Introducción a la Auditoría Informática ............................................ 26

    3.1 Objetivos de la Auditoría Informática ............................................................ 26

  • 3.2 Las líneas de defensa ....................................................................................... 27

    3.2.1 El control Interno ..................................................................................... 27

    3.2.2 Tipos de control Interno ........................................................................... 28

    3.2.3 Funciones Control interno ....................................................................... 29

    3.2.4 Áreas de aplicación del Control interno informático ............................. 30

    3.2.5 La Auditoría Informática Interna ........................................................... 30

    3.2.6 La Auditoría Informática Externa .......................................................... 31

    3.3 Tipos de Auditoría Informática ....................................................................... 33

    4 Android ................................................................................................. 34

    4.1 La arquitectura Android .................................................................................. 36

    4.1.1 Capa Kernel de Linux .............................................................................. 37

    4.1.2 Capa Librerías & Android Runtime ........................................................ 38

    4.1.3 Capa armazón de Aplicaciones ................................................................ 39

    4.1.4 Capa Aplicaciones .................................................................................... 40

    4.2 La máquina virtual Dalvik .............................................................................. 40

    4.3 Política de eliminación de procesos ................................................................ 43

    4.4 Gestión de la información ............................................................................... 44

    4.4.1 Preferencias de usuario ........................................................................... 44

    4.4.2 Ficheros .................................................................................................... 44

    4.4.3 Bases de datos ........................................................................................... 45

    4.4.4 Acceso por red .......................................................................................... 45

    4.4.5 Content Provider ...................................................................................... 45

    4.5 Seguridad en Android ...................................................................................... 47

    4.5.1 Background .............................................................................................. 48

    4.5.1.1 Visión general del programa de seguridad para Android ............................. 49

    4.5.1.2 Arquitectura de seguridad de la plataforma Android .................................... 49

  • 4.5.2 Seguridad a nivel de sistema operativo y núcleo ..................................... 50

    4.5.2.1 La seguridad del Kernel Linux ....................................................................... 51

    4.5.2.2 El recinto de seguridad de aplicaciones ......................................................... 51

    4.5.2.3 Partición del sistema y el modo seguro .......................................................... 52

    4.5.2.4 Permisos del sistema de archivos ................................................................... 52

    4.5.2.5 Cifrado del sistema de archivos ...................................................................... 53

    4.5.2.6 Cómo funciona el sistema de cifrado Android ............................................... 53

    4.5.2.7 Protección por contraseña .............................................................................. 55

    4.5.2.8 Administración de dispositivos ....................................................................... 55

    4.5.2.8.1 Administración de dispositivos API general ............................................ 55

    4.5.2.8.2 ¿Cómo funciona? ..................................................................................... 55

    4.5.2.8.3 Políticas ..................................................................................................... 56

    4.5.2.9 Mejoras en la seguridad de la gestión de memoria........................................ 59

    4.5.2.10 Root de dispositivos ......................................................................................... 59

    4.5.3 Seguridad en las aplicaciones Android ................................................... 60

    4.5.3.1 Elementos de las aplicaciones ........................................................................ 60

    4.5.3.2 El modelo de permisos Android: acceso a las API protegidas ...................... 61

    4.5.3.3 ¿Cómo los usuarios comprenden las aplicaciones externas o de terceros? .. 63

    4.5.3.4 Comunicación entre procesos......................................................................... 64

    4.5.3.5 API sensible a costos ....................................................................................... 65

    4.5.3.6 Acceso a la tarjeta SIM ................................................................................... 65

    4.5.3.7 Información personal ..................................................................................... 65

    4.5.3.8 Dispositivos de entrada de datos sensibles ..................................................... 66

    4.5.3.9 Dispositivos de metadatos ............................................................................... 67

    4.5.3.10 Firmado de aplicación .................................................................................... 67

    4.5.3.11 Gestión de derechos digitales.......................................................................... 68

    4.5.4 Actualizaciones Android .......................................................................... 69

    4.6 Seguridad en Android para el desarrollo de aplicaciones ............................. 70

    4.6.1 Arquitectura de seguridad ........................................................................ 70

    4.6.2 Firma de aplicaciones .............................................................................. 71

    4.6.3 ID de usuarios y acceso a archivos .......................................................... 72

    4.6.4 Uso de permisos ........................................................................................ 73

  • 4.6.5 Declaración y aplicación de permisos ..................................................... 74

    4.6.6 La aplicación de permisos en AndroidManifest.xml .............................. 76

    4.6.7 Cumplimiento de permisos en el envío de transmisiones ....................... 77

    4.6.8 Cumplimiento de otros permisos .............................................................. 77

    4.6.9 Permisos URI ............................................................................................ 77

    5 Firma de aplicaciones .......................................................................... 79

    5.1 Estrategia de firmado ...................................................................................... 81

    5.2 La firma para el lanzamiento público ............................................................. 82

    5.2.1 Obtener una clave privada adecuada ...................................................... 82

    5.2.2 Compilar la aplicación en modo lanzamiento ......................................... 84

    5.2.3 Firmar nuestra aplicación con la clave privada ..................................... 84

    5.2.4 Construir el paquete APK final ............................................................... 86

    5.2.5 Compilar y firmar con el plugin ADT de Eclipse ................................... 86

    5.3 Asegurar nuestra clave privada ...................................................................... 87

    6 Versionando nuestras aplicaciones ..................................................... 89

    6.1 Configurar la versión de nuestra aplicación .................................................. 90

    6.2 Especificando los requerimientos del sistema API de nuestra aplicación .... 92

    6.3 Niveles de API Android ................................................................................... 93

    6.3.1 Definición de nivel del API ...................................................................... 93

    6.3.2 Como utilizar los niveles del API para la plataforma Android .............. 95

    6.3.3 Consideraciones para el desarrollo de la aplicación .............................. 97

    6.3.3.1 Futura compatibilidad de aplicaciones .......................................................... 97

    6.3.3.2 Retro-compatibilidad de aplicaciones ............................................................ 97

    6.3.3.3 Selección de una versión de la plataforma Android y el nivel del API ......... 98

    6.3.3.4 Declaración del nivel del API mínimo .......................................................... 98

    6.3.3.5 Probando los niveles más altos del API ......................................................... 99

    6.3.4 Usando un nivel API provisional ........................................................... 100

  • 7 Publicación de nuestras aplicaciones ............................................... 101

    7.1 Antes de considerar nuestra aplicación lista para lanzarla ......................... 103

    7.2 Antes de realizar el compilado final de la aplicación ................................... 105

    7.3 Compilado final de la aplicación .................................................................. 107

    7.4 Después de compilar la aplicación ................................................................ 107

    7.5 Publicación en Google Play .......................................................................... 107

    7.5.1 Acerca de Google Play ........................................................................... 108

    7.5.2 Publicación de actualizaciones en Google Play .................................... 109

    7.5.3 Utilización del servicio de licencias Google Play .................................. 109

    7.5.4 Vinculación de nuestras aplicaciones en Google Play ......................... 110

    7.5.4.1 Abrir la página de detalles de la aplicación ................................................. 111

    7.5.4.1.1 Abrir los detalles en la aplicación Google Play ..................................... 111

    7.5.4.1.2 Abrir los detalles en la web oficial Google Play .................................... 111

    7.5.4.2 Realizar una búsqueda ................................................................................. 111

    7.5.4.2.1 Buscar en la aplicación Google Play ..................................................... 112

    7.5.4.2.2 Buscar en la web oficial Google Play .................................................... 113

    7.5.4.3 Sumario de formatos URI ............................................................................. 113

    8 Ataques sobre la plataforma .............................................................. 114

    8.1 El primer troyano para Android ................................................................... 116

    8.2 El Aumento de los ataques sobre Android .................................................... 118

    8.3 Google elimina aplicaciones de Google Play ................................................ 119

    8.3.1 Droid Dream ........................................................................................... 120

    8.3.2 Droid Dream Light ................................................................................. 121

    8.4 Google mejora la seguridad de Google Play ................................................. 121

    8.5 Consejos para evitar malware en Android .................................................... 123

    8.6 Herramientas de seguridad para la plataforma Android ............................. 124

    8.6.1 Acerca de RSA SecurID ......................................................................... 126

    8.6.2 Antivirus Free ......................................................................................... 126

  • 8.6.3 DroidWall ............................................................................................... 126

    8.6.4 DropBox .................................................................................................. 127

    8.6.5 LookOut .................................................................................................. 127

    8.6.6 NetQin Mobile Security .......................................................................... 127

    8.6.7 RedPhone ................................................................................................ 128

    8.6.8 TextSecure .............................................................................................. 128

    8.6.9 SandBox para Android ........................................................................... 128

    8.6.10 DroidBox ................................................................................................. 129

    8.6.11 TaintDroid .............................................................................................. 129

    8.7 La NSA publica una versión fortificada de Android .................................... 131

    8.7.1 SELinux (Security-Enhanced Linux) ................................................... 132

    8.7.2 Linux Security Modules (LSM) ............................................................. 133

    8.7.3 YAFFS (Yet Another Flash File System) .............................................. 133

    8.7.4 Multilevel security or multiple levels of security (MLS) ....................... 134

    9 La aplicación Agenda Personal ......................................................... 135

    9.1 Introducción a Agenda Personal .................................................................. 135

    9.2 Análisis y diseño de la aplicación ................................................................. 137

    9.3 Casos de uso ................................................................................................... 138

    9.4 Modelo de clases ............................................................................................ 141

    9.5 Estructura y arquitectura de la aplicación ................................................... 143

    9.6 Desarrollo e Implementación ........................................................................ 144

    9.6.1 Representación y acceso de los contactos en memoria ......................... 144

    9.6.2 Dibujar y gestionar elementos de la Agenda ......................................... 145

    9.6.3 Control de la pantalla de carga de la aplicación ................................... 146

    9.6.4 Control de la lista de contactos .............................................................. 149

    9.6.5 Control de visualización de contacto ..................................................... 154

  • 9.6.6 Control de adición de contactos ............................................................. 155

    9.6.7 Control de edición de contactos ............................................................. 160

    9.6.8 Control de Borrado de contactos ........................................................... 164

    9.6.9 Control de Backup de contactos en SD ................................................. 165

    9.6.10 Acceso a los contactos del dispositivo móvil .......................................... 167

    9.6.11 Uso de la base de datos SQLite .............................................................. 171

    9.6.11.1 Crear la base de datos SQLite ...................................................................... 172

    9.6.11.2 Consulta, actualización e inserción de filas ................................................. 174

    9.6.11.3 Cuándo insertar o actualizar la información de los contactos en SQLite .. 177

    9.6.12 Construcción del menú principal .......................................................... 178

    9.6.12.1 Crear un menú .............................................................................................. 178

    9.6.12.2 Controlar la opción seleccionada ................................................................. 182

    9.6.13 Construcción del menú contextual ........................................................ 183

    9.6.13.1 Crear un menú contextual ............................................................................ 183

    9.6.13.2 Controlar la opción seleccionada ................................................................. 185

    9.6.14 Mostrar listado de contactos y la información del contacto seleccionado

    186

    9.6.14.1 Lanzar una nueva Activity ............................................................................ 187

    9.6.14.2 Mostrar la información del contacto ............................................................ 191

    9.6.15 Añadir contacto ...................................................................................... 196

    9.6.16 Editar contacto ....................................................................................... 202

    9.6.17 Borrar contacto ...................................................................................... 209

    9.6.18 Llamar a un contacto ............................................................................. 213

    9.6.19 Enviar un SMS a un contacto ................................................................ 218

    9.6.20 Enviar un correo electrónico a un contacto .......................................... 223

    9.6.21 Realizar Backup de contactos en la SD ................................................. 226

    9.6.21.1 Envío de los contactos al correo electrónico ................................................ 231

    9.6.22 Manifiesto final ...................................................................................... 234

    10 Conclusiones y trabajos futuros ........................................................ 237

  • 10.1 Conclusiones Finales .................................................................................... 237

    10.2 Trabajos Futuros ........................................................................................... 244

    11 Presupuesto ........................................................................................ 245

    11.1 Diagrama Gantt y tablas de Coste ................................................................. 246

    Glosario ..................................................................................................... 253

    Referencias ............................................................................................... 254

    Anexo A: Normalización y Estándares ................................................... 257

    1 ISO 27001 ...................................................................................................... 257

    2 ISO 27002 ...................................................................................................... 260

    3 REAL DECRETO 1720/2007 ........................................................................ 293

    Anexo B: Instalación entorno de desarrollo ........................................... 307

    1 Instalación de Eclipse con el SDK de Android ............................................. 307

    2 Descargar el SDK de Android ....................................................................... 307

    3 Descargar Eclipse Galileo ............................................................................. 308

    4 Instalar el plug-in de Android ADT .............................................................. 308

    5 Referenciar el SDK de Android ..................................................................... 309

    6 Actualizaciones del plug-in ADT .................................................................. 309

  • xviii

    Índice de figuras

    Figura 1. Consulta Whois. ................................................................................................ 16 Figura 2. nmap –Sp. .......................................................................................................... 17 Figura 3. amap. ................................................................................................................. 19 Figura 4. www.thc.org. ..................................................................................................... 20 Figura 5. LANguard. ......................................................................................................... 20 Figura 6. Nessus. ............................................................................................................... 21 Figura 7. Tipos de amenazas. ........................................................................................... 21 Figura 8. Arquitectura de Android. .................................................................................. 37 Figura 9. Formato de un fichero .dex. .............................................................................. 41 Figura 10. Pila de software Android. ............................................................................... 50 Figura 11.Permisos para instalar las aplicaciones Google Maps y Gmail. .................... 64 Figura 12. El acceso a la información personal del usuario sólo está disponible a través

    de las API protegidas. ....................................................................................................... 66 Figura 13. Arquitectura de gestión de derechos digitales en la plataforma Android. ..... 68 Figura 14. Diagrama casos de uso. ................................................................................ 139 Figura 15. Diagrama de clases. ...................................................................................... 142 Figura 16. Estructura del proyecto. ................................................................................ 143 Figura 17. Arquitectura de la aplicación. ...................................................................... 144 Figura 18. Carga. ........................................................................................................... 149 Figura 19. Lista de contactos. ......................................................................................... 188 Figura 20. Interfaz de información del contacto seleccionado. ..................................... 195 Figura 21. Interfaz de adición de contactos. .................................................................. 197 Figura 22. Interfaz de edición de contactos. ................................................................... 203 Figura 23. Interfaz de eliminación de contactos. ........................................................... 210 Figura 24. Mensaje de eliminación de contactos. .......................................................... 212 Figura 25. Mensaje de cancelación de borrado. ............................................................ 213 Figura 26. Llamada a un contacto. ................................................................................. 215 Figura 27. Llamada desde Inicio. ................................................................................... 216 Figura 28. Llamada desde VerContacto. ........................................................................ 216 Figura 29. Mensaje llamada Inicio. ................................................................................ 217 Figura 30. Mensaje llamada VerContacto. ..................................................................... 217 Figura 31. Envío de SMS a un contacto. ........................................................................ 220 Figura 32. Envío SMS desde Inicio. ................................................................................ 221

  • xix

    Figura 33. Envío SMS desde VerContacto. .................................................................... 221 Figura 34. Mensaje envío SMS Inicio. ............................................................................ 222 Figura 35. Mensaje envío SMS VerContacto. ................................................................. 222 Figura 36. Envío Email desde Inicio. ............................................................................. 225 Figura 37. Envío Email desde VerContacto. .................................................................. 225 Figura 38. Realizar Backup desde Inicio. ....................................................................... 226 Figura 39. Mensaje de Backup realizado. ...................................................................... 229 Figura 40. Envío Backup Email. ..................................................................................... 233 Figura 41. Backup Email enviado. ................................................................................. 234 Figura 42. Modelo PDCA aplicado a los procesos SGSI. .............................................. 259

  • xx

    Índice de tablas

    Tabla 1. Tipos de ataques. ................................................................................................ 25 Tabla 2: Políticas con el apoyo de la API de administración de dispositivos. ................. 58 Tabla 3. Versiones de la plataforma y APIs. .................................................................... 95 Tabla 4. Resumen URI. ................................................................................................... 113 Tabla 5. Fases del Modelo PDCA aplicado a los procesos SGSI. ................................. 259

  • Índice de códigos fuente

    Código 1. Ejemplo de consulta a un Content Provider. ................................................... 46

    Código 2. Declaración en el manifiesto de un componente Content Provider. ................ 47

    Código 3. Ejemplo de permiso para manipular mensajes SMS. ....................................... 73

    Código 4. Ejemplo de permiso para controlar quién puede iniciar un proceso. .............. 74

    Código 5. Ejemplo de una etiqueta. .................................................................................. 75

    Código 6. Control clase Carga I. .................................................................................... 147

    Código 7. Control clase Carga II. .................................................................................. 147

    Código 8. Control clase Carga III. ................................................................................. 148

    Código 9. Control clase Inicio. ....................................................................................... 149

    Código 10. Clase Listview. .............................................................................................. 150

    Código 11. Clase Inicio activar menú. ............................................................................ 150

    Código 12. OnItemClickListener. ................................................................................... 150

    Código 13. OnItemClickListener. ................................................................................... 151

    Código 14. onMenuItemSelected. ................................................................................... 152

    Código 15. onCreateContextMenu. ................................................................................. 152

    Código 16. onContextItemSelected. ................................................................................ 154

    Código 17. Control clase VerContacto I. ........................................................................ 155

    Código 18. Control clase VerContacto II. ...................................................................... 155

    Código 19. Control clase VerContacto III. ..................................................................... 155

    Código 20. Control clase Anadir I. ................................................................................. 156

    Código 21. Control clase Anadir II. ................................................................................ 157

    Código 22. Control clase Anadir III. .............................................................................. 158

    Código 23. Mensajes clase Anadir III. ............................................................................ 158

    Código 24. Control clase Anadir IV. .............................................................................. 159

    Código 25. Control clase Editar I. .................................................................................. 160

    Código 26. Control clase Editar II. ................................................................................ 161

    Código 27. Control clase Editar III. ............................................................................... 162

    Código 28. Mensajes clase Editar. ................................................................................. 163

    Código 29. Control clase Editar IV. ............................................................................... 163

    Código 30. Control borrar contacto. .............................................................................. 165

    Código 31. Control backup contactos I. ......................................................................... 165

  • Código 32. Control backup contactos II. ........................................................................ 166

    Código 33. Backup contactos. ......................................................................................... 167

    Código 34. Acceso contactos dispositivo. ....................................................................... 170

    Código 35. Declaración en el manifiesto del permiso recuperación de contactos......... 171

    Código 36. Tabla contactos. ........................................................................................... 172

    Código 37. Creación tabla contactos. ............................................................................. 173

    Código 38. Control creación tabla contactos. ................................................................ 174

    Código 39. Declaración en el manifiesto del permiso recuperación de contactos......... 174

    Código 40. Consulta clase Inicio. ................................................................................... 174

    Código 41. Sentencia SQL clase Inicio. .......................................................................... 175

    Código 42. Consulta clase VerContacto. ........................................................................ 175

    Código 43. Sentencia SQL clase VerContacto. ............................................................... 176

    Código 44. Inserción clase Anadir. ................................................................................. 176

    Código 45. Actualización clase Editar. ........................................................................... 177

    Código 46. Clase Inicio crear menú. .............................................................................. 179

    Código 47. Código XML del menú de la clase Inicio. .................................................... 179

    Código 48. Clase VerContacto crear menú. ................................................................... 180

    Código 49. Código XML del menú de la clase VerContacto. ......................................... 180

    Código 50. Control opción seleccionada onMenuItemSelected clase Inicio. ................. 182

    Código 51. Control opción seleccionada onMenuItemSelected clase VerContacto. ...... 183

    Código 52. Clase Inicio crear menú contextual. ............................................................. 185

    Código 53. Código XML del menú contextual de la clase Inicio. ................................... 185

    Código 54. Control opción seleccionada onContextItemSelected clase Inicio. ............. 186

    Código 55. Lanzamiento de la actividad Inicio desde la clase Carga. ........................... 187

    Código 56. Lanzamiento de la actividad VerContacto desde la clase Inicio. ................ 189

    Código 57. Uso de la clase SeparatedListAdapter. ........................................................ 190

    Código 58. inicio.xml ...................................................................................................... 191

    Código 59. Clase VerContacto. ...................................................................................... 193

    Código 60. vercontacto.xml. ........................................................................................... 195

    Código 61. Llamada a la clase Anadir. .......................................................................... 196

    Código 62. anadir.xml. .................................................................................................... 198

    Código 63. Clase Anadir. ................................................................................................ 201

    Código 64. Llamada a clase Editar. ............................................................................... 203

    Código 65. editar.xml. ..................................................................................................... 204

    Código 66. Clase Editar. ................................................................................................. 208

    Código 67. Borrar contacto. ........................................................................................... 211

    Código 68. Llamar contacto. .......................................................................................... 214

    Código 69. Declaración en el manifiesto del permiso de llamada telefónica. ............... 215

    Código 70. Enviar SMS. .................................................................................................. 219

    Código 71. Declaración en el manifiesto del permiso de envío de mensajes. ................ 220

    Código 72. Enviar Email. ................................................................................................ 224

    Código 73. Realizar Backup. .......................................................................................... 228

    Código 74. Declaración en el manifiesto del permiso de almacenamiento externo. ...... 230

    Código 75. Envio de fichero Backup. .............................................................................. 232

    Código 76. Declaración en el manifiesto del permiso de conexión a internet. .............. 233

    Código 77. Manifiesto final de AgendaPersonal. ........................................................... 235

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    1

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Capítulo 1

    Introducción y objetivos

    1 Introducción

    Al echar la vista atrás podemos observar el desarrollo tecnológico que ha

    experimentado la humanidad desde mediados del siglo XX hasta hoy, más que un avance

    se ha producido una verdadera revolución. El descubrimiento de la informática, su

    aplicación paulatina en todo tipo de áreas de conocimiento y de producción, así como su

    introducción en las tareas cotidianas de la gente a través de todo tipo de dispositivos, han

    cambiado nuestra sociedad y nuestra economía más rápido que cualquier otro invento o

    descubrimiento anterior.

    La computadora personal u ordenador es uno de los inventos que mejor resume la

    nueva situación tecnológica. Aparecieron primero las computadoras de primera

    generación como enormes y costosas máquinas que solamente estaban disponibles en

    importantes universidades o centros de investigación por la década de 1950.

    Con la aparición de nuevas técnicas de fabricación, como los circuitos integrados,

    su tamaño, sus capacidades, y sobre todo precio, variaron de tal forma que se convirtieron

    en un producto de masas, como lo podían ser la televisión o la radio. La aparición de

    Internet, y sobre todo su apertura al público general, determinaron de forma inequívoca la

    importancia de los ordenadores en la vida social, laboral o académica de cualquier

    persona hasta el día de hoy.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    2

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Simultáneamente a la aparición de Internet como servicio abierto, a principios de

    a década de 1990, surgió otro medio de comunicación que, si bien era más antiguo, se

    reinventaba a sí mismo gracias a los cambios en su tradicional soporte: la telefonía móvil.

    El boom en la implantación de Internet, junto al furor de la telefonía móvil,

    confirmaba que esta revolución tecnológica no sólo afectaba a la investigación o la

    actividad económica, sino que implicaba un fenómeno sociológico donde la

    comunicación y el acceso a la información en cualquier lugar y momento eran sus pilares

    básicos.

    Como no podía ser de otra manera, la reducción del tamaño de los componentes y

    el aumento de sus prestaciones permitió acercar cada vez más ambos mundos, de forma

    que a través de un teléfono móvil no sólo se podían hacer llamadas o enviar SMS, sino

    que además se podía tener un acceso a Internet, o incluso funciones añadidas como

    realizar fotografías o vídeos. Otros aparatos de similar tamaño, no directamente

    relacionados con la telefonía, surgieron y se hicieron tan populares como los primeros.

    Desde ese momento puede empezar a usarse el término genérico dispositivo móvil.

    Así pues, un dispositivo móvil es un término general que describe una amplísima

    familia de aparatos electrónicos surgidos en los últimos años, de reducido tamaño, que

    ofrecen alguna capacidad de procesamiento y almacenamiento de datos y que están

    orientados a una función concreta o varias de ellas: desde los teléfonos móviles más

    revolucionarios y con mayor número de utilidades (los llamados smartphones), a

    ordenadores portátiles, tablets pc, cámaras digitales, reproductores de música o consolas

    de videojuegos.

    La mayoría de estos aparatos cuentan con un sistema operativo de mayor o menor

    complejidad que permite realizar las tareas de gestión de memoria y control de hardware

    que precisan. En el caso de los ordenadores portátiles, con tanta o incluso mayor

    capacidad que los de sobremesa, los sistemas operativos habituales son perfectamente

    compatibles y funcionan sin diferencias. Sin embargo, en los dispositivos móviles es

    preciso diseñar nuevos sistemas operativos adaptados específicamente a sus

    características, dadas sus restricciones de memoria y procesamiento, un consumo mínimo

    de energía o gran estabilidad en su funcionamiento, entre otros.

    Google es una joven compañía surgida a finales de los 90 que pronto se hizo muy

    popular gracias al potente buscador del mismo nombre. Durante años, Google no ha

    dejado de crecer y de ofrecer toda clase de servicios basados siempre en Internet y en la

    combinación de la última tecnología disponible con la máxima experiencia del usuario.

    Android, más que un sistema operativo, representa toda una pila de software para

    dispositivos móviles que incluye gran cantidad de drivers, gestor de bases de datos, un

    completo framework de aplicaciones, y numerosas aplicaciones de usuario. Android está

    basado en el núcleo de Linux y todas sus aplicaciones se escriben en lenguaje Java,

    disponiendo además de una máquina virtual específica llamada Dalvik.

    Con la aparición de este sistema, Google pretende aprovechar al máximo la cada

    vez mayor capacidad de los dispositivos móviles, que llegan a incluir componentes como

    GPS, pantallas táctiles, conexiones rápidas a Internet, y por supuesto, todos los servicios

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    3

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    asociados hasta ahora a los teléfonos móviles, además de aplicaciones de usuario hasta

    ahora limitadas a los ordenadores, como clientes de correo, aplicaciones ofimáticas o

    videojuegos. En Android, cada aplicación corre en su propio proceso, donde el sistema

    decide en cada momento qué aplicación debe ser eliminada para liberar recursos en caso

    de carencia, y responsabilizándose igualmente de restaurarla de forma totalmente

    transparente al usuario. Navegar entre varias aplicaciones abiertas deja de ser una

    característica propia de ordenadores.

    Android se lanza bajo la licencia Apache, lo que implica que, como software libre,

    cualquier desarrollador tiene acceso completo al SDK del sistema, incluidas todas sus

    API, documentación y emulador para pruebas, pudiendo distribuirlo y modificarlo.

    Además, esta licencia permite a los desarrolladores tanto publicar a su vez sus

    creaciones, como distribuirlas únicamente bajo pago ocultando el código fuente. Este

    nuevo sistema introduce también interesante conceptos, como es la composición de sus

    aplicaciones a través de combinación de módulos o bloques básicos, según la naturaleza

    de la aplicación, o la delegación en el sistema de determinadas acciones para que sean

    otras aplicaciones instaladas las que se hagan cargo de ellas.

    Numerosos fabricantes, distribuidores y operadores se han unido a la plataforma

    de patrocinadores de Android, y fabricantes de gran renombre han anunciado la

    producción inminente de nuevos modelos con Android como sistema nativo [1]. Dada la

    creciente importancia de estos dispositivos y su más que probable implantación masiva,

    cada vez con mayores prestaciones y capacidades, unida al éxito que suele acompañar a

    Google en sus proyectos, todo parece indicar que Android podría posicionarse en un

    futuro más o menos cercano como uno de los sistemas operativos más utilizados en el

    mundo.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    4

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    1.1 Objetivos

    El presente proyecto fin de carrera se centra en el estudio de la plataforma

    Android para dispositivos móviles y el desarrollo de un prototipo inicial de aplicación

    que ofrezca la posibilidad de comprobar los controles de seguridad implementados para

    el desarrollo de aplicaciones en dispositivos Android. Para la consecución satisfactoria de

    dicha tarea se han impuesto algunos objetivos que necesariamente deben cumplirse.

    Todo esto implica conocer las principales características de dicho sistema

    operativo como puede ser su arquitectura, componentes, y metodología que utiliza. Al ser

    la plataforma de código libre el SDK está disponible al público, este kit de desarrollo

    incluye desde una extensa documentación, hasta un complejo emulador de Android.

    Estos elementos serán estudiados y explicados para una mejor comprensión del lector.

    El nuevo sistema operativo para dispositivos móviles de Google, Android, centra

    el desarrollo de este proyecto fin de carrera. Para poder dirigir con mayor éxito los

    esfuerzos por conocer y comprender las características de este nuevo sistema, es

    necesario fijar unos objetivos que abarquen las actividades que se pretenden realizar y,

    además, permitan al final de las mismas conocer el grado de desarrollo y cumplimiento

    alcanzado.

    Por ello, los objetivos perseguidos en el desarrollo de este proyecto fin de carrera

    son los enumerados a continuación:

    Conocer las principales características de Android. El primer paso para

    conocer este nuevo sistema debe consistir en indagar toda la información posible sobre él,

    a fin de conocer cuál es su arquitectura, sus componentes básicos, y cuál es su

    comportamiento al ejecutar las aplicaciones, documentando todos estos aspectos.

    Además, ha de averiguarse cuáles son las ventajas y las posibilidades reales que Android

    ofrece frente a otros sistemas competidores de similar naturaleza.

    Estudiar y analizar las principales características de seguridad de Android.

    En este caso para conocer y analizar las principales características de seguridad de este

    nuevo sistema, se debe conseguir encontrar y analizar toda la información posible sobre

    la arquitectura y las posibilidades que esta nos ofrece, tales como: el núcleo del sistema

    (Kernel Linux), aplicaciones base, marco de trabajo de aplicaciones, bibliotecas y

    “runtime” de Android, para así poder recopilar las ventajas que nos ofrece la plataforma

    Android, dichas ventajas o características serán profundizadas en capítulos posteriores.

    Estudiar el entorno de desarrollo de Android y su seguridad a la hora de

    desarrollar aplicaciones. Al lanzarse bajo una licencia de software libre, el SDK

    completo está disponible para cualquier desarrollador que desee descargarlo. Este incluye

    numerosas ayudas para comenzar a crear aplicaciones en Android, desde las API

    completas con todas las clases y paquetes, hasta herramientas de programación y un

    completo emulador para poder realizar pruebas. Todos estos elementos han de ser

    estudiados y explicados.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    5

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Desarrollar una aplicación completa para Android. Una vez conocidas las

    características de este sistema, así como el entorno de desarrollo que ofrece y sus

    posibilidades, debe crearse una aplicación que aproveche algunas de sus características

    más fundamentales. A través de este desarrollo y una detallada documentación del

    mismo, el lector debe poder comprender mejor el funcionamiento de aplicaciones para

    Android, así como conocer los pasos para crear sus propias aplicaciones.

    Proponer mejoras en la seguridad del sistema operativo Android. Para

    finalizar la descripción de los objetivos principales de este proyecto fin de carrera,

    debemos comentar la proposición de mejoras en la seguridad de la plataforma Android a

    modo de reforzar la misma, dichas propuestas las describiremos con más detalle en el

    capítulo de conclusiones de este mismo proyecto final de carrera.

    1.2 Fases del desarrollo

    A continuación vamos a enumerar y describir al lector las fases del desarrollo para

    este proyecto final de carrera:

    Investigación. El primer paso para la realización de este proyecto es conocer este

    nuevo sistema operativo para dispositivos móviles, indagar y recopilar toda la

    información posible sobre el mismo, a fin de conocer su arquitectura, sus componentes

    básicos, y cuál es su comportamiento al ejecutar y desarrollar aplicaciones para el mismo.

    Instalación del entorno de desarrollo. Al lanzarse bajo una licencia de software

    libre, el SDK completo está disponible para cualquier desarrollador que desee descargarlo

    e instalarlo. Este último incluye numerosas ayudas para comenzar a desarrollar

    aplicaciones para la plataforma, desde las API completas con todas las clases y paquetes,

    hasta herramientas de programación y un completo emulador para poder realizar las

    pruebas pertinentes. Todos estos elementos han de ser estudiados y explicados.

    Desarrollo de la aplicación de prueba. Una vez conocidas las características de

    este sistema, así como el entorno de desarrollo que ofrece y sus posibilidades y/o

    ventajas, debe crearse una aplicación que aproveche algunas de sus características más

    fundamentales como pueden ser el sistema de controles y permisos. A través de este

    desarrollo y una detallada documentación del mismo, podremos comprender mejor el

    funcionamiento de las aplicaciones para la plataforma, así como conocer los controles

    proporcionados para nuestras propias aplicaciones por el sistema Android.

    Documentación. Como hemos comentado en los puntos anteriores todo lo

    investigado sobre la plataforma Android, así como la información sobre el entorno de

    desarrollo y herramientas instaladas, y por último las pruebas e investigación realizada

    sobre nuestra aplicación de prueba, todo ello debemos de documentarlo explícitamente

    para la mejor comprensión por parte del lector.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    6

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    1.3 Medios empleados

    Para la realización de este proyecto fin de carrera los medios empleados han sido

    los siguientes:

    Equipo portátil:

    Procesador: Intel Core 2 Duo CPU T5470 1.60GHz.

    Tarjeta gráfica: Mobile Intel 965.

    Memoria RAM: 2 GB.

    Disco duro: 160 GB.

    Sistema operativo: Windows 7 Ultimate 32 bits Service Pack 1.

    Equipo sobremesa:

    Procesador: Intel Core 2 Quad CPU Q9650 3.00GHz.

    Tarjeta gráfica: Nvidia 9500 GT 1GB.

    Memoria RAM: 4 GB.

    Disco duro: 500 GB.

    Sistema operativo: Windows 7 Professional 32 bits Service Pack 1.

    Máquina virtual:

    Versión: VMware Player 3.1.4 build - 385536.

    Memoria RAM: 1 GB.

    Disco duro: 40 GB.

    Sistema operativo: Windows XP Professional 32 bits Service Pack 3.

    Dispositivo de almacenamiento externo: ScanDisk 16 GB.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    7

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    1.4 Estructura de la memoria

    A continuación se explica brevemente el contenido de cada capítulo y anexos

    incluidos en esta memoria.

    En el capítulo 1, Introducción, se expone la motivación del presente proyecto, los

    objetivos que se persiguen, así como una visión general de los contenidos de la memoria.

    En el capítulo 2, La Seguridad Informática, realizamos una introducción al

    concepto de la misma, así como una visión general de lo que conlleva dentro de un

    sistema operativo y la clasificación de las distintas amenazas y/o ataques para el mismo.

    En el capítulo 3, Auditoría Informática, realizamos una introducción al concepto

    de la misma, así como una visión general de los distintos tipos de auditorías, tanto

    internas como externas, haciendo hincapié en los distintos tipos de controles existentes

    para la realización de las mismas.

    En el capítulo 4, La Plataforma Android, se explican al lector las características

    básicas del sistema operativo Android, su diseño, arquitectura y funcionamiento,

    explicando al lector los puntos fuertes en la seguridad de la plataforma y de las

    herramientas de las que está provista, ahondando en este último tema mencionado.

    En el capítulo 5, La Firma de Aplicaciones Android, se explica al lector como se

    lleva a cabo el firmado de aplicaciones por parte del desarrollador para su posterior

    publicación en el mercado de aplicaciones de Google, Google Play.

    En el capítulo 6, Versionar aplicaciones Android, se explica detalladamente al

    lector el proceso de versionado de las aplicaciones Android por parte del desarrollador de

    las mismas, para que el usuario final siempre tenga a su disposición la última versión de

    sus aplicaciones.

    En el capítulo 7, Publicar aplicaciones Android, en este capítulo se explica

    detalladamente al lector como los desarrolladores de aplicaciones para la plataforma,

    ponen a disposición del usuario final las aplicaciones anteriormente mencionadas

    desarrolladas por los mismos mediante el servicio de Google, Google Play.

    En el capítulo 8, Ataques a la plataforma Android, se explica al lector la historia

    en el tiempo de los diversos ataques que ha sufrido la plataforma hasta el momento por

    parte de aplicaciones malintencionadas.

    En el capítulo 9, La aplicación Agenda Personal, en este capítulo se explica al

    lector detalladamente la aplicación que hemos desarrollado a modo de investigación, para

    el buen entendimiento y comprensión de las herramientas y seguridad, que ofrece la

    plataforma a los desarrolladores de la misma en lo que a seguridad y controles del sistema

    implica.

    En el capítulo 10, Conclusiones, este capítulo es el resultado de la investigación

    tanto documental como del desarrollo de nuestra aplicación en este proyecto fin de

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    8

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    carrera, en él se detallan al lector las conclusiones a las que se han llegado en lo que al

    tema de la seguridad y los controles de este sistema operativo ofrecen.

    En el capítulo 11, Presupuesto, detallamos al lector el presupuesto necesario para

    la realización de este proyecto fin de carrera.

    En el anexo A, Normalización y estándares, se detalla al lector la normalización y

    estandarización de la ISO 27001, la ISO 27002 y el Reglamento de desarrollo de la Ley

    Orgánica 15/1999, aplicando todas ellas a la plataforma Android.

    En el anexo B, Instalación entorno de desarrollo, se detalla al lector la instalación

    del entorno de trabajo para la realización del desarrollo de nuestra aplicación Agenda

    Personal.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    9

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Capítulo 2

    La Seguridad Informática

    2 Seguridad Informática

    Para la realización de este capítulo de nuestro proyecto fin de carrera, hemos

    recopilado y estudiado información de las siguientes referencias [1], [2], [3] y [4].

    La seguridad informática es el área de la informática que se enfoca en la

    protección de la infraestructura computacional y todo lo relacionado con esta (incluyendo

    la información contenida). Para ello existen una serie de estándares, protocolos, métodos,

    reglas, herramientas y leyes concebidas para minimizar los posibles riesgos relacionados

    con la infraestructura o la información. La seguridad informática comprende software,

    bases de datos, metadatos, archivos y todo lo que la organización valore (activo) y

    signifique un riesgo si la información llega a manos de otras personas. Este tipo de

    información se conoce como información privilegiada o confidencial.

    La seguridad informática abarca los conceptos de seguridad física y lógica. La

    seguridad física se refiere a la protección mediante hardware y soportes de datos, así

    como la seguridad de los edificios e instalaciones en los que se encuentran. También se

    deben contemplar situaciones de incendios, inundaciones, sabotajes, robos, catástrofes

    naturales, etc.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    10

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Por otra parte, la seguridad lógica se refiere a la seguridad en el uso de software,

    la protección de los datos, procesos y programas, así como la de acceso ordenado y

    autorizado de los usuarios a la información.

    La seguridad de los sistemas también implica que se debe tener cuidado de que no

    existan copias piratas, o bien que, al estar conectados en red con otros equipos, no exista

    la posibilidad de transmisión de virus a los mismos.

    Para que un sistema informático, ya sea un sistema operativo, una aplicación, o

    servicios, sea seguro en la medida de lo posible ha de cumplir las siguientes

    características:

    Confidencialidad. Requiere que la información sea accesible únicamente por las

    entidades autorizadas.

    Integridad. Requiere que la información sólo pueda ser modificada por las

    entidades autorizadas a tal efecto. La modificación no solo incluye el cambio de los

    mensajes transmitidos sino también incluye escritura, borrado, creación, y actualización.

    No repudio. Ofrece protección a un usuario frente a otro usuario que niegue

    posteriormente que se realizó cierta comunicación. El no repudio de origen protege al

    receptor de que el emisor niegue haber enviado el mensaje mientras que el no repudio de

    recepción protege al emisor de que el receptor niegue haber recibido el mensaje.

    Disponibilidad. Requiere que los recursos del sistema informático estén

    disponibles a las entidades autorizadas cuando lo necesiten.

    2.1 Objetivos de la Seguridad Informática

    La seguridad informática está concebida para proteger los activos informáticos,

    entre los que se encuentran:

    La información contenida:

    Es uno de los elementos más importantes dentro de una organización. La

    seguridad informática debe ser administrada según los criterios establecidos por los

    administradores y supervisores, evitando que usuarios externos y no autorizados puedan

    acceder a ella sin autorización. De lo contrario la organización corre el riesgo de que la

    información sea utilizada maliciosamente para obtener ventajas de ella o que sea

    manipulada, ocasionando lecturas erradas o incompletas de la misma. Otra función de la

    seguridad informática en esta área es la de asegurar el acceso a la información en el

    momento oportuno, incluyendo respaldos de la misma en caso de que esta sufra daños o

    pérdida, producto de accidentes, atentados o desastres.

    Los usuarios:

    Son las personas que utilizan la estructura tecnológica y que gestionan la

    información. La seguridad informática establece normas que minimicen los riesgos a la

    información o infraestructura informática. Estas normas pueden incluir horarios,

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    11

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    restricciones de acceso a ciertos lugares, autorizaciones, perfiles y roles de usuario,

    planes de emergencia, protocolos y todo lo necesario que permita un buen nivel de

    seguridad informática. Además los usuarios son los principales contribuyentes al uso de

    programas realizados por programadores.

    La infraestructura computacional:

    La infraestructura computacional es una parte fundamental para el

    almacenamiento y gestión de la información, así como para el buen funcionamiento de la

    organización. La funcionalidad de la seguridad informática en esta área es velar que los

    equipos funcionen correctamente y prever en caso de fallos, planes de robos, incendios,

    boicot, desastres naturales, fallos en el suministro eléctrico y cualquier otro factor que

    atente contra la infraestructura.

    2.2 Las amenazas y sus tipos

    Una vez que el desarrollo y el funcionamiento de un dispositivo de

    almacenamiento o transmisión de la información se consideran seguros, todavía se deben

    de tener en cuenta las circunstancias "no informáticas" que puedan afectar a la

    información, dichas circunstancias son a menudo imprevisibles o inevitables, de modo

    que la única protección posible es la redundancia (en el caso de la información) y la

    descentralización.

    Estas circunstancias pueden ser causadas por:

    Programas maliciosos: Programas con el fin de perjudicar o a hacer un uso ilícito de los recursos del sistema. Se instala en el equipo abriendo una puerta a

    intrusos o bien modificando datos o información. Estos programas pueden ser del

    tipo virus informático, gusano informático, troyano, bomba lógica o programa

    espía (Spyware).

    Un intruso: Persona que consigue el acceso a la información o programas de los cuales no tiene el acceso permitido (ejemplos: cracker, defacer, script kiddie,

    Script boy, viruxer, etc.).

    El usuario: Son las personas que utilizan la estructura tecnológica y que gestionan la información. A menudo son la causa del mayor problema ligado a la

    seguridad de un sistema informático por desconocimiento del mismo.

    Un siniestro o catástrofe: Una mala manipulación o una mala intención derivan en la pérdida del material, archivos o información (ejemplos: robo, incendio,

    inundación).

    El personal interno de Sistemas: Las pujas de poder que llevan a disociaciones entre los sectores organizativos y la propuesta de soluciones incompatibles para la

    seguridad informática.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    12

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Tipos de amenazas:

    El hecho de conectar una red a un entorno externo a la organización da la

    posibilidad de que algún atacante pueda entrar en ella, y con ello, se puede ocasionar un

    robo de información o alterar el funcionamiento de la red. Por el contrario el hecho de

    que la red no sea conectada a un entorno externo no nos garantiza la seguridad de la

    misma. De acuerdo con el Computer Security Institute (CSI) de San Francisco

    aproximadamente entre el 60 y 80 por ciento de los incidentes de red son causados desde

    dentro de la misma.

    Basándonos en esto podemos decir que existen 2 tipos de amenazas:

    Amenazas internas: Generalmente estas amenazas pueden ser más críticas que las externas por varias razones que expondremos a continuación:

    Los usuarios tienen conocimiento de la red y saben cómo es su funcionamiento.

    Tienen un nivel de acceso respecto a la red por necesidades de su trabajo.

    Los IPS y Firewalls son mecanismos de seguridad no efectivos en amenazas internas.

    Esta situación se da gracias a las ineficiencias en los esquemas de seguridad con

    los que cuentan la mayoría de las compañías a nivel mundial, y porque no existe

    conocimiento relacionado con el planteamiento de un esquema de seguridad

    eficiente que proteja los recursos informáticos de las actuales amenazas

    combinadas.

    El resultado de todo esto es la violación de los sistemas, provocando la pérdida o

    modificación de los datos sensibles o información de la organización, lo que

    puede representar un daño valorado en miles o millones de euros.

    Amenazas externas: Son aquellas amenazas que se originan fuera de la red. Al no tener conocimiento exacto de la red, un atacante tiene que realizar ciertos

    pasos para poder conocer qué es lo que hay en ella y buscar la manera de atacarla.

    La ventaja que se tiene en este tipo de caso es que el administrador de la red

    puede prevenir buena parte de los ataques externos.

    2.3 Problemas que repercuten en la seguridad

    En lo que a sistemas operativos se refiere existen diversas clases de Problemas

    que repercuten en la seguridad. Un alto porcentaje de los ataques que puede sufrir un

    sistema operativo podría englobarse en uno de los siguientes tres tipos:

    Ataques de ingeniería social. El usuario del sistema es el último responsable de mantener una conducta de seguridad adecuada a nivel de equipo y de red, no sirve

    de nada tener un equipo dotado de la mayor seguridad posible si posteriormente el

    usuario facilita sus contraseñas.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    13

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Conectividad. No es lo mismo mantener un equipo libre de virus de forma aislada que un equipo conectado a la red de redes. El hecho de que un equipo esté

    conectado a redes como Internet complica la labor de mantener el sistema seguro.

    Complejidad. Los sistemas operativos son programas enormemente complejos. Un sistema complejo es mucho más difícil de mantener seguro que un sistema

    más simple. En la actualidad existen sistemas operativos que se olvidan de las

    funcionalidades que ha de tener dicho sistema, e incorporan elementos no

    necesarios acarreando una mayor complejidad, y por lo tanto un mayor número de

    líneas de código, aumentando así la posibilidad de que existan defectos en la

    programación y por tanto la seguridad sea más vulnerable.

    2.4 Los reglas básicas de la seguridad informática

    A pesar de que un sistema no pueda ser al 100% seguro, y de que la tecnología

    cambie constantemente, existen unas reglas básicas invariables en el tiempo para

    garantizar de la mejor forma posible la seguridad de un sistema, las mencionaremos a

    continuación:

    1. Si alguien puede convencerle de que ejecute su programa en su equipo, dejará de ser su equipo. Los atacantes intentan convencer al usuario a instalar software en

    nombre de este, o incluso llegan a engañar a los usuarios diciéndoles que dicho

    software es un programa dado cuando en realidad es una aplicación bien distinta la

    cual lleva insertada código malicioso.

    2. Si alguien puede modificar el sistema operativo, dejará de ser su equipo. Si un atacante puede remplazar o modificar cualquiera de los ficheros del sistema

    operativo, ya no podrá confiar en su equipo. Una vez que el sistema operativo se ha

    comprometido, ya no se debe confiar en él pues los cambios que se hayan podido

    realizar en ocasiones no son visibles.

    3. Si alguien tiene acceso físico sin restricciones a su equipo, dejará de ser su equipo. Una persona con acceso pleno a un sistema operativo puede ser capaz de

    instalar software o hardware sin que el usuario habitual sea consciente de ello. Al

    mismo tiempo, un atacante con acceso físico a un equipo obtendrá con toda seguridad

    privilegios administrativos sobre el sistema operativo con lo que ello supone.

    4. Si permite que alguien cargue programas en su sitio Web, dejará de ser su sitio Web. Si un atacante puede ejecutar aplicaciones o modificar código en el sitio Web,

    podrá apropiarse de él.

    5. Las contraseñas débiles anulan una seguridad fuerte. Si los usuarios o administradores usan contraseñas predeterminadas, en blanco, o basadas en palabras

    del diccionario, la seguridad existente en el sistema será inútil si un atacante consigue

    descifrar la contraseña o consigue realizar un ataque de fuerza bruta.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    14

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    6. Una máquina es tan segura como digno de confianza sea el administrador. Cuantos más privilegios administrativos tenga un administrador mayor confianza se

    ha de tener en este.

    7. Los datos de cifrado son tan seguros como las claves de descifrado. Al igual que pasaba en puntos anteriores para las contraseñas de usuarios y administrador, por muy

    bueno que sea un algoritmo de cifrado, no servirá de nada si la contraseña o clave de

    descifrado cae en manos de un atacante.

    8. Un programa antivirus no actualizado es poco más seguro que no disponer del mismo. Debido a la aparición continua de virus informáticos, un software antivirus

    puede quedarse desfasado muy rápidamente, por tanto, un usuario con un antivirus

    obsoleto corre el riesgo de creer que está protegido y con ello descuidar la seguridad.

    9. El anonimato absoluto no es práctico en la vida real ni en la Web. Un error común es confundir anonimato con privacidad. Si bien el anonimato significa que la

    identidad y los detalles sobre un usuario son completamente desconocidos e

    imposibles de rastrear, la privacidad significa que la identidad y los detalles sobre la

    misma no se revelan. La privacidad es esencial, y la tecnología y las leyes permiten

    conseguirlo.

    10. La tecnología no es una panacea. A pesar de que la tecnología es capaz de asegurar los equipos informáticos, no es una solución por sí misma.

    2.5 Principales fallos genéricos en los sistemas operativos

    Existen unos fallos genéricos funcionales de los sistemas operativos que aún no se

    han citado y que se citan a continuación:

    Autenticación: Los usuarios no pueden determinar si el hardware y el software con el que funcionan son los que deben ser. Un intruso podría reemplazar un

    programa sin conocimiento del usuario. Un usuario puede inadvertidamente

    teclear una contraseña en un programa de entrada falso.

    Cifrado: No se almacena cifrada la lista maestra de contraseñas.

    Implementación: Implementación improcedente de un buen diseño de seguridad.

    Confianza implícita: Una rutina supone que otra está funcionando correctamente cuando, de hecho, debería examinar los parámetros suministrados por la otra

    rutina.

    Compartimiento implícito: El sistema operativo deposita inadvertidamente información importante del sistema en un espacio de direcciones del usuario.

    Comunicación entre procesos: Usos inadecuados de los mecanismos de send/receive que pueden ser aprovechados por los intrusos.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    15

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Verificación de la legalidad: Validación insuficiente de los parámetros del usuario.

    Desconexión de línea: Ante una desconexión de línea el S. O. debería:

    Dar de baja al usuario (o los usuarios) de la línea.

    Colocarlos en un estado tal que requieran la re - autorización para obtener nuevamente el control.

    Descuido del operador: Un intruso podría engañar a un operador y hacer que le habilite determinados recursos.

    Paso de parámetros por referencia en función de su valor: Es más seguro pasar los parámetros directamente en registros que tener los registros apuntando a

    las áreas que contienen los parámetros. El paso por referencia puede permitir que

    los parámetros, estando aún en el área del usuario, puedan ser modificados antes

    de ser usados por el sistema.

    Contraseñas: No deben ser fácilmente deducibles u obtenibles mediante ensayos repetidos.

    Entrampamiento al intruso: Los sistemas operativos deben tener mecanismos de entrampamiento para atraer al intruso inexperto.

    Privilegio: Cuando hay demasiados programas con demasiados privilegios se viola el principio del menor privilegio.

    Confinamiento del programa: Un programa “prestado” de otro usuario puede actuar como un “Caballo de Troya”.

    Prohibiciones: Se advierte a los usuarios que no utilicen ciertas opciones porque los resultados podrían ser “indeterminados”, pero no se bloquea su uso, con lo que

    puede robar o alterar datos.

    Residuos: Un intruso podría encontrar una lista de contraseñas con solo buscar en lugares tales como una "papelera" del sistema o física. La información delicada

    debe ser sobrescrita o destruida antes de liberar o descartar el medio que ocupa.

    Blindaje: Los intrusos pueden conectarse a una línea de transmisión sin hacer

    contacto físico:

    Utilizan el campo inducido por la circulación de corriente en un cable.

    Se previene con un adecuado blindaje eléctrico.

    Valores de umbral: Si no se dispone de valores umbral, no habrá:

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    16

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Límites al número de intentos fallidos de ingreso.

    Bloqueos a nuevos intentos.

    Comunicaciones al supervisor o administrador del sistema.

    2.6 Vulnerabilidades de un sistema operativo

    Aunque no sea objeto específico de nuestro proyecto, a continuación vamos a

    mostrar la forma generalizada que realiza un atacante para introducirse en un sistema

    ajeno. Se muestra con detalle pues conociendo el método con el cual se introducen en la

    máquina, es más fácil poder evitar dichas intrusiones.

    Exploración:

    El primer paso que realiza un atacante es la exploración. Mediante la exploración,

    el atacante obtiene una lista de “direcciones IP” y de red utilizando descargas de

    transferencias de zonas y consultas “whois”.

    Figura 1. Consulta Whois.

    Estas técnicas proporcionan una información valiosa a los atacantes, como puede

    ser: nombres de empleados, números de teléfono, rangos de direcciones IP, servidores

    DNS, etc.

    Una vez que se tiene seleccionada una red, se ha de realizar un barrido de “ping”

    automatizado en un rango de direcciones IP y de bloques de red. “Ping” se utiliza

    tradicionalmente para enviar paquetes ICMP ECHO_REQUEST a un sistema destino, en

    un intento de obtener un ICMP ECHOREPLY el cual indica que el sistema destino está

    activo para una posterior exploración de puertos. Este sistema no sería el recomendable

    en redes de gran tamaño debido a la alta cantidad de tiempo que puede llevar el barrido.

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    17

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    Identificar servicios TCP/IP que se ejecutan en el sistema:

    En la exploración de puertos se realiza el proceso de conexión a puertos UDP y

    TCP del sistema destino que nos permite determinar los servicios que se están ejecutando

    en el sistema. Por ejemplo, si un equipo tiene abierto el puerto 80 entonces sabemos que

    el equipo tiene un servidor web.

    Existen varias herramientas de exploración de puertos, la elección de una de ellas

    es crítica. En Linux y Windows por ejemplo existe la herramienta “nmap” de difícil

    detección pues fue creada para evadir los sistemas de detección de intrusos.

    Figura 2. nmap –Sp.

    Identificar el sistema operativo:

    Para poder identificar el sistema operativo instalado, es necesario utilizar las

    herramientas de rastreo de pilas. Este método es una técnica extremadamente potente que

    nos permite averiguar de forma rápida, y con gran porcentaje de éxito, cuál es el sistema

    operativo instalado en el “host”. Dicho método se basa en que cada fabricante de sistemas

    operativos usa una política u otra a la hora del desarrollo de pilas “IP”, y analizando las

    diferencias se pueden hacer suposiciones de cuál es el sistema operativo que se está

    usando. Para obtener la máxima fiabilidad, la técnica de rastreo de pilas necesitará que al

    menos un puerto esté a la escucha.

    Existen diversos tipos de sondeos que podemos enviar al sistema y que nos

    permiten distinguir un sistema operativo de otro, por ejemplo:

    Sondeo FIN. Se envía un “paquete FIN” a un puerto abierto. La normativa “RFC” establece que el comportamiento correcto es no responder. Sin

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    18

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    embargo, muchos desarrolladores de pilas, responden con un “paquete

    FIN/ACK”.

    Sondeo de Bogus Flag. Se introduce un flag “TCP” indefinida en la cabecera “TCP” de un paquete “SYN”. Algunos sistemas operativos, como Linux,

    responderán con esta flag en su paquete de respuesta.

    Muestreo de número de secuencia inicial (ISN). La premisa básica es encontrar un patrón en la secuencia inicial elegida por la implementación

    “TCP” cuando responde a una petición de conexión.

    Supervisión de “bit de No Fragmentación”. Algunos sistemas operativos activarán la opción “bit de No Fragmentación” para mejorar su rendimiento.

    Se puede analizar este bit para determinar qué tipos de sistema operativo se

    comportan de esta manera.

    Tamaño de ventana inicial “TCP”. Se analiza el tamaño inicial recibido en los paquetes de respuesta. En algunos desarrollos de pilas, este tamaño es

    único y puede ayudar bastante en la precisión del mecanismo de seguimiento.

    Valor “ACK”. Las pilas “IP” difieren en el valor de la secuencia que usan en el campo “ACK”, por lo que algunos desarrolladores responderán con el

    mismo número de secuencia que han recibido, y otros responderán con ese

    número de secuencia incrementado en una unidad.

    Apagado del mensaje de error ICMP. Los sistemas operativos pueden limitar la velocidad con la que se envían los mensajes de error. Si se envían

    paquetes “UDP” a algún puerto aleatorio que tenga asignado un número

    elevado, es posible contar el número de mensajes recibidos no contestados en

    un intervalo de tiempo determinado.

    Cita de mensajes “ICMP”. Los sistemas operativos difieren en la cantidad de información que se cita cuando aparecen mensajes de error “ICMP”. Si se

    examina el mensaje citado, se podrán realizar ciertas hipótesis sobre cuál es el

    sistema operativo. En Linux existen varias herramientas que nos permiten

    detectar cuál es el sistema operativo de un equipo remoto: xprobe 2 y Nmap

    por ejemplo.

    Integridad del eco de los mensajes de error ICMP. Algunos desarrollos de pilas pueden alterar las cabeceras IP cuando devuelven mensajes de error

    ICMP. Si examinamos las modificaciones producidas en las cabeceras, se

    podrán realizar ciertas hipótesis sobre cuál es el sistema operativo destino.

    Tipo de servicio (TOS). En los mensajes del tipo “ICMP port unreachable”, se pueden examinar el “TOS”. La mayoría de pilas utilizan un 0 pero existen

    otras posibilidades.

    Control de fragmentación. Cada pila maneja de forma diferente los fragmentos de un mensaje. Algunas pilas cuando recomponen los fragmentos,

  • Proyecto Fin de Carrera “Controles y seguridad bajo entorno Android”

    19

    Christian Madero García - Ingeniería Técnica en Informática de Gestión

    escriben datos nuevos encima de los viejos, y viceversa. Analizando cómo se

    recomponen los paquetes de sondeo, se podrán realizar ciertas hipótesis sobre

    el sistema operativo objetivo.

    Opciones TCP. Las opciones “TCP” se definen más recientemente en “RFC 1323”. Las opciones más avanzadas proporcionadas por RFC 1323 suelen

    encontrarse en los desarrollos de pila más modernos. Enviando un paquete

    para el que se han definido una serie de opciones es posible realizar alguna

    hipótesis sobre cuál es el sistema operativo objeto.

    Identificar las aplicaciones de un servicio:

    Una vez que el atacante ha identificado el sistema operativo, puede identificar la

    versión de un servicio o aplicación, y utilizar dicha información para aprovechar las

    vulnerabilidades de dicho servicio.

    La aplicación “nmap” de Linux permite averiguar qué aplicaciones están

    ejecutándose en un puerto determinado tanto en nuestra máquina como en una máquina

    remota.

    Figura 3. amap.

    Ident