Mientras el malware móvil se vuelve cada vez más complejo, algunas prácticas de análisis se tornan cada vez más necesarias; entre ellas, la de interceptar tráfico enviado mediante protocolos seguros –en particular, HTTPS–. En este tutorial aprenderás cómo puedes configurar tu entorno de análisis para analizar muestras maliciosas o aplicaciones en búsqueda de vulnerabilidades.

¡Manos a la obra!

Existen diferentes maneras de configurar un proxy en un sistema Android y numerosas herramientas que pueden utilizarse para este propósito. En este artículo utilizaremos Burp Suite, pero bien podrías usar ZAP (de OWASP) o cualquier otro de similares características.

Comenzaremos inicializando Burp Suite. Seleccionaremos la pestaña Proxy > Options y allí añadiremos una nueva configuración de escucha de tráfico con el botón Add –también puedes editar la configuración preexistente con el botón Edit–. Esto nos abrirá una nueva ventana donde deberemos establecer la IP y el puerto de nuestro proxy: normalmente, la IP local y el puerto de preferencia:

img_3

Tras presionar el botón «OK» y cerciorarnos de que el listener que nos interesa está marcado como activo –running–, podemos pasar a configurar el emulador. Si se está trabajando con Genymotion, comenzaremos la configuración del proxy modificando los Settings de la aplicación. En la solapa de características de red podremos ingresar la IP y puerto que definimos primeramente en Burp Suite.

img_4

Para finalizar deberemos configurar la conexión de red en el emulador ejecutando Android. Para ello nos dirigiremos a Ajustes > Wi-Fi y mantendremos seleccionada la red a la cual estamos conectados, lo que nos dará la posibilidad de modificar sus propiedades. Luego activaremos la opción de opciones avanzadas y nuevamente ingresaremos la IP y puertos deseados, resultando una imagen semejante a la que se muestra a continuación:

img_5

Tras guardar la nueva configuración de red, se deberá reiniciar la conexión. Ahora puedes realizar una prueba ingresando a algún sitio web desde el navegador del dispositivo y verás cómo Burp Suite te permite visualizar todo el tráfico HTTP. No olvides indicar a la herramienta que debe comenzar a interceptar el tráfico:

img_6

¿Hemos terminado ya? Aún no, pues todavía no podemos visualizar conexiones protegidas, es decir, interceptar tráfico HTTPS. Para ello necesitaremos instalar el certificado de Burp Suite. Ingresa desde el navegador del emulador a la siguiente URL:

http://burp/

Verás una página de Burp Suite que te permitirá descargar el certificado que necesitamos. Haz clic en el botón con la leyenda «CA Certificate». Esto descargará el certificado a la carpeta de descargar del sistema de archivos. Busca el archivo descargado y haz clic en él: esto te permitirá instalarlo en el sistema. Una ventana te pedirá que le asignes un nombre y dejaremos el que tiene por defecto:

img_7

Una vez instalado el certificado podrás administrarlo dentro de los certificados de usuario, accediendo desde Ajustes > Seguridad > Certificados de confianza y seleccionando la solapa Usuario:

img_8

¡Muy bien! Ya podrás observar en BurpSuite el tráfico enviado con el protocolo HTTPS:

img_9

Y ahora, ¿hemos acabado? No. Algunas aplicaciones implementan algo denominado SSL pinning: este es un proceso en el cual se verifica no solo que el certificado enviado por el servidor sea válido, sino también que sea el certificado del servidor correcto. Esto mejora notablemente la seguridad cuando se trata de aplicaciones genuinas, pero complica el análisis cuando se están buscando comportamientos maliciosos.

Para hacer frente a este escenario podemos utilizar Cydia Substrate conjuntamente a Android SSL TrustKiller.

Update: a partir de las nuevas versiones de Android, el procedimiento para añadir el certificado de usuario es diferente. Por favor, referirse a este artículo completo sobre el tema.