Menú principal

lunes, 7 de febrero de 2011

Tomando control de un Mac OS X con Immunity Canvas: Explotando el bug de parent_stylesheet para Apple Safari

Si este artículo fuese el guión de una película sobreevaluada de Hollywood, comenzaría con una terminal con fondo negro y las palabras “Knock, Knock” escritas en letras blancas, un actor con poca expresión, pantalones ajustados de cuero negro (vestuario aparentemente muy común dentro de la peña informática), se mostraria asombrado y paso siguiente comenzaria lo que Campbell describe como “El llamado de la aventura”... Pero en este caso la aventura comenzará con una pequeña decepción: Las computadoras son inseguras, por más manzanas o ventanas estridentes que posean. Ahora sí, con el peso de lo dicho podemos comenzar a traspasar el umbral de la aventura:

El mundo mágico de Apple

La seguridad de Mac OS X está todavía en pañales. Aunque últimamente se vieron ciertos avances como la inclusión de DEP y ASLR, la frase común que resuena entre los investigadores es que se encuentran en el estado en que Windows estaba hace 5 años.

Lo cierto es que a pesar de los intentos de proteger el sistema operativo, la manzana sigue verde. Un ejemplo de esto es la implementación de ASLR, que en lugar de realizarse por proceso se hace por máquina, lo cual facilita enormemente utilizar la fuerza bruta en ciertos exploits. Por otra parte, ni la heap ni la stack están randomizadas, y lo que es peor, algunas librerías como dyld no han sido randomizadas permitiendo la utilización de técnicas de ROP (Returned Oriented Programming) para saltarse DEP. Mientras tanto, el mercado de usuarios de Apple se incrementa y también el interés de la comunidad de investigadores en explotarlo.

Mac OS X 10.6.6
Immunity, ya desde hace unos años, incluye, dentro de su plataforma de pentesting llamada CANVAS, exploits para las distintas versiones de Mac OS X que fueron llegando al mercado. Desde las viejas miniMac corriendo en procesadores PPC hasta las nuevas Mac Book Pro con Snow Leopard y procesadores Intel de 64 bit.

Hace apenas una semanas, liberamos un exploit - que me daría cierto pudor denominarlo 0day, así que lo voy a llamar -1day-, que resulta una de las razones principales por la cual escribí este artículo en el cual se muestra un ejemplo de uso para tomar control total de una máquina con una versión totalmente actualizada de Mac OS X Snow Leopard.

Iniciando la expedición

Safari fue liberado por primera vez en el 2003 para Mac OS X, y se fue convirtiendo en el browser por defecto de todos los productos de la famosa empresa de la manzana. Si bien tiene su versión para Windows, el mayor afluente de usuarios se encuentra en sus principales productos Mac Book, iPhone y iPad, al punto de pelear cabeza a cabeza con Chrome, el browser de Google, por ser el tercero más usado en Internet.

Originalmente nació como un branch del engine de HTML llamado WebKit y aún en estos días sigue basándose en eso, aunque con cierta incompetencia para estar al día con los últimos parches. Así fue como nació parent_stylesheet, un client-side exploit para Mac OS X que funciona contra la última versión actualizada de Safari.

El bug en sí mismo es un ya bien conocido use-after-free en el Element style, que al ser liberado sigue manteniendo un puntero al StyleSheet. Con un poco de inteligencia, y algo de magia podemos re-llenar esa memoria liberada y conseguir ejecución de código.

CANVAS tiene un módulo específico para este tipo de ataques llamado “clientd”, el cual corre como un Web server y permite automáticamente detectar el browser y sistema operativo que intenta acceder para luego enviar una serie de exploits (uno detrás del otro, ordenados por probabilidad de éxito).

Figura 1: Usando Inmunity CANVAS para atacar un Mac OS X Snow Leopard con clientd

El resto del trabajo queda en nuestra habilidad de presentar un ardid convincente para conducir a nuestras víctimas a visitar nuestra página. Los hombres tienen una marcada tendencia (o quizás, sea simplemente la inercia del mouse) a hacer clic en imágenes de mujeres con poca ropa y dudosa reputación y las mujeres suelen apreciar una buena oferta de zapatos y/o accesorios - o quién sabe qué -.

Figura 2: Servidor web que lanza el exploit y al que se hace navegar a la víctima con Apple Safari

En la Figura 3, ya podemos observar como nuestra víctima no sólo se llevó una terrible decepción al hacer clic en nuestro e-mail, sino que por el mismo precio obtuvimos una shell remota en su computadora.

Figura 3: Shell obtenida en la máquina Mac OS X

En el caso de CANVAS lo llamamos “Nodo” y ésta es una definición abstracta de un agente que permite no sólo tener control total de la máquina sino utilizar CANVAS como si estuviera corriendo en esa misma máquina, permitiéndonos correr exploits locales o “pivotar” y correr exploits contra otras computadoras  de la red desde el Mac OS X que ya se tiene controlado.

Figura 4: Pivotando desde el Mac OS X para atacar otras máquinas de la red

Así es, estimados Odiseos entusiastas de la seguridad, del diseño gráfico y los pantalones de cuero ajustados, hemos llegado al Nostoi de nuestra travesía. Espero haber contribuido a generar un poco de conciencia sobre los peligros que conlleva éste y otros sistemas operativos. Recuerden que pese a que muchos usuarios de Mac OS X no posean antivirus, eso no implica que el sistema sea más seguro como quieren demostrar ciertos argumentos falaces, sino quizás que la comunidad de malware todavía no había posado sus ojos en él.

Hasta la próxima.

Nico Waisman
VP of South America
Immunity, Inc.

1 comentario:

  1. Lástima que el Canvas tenga el precio que tiene ;)
    Buen post!

    ResponderEliminar

Artículos relacionados

Otras historias relacionadas

Entradas populares