Preparar iOS para el pentesting de apps (I)

jmc0Estamos más que acostumbrados a realizar pruebas de penetración a equipos y aplicaciones web, incluso como estresar aplicaciones en búsqueda de errores no controlados por los desarrolladores. Pero cuando se habla de aplicaciones móviles la cosa cambia. Las apps son algo “nuevo”, y por lo tanto las herramientas y métodos para realizar auditorías de seguridad no son tan conocidos.

A continuación vamos a ver unos primeros pasos para configurar los dispositivos con iOS para realizar pentesting a las aplicaciones móviles.

Antes de realizar pentesting en las aplicaciones de iOS se debe de realizar el jailbreak al dispositivo con el que queremos realizar la auditoría. Existen miles de guías/tutoriales de cómo romper la jaula impuesta por Apple, así que partiré de un dispositivo con el jailbreak ya realizado.

Con un dispositivo desbloqueado lo primero que tenemos que hacer es instalar el set básico de aplicaciones de trabajo, esto viene siendo los ejecutables Linux tales como wget, ps, openssh, less, make,… Pues al fin y al cabo iOS es una distribución Linux aligerada (corregido 30/10, 14:35h). Desde la aplicación, o más bien tienda de aplicaciones cydia instalamos el paquete OpenSSH. El segundo paquete a instalar es BigBoss Recommended tools, que nos ofrece los comandos cotidianos y necesarios para trabajar desde el terminal. Finalmente y para tener un acceso directo a la Shell de iOS instalamos Mobile TotalTerminal.

Es el momento de acceder al dispositivo mediante SSH. Averiguamos la dirección IP desde Ajustes ->Wi-Fi, viendo la información de la conexión que tenemos activa.

Después, ejecutando el comando ssh root@x.x.x.x desde un ordenador en la misma red donde se encuentre el terminal iOS accederemos a la shell del sistema con la contraseña alpine, contraseña por defecto para el usuario root. Como medida de seguridad es recomendable cambiar esta contraseña, comando passwd y contraseña nueva.

jmc1

Después de cambiar la contraseña de root es un buen momento para actualizar las herramientas internas disponibles en iOS. iOs Como ya se ha dicho, iOS es una distribución Linux y ésta en concreto (corregido 30/10, 14:35h) dispone del gestor/instalador de aplicaciones apt-get, así que ejecutando un apt-get update y apt-get upgrade conseguimos actualizar el sistema.

jmc2

En este punto ya se dispone de un terminal habilitado para realizar acciones de pentesting sobre las aplicaciones instaladas. Aunque nosotros iremos un poco más lejos: vamos a instalar una herramienta más que nos será realmente útil en los análisis de nuestras aplicaciones.

Class-dump-z es una utilidad disponible en el repositorio cydia de radare que permite extraer la interfaz de las clases de Objective-C de una aplicación. Lo primero que habrá que hacer es añadir el repositorio de radare. Para ello, desde cydia nos dirigimos a Fuentes -> Editar -> Añadir y tecleamos http://cydia.radare.org.

Esto actualizará el fichero /etc/apt/sources.list/cydia.list permitiendo ahora instalar la class-dump-z desde la línea de comandos: apt-get update && apt-get install classdumpz. Tras finalizar el comando class-dump-z estará instalado en el sistema.

jmc3

Class-dump-z está algo desactualizado y puede que para los binarios más recientes no genere interfaz de clases tan buena como class-dump, pero para el caso no es lo mismo. En la siguiente entrega veremos como estudiar la interfaz de una aplicación y como descrifrar una aplicación para saltarse el DRM y poder auditarla sin problemas.

Comments

  1. «Pues al fin y al cabo iOS es una distribución Linux aligerada»

    Por favor… ni es una distribución Linux (núcleos completamente diferentes), ni aligerada. Estas afirmaciones hacen que te pienses dos veces terminar de leer el artículo.

    Que un sistema sea tipo UNIX a que sea una distribución Linux hay una diferencia considerable y en blogs como estos se debería respetar (y divulgar bien, por cierto).

    Por otro lado la lógica de tener binarios como apt la conviertan en distribución linux está al mismo nivel que decir que es un windows porque tiene office.

    Saludos

  2. Creo que hay un considerable porcentaje de personas que desconocen que MacOS está basado en sistema operativo UNIX BSD (las vertientes más conocidas de este sistema operativo son FreeBSD, OpenBSD, NetBSD, etc), y bautizado como Darwin, al que podemos tener acceso (http://www.opensource.apple.com/source/xnu/xnu-2050.18.24/), ya que es de código libre. Si no me equivoco, iOS no deja de ser una modificación de Darwin pero adaptada para dispositivos con arquitectura hardware más limitada.

    Sin tener en cuenta las erratas cometidas, me parece un post interesante. :)

  3. Gracias a los dos. Efectivamente era un error, pero ¿quién no comete alguno de vez en cuando? :^)

    Espero que eso no os desanime a seguir las futuras entradas de la serie.

  4. Pobrecito Hablador says

    «Estamos más que acostumbrados a realizar pruebas de penetración a equipos y aplicaciones web, incluso como estresar aplicaciones en búsqueda de errores no controlados por los desarrolladores. Pero cuando se habla de aplicaciones móviles la cosa cambia.»

    Se ha notado XDDDDD

    Yo estoy de acuerdo con los comentarios de arriba, todo el mundo puede cometer un error, pero cuando se publica algo hay que tener mucho cuidado porque hay mucha gente que no sabe del tema y va a aprender conceptos equivocados. Ademas, en este caso, es un error de concepto muy grave equivalente a que alguien que dice ser experto analista forense dijera algo como «y analizamos NTFS, que es la implementacion de Microsoft de FAT32».

    Y ademas del error en si mismo, que ya evidencia que la persona no es tan experta como pretende, me hace plantearme que tipo de QA pasa el trabajo que entregais en vuestra empresa. Desde luego en el blog no os funciona muy bien vista la cantidad de errores graves y correcciones que os veis obligados a hacer. Esto es mas grave aun que el error tecnico en si mismo, tratandose del blog de una empresa.

  5. Querido Pobrecito Hablador, el hecho de que

    A) menciones de ‘la cantidad de errores graves y correcciones que os veis obligados a hacer’ (si tienes estadísticas estaría francamente interesado en verlas, como editor del blog),

    B) que pongas en duda la calidad del blog (queda muy profesional lo de ‘QA’) sin mayores evidencias y que, para acabar,

    C) No te limites a blog sino que extiendas tu comentario a cuestionar la profesionalidad de la empresa,

    Es suficiente para demostrar que tu único propósito es hacer sangre. Si me hubieses pillado en otra época, quizá entraría al trapo, pero ya estoy mayor para perder el tiempo con trolls y personas malintencionadas. Como imaginarás, tu opinión sobre la calidad y profesionalidad del blog, de S2 Grupo o de las personas que componen la empresa no tiene mayor relevancia.

    Termino. Efectivamente, ha sido un error. Incluso, aunque no afecte al resto del post, admitiría con MUCHOS peros que es un error grave. Ir más allá y sacar conclusiones adicionales es entrar en un fango al que no te voy a acompañar. Espero que lo disfrutes.

    Que tengas un buen fin de semana.