Para visualizar el sitio de manera óptima actualice el navegador. ×

"Hookeando" Funciones en Aplicaciones Móviles

Esta charla busca introducir a los oyentes en las técnicas y métodos que pueden utilizarse para modificar el comportamiento de una aplicación móvil (Android e iOS) durante su ejecución (en runtime). Se comenzará con una rápida introducción al testing de aplicaciones móviles para luego focalizarse en la modificación de la lógica de las aplicaciones. Aquí se dividirá la charla en 2 caminos. Android: Se mostrará como es posible tomar una aplicación Android (ej. de Google Play) y realizar reversing para obtener el código Java o SMALI. Una forma de modificar su comportamiento sería realizar cambios directamente en el código y volver a compilar, sin embargo ese no es el fin de esta charla sino hacer los cambios en tiempo de ejecución. Se introduce el concepto de "Hooking" y se presentan las herramientas. Hablaremos de software como Cydia Substrate y de como funciona internamente para poder modificar las llamadas al sistema operativo. Luego presentaremos el framework XPosed, mediante el cual se mostrará el desarrollo de un simple hook sobre una aplicación Android desarrollada especialmente para la demo en Ekoparty. DEMO: Se mostrará una aplicación Android con el logo de Ekoparty y un simple botón, el cual al presionarlo muestra un mensaje del tipo "Estamos en Ekoparty, debes hackear mas fuerte.". Se analizará el código mediante reversing y se mostrará que existe en el código otro mensaje pero es lógicamente imposible llegar a el (un "if statement" que nunca da verdadero). Se mostrará en Android Studio el desarrollo de un simple hook para XPosed, el cual al ser instalado en el dispositivo modifica el comportamiento de nuestra aplicación haciendo que se muestre el mensaje deseado. iOS: Una vez presentado el ejemplo de Android pasamos a iOS. Aqui hablaremos del problema de no poder realizar reversing, por lo que no contamos con el código fuente de la aplicación. Sin embargo, se presentará la tecnica de "class dumping" mediante la cual podemos extraer en texto plano las interfaces de sus clases, categorias y protocolos. Aunque no contemos con el código fuente, tendremos acceso a la estructura de las clases y las declaraciones de sus métodos. Aquí se presentará también el problema del cifrado de las aplicaciones descargadas de la AppStore y se mostrarán herramientas para poder extraer el binario descifrado y realizar el class dump. Se mostrará la herramienta Cycript, la cual nos permitirá inyectarnos en cualquier proceso de nuestro dispositivo iOS y, por ejemplo, realizar modificaciones a las clases o llamar a sus métodos. Aqui se trabajará con una aplicación iOS (probablemente la Damn Vulnerable iOS Application) para demostrar el bypass de un login. Finalmente se presentará el framework "Theos", el cual nos permite escribir un tweak de Cydia Substrate para que la modificación se realice automaticamente cada vez que se abra la aplicación. DEMO: Se mostrará una aplicación que realiza una validación de autenticación. Se realizará un class dump y se analizarán los métodos en busqueda de aquel que se encarga de realizar la verificación. Se mostrará como es posible mediante Cycript modificar el código en memoria para que siempre devuelva "True". Por último, se mostrará como crear un tweak de iOS mediante "Theos" que detecte cuando nuestra aplicación se ejecuta y realice los cambios en memoria automáticamente cada vez. DEMO EXTRA: Como frutilla del postre, se mostrará la utilización de "hooking" para saltear la pantalla de bloqueo por PIN de una App productiva de Google en iOS.

Sobre Gustavo Sorondo

Gustavo Sorondo tiene 33 años y es CTO de Cinta Infinita. En su carrera profesional trabajó en más de 100 proyectos relacionados a la seguridad de la información en 6 paises, y ha dictado cursos de Penetration Testing, Seguridad en Aplicaciones Web, Seguridad Wireless y Testing de Mobile Apps. También ha dado charlas y workshops en conferencias de seguridad como ekoparty, OWASP Appsec y Latam Tours (AR/UY), DragonJARCon (COL), Segurinfo (AR/UY/PY), Andsec y PampaSeg. En el campo académico, Gustavo es Ingeniero en Informática, posee la certificación internacional C|EH y se encuentra terminando sus estudios de posgrado en Seguridad de la Información. En su tiempo libre se dedica a la música y es instructor de Snowboard.