Tag Archive for pentesting

iOS Hacking: Introducción al análisis dinámico de aplicaciones con Frida

En este artículo pretende ser una breve introducción a LA HERRAMIENTA por excelencia en iOS usada en las auditorias de aplicaciones para el análisis dinámico. Como ejemplo básico, usare la aplicación de una conocida franquicia de comida rápida y de paso obtendremos algún que otro descuento “by the face”.

 

¿Qué es Frida?

 

Frida es un poderoso y flexible set de herramientas de instrumentación dinámica creada por Ole André V. Ravnås (@oleavr). Este set de herramientas permite, entre otras cosas, visualizar y manipular “on-the-fly” procesos en ejecución en múltiples plataformas (Windows, macOS, GNU/Linux, iOS, Android y QNX).

El núcleo de Frida funciona en C, pero la instrumentación se da a través del motor JavaScript que inyecta en el proceso. Inicialmente fue el conocido V8 de Google pero en la actualidad se usa por defecto Duktape. Básicamente Frida nos da una interfaz JavaScript para interactuar con la memoria del proceso en ejecución interpretándolo y permitiéndonos inspeccionar el estado de los objetos, variables e hilos que nos permite, por ejemplo, capturar un determinado parámetro pasado a una función o editar el valor devuelto por ella. Esta interacción la podemos desarrollar en diversos lenguajes (Python, Node.js, .NET o Qml, pudiendo extenderse a otros) y nos permite automatizar todo el proceso con unos simples scripts. ¡Casi ná!

Read more

Auditando la red wifi de mi universidad

Dentro de este pequeño mundo de la seguridad informática he tenido la suerte de conocer a grandes personas, con las cuales he compartido más de un año de trabajo dentro del equipo de SVT y a los que estoy más que agradecido por el buen hacer que han tenido conmigo. Así que, queridos lectores, permitidme dedicar el post de hoy a esta familia, que se lo merecen en toda regla.

Hoy, como veremos, tenemos por delante un artículo un poco diferente de los que estamos acostumbrados, ya que el contenido relevante es un vídeo que grabé para la defensa de mi trabajo de final de grado. Éste, tiene por objetivo demostrar como era posible extraer las credenciales de los usuarios (alumnos y profesores) de la red eduroam de la Universidad de Lleida, mi antigua universidad.

En este caso, se trata de un hecho muy importante en referencia a los términos de seguridad, ya que la misma contraseña que se emplea para acceder a la red inalámbrica también se utiliza para acceder al correo, al campus virtual y a todo lo que deriva de éste, como puede ser el expediente o todo lo relacionado con las asignaturas, la entrega de prácticas y las notas e incluso, permite iniciar sesión en nombre de la víctima en cualquier máquina puesta a disposición del público. En breves palabras, la misma contraseña no simplemente permite acceder a los datos privados del usuario sino que también permite robar la identidad de la persona afectada, en todos los ámbitos.

Desde el punto de vista técnico, la red eduroam en cuestión, está configurada con cifrado CCMP (WPA2) y con una autenticación 802.1x, conocida coloquialmente como Enterprise, que en este caso emplea la propia autenticación a través del protocolo PAP dentro de un túnel TLS (TTLS/PAP).

Los puntos principales que se tratan en el vídeo son los siguientes:

  • Configuración del terminal Android para dicha red.
  • Motivo por el cual podemos realizar la suplantación de un punto de acceso legítimo.
  • Herramientas que podría utilizar un atacante y su correspondiente aplicación.
  • Análisis del entorno real.

Aquí tenéis el enlace del video:

Una vez publicado el vídeo, significa que el Departamento de Sistemas de la universidad me ha dado autorización para hacerlo. Esto es debido a que ya ha tomado las medidas oportunas para solventar la inconveniencia.

Sin más, espero que haya sido de vuestro agrado. Y recordad, averiguar la contraseña es simplemente un daño colateral. ¿Qué pasaría si nuestro punto de acceso falso diera por válida la autenticación del usuario, le ofreciera servicio DHCP y acceso a Internet? El usuario no lo notaría, ya que creería que está en la red legítima, pero nosotros tendríamos comunicación directa con su dispositivo, sin ningún tipo restricción, y además, sobre un escenario man in the middle (MitM). ¿Lo dejamos para otro vídeo? 😉

¡Saludos!

Ferran Verdés

Enlace del vídeo: https://youtu.be/XmKokmOYdV0

La seguridad actual de la autenticación inalámbrica PSK (III)

En esta tercera entrega, llega el momento de extraer nuestras propias conclusiones sobre la seguridad actual de la autenticación PSK. Resulta que con la ejecución de Pyrit en una instancia g2.8xlarge del Cloud de Amazon, se obtiene un rendimiento interesante en el cómputo de claves:

011 - pyrit benchmark AMAZON

Tal y como se puede observar en la ilustración anterior, se cuenta con un cálculo de 115.265 claves/segundo, un incremento más que considerable en referencia a las 836 claves/s iniciales de mi máquina virtual.

Pero esto no termina aquí. Aún podemos mejorar la capcidad de cómputo y de una forma más que considerable. Existen dos opciones:

  • Ejecución de Pyrit en modo distribuido.
  • Utilizar tablas PMK precomputadas.

Una vez más, debido a la magnitud que debe respetar el artículo, es necesario focalizar nuestros esfuerzos en una de las opciones anteriores y, en este caso, se ha optado por mostrar la velocidad extrema que se consigue con las tablas PMK precomputadas.

Read more

La seguridad actual de la autenticación inalámbrica PSK (I)

Han pasado ya algunos años desde que el estándar 802.11i fue ratificado en Junio de 2004, y algunas cosas han cambiado desde aquel entonces, dando énfasis en la capacidad de computación de las máquinas. No obstante, sobre la misma línea, nada nuevo está presente en la autenticación WPA, que como ya sabemos se encuentra dividida en dos bloques:

  • WPA Enterprise Authentication: donde se utiliza el estándar 802.1x y normalmente un servidor Radius para efectuar Authentication, Authorization y Accounting (AAA).
  • WPA Personal Authentication: donde se emplea una passphrase precompartida por todos los integrantes de la red (similar a WEP).

En esta secuencia de artículos, primeramente veremos los fundamentos del ataque sobre la autenticación PSK (Pre Shared Key), también conocida como autenticación “Personal”, y posteriormente lo pondremos en práctica sobre el Cloud de NIMBIX y de Amazon para extraer nuestras propias conclusiones.

Partiendo de la base de tener en posesión un handshake, sólo nos queda por dar una pequeña pincelada a la generación de la PTK (Pairwise Transient Key):

Diagrama generación PTK

Como podemos ver, la clave precompartida, denominada passphrase, se pasa a una función conocida como PBKDF2, utilizada en PKCS#5, conjuntamente con los siguientes parámetros:

  • El SSID y su longitud.
  • El número de iteraciones a realizar, 4096.
  • La longitud de la clave resultante, 256.

Read more

Auditando Aplicaciones en Android

Vamos a ver algunos ejemplos de controles que se llevan a cabo en un Pentesting de Aplicaciones en Android. Lo más importante en un proceso de auditoría será el hacer uso de una metodología, de tal forma que podamos llevar a cabo una serie de pasos de manera ordenada.

Os propongo que hagamos uso de la metodología OWASP, concretamente en su apartado de OWASP Mobile Security Project podemos encontrarnos con muchos recursos: herramientas, guía de desarrollo seguro, plantilla de controles, guía de testing de Apps… Centrándonos en esta última podemos dividir nuestra auditoría en tres partes: recopilar información, análisis estático y análisis dinámico. Read more

Web Hacking : Una línea para manejarlos a todos

¿Podría darte una línea de código acceso a un sitio Web completo? ¿Qué información obtendría un atacante si consiguiera llegar al nivel más bajo de tu página Web? es decir, a tu BBDD o SSOO. Dependiendo del objetivo de la misma podría encontrar seguramente información sobre la identidad de los usuarios, transacciones bancarias, compras online, usuarios, contraseñas y mucho más.

¿Cuánto vale tu información? Debemos de establecer unos controles de seguridad mínimos a nuestro sitio Web, llevar a cabo una serie de auditorías de seguridad que garanticen el buen funcionamiento de la misma. No sólo tener en regla la política de cookies y poco más, sino os puede ocurrir como la Web con la que me encontré hace unas semanas a la hora de preparar una charla. Antes de nada os muestro un disclaimer.


Aviso Legal y Descargo de Responsabilidad

  1. El objetivo de lo mostrado a continuación tiene fines educativos para aprender a mejorar la seguridad de nuestros sitios Web.
  2. No nos hacemos responsables del mal uso que se le pueda dar a las herramientas mostradas.
  3. Toda la auditoría Web mostrada a continuación se ha llevado a cabo con permisos de sus administradores según lo acordado en documento legal.

Vamos a llevar a cabo la auditoría de un sitio Web siguiente la metodología OWASP, concretamente seguiremos la OWASP Testing Guide V4. Los diferentes puntos que abarca dicha metodología los podéis ver detalladamente en el enlace anterior. A continuación nombramos los aspectos generales a tratar.

Read more

Pentesting con GoLismero

Tras un parón considerable en nuestro Blog, casi justificado por las vacaciones de los que escribimos en Hacking Ético, volvemos para haceros llegar una herramienta que la mayoría conocéis pero como nuestra intención es que todo lo que esté en nuestra mano llegue a todos nuestros lectores, vamos a mostraros que es GoLismero.

Es una herramienta para automatizar las tareas de pentesting en sitios Web aunque también es posible usarlo e integrarlo para realizar pentesting de servidores. Por ejemplo, puede adaptarse a OpenVAS para realizar escaneo de vulnerabilidades a determinadas IPs.

Este Framework ha sido creado por Daniel García (@ggdaniel) “backend developer”, Mario Vilas (@MarioVilas) “Core developer y Raúl Requero “Frontend developer” y es opensource.

Es una herramienta muy completa, creada en Python por lo que no necesita dependencias. Incluso en su día lo probé en Windows aunque también funciona (o debería) en OS X y por supuesto en Linux.

logo-wide copia

Read more

Creando un túnel SSH con Nessus

Muchas veces a la hora de hacer una auditoría externa y tener algún sistema de protección exterior (Firewall, IDS…), se nos habilitan diferentes mecanismos para poder acceder dentro de la red que queremos auditar sin que su seguridad exterior se vea comprometida. Es muy común habilitar un túnel SSH para acceder al interior de la red local.

notaLegal

Hoy vamos a ver cómo aprovechar ese túnel para correr Nessus como si estuviéramos ubicados dentro de la red. Como sabéis, la versión gratuita de Nessus tan sólo nos permite escaneos a direcciones IP locales, sin embargo mediante el túnel vamos a conseguir utilizar esta herramienta frente a una IP pública, como si estuviéramos dentro de la red a auditar aún estando fuera de la misma.

Vamos a utilizar para ello un túnel SSH y la herramienta Proxychains de la cual tenéis un artículo en el blog sobre cómo trabajar con ella y Tor.

http://hacking-etico.com/2013/08/27/anonimato-con-tor-y-proxychains/

En el siguiente diagrama vemos el entorno en el cual vamos a trabajar:

tunel

La idea es crear un túnel SSH y haciendo uso de Proxychains reenviaremos todas las peticiones de nuestro PC (Nodo A) a través del túnel, de tal forma que Nessus va a pensar que está corriendo el scanner en la máquina intermedia (Nodo B) que sí está en la misma red del servidor a auditar (Nodo C). Los pasos a seguir son los siguientes:

Creación del túnel SSH con el nodo B.

Para crear el túnel previamente tenemos que tener habilitado en el nodo B el servicio SSH con nuestro usuario correspondiente y una regla en el Firewall que permita las peticiones desde exterior hacia la máquina B (natearemos el puerto 22 mediante Port Fowarding a la máquina B).

Con todo preparado pondremos a la escucha un puerto en la máquina local A, de tal forma que todo lo que se envíe a ese puerto se reenviará a través del túnel que crearemos contra la máquina B. Usaremos el siguiente comando:

sudo ssh –p 22 –N –D 8081 [email protected]_B

Read more

iOS Hacking: Arquitectura de seguridad en iOS

En la entrada anterior de esta serie sobre iOS Hacking hablamos sobre la necesidad de “romper la jaula” en el sistema operativa, es decir, hacer un Jailbreak. En esta siguiente entrada de la nueva serie, veremos cómo es la arquitectura de seguridad en iOS y entenderemos mejor el por qué de tener “jailbreakeado” nuestro dispositivo para hacer pruebas de intrusión o hacking ético en iOS.

Apple publica periódicamente su documento de seguridad iOS, donde explica los mecanismos de seguridad que utilizan para proporcionar el máximo nivel de seguridad a su sistema operativo y Apps. La información aquí mostrada está extraída de dicho documento, que en este caso data de febrero de este año.

iOS Hack: iOS Security

Todos los mecanismos de seguridad los podríamos agrupar en mecanismos de tipo software y mecanismos de hardware / firmware. Desde el nivel más bajo, en el hardware, se encuentra “grabado” el Device Key, que es único para cada terminal. Además en la ROM se almacena el Apple Root Certificate, usado para cifrar, firmar y comprobar la autenticidad.

Por encima, cuenta con un motor de cifrado llamado Crypto Engine.

Desde el punto de vista del software, todo el sistema de ficheros se encuentra cifrado, tanto la partición del sistema operativo como la de usuario. A esto hay que añadir que los datos de esta partición están cifrados. Para completar la seguridad a nivel de software, iOS ejecuta cada App en una sandbox propia de cada App, lo que prohibe el acceso a datos de otra aplicación o interacción entre Apps. Aislamiento total entre aplicaciones.

iOS Hack: Arquitectura de seguridad Read more

iOS Hacking: preparando entorno de pruebas

Con este artículo estrenaré una nueva serie de entradas llamada iOS Hacking dedicada a todo lo relacionado con el pentesting de dispositivos y aplicaciones iOS, que como sabéis es el sistema operativo usado por los dispositivos de Apple.

Cada vez son más los dispositivos móviles que utilizamos día a día, ya sean smartphones o tablets. Lo hacemos para consultar nuestro correo electrónico, redes sociales, jugar o ver vídeos online. Son muchas las aplicaciones nuevas que aparecen todos los días, por lo tanto creemos que este tema se merece un espacio en nuestro blog.

Como no podía ser de otra forma, en este primera entrada explícaremos cómo preparar un entorno de pruebas de intrusión en un dispositivo con sistema operativo iOS. Al igual que en Android necesitamos rootear el dispositivo para tener acceso al sistema de ficheros o conseguir una elevación de privilegios, en un iPhone o iPad ocurre lo mismo. En este caso se le atribuye el concepto de romper la jaula (jail), de ahí que a esta técnica se le conozca como JailBreak. Esta técnica, además de lo comentado anteriormente, nos proveerá de un nuevo gestor de paquetes, Cydia.

Cydia - iOS Hack

¿Por qué necesitamos hacer JailBreak? Básicamente porque necesitamos acceder a todo el sistema de ficheros, sin ningún tipo de limitación, necesitamos poder monitorizar aplicaciones y procesos y necesitamos más permisos que los que vienen por defecto, que son muy limitados. En realidad, lo se hace es una elevación de privilegios del usuario mobile a root.

Hay muchísimos sitios Web donde se explica cómo hacerlo, no entra en el ámbito de estos artículos explicar cómo hacer un JailBreak a un dispositivo iOS. Read more