DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

30
DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON S.O. ANDROID, CON FINES DOCENTES Manuel Costas Pardo Trabajo de Fin de Grado Escuela de Ingeniería de Telecomunicación Grado en Ingeniería de Tecnologías de Telecomunicación Tutores: Cristina López Bravo Jose Luis Rivas López 2019-2020

Transcript of DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Page 1: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

DESARROLLO DE MALWARE PARA

DISPOSITIVOS MÓVILES CON S.O. ANDROID,

CON FINES DOCENTES

Manuel Costas Pardo

Trabajo de Fin de Grado

Escuela de Ingeniería de Telecomunicación

Grado en Ingeniería de Tecnologías de Telecomunicación

Tutores:

Cristina López Bravo

Jose Luis Rivas López

2019-2020

Page 2: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

1

ÍNDICE

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

2. Análisis de necesidades . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . 3

3. Estado del arte. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . .. . . . . . 4

4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5. Metodología seguida y decisiones tomadas. . . . . . . . . . . . . . .. . . . . . . . 6

6. Pruebas y resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

7. Discusión del impacto del trabajo y conclusión. . . . . . . . . . . . . . . . . . . . . 16

8. Bibliografía. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

9. Anexo I .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 19

10. Anexo II . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 22

11. Anexo III. . . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . 25

Page 3: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

2

1. INTRODUCCIÓN

La seguridad se define como el estado de bienestar que percibe y disfruta el ser humano [1]. En el

ámbito de la seguridad de la información, seguridad es el término atribuido a la protección y

defensa de la información digital y de recursos de las tecnologías de la información frente a

amenazas [1]. Es un concepto que se puede aplicar en muchos campos de la tecnología, por lo que

parece razonable que presente muchas vertientes, siendo una de ellas la seguridad en dispositivos

móviles.

Los dispositivos portátiles personales, o dispositivos móviles, han impactado significativamente en

nuestras vidas y las han llevado a un nuevo nivel. Hasta cierto punto, los móviles han sobrepasado a

los ordenadores clásicos en vista de la frecuencia de uso y la dependencia. Las elevadas capacidades

de estos equipos, junto con el número incremental de operaciones y actividades que los usuarios

realizan con ellos, han despertado cierta preocupación respecto a la protección de la privacidad y la

seguridad del dispositivo, y consecuentemente han impulsado nuevas maneras formas de

explotación y ataques. La información privada contenida en estos equipos incluye todo aquello

necesario para identificar a un usuario: nombre, género, edad, fotos, vídeos, grabaciones de voz,

número de teléfono, dirección, información de tarjetas de crédito y hasta historiales de localización

y navegación. Todos estos datos pueden ser potencialmente rastreados o robados por terceros para

usarlos en contra de los propios usuarios [2].

Los sistemas operativos actuales para smartphone han sido diseñados para ser altamente seguros, y

mejoran progresivamente con el tiempo, incorporando nuevos métodos y garantías, y por ello puede

resultar complicado romper la barrera de seguridad y poner en marcha operaciones maliciosas. No

obstante, muchas aplicaciones móviles presentan vulnerabilidades que más tarde son aprovechadas

para atacar la privacidad. Atendiendo a las millones de aplicaciones disponibles para descarga (3

millones en Play Store y más de 2 millones en App Store) [3], en ocasiones es una tarea compleja

para los sistemas detectar un comportamiento anómalo o discernir cuando una operación está

permitida o no por el usuario.

La seguridad móvil incluye la protección de información tanto personal como profesional

almacenada y transmitida entre dispositivos portátiles: móviles, tabletas, ordenadores, etc. El rango

de ocupación es muy amplio: desde reducir riesgos y garantizar la protección de información

confidencial en caso de robo, acceso no autorizado o pérdida del dispositivo, hasta proteger

dispositivos móviles frente a amenazas malware.

Se entiende por software malicioso o malware todo aquel software que causa algún tipo de daño a

un usuario, equipo o red. El abanico de clasificación es muy vasto, atendiendo al tipo de propósito y

operaciones que ejecute: virus, troyano, gusano informático, scareware y spyware son los más

comunes.

Para explicar de forma más detallada cómo procede un malware concreto, a continuación se

comenta brevemente un ejemplo que se da entre usuarios habitualmente. Supongamos que existe

una aplicación de edición audiovisual que permite trabajar con fotos y vídeos. En las plataformas de

descarga más populares existen muchas aplicaciones así, lo que lleva a hacer pensar a usuarios y

administradores de la plataforma que es una aplicación inofensiva. La aplicación es aprobada,

publicada y descargada por varios usuarios para usarse de forma habitual. Una vez instalada,

funciona como es esperado, pero por debajo de este funcionamiento superficial, la aplicación accede

a la galería, recoge todas las fotos y las envía a un servidor remoto.

Page 4: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

3

Las aplicaciones maliciosas a menudo no son detectadas y pueden causar grandes daños al usuario,

es por ello que mantener un control exhaustivo y constante del dispositivo es vital para garantizar su

protección.

El malware juega un papel muy importante en la mayor parte de intrusiones computacionales de la

actualidad. Por este motivo, pese a que los factores que influyen en la seguridad de los dispositivos

móviles son muchos, este trabajo se focaliza en el estudio del malware y las medidas de protección

frente a él. Del mismo modo, si bien el abanico de sistemas operativos para dispositivos móviles es

amplio (iOS, Windows 10 Mobile, o Ubuntu Touch, entre otros), teniendo en cuenta que la cuota de

mercado de Android supera el 70% a nivel mundial [3] y el 80% en España [4], este trabajo se

centra en el análisis de dispositivos móviles con sistema operativo Android. El modelo de seguridad

de Android y de las medidas de protección de datos que adopta se explican desde una perspectiva

más práctica en el Anexo I de este documento.

2. ANÁLISIS DE NECESIDADES

Android ha sido el principal foco de ataque en los últimos años en cuanto a malware se refiere,

parcialmente debido a su gran popularidad en todo el mundo, su naturaleza de código abierto y la

gran cantidad de documentación que existe al respecto. El desarrollo de antivirus y productos para

detectar y evitar el software malicioso está en continuo crecimiento, pero su funcionamiento en

dispositivos móviles no es a menudo el esperado, relegando la mayor parte de la responsabilidad en

el usuario, quien debe ser consciente de qué software está instalado, cómo le afecta y el alcance de

las consecuencias.

Los usuarios acostumbrados a la tecnología y conscientes de los peligros existentes mantienen una

serie de buenas prácticas que reducen considerablemente el número de ataques provocados en su

entorno y en sus dispositivos, como revisar permisos, mantener actualizado el dispositivo.... Sin

embargo, tanto ese grupo como los demás usuarios pueden caer en el error de dar paso igualmente

al software malicioso, generalmente por desconocimiento.

Naturalmente, las causas por las que el malware entra en los móviles van más allá que la mera falta

de conocimiento de los usuarios. Algunas de las medidas de seguridad habitualmente tomadas para

estaciones y servidores no son directamente aplicables a los móviles (por ejemplo, no pueden ser

protegidos por firewalls o técnicas de cifrado con un coste computacional muy elevado). Sin

embargo, cada vez más usuarios usan móviles o tabletas en su día a día y no exclusivamente en el

ámbito personal, sino también profesional. El acceso a información sensible por parte de empleados

y trabajadores es algo muy común en la actualidad, poniendo a la compañía en riesgo frente a un

posible robo de datos por software malicioso.

Muchas compañías tienen recursos empresariales accesibles y disponibles en los dispositivos de

empresa, y basta que uno solo de ellos esté infectado por malware para comprometer toda su

seguridad, aún manteniendo políticas de seguridad estrictas y controles rigurosos.

Por todo esto, si queremos evitar que nuestros datos y nuestra privacidad en general no esté en

peligro, es necesario conocer el alcance de estas aplicaciones nocivas y su capacidad de actuación.

Para detectar y evitar algo primero hay que conocerlo, con este objetivo se desarrolla este TFG.

Page 5: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

4

3. ESTADO DEL ARTE

Una de las principales fuentes de aprovechamiento para los creadores de malware es la continua

optimización de los dispositivos portátiles. Los atacantes programan malware usando técnicas

nuevas que los antivirus o detectores tradicionales no son capaces de distinguir, por lo que se hace

más complicado luchar contra las aplicaciones maliciosas.

Con el paso del tiempo van apareciendo nuevas versiones que incorporan novedades de sistema, y si

bien es cierto que las nuevas versiones son más robustas ante malware que las antiguas, también

presentan agujeros y vulnerabilidades que se pueden atacar. Se concluye así que el malware para

Android crece paralelamente con la popularidad y la mejora del sistema operativo Android.

El desarrollo de un malware para Android es una tarea cuya complejidad aumenta en base a las

funcionalidades que se desean implementar. Principalmente hay que tener un conocimiento mínimo

de Android y de su arquitectura, la cual se detalla en el Anexo I de este documento. Es importante

conocer las distintas capas del modelo para tener una visión global del funcionamiento conjunto de

todo el sistema y de las interacciones entre los niveles. Existen una gran variedad de entornos y

plataformas para el desarrollo de aplicaciones Android, siendo Android Studio el IDE [5] oficial

más popular y autocontenido para ello.

Pese a que no existen unas pautas estándar para desarrollar malware, hay una serie de aspectos que

conviene seguir durante su elaboración:

● Seleccionar un lenguaje de programación. Conocer el lenguaje de programación elegido, así

como sus ventajas e inconvenientes (portabilidad, capacidad de actuación, complejidad...)

es clave a la hora de afrontar el desarrollo de una aplicación maliciosa [6]. Por todas estas

razones, sumadas a ser el lenguaje de programación más popular en la actualidad, se ha

elegido Java para el desarrollo del malware.

● Conocer y comprender la arquitectura interna de los sistemas operativos (Windows,

Linux...) que se van a ver afectados por el malware, tanto de cara a su desarrollo como a su

actividad.

● Estudiar y analizar los distintos tipos de malware existentes. Es importante tener constancia

de las aplicaciones maliciosas que ya existen y entender cómo se han diseñado. Hay una

gran variedad de repositorios de malware de código abierto que permiten asimilar sus

características más notables [6].

● Decidir qué tipo de malware se va a realizar. Si bien se pueden atacar muchas

vulnerabilidades en dispositivos y sistemas, es importante saber qué actividades concretas

lleva a cabo nuestro malware para poder clasificarlo en alguna de las categorías ya

definidas. En este trabajo se explica detalladamente un malware de tipo espía, llamado

spyware, caracterizado por recopilar información privada de los dispositivos sin

conocimiento o aceptación de los usuarios.

● Fijar un entorno de pruebas exhaustivo. Llevar a cabo pruebas de manera continuada ayuda

a obtener mejores resultados en el desarrollo. Probar el malware en diferentes modelos de

dispositivo, distintas versiones o incluso en distintos entornos mejoran su robustez y calidad

[7].

La posición de Android en el mercado siempre ha atraído a los atacantes al considerarlo como el

principal foco de ataque, dado que las aplicaciones no son revisadas totalmente antes de su

publicación en la tienda oficial, proceso contrario al que sí realiza Apple, sometiendo cada nueva

aplicación a un severo control de seguridad [8]. Como se ha mencionado previamente, los distintos

tipos de malware se pueden agrupar en numerosas categorías a partir de la funcionalidad de su

carga (payload) maliciosa. El grado de daño causado es muy variable y a menudo invisible para los

afectados. Recientemente se ha descubierto malware que detecta cuando el dispositivo se apaga

Page 6: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

5

para empezar a funcionar, recogiendo así información aún cuando el móvil parece no estar

operativo [2]. Existen incluso malware capaz de robar toda la información contenida en tarjetas de

crédito vinculadas a Google Play para completar transacciones [2]. Contando con estas técnicas tan

depuradas y sofisticadas, el malware para Android se ha convertido en una amenaza real que

compromete la seguridad de los datos y, por tanto, la nuestra.

Pese a que las aplicaciones maliciosas pueden poner en alto riesgo nuestros datos, existen formas de

combatirlas y detectar cuando nuestro dispositivo ha sido infectado por una o varias y combatirlas

o, cuanto menos, paliar notablemente sus negativos efectos. Fundamentalmente existen dos formas

de comprobar si malware desconocido ha atacado nuestro móvil o tableta:

1. Revisar el funcionamiento del dispositivo. Si se trata de un comportamiento anómalo (el

dispositivo se apaga o deja de funcionar inesperadamente, el sistema u otras aplicaciones se

congelan, la ejecución es lenta, etc) quizás se deba a que haya malware nocivo eliminando

o corrompiendo ficheros que son necesarios para un funcionamiento adecuado.

2. Detección de malware empleando software específico: Existen diversas soluciones

software, llamadas antivirus, que son capaces de depurar los dispositivos y evitar que

aplicaciones potencialmente peligrosas ataquen el sistema y su funcionamiento. Entre ellas,

destaca la solución oficial ofrecida por Android, Google Play Protect, un servicio integrado

de Google que protege los dispositivos de posibles amenazas, realizando análisis de

seguridad de las aplicaciones instaladas [9].

Una visión más detallada del malware y de los distintos tipos de aplicaciones móviles dañinas

existentes en la actualidad se ofrece en el Anexo II.

4. OBJETIVOS

El objetivo principal de este proyecto es diseñar y programar una aplicación que permita explotar

algunas de las vulnerabilidades en dispositivos Android, concretamente en versiones 6.0.1 y 8.0.1.

Con ello se pretenden dar a conocer algunos de los principales problemas y peligros de estos

dispositivos cuando se usan inconscientemente, y algunas de las formas de aprovecharse de la

inocencia y buena fe de la mayoría de los usuarios, entre las muchas existentes. Conocer estos

problemas permite el desarrollo de aplicaciones más seguras en el futuro.

Los objetivos específicos del presente trabajo son los siguientes:

● Mostrar cómo funciona un malware espía que recopila información, registrando datos e

información privada tanto del dispositivo como del usuario.

● Mostrar diversas formas y técnicas de robo de información sensible desde un punto de vista

tanto teórico como práctico. Concretamente, el proyecto aborda las técnicas que se

mencionan a continuación:

1. Registro de las coordenadas de localización del móvil.

2. Acceso a memoria y extracción de una copia del listado de los documentos

descargados.

3. Registro de la actividad del usuario en tiempo real.

4. Registro de cualquier nueva notificación emergente.

5. Registro todo el texto introducido por el usuario en el dispositivo.

También se proporciona una visión de alto nivel de los peligros que puede generar el robo de

información privada, así como las consecuencias sobre los usuarios cuando sus dispositivos son

controlados remotamente por un tercero.

Page 7: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

6

Como objetivo secundario, se proporciona una herramienta práctica a la asignatura “Seguridad en

dispositivos móviles (SMOV)” del Máster Universitario en Ciberseguridad para que los alumnos,

mediante un análisis forense sobre teléfonos controlados, sean capaces de detectar aplicaciones

maliciosas y descubrir su modo de funcionamiento.

5. METODOLOGÍA SEGUIDA Y DECISIONES TÉCNICAS

TOMADAS

Desde un punto de vista práctico, el proyecto consta de dos componentes básicos: la

aplicación, que se instala en el dispositivo Android de la víctima, y el servidor, que recibe

las distintas notificaciones enviadas desde la aplicación con información privada del

usuario, mostrándola formateada en la consola o terminal del equipo del atacante.

La aplicación se ha realizado con Android Studio 3.5.1, y el lenguaje de programación elegido es

Java. Las pruebas se han completado en dos dispositivos: un móvil Samsung Galaxy J4+ con

Android 8.1.0, y una tableta Nexus 7 con Android 6.0.1.

El entorno de desarrollo del servidor es Ubuntu 18.04 y para su desarrollo se ha empleado Node.js.

La versión de Node usada es la 8.10.0. Para lanzar el servidor debe usarse el comando node

index.js. El fichero index.js contiene el código del servidor a ejecutar, y node es la cláusula usada

para ejecutar cualquier código Javascript. Otra forma de iniciar el servidor es npm start index.js.

NPM es un gestor de paquetes que puede ser usado para ejecutar, actualizar, eliminar, etc paquetes,

y npm start ejecuta el comando start que se encuentra en el ficheropackage.json en el directorio raíz

del proyecto.

Dicho fichero contiene metadatos relativos al proyecto en cuestión y es necesario para que NPM

pueda identificar tanto al proyecto como a sus dependencias. Para que esto funcione, la directiva

start del fichero package.json debe tener el valor nodeindex.js.

Los detalles de la instalación y configuración completa de las herramientas de trabajo se explican en

el Anexo III de este documento.

El desarrollo de ambas partes se ha llevado a cabo de forma simultánea. A medida que la aplicación

se ha programado, el código del servidor se ha completado paralelamente.

La aplicación envía diversos paquetes de mensajes cifrados al servidor de manera periódica,

conforme el usuario interactúa con el dispositivo afectado. Dichos paquetes son recibidos por el

servidor, que muestra en la consola del equipo la información enviada por la aplicación.

En la Figura 1 se puede ver la arquitectura del entorno de trabajo.

Page 8: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

7

Figura 1. Entorno práctico del proyecto

La aplicación extrae información de diversos tipos: geolocalización del dispositivo, ficheros

descargados localizados en la memoria, alertas ante nuevas notificaciones como descargas y

seguimiento del uso. También consta de un capturador de teclado exhaustivo que recoge el texto

introducido y la hora a la que se realiza dicha entrada, presentándola estructurada en pantalla.

El proceso de configuración del servidor en la nube se detalla al final del Anexo III.

● Geolocalización

Esta vulnerabilidad se ha seleccionado por el peligro que puede representar para los usuarios dar

acceso a sus datos de localización a aplicaciones con intenciones maliciosas. Con estas variables y

suficiente conocimiento de localizaciones específicas, es posible crear un perfil preciso de varios

usuarios de estos dispositivos. La geolocalización se muestra en función de las coordenadas de

longitud y latitud del dispositivo. Dichas variables se obtienen únicamente si la aplicación cuenta

con el permiso de GPS y si este está activado. Además, previamente el usuario debe haber

solicitado la localización mediante una aplicación ajena para funcionar, ya que se emplea el método

getLastKnownLocation(), que recurre a las últimas coordenadas detectadas. En caso de que no se

puedan obtener las variables, no se muestran. Como para acceder al GPS se necesita un permiso

específico, la aplicación muestra un aviso de solicitud consultando al usuario si desea conceder

dicho permiso o no.

● Lectura de memoria

Android ofrece varios tipos de espacios de almacenamiento para guardar los datos y la información

de las aplicaciones, siendo uno de ellos el almacenamiento externo. El almacenamiento externo es

el espacio de almacenamiento de información privada en la memoria del dispositivo. Por regla

general, todos los archivos que figuran en ese espacio son privados, restringidos únicamente a sus

aplicaciones y sólo pueden ser eliminados cuando el usuario elimina la aplicación correspondiente.

Sin embargo, este espacio puede ser alterado por aplicaciones externas y existen métodos que

permiten leer todo el contenido guardado [10].

Page 9: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

8

En todos los dispositivos Android existe una ruta de acceso real a los archivos de memoria.

Mediante Environment.getExternalStorageDirectory() se obtiene dicho valor de ruta:

storage/emulated/0 .1

Todos los documentos (ficheros de texto, archivos multimedia, descargas...) guardados en memoria

se localizan en este directorio, organizados en subcarpetas: Descargas, Imágenes, Vídeos… [11], tal

y como se recoge en la Figura 2.

Para acceder al directorio de descargas se emplea el método

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), y a partir

de ahí y teniendo el permiso necesario (READ_INTERNAL_STORAGE), el cual debe incluirse

también en el archivo Manifest de la aplicación, es posible obtener una lista de todos los archivos

descargados en el dispositivo.

Figura 2. Modelo de memoria de dispositivo Android

Los directorios de almacenamiento de los dispositivos Android pueden contener información de

gran importancia, tanto del usuario como del propio dispositivo. Acceder a dichos datos no es una

tarea de elevada complejidad para el peligro representa, motivo por el cual esta vulnerabilidad es

una de las seleccionadas para reflejar y explicar en este trabajo.

● Seguimiento de la actividad del usuario y capturador de teclado

Las interacciones del usuario con el móvil son capturadas por la aplicación mediante

métodos de rastreo que detectan determinados eventos, como un clic sobre una aplicación específica

o la activación de una opción concreta, de manera que se puede hacer un seguimiento de las

aplicaciones que más frecuente y conseguir un mapa del estado del dispositivo.

De la misma forma, el malware consta de un keylogger para recoger todas las entradas de texto

llevadas a cabo. Un keylogger es un software que se encarga de registrar las pulsaciones realizadas

en teclado y las almacena, permitiendo registrar todas las entradas, lo que puede provocar el robo de

contraseñas o contemplar las distintas búsquedas en navegadores, por ejemplo. En nuestro caso

también las envía remotamente junto con el resto de información.

1 Cuando se accede al sistema de ficheros de algunos dispositivos mediante conexión USB o

Bluetooth, el valor storage/emulated/0 aparece reflejado con una alias, generalmente Phone o e nombre del modelo del dispositivo, como Samsung, Xiaomi, etc.

Page 10: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

9

Estas funcionalidades se han hecho empleando la clase AccessibilityService de Android. Tal y como

su nombre indica, es un servicio que se ejecuta de manera continuada y transparente en el

background del dispositivo, recibiendo notificaciones cada vez que un determinado evento, llamado

AccessibilityEvent se dispara. Estos eventos reflejan una interacción o transición entre el usuario y

la interfaz gráfica, y se pueden clasificar en función de dicha transición.TYPE_VIEW_CLICKED

permite detectar la pulsación de un icono o vista (lo que se puede corresponder con lanzar una

nueva aplicación), mientras que TYPE_VIEW_TEXT_CHANGED es la base del registrador de

teclado, alertando al servicio cada vez que una nueva tecla es presionada. A estas funcionalidades se

incorpora la detección de cualquier notificación recibida, como nuevas descargas generadas, usando

TYPE_NOTIFICATION_STATE_CHANGED.

Con toda esta información recuperada y enviada, se envía también la fecha y la hora a la que se

producen los eventos, provocando que el seguimiento sea aún más preciso.

Integrando todas estas operaciones se puede, como posible prueba de concepto, controlar la hora a

la que el usuario abre la aplicación Facebook, revelando el correo y la contraseña que introduce.

Esta prueba de concepto se muestra y explica, junto a otras, en el apartado 6.4.

● Servidor Node

La otra parte del proyecto es el servidor, el cual recibe la información enviada desde la

aplicación, la gestiona, la procesa y la entrega al equipo local para que sea mostrada con un formato

concreto.

La comunicación entre aplicación y servidor se realiza mediante sockets. En líneas generales, un

socket es un extremo (endpoint)2 de un enlace de comunicaciones bidireccional entre dos programas

que permite el intercambio fiable de datos entre ellos de manera ordenada. Los sockets siempre

están necesariamente vinculados a un puerto, de forma que TCP3 pueda identificar la aplicación o

programa que debe recibir los datos [12].

Desde la aplicación se realiza una solicitud de conexión; socket.connect() permite realizar una

petición de inicio de conexión que es escuchada por el servidor [13]. Dado que el cliente conoce el

nombre de host del servidor y el puerto en el que escucha, la solicitud es inmediata, dando lugar a

un enlace nuevo entre ambas entidades. Cuando el servidor acepta dicha conexión, se crea un nuevo

socket en sentido contrario, con el extremo remoto en dirección y puerto del cliente, que también

debe aceptar. Sólo cuando ambas partes han aceptado, el enlace se crea con éxito y la comunicación

es posible.

2Endpoint es la combinación directa de dirección IP y puerto

3TCP: Transmission Control Protocol

Page 11: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

10

Figura 3. Comunicación entre la aplicación cliente y el servidor remoto usando sockets.

La interacción del servidor y la aplicación se realiza usando Node [14] y Express [15]. Node.js es

un entorno que trabaja en tiempo de ejecución que permite crear herramientas del lado de un

servidor y aplicaciones en Javascript. Algunas de las razones por las que se ha optado por Node son

su optimización de rendimiento y por su gestor de paquetes, que posibilita el acceso a un gran

número de paquetes, entre los que se encuentran las dependencias para trabajar con sockets.

Además, la ejecución en tiempo real se usa fuera del contexto del navegador, ejecutándose

directamente en el sistema operativo del equipo local.

Express es uno de los frameworks más comunes usados por Node y paralelamente es la librería que

proporciona acceso a otros frameworks diferentes. Ofrece al desarrollador la opción de modificar y

establecer ajustes de aplicaciones web (como cambiar el puerto de escucha), incorporar

procesamiento de peticiones y programar las vistas empleadas en la generación de una o varias

respuestas.

Para iniciar la comunicación entre aplicación y servidor, es necesario indicar a la aplicación el

extremo del servidor al que se debe conectar. IO.socket(endpoint) inicializa el socket y mediante

connect se realiza la petición de conexión. Una vez establecida la conexión, el intercambio de

información se lleva a cabo a través de mensajes con formato socket.emit(event, data) desde el lado

de la aplicación, donde event es una cadena de texto que indica el evento que representa el mensaje

y que usará el servidor para detectar un tipo de información concreta, referente a ese evento; y data

es la información enviada. En el lado del servidor, los mensajes se reciben con el comando

socket.on('event’, (data)), y a continuación se incluyen las instrucciones para procesarlo.

Como ejemplo, si se desea establecer una conexión socket entre ambas entidades y enviar desde la

aplicación una cadena de texto al servidor para mostrarla en pantalla, el código a usar para solicitar

el inicio de una comunicación, enviar un mensaje al servidor y recibirlo es el siguiente:

Page 12: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

11

// Aplicación Android

socket = IO.socket(endpoint);

socket.connect();

socket.emit("cadena", "Esto es un ejemplo");

Código de la petición de conexión y transmisión en la aplicación

// Servidor Node

io = require('socket.io').listen(server);

io.on('connection', (socket) => {

socket.on('cadena', (messageContent) => {

console.log('Cadena recibida: ' + messageContent);

} )

} )

Código de establecimiento de conexión y recepción en el servidor

6. PRUEBAS Y RESULTADOS

El objetivo de esta sección es presentar un conjunto de pruebas que muestran las principales

funcionalidades del malware desarrollado, ofreciendo una visión del peligro de cada una y de la

vulnerabilidad explotada en cada caso.

En algunas pruebas se explica también la forma de detectar y evitar que las aplicaciones maliciosas

realicen dichos casos prácticos.

1. Primera prueba

- Descripción: Recepción de las coordenadas de longitud y latitud del dispositivo.

- Objetivo: Obtener y presentar las últimas coordenadas detectadas del dispositivo

para identificar la posición real del usuario.

El usuario lanza la aplicación Google Maps para conocer su posición y comprobar la ruta hacia un

destino concreto. El malware detecta que nuevas coordenadas han sido consultadas por el usuario y

son registradas y enviadas al servidor para ser mostradas en pantalla. En este caso, la vulnerabilidad

explotada es poder acceder a otras aplicaciones y registrar los datos correspondientes a dichas

aplicaciones, proceso que el malware no debería poder realizar.

La activación de GPS y la concesión de los permisos necesarios al malware permite que este pueda

acceder a datos calculados por otras aplicaciones de localización, como Google Maps. Android

cuenta con un modelo de permisos, explicado en el Anexo I, para prevenir que los datos de

localización sean registrados por otras aplicaciones, pero si el usuario lo permite, dichas variables

quedan totalmente expuestas. Las soluciones en este punto son diversas; el usuario puede

deshabilitar el GPS, impidiendo que cualquier aplicación registre sus coordenadas de esta forma, o

revisar el permiso de localización y comprobar qué aplicaciones cuentan con él, retirando el mismo

si resulta necesario.

Page 13: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

12

Figura 4: Coordenadas de localización del dispositivo

2. Segunda prueba

- Descripción: Registrar la actividad del usuario.

- Objetivo: Obtener en tiempo real el historial del navegador del usuario.

El usuario realiza una o varias búsquedas en el navegador Google Chrome. Todas aquellas páginas

visitadas, así como el texto introducido son detectadas por el Keylogger y enviadas al servidor para

ser mostradas por pantalla.

Figura 5. Registro de actividad del usuario

El usuario emplea el dispositivo móvil para navegar por distintas aplicaciones. El keylogger

implementado detecta que nuevos iconos han sido pulsados y procesa el tipo de evento registrado,

en este caso son aplicaciones ejecutándose, entre las que destacan Facebook, Google Drive o la

cámara. Se observa cómo el usuario navega por los menús de Google Play, visitando diversas

secciones (aplicaciones más populares y aplicaciones más rentables). Finalmente, el usuario lanza la

aplicación Samsung Notes para crear una nueva nota, acción también detectada por el malware.

Mostrar cómo captura el texto introducido no es el objetivo de esta prueba, y se describe más

detalladamente en la cuarta prueba.

Desde Android 1.5, Android integra en sus dispositivos los medios necesarios para que los usuarios

implementen teclados personalizados desarrollados por terceros, por lo que los números de este tipo

de ataques se han incrementado desde entonces. Esta vulnerabilidad del sistema es aprovechada por

Page 14: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

13

malware que inyecta dicho capturador de teclado entre el usuario y cualquier aplicación que

requiera entrada manual de datos. Afortunadamente, se puede comprobar el alcance y la capacidad

de estas aplicaciones maliciosas comprobando los permisos que tiene, otorgados por el usuario [16].

La solución ante este tipo de ataques es revisar los permisos de las aplicaciones, y comprobar que

aquellas de uso cotidiano o aparentemente inofensivas no requieren permisos de acceso a

funcionalidades o servicios que no mantienen relación con ellas.

La actividad en línea de los usuarios es un punto de ataque clave para varios tipos de aplicaciones

maliciosas, especialmente aquellas de tipo espía comercial4, ya que muestra las páginas que más se

visitan o las aplicaciones usadas frecuentemente, pudiendo hacer una estimación más o menos

precisa del perfil de gustos del usuario y someterlo posteriormente a constantes anuncios de

productos o servicios. A este tipo de malware se le conoce como Spam.

3. Tercera prueba

- Descripción: Detectar una nueva descarga.

- Objetivo: Mostrar una nueva notificación de descarga.

El usuario realiza una nueva descarga de un documento PDF usando el navegador. El programa la

detecta e indica que una nueva notificación se ha registrado, mostrando nuevamente en pantalla el

listado de documentos previamente existentes y el nuevo documento descargado.

Figura 6. Listado de descargas sin actualizar y actualizado

El malware inicialmente lista todas las descargas contenidas en memoria que registra una vez

activado, en caso de que haya alguna. Cuando el usuario realiza una nueva descarga, sea del tipo

que sea (fichero de texto, multimedia...), la aplicación también es capaz de detectarlo y avisarnos,

mostrando nuevamente el listado por pantalla con la nueva descarga añadida.

Concretamente, en la Figura 6 se aprecia que la lista inicial consta de 3 elementos, mientras que la

actualizada tiene 4. Se ha descargado el fichero dummy.pdf, y el malware toma nota de ello,

alertando por pantalla y mostrando otra vez la lista. Para proceder, una vez lanzada la aplicación, se

abre el documento en el navegador Google Chrome, motivo por el cual se muestra el mensaje de la

hora 00:02:19. A continuación, se accede al menú “Más opciones” y se pulsa la opción de descarga.

La aplicación detecta una nueva descarga, y la muestra como *** NUEVA NOTIFICACIÓN ***.

Esta funcionalidad es viable gracias a la implementación del keylogger, que registra todos los

eventos que suceden en el dispositivo y en función del tipo que sea muestra una cosa u otra. En este

caso, se trata de un evento del tipo TYPE_NOTIFICATION_STATE_CHANGED, que básicamente

captura todos los eventos que representen una nueva notificación, como las descargas recientes.

4 Las aplicaciones espía comerciales (commercial spyware) se explican brevemente en el Anexo II.

Page 15: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

14

Debido a que el usuario concede el permiso de acceso a los directorios de memoria del dispositivo,

esta prueba se puede llevar a cabo y en ocasiones sus consecuencias pueden ser muy negativas. Un

usuario puede descargar documentos de suma importancia y estos ser detectados por el malware,

que se los presenta al desarrollador.

Esta funcionalidad también detecta aquellas descargas producidas automáticamente, como pequeñas

actualizaciones o instalaciones de software de sistema.

4. Cuarta prueba

- Descripción: Robar credenciales de aplicación del usuario.

- Objetivo: Mostrar el correo de identificación y la contraseña del usuario cuando

inicia sesión en una aplicación concreta.

El usuario inicia sesión en la aplicación Facebook. El correo introducido así como la contraseña son

recogidas por el keylogger implementado y enviadas al servidor para ser mostrados en pantalla.

Figura 7. Credenciales capturadas por el keylogger

Para la realización de esta prueba se han creado credenciales temporales nuevas. Un correo

electrónico [email protected] con contraseña passwdtfg, y se han dado de alta cuentas en

Gmail y Facebook. Al iniciar la aplicación Facebook, puede comprobarse que la aplicación lo

detecta, y es capaz de registrar todo el texto introducido por el usuario. Se reconocen tanto el correo

electrónico como la contraseña, pudiendo así robar las credenciales del usuario y acceder a su

información privada en cualquier momento.

Esta prueba es extrapolable y el mismo proceso sucede cuando el usuario introduce sus datos

personales en cualquier otra aplicación que requiera autenticación.

Cabe destacar que el registro de entrada de texto funciona para cualquier aplicación, no sólo las de

inicio de sesión. Las búsquedas realizadas en navegadores, las notas redactadas, los mensajes

enviados y cualquier entrada de datos es capturable.

Page 16: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

15

5. Quinta prueba

- Descripción: Detectar la intrusión del malware en el sistema.

- Objetivo: Utilizar la aplicación CONAN mobile para detectar los riesgos que

conlleva el malware instalado en el dispositivo.

En ocasiones resulta muy complicado para el usuario notar que cierto malware ha infectado su

dispositivo y que su información y datos personales están en peligro. Por ello, existen muchas

soluciones software capaces de detectar y notificar los riesgos. Entre las más populares de habla

hispana, se encuentra CONAN mobile [17]. Se trata de una aplicación gratuita que ayuda a proteger

un dispositivo móvil, permitiendo conocer su estado, ofrecer soluciones frente a posibles riesgos o

problemas detectados y proporcionar consejos que permitan mejorar su estado de seguridad.

Figura 8. Análisis de riesgos llevado a cabo por la aplicación CONAN mobile

Entre las varias incidencias detectadas, se aprecia en la imagen que varios servicios como el GPS o

la conexión NFC están habilitados. En este caso, el servicio GPS permite dar a conocer a los

atacantes la posición en tiempo real del dispositivo y, consecuentemente, del usuario, permitiendo

saber cuando está fuera de su domicilio, cuando llega a una determinada localización, etc. La

aplicación notifica esta vulnerabilidad al usuario, que puede tomar la contramedida que considere.

Page 17: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

16

Como se puede observar, todas las pruebas se pueden llevar a cabo dado que el usuario concede los

permisos necesarios en cada una de ellas. En el caso del keylogger, al tratarse de un servicio, el

usuario debe conceder el permiso de accesibilidad para que la funcionalidad pueda llevarse a cabo.

Cuando una aplicación se descarga de la tienda oficial de Android, se advierte al usuario de todos

los permisos requeridos. Frecuentemente se aceptan todos por considerar que dicha aplicación no

representa un peligro para la seguridad de nuestra información, provocando así que posible malware

camuflado tenga acceso libre a todo el contenido de nuestros dispositivos. La responsabilidad de

controlar los permisos de aplicación, así como de tener conocimiento de causa en relación a los

procesos de instalación que se producen recae sobre el usuario.

7. DISCUSIÓN DEL IMPACTO DEL TRABAJO Y CONCLUSIÓN

El objetivo fundamental de este trabajo es reflejar los peligros principales de utilizar de manera

poco responsable un dispositivo Android, poniendo en peligro la privacidad, extrayendo

información como fotografías y conversaciones e incluso datos de importancia máxima como

informes médicos, credenciales o datos bancarios.

Pese a que actualmente los fabricantes y las marcas tienen la responsabilidad de garantizar la

seguridad en los dispositivos, la actuación deliberada de los usuarios a la hora de utilizar sus

dispositivos puede acarrear graves consecuencias. La descarga de aplicaciones de fuentes no

oficiales y la conexión a redes Wi-Fi desconocidas y no fiables son sólo ejemplos que pueden abrir

las puertas a atacantes para explotar vulnerabilidades.

El enfoque que aquí se ofrece es puramente práctico, mostrando el desarrollo de un entorno

consistente en un servidor y en una aplicación espía que recopila información y la transmite a una

entidad externa sin el conocimiento del usuario. Se intenta poner de manifiesto no únicamente el

proceso de desarrollo e intrusión del malware en los dispositivos, sino también dar a conocer los

métodos de identificación y detención principales de este tipo de aplicaciones. Adicionalmente se

podría extender el desarrollo, consiguiendo una aplicación que no sólo recopile información, pero

que también administre el funcionamiento del móvil: borrar aplicaciones, autorizar pagos o

transacciones, descargar contenido inadecuado, enviar mensajes o realizar llamadas suplantando la

identidad del usuario… en definitiva, tener un mayor control sobre él.

Inyectar código malintencionadoen paquetes de aplicaciones Android es un proceso que ha ido

perdiendo complejidad con el tiempo, hasta el punto de convertirse en un procedimiento estándar

para los atacantes, que tratan de violar la privacidad de los usuarios y robar su información. Todos

estos datos pueden ser compartidos con terceros, provocando que el usuario pierda el control sobre

ellos. A menudo se almacenan en servidores localizados fuera de España, donde la legislación sobre

la protección de los datos es poco precisa o incluso inexistente, provocando que delincuentes se

aprovechen de cualquier accidente que ponga en riesgo esa información, usándola para llevar a cabo

actos delictivos como la extorsión [18].

En España la legislación es muy clara al respecto. El artículo 197 del Código Penal recoge la

regulación del delito de intrusión informática, contemplando la vulneración de medidas de

seguridad de un sistema de información y el delito de espionaje cibernético. La sanción de estos

delitos pretende garantizar la protección de los usuarios titulares de los sistemas informáticos y

dispositivos electrónicos de todos aquellos que acceden de manera no autorizada,

independientemente de la provocación de daños o perjuicios, estando el castigo en un mínimo de

dos años de prisión, pudiendo ascender a un máximo de siete en el peor de los casos.

Page 18: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

17

Más concretamente, la primera parte del artículo 197 bis. recoge la sentencia frente a delitos de

espionaje y recopilación no autorizada de información, y que principalmente se corresponde y

relaciona con el tema del presente trabajo. Tal y como indica dicho artículo, se pretende castigar a

todo atacante que “mediante la utilización de artificios o instrumentos técnicos, y sin estar

debidamente autorizado, intercepte transmisiones no públicas de datos informáticos que se

produzcan desde, hacia o dentro de un sistema de información” [19].

Las técnicas de robo de información en dispositivos móviles han evolucionado, llegando a emplear

software específico para su obtención.

El malware analizado que se emplea en estos ataques lleva integrado un módulo que realiza las

tareas de espionaje en cuestión, recogiendo y enviando los datos al centro de control del malware,

pudiendo ser estos ficheros de configuración, claves o datos de aplicaciones.

El artículo 264 del Código Penal sanciona las conductas llevadas a cabo por atacantes que“por

cualquier medio, sin autorización y de manera grave borrase, dañase, deteriorase, alterase,

suprimiese o hiciese inaccesibles datos informáticos, programas informáticos o documentos

electrónicos ajenos” [19]; es decir, cualquier tipo de modificación sobre la información personal

privada de los usuarios de los dispositivos sin su aprobación es castigada con hasta cinco años de

prisión. Dentro de este bloque se recogen todos los ataques de ransomware, caracterizados por

tomar control del dispositivo y alterar su contenido de manera tanto parcial como total.

No obstante, la identificación de los delincuentes es una tarea complicada, fundamentalmente por la

naturaleza y las características de Internet: descentralización, anonimato y ausencia de autoridades

capaces de monitorizar toda la actividad llevada a cabo en la red. A pesar de todo, existen medidas

de carácter técnico que en ocasiones resultan incluso más efectivas que las de carácter jurídico,

como software capaz de identificar riesgos y problemas que comprometan la seguridad y los

sistemas de seguridad y detección de intrusiones.

Afortunadamente, existen varias formas de proteger el dispositivo frente a malware dedicado, y

algunas de ellas se mencionan a continuación [20]:

● Evitar descargar aplicaciones de fuentes no oficiales.

● Comprobar los permisos requeridos por la aplicación incluso cuando se descargue

de plataformas oficiales como Play Store. Por ejemplo, que una aplicación llamada

Canicas solicite permiso para acceder a la cámara o al micrófono debería generar

desconfianza.

● No proporcionar datos personales, acceso a tarjetas o contraseñas u otro tipo de

tokens de autenticación a sitios web o entidades anónimas sin haber previamente

comprobado la validez de sus certificados.

● Actualizar el dispositivo regularmente. En ocasiones, ciertas funciones o librerías

internas presentan errores que pueden ser aprovechados por software

malintencionado, como bucles infinitos o situaciones de overflow 5. Las

actualizaciones a menudo incluyen parches con estos errores solventados.

● Utilizar software dedicado y herramientas de seguridad en los dispositivos, como

CONAN mobile o los análisis de Play Protect, siendo este un sistema de seguridad

oficial de la propia tienda de aplicaciones. Algunos dispositivos incluyen de fábrica

la opción de realizar análisis de seguridad o de llevar a cabo un mantenimiento de

dispositivo.

5 Desbordamiento del búfer debido a un gran catidad de datos mal gestionada por un programa.

Page 19: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

18

8. BIBLIOGRAFÍA

[1] Wikipedia: Seguridad. https://es.wikipedia.org/wiki/Seguridad

[2] Sunil Kumar Muttoo, Shikha Badhani. Android malware detection: state of art.

https://link.springer.com/epdf/10.1007/s41870-017-0010-

2?author_access_token=EMRLuhgOPN0axVC36T4rqve4RwlQNchNByi7wbcMAY73eYae6zFBqs

Plv69tIEr-vpoGNqAIu6ytDXSuyQsndrthVwsrSoyN-

UHgbCMI2XpQ5g2WO1hrlnhS4DQoSXEbF2nudTTdPMyL9umLZ6CiRA%3D%3D , 2017.

[3] Statcounter Global Stats | Mobile Operating System Market Share Worldwide.

https://gs.statcounter.com/os-market-share/mobile/worldwide

[4] Statcounter Global Stats | Mobile Operating System Market Share Spain.

https://gs.statcounter.com/os-market-share/mobile/spain

[5] Android Studio. https://developer.android.com/studio?hl=es-419

[6] Malware Development. https://niiconsulting.com/checkmate/2018/02/malware-development-

welcome-dark-side-part-1/

[7] Luis Buendía Carreño, Sergio Pastrana Portillo. Malware engineering for dummies, 2016.

https://e-archivo.uc3m.es/bitstream/handle/10016/26983/TFG_Luis_Buendia_Carreno_2016.pdf

[8] Apple. Principle practices. https://www.apple.com/es/ios/app-store/principles-practices/

[9] Google Play Protect. https://www.android.com/intl/es_es/play-protect/ [10] Android internal and external storage. https://www.futurelearn.com/courses/secure-android-

app-development/0/steps/21599 , 2017

[11] Tomer Ben Rachel. An overview of Android storage. https://www.freecodecamp.org/news/an-

overview-of-android-storage/ , 2019

[12] Oracle. What is a

socket?https://docs.oracle.com/javase/tutorial/networking/sockets/definition.html

[13] Documentación de Socket.IO. https://socket.io/docs/

[14] Node.js guides. https://nodejs.org/en/docs/guides/

[15] Documentación de Express. https://expressjs.com/es/guide/routing.html

[16] Fadi Mohsen, Mohammed Shebab. Android Keylogging Threat https://liisp.uncc.edu/wp-

content/uploads/2017/10/TrustCol2013.pdf , 2013

[17] CONAN mobile. https://www.osi.es/es/conan-mobile

[18] Instituto Nacional de Ciberseguridad de España. Android malware situation.

https://www.incibe-

cert.es/sites/default/files/contenidos/estudios/doc/android_malware_situation.pdf , 2015

[19] Boletín Oficial del Estado. https://www.boe.es/buscar/act.php?id=BOE-A-1995-25444

[20] Shawn Abraham. How to prevent malware on Android. https://www.malwarefox.com/prevent-

android-malware/ , 2018

[21] Android | Sign your app. https://developer.android.com/studio/publish/app-signing

[22] Android | Platform Architecture. https://developer.android.com/guide/platform

[23] Potential Harmful Applications. https://developers.google.com/android/play-

protect/potentially-harmful-applications?hl=en

Page 20: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

19

ANEXO I - ARQUITECTURA Y MODELO DE SEGURIDAD DE ANDROID

● MODELO DE SEGURIDAD

Para cualquier sistema, la seguridad es un aspecto fundamental. Una aplicación dañina es capaz de

extraer toda nuestra información privada, leer nuestros mensajes, suplantar nuestra identidad…. Es

por ello que los usuarios deben ser muy cuidadosos a la hora de instalar aplicaciones en sus

dispositivos.

En el caso de iOS, las aplicaciones que se desean instalar deben proceder exclusivamente de App

Store, la tienda oficial de Apple, que debe validarlas primero. Android, por su lado, ofrece un

planteamiento basado totalmente en la línea del software libre, proponiendo una política y un

esquema de seguridad orientado a proteger a los usuarios, sin imponer un sistema centralizado

controlador.

Tres ideas básicas soportan la seguridad en Android:

1. Seguridad a nivel global. La base de la plataforma de Android es el sistema operativo

Linux. El auge de Linux ha ido en aumento durante los últimos años y se ha empleado de

manera generalizada en entornos sensibles donde la seguridad es clave. A raíz de ser

continuamente atacado y mejorado, se ha convertido en un núcleo estable y seguro en el

que compañías y empresas depositan su confianza plena. Android aprovecha esta capacidad

y la seguridad que Linux incorpora, impidiendo que las aplicaciones maliciosas puedan

acceder directamente al hardware del dispositivo o interfieran con otras aplicaciones.

2. Firma de la aplicación. Toda aplicación debe ser firmada. Un certificado digital es

necesario para que se pueda reconocer al autor de la aplicación. Las aplicaciones firmadas

por Google Play emplean dos claves privadas: la clave de firma (app signing key) y la clave

de carga (upload key). El programador guarda la clave de carga y la usa para firmar su

aplicación y publicarla en Play Store (tienda oficial de Google). Cuando la aplicación está

lista para ser publicada, se puede firmar usando Android Studio y ser posteriormente subida

a Google Play. Google usa el certificado de carga para verificar la identidad del

programador, firmando la APK6 con la clave de firma [21].

Figura 9. Proceso de firma de aplicación mediante Google Play. Fuente: [21]

6 Application Android Package (APK) es una extensión para paquetes usados por Android para la

distribución e instalación de aplicaciones.

Page 21: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

20

3. Modelo de permisos. El objetivo de un permiso es proteger la privacidad del usuario. El

modelo de permisos es necesario si una aplicación instalada desde una fuente externa

(oficial o no oficial) requiere acceso a partes sensibles o vulnerables del sistema que puedan

poner en riesgo la seguridad. Dependiendo del requerimiento, el sistema puede

proporcionar acceso automáticamente a la aplicación o solicitar la aprobación manual del

usuario.

Ninguna aplicación tiene permiso para realizar operaciones que puedan afectar

negativamente al dispositivo (sistema u otras aplicaciones instaladas) o al usuario.

● ARQUITECTURA

La estructura de las aplicaciones Android es compleja. Como se ha explicado en el apartado

anterior, Android es una plataforma que contiene una pila software basada en Linux de código

abierto, la cual agrupa diversos módulos y componentes que utilizan servicios propios y

paralelamente, proporcionan dichos servicios a componentes de las capas superiores. El diagrama

mostrado a continuación permite entender gráficamente cómo está estructurada la pila de Android

[22].

Figura 10. Pila de software de Android. Fuente: [22]

Page 22: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

21

La pila de Android se estructura en los siguientes módulos:

1. Núcleo Linux (Kernel). Como ya se ha mencionado, Android se fundamenta en el sistema

operativo Linux, principalmente por su consistencia y progreso en cuestiones de seguridad,

pero también es elegido por eficiencia en cuanto a otras cuestiones, como la gestión de

memoria a bajo nivel. En este nivel se encuadran los drivers7 para que cualquier pieza o

componente hardware pueda ser usado adecuadamente. Cada vez que un elemento hardware

es incluido por los fabricantes, han de crearse los drivers necesarios en el núcleo de Linux

para poder usarse en Android.

2. Capa de Abstracción Hardware (HAL). Proporciona una interfaz estándar que muestra al

framework Java de alto nivel las capacidades hardware de dispositivo. Cuenta con varios

módulos que son usados por niveles superiores, permitiendo la implementación de

componentes hardware como la cámara.

3. Tiempo de ejecución de Android (ART). En este nivel se agrupan las librerías con las

clases Java necesarias para la programación de las aplicaciones. Todas aquellas aplicaciones

desarrolladas en versiones de Android superiores a 5.0 cuentan con su propia instancia ART

para la ejecución.

4. Librerías nativas. Esta capa se corresponde con todas las librerías usadas por Android.

Mayoritariamente están escritas en C y C++, y son necesarias para trabajar con la mayor

parte de servicios y componentes, como ART y HAL, que están programados en código

nativo que emplea dichas librerías. Junto al núcleo Linux, este nivel constituye gran parte

del propio núcleo de Android, siendo estas sus dos capas más importantes.

5. Framework de aplicaciones. Representa el conjunto de herramientas de desarrollo usadas

en las aplicaciones. Todas las aplicaciones creadas utilizan el framework que se encuentra

en este nivel. Por ejemplo, Activity Manager se encarga de gestionar el ciclo de vida de las

aplicaciones; Telephone Manager integra todas las APIs vinculadas a las operaciones

propias del teléfono, como enviar mensajes o realizar llamadas… . De esta forma, todas las

propiedades del sistema operativo Android están disponibles para el programador de

aplicaciones.

6. Aplicaciones. El sexto y más alto nivel contiene todas las aplicaciones de Android, tanto

las que se incluyen por defecto como las añadidas por el usuario, ya sean programas por él

o por terceros. Estas aplicaciones hacen uso de los servicios, librerías y APIs

proporcionadas por los niveles inferiores.

Las aplicaciones por defecto (o de sistema) pueden ser usadas por su funcionalidad

principal por parte de los usuarios, o bien por las capacidades y propiedades que ofrecen y

que los desarrolladores pueden incluir en sus propias aplicaciones. Por ejemplo, si

desarrollamos una aplicación de mensajería instantánea, no es necesario que dicha

aplicación incluya la funcionalidad completa, basta con invocar a otra aplicación de

mensajería ya instalada en el sistema e indicar únicamente el destinatario.

7 Un driver es un controlador de dispositivo. Permite la interacción entre el sistema operativo y un

componente hardware, también llamado periférico.

Page 23: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

22

ANEXO II - MALWARE

Malware es el nombre que reciben todas aquellas aplicaciones o software en general que pueden

generar un impacto negativo o poner en riesgo a los usuarios, su información o sus dispositivos.

Estas aplicaciones reciben el nombre de aplicaciones potencialmente dañinas (PHA, Potential

Harmful Applications) [23]. Aunque dependen del dispositivo en el que se instalen, las aplicaciones

bajo este término integran alguna funcionalidad que compromete la seguridad de una manera u otra.

Algunas aplicaciones reciben la denominación user-wanted. Estas aplicaciones no se encuadran

dentro del grupo de PHA a pesar de tener la capacidad de afectar a determinadas medidas de

seguridad de los dispositivos, y esto es debido a que incluyen funcionalidades que el usuario desea

poner a su servicio. Google Play Protect8 advierte de las capacidades de estas aplicaciones y es el

usuario quien decide instalarlas voluntariamente.

Estas aplicaciones se pueden clasificar en muchos grupos en función de cómo ataquen al dispositivo

o a la información contenida en él. Si Google Play Protect detecta un PHA emite un aviso. Cada

aplicación es clasificable en función de lo dañina que sea, y si presenta características de varias

categorías, se encuadra dentro de aquella que más dañina resulte.

Actualmente existen 14 categorías diferentes:

● Backdoor

Aplicaciones que permiten la ejecución potencialmente peligrosa y dañina de operaciones no

deseadas en un dispositivo. Funcionan como un controlador que abre la puerta a funcionalidades

maliciosas, de forma que, si dichas operaciones se ejecutasen de manera automática, estas

aplicaciones se englobarían en otra categoría.Por ejemplo, pueden permitir que determinadas

aplicaciones accedan a información privada vulnerable que fundamentalmente no debe ser visible.

● Billing fraud

El fraude de facturación es un tipo de malware que, como su propio nombre indica, factura al

usuario de manera automática y fraudulenta. Este fraude puede realizarse mediante SMS, llamada o

peaje.

- SMS: Aplicaciones que cobran el envío de mensajes sin consentimiento ni conocimiento

del usuario, ocultando los avisos de cobro o engañando al usuario a realizar suscripciones

no deseadas.

- Llamada: Aplicaciones que facturan al usuario realizando llamadas sin su consentimiento.

- Peaje: Aplicaciones que fuerzan al usuario a suscribirse a proveedores de contenido o a

adquirir algún bien vía móvil a través de su tarjeta de crédito sin su aprobación.

En esta categoría se incluye cualquier modelo de fraude de facturación a excepción de los

dos comentados previamente (SMS y llamadas). Uno de los ejemplos más comunes y

peligrosos es el fraude WPA9. Su forma más habitual de operar es incitar al usuario a pulsar

un botón que lo redirecciona a una vista web oculta, generalmente realizando una

suscripción a un servicio de pago. Los mensajes y avisos de confirmación se ocultan, de

manera que el usuario no tiene constancia de lo sucedido en ningún momento. Es entonces

cuando comienza la facturación fraudulenta.

8 Google Play Protect es el servicio de Google de protección frente a amenazas móviles más

popular. 9 Wireless Access Point

Page 24: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

23

● Spyware commercial

Aplicación espía que recoge información privada del teléfono y la transmite a terceros sin la

aprobación del usuario. Estas aplicaciones suelen emplearse para recoger datos personales o

profesionales de los usuarios y se enviarlos a entidades, generalmente distintas al proveedor de la

aplicación. Lo más habitual es recoger los datos más generales del usuario como edad y género, y

acceder a los historiales de navegación y localización del dispositivo para realizar un estudio

completo de sus aficiones o lugares más frecuentados. De esta forma, se pueden ofrecer o presentar

determinados productos que encajen en la descripción del individuo afectado.

● Denial of Service (DoS)

Aplicaciones que ejecutan una denegación de servicio contra algún sistema o contra sus

propiedades. Denegación de servicio es el nombre atribuido a aquellos ataques que impiden que uno

o varios usuarios pueden usar un servicio. Enviar a un servidor remoto un gran número de

solicitudes HTTP para que no sea capaz de procesarlas correctamente, provocando sobrecarga e

impidiendo el uso del servicio ofrecido es uno de los casos más comunes.

● Hostile downloaders

Los descargadores hostiles son aplicaciones que descargan e instalan en el dispositivo otras

aplicaciones maliciosas. Navegadores y aplicaciones de compartición de archivos no se consideran

descargadores hostiles mientras las descargas de otras aplicaciones PHA no sean iniciadas por los

usuarios o en el proceso de otras instalaciones no se detecte ninguna interacción con el usuario.

● Phishing Uno de los tipos de malware más conflictivos es el phishing. El phishing, o la suplantación de

identidad consiste en engañar al usuario haciéndole creer que una aplicación tiene un fin rutinario

cuando en realidad sus intenciones son maliciosas. Habitualmente solicitan las credenciales de

autenticación de un usuario o información de tarjetas de crédito o datos bancarios, enviando todo a

un entidad remota, que los usa en su contra.

● Privilege escalation

Las aplicaciones maliciosas de escalada de privilegios o de control de sistema son aquellas que

atacan la integridad del sistema otorgando a sí mismas ciertos privilegios o deshabilitando el acceso

a funciones de seguridad del núcleo del sistema.

● Ransomware

También conocido como secuestro de datos, el ransomware es un tipo de malware que toma control

total o parcial del dispositivo afectado, pasándole el control al autor de la PHA, obteniendo así la

capacidad de poder bloquearlo y encriptar los ficheros, arrebatando a los usuarios el control sobre

todos sus datos. Un ejemplo común de ransomware es bloquear el dispositivo y solicitar un pago al

usuario para poder acceder a él.

El ransomware de cifrado es también muy común. No afecta al funcionamiento de los dispositivos,

sino que cifra aquellos datos más importantes y críticos almacenados. Es habitual que los

desarrolladores de esta PHA incluyan un mecanismo de cuenta regresivo: si no aportas la cantidad

exigida, todos los documentos afectados se eliminan. La importancia de realizar copias de seguridad

a menudo queda reflejada ante el potencial peligro que representan este tipo de aplicaciones, y los

efectos devastadores que pueden llegar a tener.

Page 25: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

24

● Rooting

En esta categoría se agrupan aquellas aplicaciones malware que rootean10 los dispositivos. Se

caracterizan por no alertar a los usuarios del proceso de rooting o por ejecutar operaciones

maliciosas sobre las que el usuario no tiene ningún control, una vez que han obtenido los

privilegios.

● Spam

Aplicaciones maliciosas que acceden a la lista de contactos del dispositivo y envía en cadena

mensajes o correos no autorizados por el usuario. Comúnmente suele darse en correos electrónicos,

accediendo a todos los contactos de correo y enviando “correos basura”, normalmente publicidad de

todo tipo de productos o servicios.

● Spyware

Las aplicaciones spyware son aquellas aplicaciones que una vez instaladas en el móvil o tableta,

acceden a los registros internos y recogen información o datos privados para posteriormente

enviarla a una entidad remota, que los usa en propio beneficio. Todo esto se realiza de manera

transparente al usuario y sin su consentimiento. Existen varios tipos de datos que pueden ser

robados y transmitidos:

- Lista de contactos

- Archivos multimedia

- Ficheros contenidos en la tarjeta SD

- Registro de llamadas

- Registro de mensajes

- Historial de navegación

- Información de aplicaciones

Otras funcionalidades como acceder a la cámara y realizar fotografías o registrar el audio de la

llamadas también se considera robo de información, y las aplicaciones de ese tipo se incluyen en la

categoría de spyware.

● Trojan

Los troyanos son aplicaciones que aparentemente son legítimas y no suponen ningún peligro, pero

que realizan actividades contra la seguridad del dispositivo sin que el usuario tenga constancia de

ello, como enviar mensajes a otros números de tarificación especial, costando dinero al usuario.

Estrictamente, cualquier aplicación de las anteriormente mencionadas puede ser un troyano siempre

y cuando se muestre al usuario como algo que realmente no es, por ejemplo un juego o un bloc de

notas, que en principio no comprometen la seguridad.

10

Rootear es el término atribuido al proceso o método que otorga a un usuario control de administrador o superusuario del sistema operativo de su dispositivo.

Page 26: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

25

ANEXO III - MANUAL DE REFERENCIA

- Proceso de instalación de las herramientas de desarrollo

En esta sección se detalla el proceso de instalación de todas las herramientas software necesarias

que se han utilizado para el desarrollo del proyecto. El sistema operativo empleado para el trabajo

ha sido Ubuntu 18.04, por lo que los pasos explicados a continuación son aplicables en una

distribución Linux.

Todas las distribuciones de Ubuntu contienen una versión de Node en sus repositorios. La versión

aquí utilizada es la 8.10.0, aunque los cambios en cuanto a versiones más recientes son mínimos y

la experiencia de desarrollo es muy similar.

Para instalar Node se usa el administrador de paquetes apt:

~$ sudo apt update // Actualización de repositorios locales

~$ sudo apt install nodejs // Instalación de Node desde los repositorios

Para instalar npm, que recordemos que es el administrador de paquetes de Node.js, necesario para

poder instalar módulos y paquetes y utilizarlos, la forma de proceder es homóloga:

~$ sudo apt install npm

A partir de este punto, el usuario puede decir con qué versiones de módulos y paquetes desea

trabajar.

A continuación se muestra la instalación de Express y la forma de empezar a trabajar con una

sencilla aplicación:

Asumiendo que ya se ha instalado Node.js, se debe crear un directorio de trabajo nuevo para la

aplicación en cuestión:

~$ mkdir miApp

~$ cd miApp

~$ npm init

El tercer comando del bloque anterior permite inicializar la aplicación y crear el fichero

package.json correspondiente. Finalmente, sólo resta instalar Express en el directorio miApp para

empezar a trabajar con el paquete.

~$ npm install express --save11

11

La cláusula save permite guardar Express en el paquete de dependencias. Es decir, se añade automáticamente a la lista dependencies del fichero package.json. Es un proceso que el propio usuario puede realizar manualmente.

Page 27: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

26

- Configuración de la instancia AWS

Montar el servidor Node desarrollado en la nube es una tarea importante del proyecto para que las

conexiones desde la aplicación móvil puedan realizarse desde cualquier localización y en cualquier

momento. Existen una gran variedad de soluciones de computación en la nube que permiten

desplegar aplicaciones de todo tipo de manera totalmente gratuita: Openshift, Heroku, App

Engine… . En este caso, se ha decidido optar por una instancia de Amazon Web Services (AWS).

El primer paso es crear una cuenta de AWS. Dicha cuenta es de uso gratuito y limitado durante un

año, pero suficiente para trabajar con nuestra aplicación. Una vez creada la cuenta, se inicia sesión

en la consola de AWS: https://aws.amazon.com/es/console/ . La consola de gestión de AWS es una

aplicación web que permite administrar todos los servicios web de Amazon que se solicitan o

contratan.

Dado que una vez obtenida la instancia en la nube para montar la aplicación será necesario tener

acceso a dicho proyecto para el despliegue, conviene tener el código del proyecto accesible en un

repositorio (en este caso se emplea Github, por su facilidad de uso). Realizada la creación de la

cuenta y el inicio de sesión, los pasos a seguir son los siguientes.

1. Acceder a la sección Servicios, situada en la esquina superior izquierda. Una vez abierto el

panel de Servicios, seleccionar la opción EC2 en el apartado de informática. Una instancia

EC2 es un servidor virtual de AWS en el que se puede solicitar y mantener un servicio de

computación en la nube de Amazon, y sus siglas se corresponden con Elastic Compute

Cloud.

2. A continuación se muestra la pantalla de recursos de la instancia seleccionada. Los valores

asignados por defecto no imponen ningún tipo de limitación a la tarea, por lo que no es

necesario realizar cambios, pudiendo proceder directamente a lanzar la instancia,

seleccionado Launch Instance.

3. Con Amazon EC2, se pueden seleccionar el software y las especificaciones de la instancia

que se desea utilizar. La siguiente pantalla ofrece una serie de AMI12

. En este caso, se

selecciona la cuarta opción: Ubuntu Server 18.04 LTS (HVM), SSD Volume Type. Se

hace click en Select.

4. El paso 2 es elegir un tipo de instancia. Diferentes tipos de instancias proporcionan

diferentes combinaciones de recursos: memoria, uso de CPU, etc. La opción por defecto

t2.micro es la única de uso gratuito, por lo tanto es la escogida.

5. Es necesario hacer una configuración de puertos previa antes del siguiente paso, por lo que

en el menú de pasos de la parte superior, se selecciona el paso 6, Configure Security Group.

Se añaden tres nuevas reglas haciendo click en Add rule, y seleccionando los valores HTTP,

HTTPS y Custom TCP Port, introduciendo en esta última el puerto en el que va a escuchar

el servidor Node en la sección Port Range. Para todas las reglas seleccionadas, en el

apartado Source, se escoge la opción Anywhere. Finalmente, se selecciona Review and

Launch.

6. En el siguiente paso se ofrece la opción de añadir ajustes personalizados y de revisar los ya

configurados. Se recomienda no realizar cambios (no es necesario), y seleccionar

directamente Launch para lanzar la instancia.

12

AMI: Amazon Machine Image. Una AMI es una plantilla que contiene los ajustes de configuración del software elegido.

Page 28: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

27

7. Es necesario seleccionar un par de claves para la instancia. Se puede solicitar uno nuevo o

emplear uno ya existente, que es válido para futuras instancias que se deseen mantener. Al

tratarse de la primera instancia, se debe seleccionar crear un par nuevo, Create a new key

pair. Se introduce un nombre nuevo y se selecciona Download Key Pair, guardando el

archivo .pem generado en una localización segura. Esta clave privada es necesaria para más

tarde realizar la conexión SSH, y sin ella no es posible establecer conexión con el servidor

virtual de la nube.

8. Se selecciona View Instances en la siguiente y última pantalla, mostrándose a continuación

la instancia ya totalmente configurada y en proceso de lanzamiento (estado pending). Una

vez se haya lanzado completamente, dicho estado se actualizará a running. La dirección IP

pública mostrada es la empleada para realizar la conexión al servidor.

9. Una vez llevado a cabo el proceso de configuración de la instancia, es necesario realizar la

conexión desde terminal al servidor virtual. En este anexo se detalla el proceso en un

entorno Linux, empleando SSH para establecer dicha conexión. El nombre de usuario para

la instancia es ubuntu y el comando a utilizar es el siguiente:

ssh -i {"Ruta al archivo .pem"} ubuntu@{dirección IP pública de la instancia}

Así, si el archivo de clave privada tiene el nombre claves, su ruta de localización es

/home/users/TFG/Files y la dirección IP de la instancia es 52.15.35.185, el comando

introducido es:

~$ ssh -i "/home/users/TFG/Files/claves.pem" [email protected]

Es probable que al tratarse de la primera conexión con esa dirección IP la consola muestre

un mensaje de alerta de autenticidad del host. Seleccionar la opción Yes y proceder

normalmente.

En caso de que no se pueda realizar la conexión debido a problemas de permisos con el

archivo de clave privada, basta con cambiar sus permisos para que no tenga visibilidad

pública en el sistema:

~$ chmod 400 claves.pem

Si todo ha funcionado de forma adecuada, debería haberse iniciado sesión correctamente en

el servidor virtual de Amazon. Para cerrar sesión, basta con introducir el comando exit.

Una vez iniciada la sesión en el servidor, resta hacer el despliegue de todo el código del

proyecto en la nueva instancia.

● Se clona el proyecto del repositorio de Github mencionado al principio del anexo

mediante el comando git clone.

● Se actualizan los paquetes del sistema y sus configuraciones y se descargan los

necesarios:

~$ sudo apt-get update

● Se procede tal y como se explica en el anexo II con la instalación de las

herramientas:

Page 29: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

28

~$ sudo apt-get install npm

~$ npm install

~$ npm install socket.io -save

~$ sudo apt-get install nodejs

Por último, se ejecuta la aplicación con el comando node, proceso detallado en el apartado 4 de este

documento.

Para concluir el proceso de despliegue de la instancia, se explican a continuación los pasos para

configurar una dirección IP elástica13

. Esta tarea es necesaria dado que si la instancia se detiene por

motivos desconocidos o inesperados, una nueva dirección IP es asignada automáticamente durante

su reinicio, hecho que se desea evitar ya que, de darse esa situación, la aplicación móvil no sería

capaz de conocer la nueva dirección para establecer la conexión con el servidor.

1. En el menú vertical del lateral izquierdo de la consola de AWS, seleccionar la opción

Elastic IPs contenida en la sección NETWORK & SECURITY.

2. Se muestra seguidamente un panel con las direcciones IP elásticas configuradas.

Seleccionar Allocate Elastic IP address.

3. Seleccionar la opción Amazon’s pool of IPv4 addresses y pulsar Allocate. Esta opción

proporcionará una dirección IP fija disponible. Finalmente, es necesario asociar la dirección

IP obtenida con la instancia creada previamente. Seleccionar dicha dirección y pulsar

Associate Elastic IP address en el menú Actions. Se muestra un panel de configuración en

el que únicamente es necesario seleccionar la instancia a la que se desea asociar la nueva

dirección.

- APLICACIÓN ANDROID

El objetivo de la aplicación realizada es actuar como spyware una vez instalada en el dispositivo

afectado. Sin embargo, el objetivo de un malware no sólo es actuar llevando a cabo funcionales con

intenciones dañinas; también debe hacerlo sin la noción del usuario. Las aplicaciones espía reciben

ese nombre por pasar desapercibidas en el sistema, ejecutando tareas sin el conocimiento de los

usuarios, que utilizan su dispositivo normalmente. El malware realizado se camufla en el sistema

como una sencilla aplicación denominada My Time, que muestra la fecha y la hora en tiempo real.

En la interfaz de usuario, My Time se muestra de la siguiente forma junto al resto de aplicaciones:

Figura 11. Vista de la aplicación My Time en el sistema

13

Una dirección IP elástica es una dirección IPv4 estática configurada para computación en la nube.

Page 30: DESARROLLO DE MALWARE PARA DISPOSITIVOS MÓVILES CON …

Escuela de

Ingeniería de

Telecomunicación

Grao en Ingeniería de

Tecnologías de

Telecomunicación

Mención:

Telemática

29

Una vez lanzada la aplicación, la pantalla presentada tiene el siguiente aspecto:

Figura 12. Pantalla de inicio de la aplicación My Time

Cuando el usuario lanza la aplicación, se muestra la pantalla anterior, y por debajo el malware

empieza a funcionar sin el conocimiento del usuario, obteniendo información y enviándola al

servidor remoto.