Post85 nn

Análisis de Malware en aplicaciones Android


Profile
Omar Jacobo Muñoz Veliz

Historia


En los últimos años los ataques a dispositivos móviles han sido cada vez más frecuentes debido a la gran fama que estos han tomado y lo accesible que puede ser, otro motivo por el cual estos dispositivos son atacados es debido al poco conocimiento que tienen de la aplicación que instalaran, ya sea que instalen la aplicación de una tienda externa a la play store o simplemente lo descarguen de grupos de facebook o enlaces públicos.


Permisos requeridos por la aplicación




Permisos requeridos por la aplicación



Ejemplo: Esta es una aplicación generada desde msfvenom la cual abre una conexión remota cuando la instalamos. En este caso es sencillo identificar las consecuencias de instalar esta aplicación pero si fuéramos un atacante podríamos instalarla sencillamente en el celular de un amigo con la excusa de que desarrollamos una aplicación y necesitamos ver si funciona.


Unos de los principales motivos para comprometer un teléfono móvil puede ser:


  •     * Acceso a los mensajes y contactos

  •     Obtener fotos de las víctimas

  •     * Usarlos para botnet

  •     * Obtener credenciales de la víctima

  •     * Obtener sus coordenadas y poder grabar audio y fotografías


    Pueden haber más motivos para comprometer un dispositivo móvil estos son los más comunes.


Aumento del Malware en Android en los últimos años


El malware en Android ha incrementado mucho en los últimos años como lo vemos en la siguiente gráfica.



http://www.welivesecurity.com/wp-content/uploads/2015/11/malware_android_movil.png

Las aplicaciones de fuentes no oficiales son un riesgo ya que estas no han sido avaladas por un ente como Google para confirmar su legitimidad así como su procedencia.


¿Cómo detectar si una aplicación es maliciosa?


Lo primero que hay que analizar para detectar si una aplicación es maliciosa son los permisos que esta necesita y un poco de nuestro sentido común si queremos ver más detalles cómo lo haremos en los proximos articulos tendremos que practicar una ingeniería inversa a la aplicación para poder analizar que realiza a través del método estático y el método dinámico como lo veremos en futuros post.


Existen dos tipos de aplicaciones para desarrollo en android


Nativas: Este tipo de aplicaciones las podemos crear en lenguaje nativo(android(java)) y tener más opciones de desarrollo que a comparación de las aplicaciones híbridas. La ventaja de este tipo de desarrollo es su escalabilidad ya que al momento de intentar agregar nuevas funciones o métodos más complejos se nos realizará más sencillo también al momento de actualizar una aplicación para una versión de android a una nueva versión nos será más sencillo.


Híbridas: Este tipo de aplicaciones son más populares debido a que se desarrolla en una sola plataforma(Phonegap, angular) y luego solo se importa para android & ios. Esto puede resultar muy efectivos al momento de tener aplicaciones no muy complejas o simples demostraciones. También han estado saliendo soluciones como Xamarin(C#) y React JS(Javascript) para el desarrollo de aplicaciones donde se programa sobre un lenguaje y se exporta a las dos plataformas en algunos casos suele ser una solución muy efectiva pero en otras se complica debido a la gran diferencia de funcionalidades entre swift y java o kotlin.


¿Que es el archivo manifest y porque es tan importante en android?


En el archivo manifest es donde se definen los permisos que tendrá la aplicación, esto se debe hacer para indicar qué permisos necesita la aplicación. Es importante definir que sin un permiso no está en este archivo no se podrá hacer uso de esa referencia dentro de nuestra logica de programacion.


Ejemplo de cómo definir los permisos en el archivo manifest.



Dentro de las otras cosas que se pueden definir en este archivo están:


  •     * Actividad inicial para lanzar la aplicación

  •     * Versión mínima del de Android necesaria(No es necesaria definirla actualmente)

  •     * Versión en que se desarrolló(No es necesaria definirla actualmente)


Hace un tiempo hubo una característica muy importante en este tipo de análisis.


Resultado de imagen para android:debugging = true

Debug en android



El tener activada la opción android:debuggable=”true” nos permite ver los logs de la aplicación al activar el modo desarrollador en nuestra aplicación y así poder ver errores o llamadas de la aplicación.


Opciones de desarrollador



Es importante destacar que en versiones más recientes de Android esto ya no es necesario debido a que cuando generamos una aplicación sin nuestro certificado o lo veremos como la aplicación que se usa en el ambiente de desarrollo esta opción se habilita por defecto mientras que cuando generamos la aplicación con nuestro certificado esta opción se desactiva ya que se pasa a un ambiente de producción.


En el siguiente artículo se mostrará como hacerle una ingeniería inversa a la aplicación para poder analizar más su código y su comportamiento a través del método estático y dinámico.



Artículos que te pueden interesar


Ante la pandemia global de COVID 19 la ciberseguridad ha sido un gran desafío para cientos de usuarios y empresas previo al impacto de la transf... Estevenson Luis Solano


Continuar Leyendo

El reconocimiento es parte fundamental de las fases de pentesting, en ocasiones cuando queremos probar una vulnerabilidad día zero o solo querem... José Moreno


Continuar Leyendo

Han pasado casi 3 años desde que el hacker conocido como @0xGiraffe revoluciona las redes con sus mensajes en apoyo del famoso youtuber PewDiePi... José Moreno


Continuar Leyendo