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.
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.