android mobile's phones/tablets
Metodología
Se recomienda seguir usando cherrytree para ir guardando las evidencias.
- Análisis básico de una aplicación desde windows
- Acceso a un teléfono android desde la línea de comandos
- Creando una apk con msfvenom para conseguir acceso remoto
Referencias
- Páginas web
Análisis básico de una aplicación desde windows
Estar dispuesto a adquirir o tener conocimientos en java y android sería recomendable a la hora de analizar aplicaciones
Apktool
Para realizar el análisis, vamos a descargar Apktool para windows. Accedemos a la web y descargamos primero el wrapper script:
que nos va a facilitar el uso de apktool. Después hacemos click sobre el enlace que está junto al texto Download apktool-2:
y descargamos la última versión:
Hacemos click con el botón derecho del ratón sobre apktool.bat y seleccionamos edit:
para editar el script. Ahora cambiamos la ruta que viene por defecto:
por la ruta donde nos hayamos descargado el archivo con extensión jar:
En este caso, sólo hemos cambiado el nombre del archivo porque queremos que el script seleccione la ruta del directorio donde lo ejecutemos. Para ejecutarlo, abrimos la consola de comandos:
accedemos a la carpeta donde hemos descargado apktool:
y lo ejecutamos para probar que funciona:
Una vez tenemos la herramienta, vamos a conseguir una apk. En una auditoría, normalmente el cliente facilita la apk que tenemos que analizar, pero este caso, vamos a descargar una apk de google play. Como Google Play espera que usemos un dispositivo android para descargar estas apks, vamos a ayudarnos de la web Evozi:
Primero buscamos la aplicación gratuita de Google Play que queramos descargar. Por ejemplo, el navegador Firefox. Copiamos la URL de Google Play:
la pegamos en el formulario de busqueda de la web de Evozi y hacemos click en el Generate Download Link:
para crear el link para descargar la apk. Una vez creado el link, lo pulsamos:
para descargar el archivo:
Un archivo apk es como un archivo comprimido de windows. De hecho, si cambiamos la extensión del archivo que hemos descargado a .zip y hacemos click con el botón derecho del ratón sobre el archivo, veremos que podemos descomprimirlo:
y una vez descomprimido el paquete, veremos la carpeta:
donde están los archivos:
Entre los ficheros, veremos archivos con la extensión .dex (Davilk Executable):
Estos son los archivos ejecutables que usa android. Están compilados en dalvik bytecode desde el lenguaje de programación Java y para poder verlos, tenemos que desensamblarlos. Por este motivo, aunque podemos ver el contenido del paquete apk cambiando la extensión, vamos a utilizar otras herramientas como apktool para analizar el contenido de las aplicaciones de android. Para ello, borramos la carpeta en la que hemos descomprimido los archivos y volvemos a cambiar la extensión del archivo de .zip a .apk:
abrimos la consola de comandos:
accedemos a la carpeta donde hemos descargado apktool y donde tenemos el archivo apk a analizar:
y ejecutamos el comando apktool pasandole la opción d y el nombre de la apk:
entramos en el directorio que se ha creado:
para ver los archivos:
Aunque podríamos ver los contenidos del fichero desde la consola de comandos:
normalmente lo abriremos el archivo AndroidManifest.xml usando editor de texto. En este caso uso el bloc de notas de windows:
Este archivo contiene infomación importante de la apk como los permisos que necesita:
dex2jar y JD-GUI
dex2jar es una herramienta que nos permite desensamblar ficheros ejecutables de android, esos con extensión .dex, en archivos con extensión .jar de Java. El código que escribimos en el lenguaje de programación java, tiene que ser ejecutado por un programa que se llama la máquina virtual de Java. Para que esto sea posible, el código fuente que escribimos en java, tiene que ser compilado a un formato que se llama java bytecode. Los ficheros en los que escribimos el código fuente, tienen la extensión .java y los ficheros que compilamos a java bytecode tienen la extensión .class. Normalmente, una aplicación de Java está compuesta por muchos ficheros compilados. Una forma de distribuir todos estos archivos compilados, es agruparlos (comprimirlos) en un sólo fichero (archivo) que tiene la extensión .jar. Ahora que ya sabemos lo que es un archivo .jar, vamos a usar el programa dex2jar para convertir el conjunto de archivos compilados para android (dalvik bytecode) en su equivalente para java (archivos .jar - java bytecode). Una vez tengamos el archivo .jar, podremos usar el programa jd-gui para extraer del archivo .jar, todos los archivos compilados de java (.class) y desensamblarlos en archivos .java que es donde podemos ver el código fuente en texto plano.
Comenzamos descargando dex2jar desde SourceForge:
Una vez descargado el fichero, lo descomprimimos:
Copiamos el archivo de la apk que queramos analizar:
y lo pegamos en la carpeta de dex2jar:
Ahora abrimos la consola de comandos y accedemos a la carpeta donde hemos descomprimido el programa dex2jar:
De todos los archivos que hay en esta carpeta, vamos a utilizar el script d2j-dex2jar.bat para obtener el archivo con extensión jar de Java:
Para ello, le pasamos al script d2j-dex2jar el nombre del archivo apk:
Una vez termine, podremos ver el fichero .jar:
Ahora que tenemos el archivo .jar, vamos a obtener el codigo fuente de los archivos compilados en bytecode (.class) que están dentro del archivo .jar. Para ello utilizaremos jd-gui (Java Decompiler - Graphical User Interface). Primero descargamos el archivo zip para windows de JD-GUI desde su página web:
descomprimimos el archivo:
accedemos a la carpeta y lo ejecutamos:
Pulsamos en el icono de la carpeta:
y seleccionamos el archivo .jar que hemos creado usando el programa dex2jar:
Una vez lo abramos, podremos explorar el código fuente de la aplicación:
Acceso a un teléfono android desde la línea de comandos
Esta practica podemos hacerla conectando nuestro teléfono, no funciona bien con la máquina virtual. Para poder acceder por consola de comandos, tenemos que tener activadas las opciones de desarrollo en el dispositivo android. Para ello, vamos a settings:
Vamos a la sección about de nuestro dispositivo android:
y pulsamos repetidas veces sobre build number:
Hasta que nos muestre que las opciones de desarrollo han sido activadas:
Una vez tengamos activadas estas opciones, podemos usar el programa abd de android-sdk para acceder por línea de comandos al terminal. Para ello, accedemos a la carpeta donde se ha instado android-sdk. Normalmente la ruta es:
C:\Users\NuestroUsuario\AppData\Local\Android\Sdk\platform-tools
Tecleamos adb devices para que nos muestre los dispositivos android conectados:
En este caso, como sólo hay uno, podemos ejecutar el comando adb shell para interactuar con el dispositivo android:
Las apks que instala el usuario suelen estar en la carpeta data y las de sistema en la carpeta system/app:
Si quisieramos descargar cualquiera de estas apks para analizarlas, ejecutamos el comando exit para volver a la línea de comandos de windows y, desde ahí, ejecutamos el comando adb pull pasandole como argumento la ruta de la apk que queramos descargar. En este caso, descargamos YouTube:
Veremos que la apk se ha descargado:
Creando una apk con msfvenom para conseguir acceso remoto
Para que este ataque funcionase sobre un dispositivo android:
- El navegador del dispotivo, normalmente Google Chrome, tiene que tener permisos para descargar ficheros
- El dispositivo tiene que tener activada la opción para descargar aplicaciones (apks) de fuentes no conocidas
Vamos a activar estas dos opciones en nuestro dispositivo android virtualizado. Para ello, seleccionamos Settings de las aplicaciones:
A continuación, pulsamos en Apps:
después pulsamos sobre Chrome:
ahora sobre permisos:
finalmente sobre storage para activar el permiso:
Para activar el permiso de descargar aplicaciones desde fuentes no conocidas, accedemos nuevamente a Settings y esta vez pulsamos sobre Security:
y activamos la opción unknown sources:
Para crear el payload, vamos utilizaremos msfvenom. Primero listamos todos los payloads disponibles para android:
En este caso vamos a usar android/meterpreter/reverse_tcp para que el dispositivo android se conecte directamente a nosotros. Las opciones mínimas que tenemos que pasarle son:
- -p payload => para indicar que payload usaremos. En este caso android/meterpreter/reverse_tcp
- LHOST=host => para indicar a qué host tiene que conectarse el teléfono android. En este caso Kali.
- LPORT=port => para indicar el número de puerto. En este caso voy a usar el 1313
- -o nombreDelPayload => para indicar la ruta el nombre que queremos dar al apk. En este caso, como lo voy a poner en el servidor apache, usare la ruta /var/www/html
Iniciamos el servidor apache:
Ahora vamos a usar metasploit para levantar un servicio a la escucha, para ello usaremos exploit/multi/handler:
indicándole el payload:
el número de puerto
y el host:
comprobamos que las opciones sean correctas:
y lo ejecutamos:
Una vez tengamos el servicio a la escucha, tenemos que conseguir que el dispositivo android baje la apk maliciosa. Esto podemos conseguir a través de algún ataque de ingeniería social. En este caso, vamos a descargarlo directamente desde el dipositivo android que tenemos en virtual box. Abrimos el navegador:
tecleamos la dirección donde esta la apk:
Tras descargarla, pulsamos sobre el archivo descargado para abrirlo:
Nos mostrará los permisos que requiere la aplicación para funcionar y hacemos click en Next para continuar viendo los permisos:
y finalmente en Install para instalarla:
Tras finalizar la instalación, hacemos click en Open:
Veremos que en el teléfono android no pasa nada y que hemos recibido una sesion en metasploit:
podemos comprobar que la sesión es de la máquina android, por ejemplo, ejecutando sysinfo:
Los archivos del usuario, normalmente están en el directorio sdcard. Si accedemos al directorio:
podemos listarlos:
o realizar cualquier acción sobre los mismos desde meterpreter.