iOS / Android Pen-Test

12

Esta pregunta puede ser vaga, porque no estoy seguro de por dónde empezar.

Hay muchos libros y cursos sobre Pentest que se centran en redes, sistemas y sistemas operativos, como Windows, pero no he podido encontrar nada en plataformas móviles como iOS / Android.

Estoy muy interesado en aprender cómo hacer pentest y asegurar las plataformas móviles. El contenido en tiempo real (ubicación, estado del teléfono, llamadas telefónicas ...), es información valiosa, lo que lo hace muy interesante.

Según mi entendimiento, debido a los componentes / hardware, las metodologías de penetración son diferentes cuando se trata de teléfonos móviles.

¿Cómo y dónde podría comenzar y posiblemente crear una profesión futura en el pentest móvil?

    
pregunta Rick Rhodes 23.12.2011 - 01:24
fuente

3 respuestas

11

Comience con el Emulador y el Simulador, que forman parte de los SDK estándar. Si prefiere ciertos entornos en lugar de otros, gravitará hacia un marco confiable para probar estas plataformas.

Por ejemplo, con una aplicación de iOS, siempre comienzo con el simulador de iOS después de compilar el código en Xcode. Configuré el proxy HTTP y SSL / TLS de mi sistema Mac OS X en localhost donde ejecuto Burp Suite Professional. Luego lanzo la aplicación y utilizo la funcionalidad Xcode DTrace que se encuentra con la herramienta de discusión de línea de comandos. Tiendo a mirar los archivos de plist con las herramientas de smartphonesdumbapps.

Con las aplicaciones de Android, es similar. En estos días, voy y vengo entre IntelliJ IDEA y Eclipse, pero ambos tienen puntos de integración de SDK de Android muy útiles. Para Eclipse, es ADT. Me gusta lanzar el Emulador a través del ADT. Me gusta interactuar con el sistema de archivos y la memoria utilizando DDMS, que es principalmente útil para la depuración. Sin embargo, cuando se trata del rastreo de software, tiendo a subirme a un shell adb y ejecutar los procesos en los que estoy interesado, junto con un logcat simultáneo. Para los servidores proxy, normalmente utilizo un agujero negro de DNS para crear un proxy transparente para Burp Suite Professional utilizando la marca -dns-server del emulador. También es útil ver el manifiesto en ADT, especialmente para ver los permisos y las intenciones.

Gran parte de esto cambia si no tiene una fuente compilable. Peor aún, podría estar apuntando a una aplicación que tenga un código de auto-modificación o auto-verificación. En estas situaciones, necesitará un enfoque que implique el desmontaje y la descompilación de la aplicación. Para iOS, las herramientas class-dump-z, otool, otx e i386codedump son una apuesta segura junto con IDA Pro. Puede encontrar mucha información sobre la descompilación de aplicaciones de Android, aunque los depuradores ARM e IDA Pro serán útiles para aquellas aplicaciones que tienen una gran inversión en las protecciones de código de auto-modificación o autocontrol. Existe mucha información sobre el malware y las herramientas relacionadas con el malware en la plataforma Android que están relacionadas con este tipo de problema. Por ejemplo, hay una lista de correo de malware para dispositivos móviles.

Algunos otros recursos excelentes son la documentación del desarrollador combinada con el trabajo práctico. Pluralsight y Raywenderlich tienen excelentes tutoriales que cubren estas plataformas. He revisado todo su material. Hay muchos libros de Syngress y OReilly en Android y iOS, muchos de los cuales cubren temas de seguridad y análisis forense en profundidad. Hay un libro sobre seguridad de aplicaciones de cacao de Wrox Press que también vale la pena ver, aunque fechado. La mayoría de los libros que cubren los conceptos básicos de los lenguajes base (Obj-C y Java) serán útiles, aunque también es bueno entender dónde convergen los lenguajes y conceptos de las aplicaciones móviles (por ejemplo, PhoneGap, MonoTouch, et al).

** ACTUALIZACIÓN 3/26/2012 **

Tiendo a usar herramientas similares, aunque he extendido más a DTrace-Toolkit e iprofiler / Instruments para aplicaciones de simulador de iOS. Tiendo a hacer mucho más trabajo usando cycript en un iPad 2 con jailbreak, que ha sido revelador (especialmente junto con class-dump-z). Para Android, creo que olvidé mencionar el Monitor de actividad, que es muy útil para lanzar intenciones.

Gran parte del tiempo de ejecución se puede ver / analizar / modificar utilizando el tiempo de ejecución Obj-C o Java / Smali, por lo que el conocimiento de estos lenguajes y de sus plataformas específicas en los dispositivos de destino no es muy opcional.

Ocasionalmente, se me pide que compruebe las aplicaciones que tienen otro formato (por ejemplo, AIR para iOS / Android, HTML5, Titanium, NDK, etc.) pero que compile como aplicaciones nativas. En esta situación, es mejor construir (como tendría el desarrollador original) y / o aplicar ingeniería inversa a cada componente utilizando una combinación de análisis binario, estático y dinámico. Esto puede requerir el uso de Flash Professional u otra herramienta IDE / build.

    
respondido por el atdre 25.12.2011 - 07:25
fuente
4

El primer paso para atacar un sistema es entender su superficie de ataque. Dicho esto, ¿son los dispositivos móviles realmente tan diferentes? Los exploits están escritos para todas las plataformas de software, incluyendo aplicaciones para plataformas móviles . Las vulnerabilidades más comunes son el recorrido de directorios, luego los desbordamientos de búfer.

Debes estudiar lo que ya se ha hecho. Lea el código de explotación, escriba el código de explotación.

    
respondido por el rook 24.12.2011 - 01:24
fuente
1

Si fuera usted, comenzaría por definir los escenarios de amenazas relevantes para las plataformas, desde allí puede atribuir las metodologías, herramientas, técnicas y enfoques generales más relevantes para cada escenario.

La realidad es, como lo menciona espengra, que se pueden utilizar muchos enfoques diferentes para comprender cada aspecto de la superficie de ataque y los vectores de ataque que solo necesita desglosar en diferentes pruebas. No hay un enfoque de "prueba única para descartarlos a todos" para este o cualquier otro tipo de prueba.

Comience por construir su árbol de ataque contra el dispositivo (Google Schneier y los árboles de ataque si nunca ha escuchado ese término). Creo que la mejor manera de manejar esto es una herramienta de mapeo mental decente. Una vez que tenga un árbol, puede refinar los ataques en grupos y luego definir el enfoque de prueba principal para cada rama principal.

    
respondido por el JabawokJayUK 24.12.2011 - 01:21
fuente

Lea otras preguntas en las etiquetas