29 octubre, 2016

Análisis Dinámico en AndroidSwissKnife

Buenas Amigos de Estación Informática. Soy Fare9 y hoy os traigo una nueva actualización de mi herramienta AndroidSwissKnife. ANDROIDSWISSKNIFE




A pesar de estar estos dos últimos días jodido ( con fecha de referencia 28/10/2016 ), he intentado hoy escribir sobre mi última actualización de AndroidSwissKnife (algo que ya llevaba un tiempo en el tintero). Hace ya tiempo que empecé a leer sobre análisis de malware en Android, pero no se me había ocurrido añadir análisis dinámico a mi herramienta, y en cuanto conocí DroidBox dije "Muy interesante, ¿por qué no?" . A los que no tengáis ni idea de que es haré una pequeña explicación:

DroidBox es una herramienta escrita en python la cual te permite levantar un emulador de android con unas imágenes del sistema modificadas, las cuales al ejecutar ciertas funciones, mostrarán por el log de android (se puede ver a través de logcat) la información en un formato JSON (ejemplo en un SMS el número a quien se envía, en una modificación el archivo modificado...). Tras esto va reuniendo la información para luego mostrarla al usuario igual en formato JSON. Para ejecutar la aplicación y en concreto la clase principal (MAIN o LAUNCHER), utiliza una librería llamada monkeyrunner la cual te permite conectar con un dispositivo, instalar una apk, ejecutar una función de la apk, hacer capturas de pantalla, hacer clicks en la pantalla... Me ha parecido una librería tan explendida que hasta famosos la usan:




El código de DroidBox puede ser consultado en: https://github.com/pjlantz/droidbox/tree/master/droidbox4.1.1

A vista de que era una opción bastante interesante, me decidí en incluir el código con distintas modificaciones en el framework AndroidSwissKnife, tuve que realizar modificaciones en distintas funciones al tener que pasar código a Python3 y además como las librerías de XML me parecen un poco aburridas y complejas de usar, me decanté por el gran amigo de los Crawler's programmers BeautifulSoup, el cual de momento funciona bien. Además añadí Burpsuite, a la hora de realizar el análisis dinámico se abrirá una ventana con Burpsuite y después nos pedirá el nombre del emulador, tras esto, creará una carpeta con apktool donde sacará el AndroidManifest para reconocer las partes del APK, y finalmente ejecutará en el emulador la aplicación y empezará a sacar logs (recomiendo dejar cargar el emulador, nunca fue muy bien ese emulador de android la verdad).

Por tanto vamos a ejecutar la aplicación a ver que tal funciona, para animar un poco hoy la sesión con un poco de música, dejo una canción que me encanta y además está cantada por una buena amiga (Fight Together - Español , Fight Together - Català )

  1.  Primero hay que instalar AndroidSwissKnife (hay una pequeña función de instalación, pero todo lo que se pueda hacer manualmente no está de más).
  2. Tras esto elegiremos una APK para realizar el análisis dinámico:
  3. Después (estando dentro de la misma carpeta que el apk) ejecutamos lo siguiente:
    androidSwissKnife.py -a 2abff9ab25d8b9909f23783f20757e612a3eaa02.apk --DroidBox 
  4. Tras esto y un poco de paciencia, tendremos abierto un Burpsuite donde podremos establecer el proxy, y establecer Intercept en OFF para no tener problemas (pestaña Proxy -> Intercept is Off), también la aplicación nos pedirá el nombre de nuestro emulador (en mi caso Sandbox):
  5. Tras esto, abrirá otro terminal, en el cual empezará a ejecutar el emulador, además en el terminal que ya teníamos abierto, empezará a usar apktool para poder conseguir el AndroidManifest de la aplicación. Tras esto nos mostrará el nombre del archivo, sus diferentes hashes (MD5,SHA1,SHA256), y finalmente diferentes partes del Manifest (uses-permissions,permissions,activities,MainActivity...).
  6. Una vez tengamos cargado el emulador, pulsaremos ENTER en nuestro terminal:
  7. Entonces monkeyrunner empezará a funcionar, conectará con el dispositivo, instalará la aplicación y finalmente ejecutará la clase principal.
     
  8. Una vez acabado, empezará el análisis dinámico y la recolección de logs, para ello podemos interactuar con el emulador y con la aplicación, con lo cual conseguiremos más logs en nuestro programa. Para finalizar simplemente tendremos que pulsar CTRL-C:
  9. Una vez pulsado CTRL-C nos mostrará en formato JSON, los logs sacados por la herramienta. Y aquí vendrá la pericia del auditor para poder saber que a accedido, o si realizó accesos a internet, o envío de SMS...
Y bueno hasta aquí, la ampliación de la herramienta AndroidSwissKnife para análisis de aplicaciones Android, aún está en una fase algo beta, tiene algunos problemillas pero se irán solucionando (cosillas varias, como por ejemplo un thread que no finaliza, fallos en algun log...), puede que la opción de burpsuite se vuelva opcional, ya que alguna aplicación pueden detectar proxies y cosillas así.
Aún así presentaré esta herramienta en el SEC/ADMIN de este año. Espero os guste y cualquier cuestión en mi github teneis un email de contacto, así como una pestañita de issues, donde dejar vuestros problemas con la herramienta.

0 comentarios:

Publicar un comentario