06 agosto, 2016

AndroidSwissKnife, la suiza de las aplicaciones de Android

Muy buenas a todos los seguidores de Estación Informática, me conocen en el mundillo de la seguridad por Fare9 y por este nombre podeis contactar conmigo. No hace mucho que me metí en este mundillo y la verdad es que me apasiona, hace unos meses publiqué una herramienta que aprovechaba la vulnerabilidad DoS en Whatsapp para Android, la cual enviaba via whatsapp web unos 7000 stickers, lo cual debido a las políticas que tendría Android en esos momentos de gestión de memoria, provocaba el cierre de la aplicación.





 Hoy os traigo una herramienta que he estado programando estos días para ayudaros en la tarea del análisis estático de aplicaciones Android: ANDROIDSWISSKNIFE .


Ahora paso a explicar un poco sus funciones...

 Bien como la mayoría sabemos, las aplicaciones de Android se programan principalmente en Java como lenguaje de programación principal, añadiendo librerías (en caso de necesitarlas) escritas en C/C++ para las diferentes arquitecturas donde se ejecutará esta APK, el malware por supuesto no es una excepción y se escribe igual que una aplicación normal, harán uso de las APIs que Google ponga a su disposición para realizar esas acciones "malignas" que conocemos (robo de credenciales, ransomware, backdoors...). Pues para conocer que realizan estas aplicaciones nos basamos en los análisis estáticos y dinámicos de la aplicación. Estos últimos se realizan ejecutando la aplicación en un términal, o un sistema emulado en una máquina virtual, y viendo el tráfico de red, los logs que pueda dejar la aplicación u otro tipo de técnicas del estilo.
El análisis estático se basa en la observación de los archivos que vienen con la apk, así entre ellos, el código , metadatos, buscar diferentes expresiones dentro de los archivos...
AndroidSwissKnife tiene implementadas varias rutinas para esto, agilizando cosas como la observación del AndroidManifest, búsqueda de patrones con expresiones regulares ( esas que tanto nos destrozan la cabeza), y el desensamblado del código.
En android podemos intentar desensamblar el código fuente de la aplicación de varias formas entre ellas:
  • obtener el código fuente como tal (con jadx), esto nos quitará muchos quebraderos ya que el código fuente de alto nivel nos permite verlo todo más claro, pero a su vez es el más dificil de conseguir .
  • Código Smali (con apktool) es un código que llamaríamos ensamblador basado en Jasmin (que es el código ensamblador de java). Este código tiene sencillos mnemotécnicos y es fácil de aprender, además puede ser bastante útil por si queremos modificar la aplicación y volver a empaquetarla.
  • Dalvik bytetcode conseguimos el bytecode usado por la máquina virtual Dalvik que luego será interpretado para ejecutarlo en el móvil, smali está también basado en este bytecode por tanto no será muy dificil de aprender.
Además de este código fuente tambien podremos obtener el código nativo de las librerías, el cual cambiará según sea para arm, mips o x86.

Todas estas rutinas las veo necesarias para el análisis estático, pero por supuesto la herramienta es libre y cualquiera puede modificar el código, si crees que tienes una buena idea puede modificarse la rama principal. De momento se está intentando añadir un módulo para sacar reportes en PDF (quizás la parte más importante en un pentest o análisis profesional) , y también se está estudiando la forma de añadir soporte para mostrar el desensamblado de radare2.

Espero les gustara el post, y espero les guste la aplicación. Aquí me despido hasta la proxima y sigan divirtiendose con la seguridad informática.

0 comentarios:

Publicar un comentario