3 sept 2015

Analizando software malicioso en Android con PHP. Parte 1

Buenas a todos, en el post de hoy comenzaré una cadena de artículos en la que veremos como programar un sencillo analizados estático de código en PHP, con el fin de extraer los datos básicos de una aplicación Android, lo que nos permitirá automatizar la comprobación de las IPs a las que se conecta el software, permisos con los que cuenta, rutas con las que interactúa en el móvil, si accede a la cámara, micrófono, etc. Todo en PHP con la idea de que pueda ser utilizado en modo servicio.

Para comenzar con el proyecto me he descargado Whatsapp de un black market, con la idea de ver si realmente hace lo que dice que hace su autor...

El primer ejercicio que realizaremos será crear un nuevo documento PHP en el que mediante la instrucción "exec", ejecutaremos las siguientes instrucciones:
  1. Utilizaremos el software dex2jar para decompilar el APK y generar un archivo .jar que podríamos abrir por ejemplo con JD-GUI para analizarlo, pero que nosotros procesaremos desde PHP de forma automatizada. La herramienta la estoy ejecutando sobre KALI por lo que ya se encuentra dex2jar instalada. Para más información sobre dex2jar os dejo el siguiente enlace: http://tools.kali.org/reverse-engineering/dex2jar.
  2. Crearemos una carpeta de trabajo. Yo la he llamado "android".
  3. Decompilaremos el contenido del jar resultante en la carpeta antes creada con JD-CORE, para extraer los archivos .java que analizaremos posteriormente. Por si queréis descargar directamente la versión compilada de jd-core os dejo el siguiente enlace: 
https://drive.google.com/file/d/0B_Ci-1YbMqshQldsRlFwaUZXUVE/view?usp=sharing

El código que deberíais programar sería algo parecido al siguiente:
<?php
    $bin='WhatsApp_2_8_7326';
    $ext='.apk';
    $com1='d2j-dex2jar '.$bin.$ext.' --force';
    $com2='mkdir android';
    $com3='java -jar jd-core.jar "'.$bin.'-dex2jar.jar" android';
    $commands=array($com1,$com2,$com3);
    foreach($commands as &$com)
    {
        $output=array();
        exec($com, $output);
        foreach($output as &$valor)
        {
            echo $valor.'<br/>';
        }
    }
?>

Cuya salida por pantalla sería la siguiente (solamente deberéis cambiar las rutas donde se encuentren jd-core, d2j-dex2jar y el apk a analizar):






¿Sencillo verdad? Ahora con un simple cat sobre alguno de los .java podríamos ver algo de información interesante sobre Whatsapp, pero eso lo dejaremos para posteriores posts...



Saludos!



No hay comentarios:

Publicar un comentario