seguridad Tecnologías de Seguridad
Honeypots Gabriel García
[email protected]
Hoy haremos algunos apuntes sobre seguridad y detección de intrusos en general y más en particular sobre los honeypots o tarros de miel, que es una de las tecnologías de seguridad con más auge en este momento. Primero haremos una introducción teórica para aprender los conceptos básicos necesarios y luego veremos cómo podemos aplicar éstos a una instalación Linux y ver los resultados para experimentar con ellos. ¿Cómo podemos defendernos contra un enemigo, que no vemos y ni siquiera sabemos quién es?
L
a seguridad siempre ha sido un punto alto de los sistemas *nix, eso no quiere decir que equipos con UNIX, Linux o sus variantes no sufran ata- • ques, no solamente los sufren, sino que algunas veces tienen éxito debido a vulnerabilidades existentes, malas configuraciones o ataques internos.
Tarros de miel
cada movimiento del atacante para usar esta información y crear perfiles de los mismos. Para producción: se usan para proteger a los verdaderos servidores y desviar la atención de los atacantes. De esta manera se disminuye la superficie de ataque de los intrusos.
Otra división que suelen tener los honeypots es en base al La idea atrás de los honeypots es simple: mostrar a los ata- grado de interacción con el usuario, aquí nuevamente tenecantes un sistema virtual que parezca el sistema real, de esa mos dos tipos: manera los ataques se efectuarán sobre ese sistema sin causar ningún daño al sistema real. Es el software o hardware • Alta interacción: se usan sistemas complejos que recrean (computadoras) cuya intención es atraer (como la miel) a los un sistema completo con sistema operativo y aplicacioatacantes simulando ser sistemas débiles o con fallas de segunes reales, en este caso no hay emulación, quien entre ridad no del todo evidentes, pero si lo suficiente para atraerlos encontrará un gran sistema para interactuar, de esta may ser un reto para sus habilidades de intrusión. nera se pueden estudiar mejor las actividades de quienes ingresan al mismo. Estos sistemas requieren más trabajo Tipos de honeypots de implementación y solamente son usados por grandes Podemos dividir los honeypots en dos tipos: organizaciones que disponen de los recursos necesarios para hacerlo. • Para investigación: se usan para recolectar información • Baja interacción: en este tipo la interacción con el usuasobre los movimientos de los intrusos, o sea se registra rio es mucho menor y se limita por lo general a emular
18
Linux+ 11/2007
seguridad Tecnologías de Seguridad base de datos o situaciones para atraer atacantes.
Desventajas •
•
Solamente podemos ver lo que pasa con los honeypots, ya que las actividades a las que estamos registrando son sobre este sistema y nada podemos hacer sobre sistemas vecinos. Como toda nueva tecnología usada, se agregan riesgos inherentes a ellas y pueden llegar a ser usados para nuevos y diferentes ataques.
Usos de los honeypots
Los honeypots son muy flexibles por lo que el campo de acción es bastante grande, dependiendo de la configuración podemos llegar a tener tres tipos de usos:
Figura 1. Instalando honeyd en Ubuntu Linux
servicios. Son rápidos y fáciles de implementar por lo que, en general, son los más utilizados.
Ventajas •
•
Los honeypots no requieren gran hardware, ya que solamente registran datos cuando son accedidos y se pueden con- • figurar para sólo registrar ciertos tipos de eventos, de esta manera los responsables de la seguridad no se ven sobrepasados con registros de miles de líneas que muchas veces son difíciles de ana- • lizar. Se pueden reducir las falsas alertas, es • decir, muchas veces ciertos eventos que suceden a menudo suelen ignorarse de
la misma manera que cuando suenan las alarmas de los autos en un estacionamien- • to, la mayoría de la gente cansada de las alarmas empieza a ignorarlas creando una falsa alarma o falso positivo. Todo acceso a un honeypot por definición es no autorizado, por lo tanto no hay que obviarlo. Detección de falsos negativos, es decir, se pueden detectar nuevos y desconocidos ataques, ya que todo acceso, como dijimos antes, es una anomalía y debe ser analizada. Trabajan con nuevas tecnologías como SSH, IPSec, SSL e Ipv6. • Nivel de flexibilidad, se pueden adaptar casi a cualquier situación y recrear cualquier ambiente y de esta manera ofrecer
•
Figura 2. Honeyd corriendo en nuestro sistema
www.lpmagazine.org
Detectar ataques: la detección suele ser una tarea difícil, se colecta demasiada información que después es difícil de analizar y se vuelve tediosa, a la vez es difícil de distinguir cual es la actividad normal del día a día del trabajo y la que se puede atribuir a algún atacante. Con los honeypots se pueden reducir las falsas alarmas al capturar poca cantidad de información de las actividades de los atacantes, en general se usan honeypots de baja interacción para las tareas de detección. Prevenir ataques: los honeypots pueden ayudar a prevenir ataques de muchas maneras, un ataque común es el automatizado, que son gusanos que revisan redes en busca de vulnerabilidades y si encuentran un sistema vulnerable, éste es atacado y tomado, en general esto sucede replicándose en la red haciendo copias de sí mismo tanto como pueda. Un honeypot puede reducir la velocidad de este proceso e incluso llegarlo a detener, este tipo de honeypot es llamado sticky honeypot (tarro de miel pegajoso) y es el encargado de interactuar con el atacante haciéndolo más lento, para ello se usan una variedad de trucos sobre el protocolo TCP, como un tamaño de ventana de longitud cero u otros. Responder ataques: en grandes sistemas, una vez detectado un ataque, éste puede ser respondido, pero no siempre es la mejor medida a tomar, no sabemos quienes atacan a nuestros equipos y que propósitos tienen, por lo que a veces, es mejor esperar a obtener mayor información
19
seguridad Tecnologías de Seguridad
Listado 1. Archivo de configuración honeyd.conf
route entry 10.0.0.1 route 10.0.0.1 link 10.0.0.0/24 route 10.0.0.1 add net 10.1.0.0/16 10.1.0.1 latency 55ms loss 0.1 route 10.0.0.1 add net 10.2.0.0/16 10.2.0.1 latency 20ms loss 0.1 route 10.0.0.1 add net 10.3.0.0/16 10.2.0.1 latency 20ms loss 0.1 route 10.1.0.1 link 10.1.0.0/24 route 10.2.0.1 link 10.2.0.0/24 route 10.2.0.1 add net 10.3.0.0/16 10.3.0.1 latency 10ms loss 0.1 route 10.3.0.1 link 10.3.0.0/16 create routerone set routerone personality "Cisco 7206 running IOS 11.1(24)" set routerone default tcp action reset
add routerone tcp port 23 "scripts/router-telnet.pl" create routertwo set routertwo personality "Cisco 762 Non-IOS Software release 4.1(2) or 766 ISDN router"
set routertwo default tcp action reset
add routertwo tcp port 23 "scripts/router-telnet.pl" # Example of a simple host template and its binding create default
set default personality "FreeBSD 2.2.1-STABLE" set default default tcp action reset
add default tcp port 80 "sh scripts/web.sh"
add default tcp port 22 "sh scripts/test.sh" add default tcp port 113 reset add default tcp port 1 reset create allopen
Investigación
set allopen personality "NetBSD 1.5.2 running on a Commodore Amiga (68040 processor)"
set allopen default tcp action open
add allopen tcp port 80 "sh scripts/web.sh" add allopen tcp port 113 reset add allopen tcp port 1 reset create template
set template personality "Check Point FireWall-1 4.0 SP-5 (IPSO build)"
add template tcp port 80 "sh scripts/web.sh"
Los honeypots, como hemos dicho anteriormente, pueden ser usados para propósitos de investigación, que en sí es muy valiosa, al ser éstas una carencia de toda organización hoy en día: ¿quienes nos atacan y qué quieren? De esta manera se aprende más sobre los atacantes, sus motivaciones y otras cosas que los rodean, como qué valor le dan a cada tipo de información que encuentran.
Experimentando un poco...
add template tcp port 23 block
Ahora vamos a ver en acción un poco de todo lo que hablamos acerca de los honeypots, para ello instalaremos uno de los tantos programas que hay disponibles, como siempre hay alternativas abiertas y propietarias, gratuitas y pagas. Yo usaré honeyd, que está disponible para Linux, Unix y Windows, y es gratuito (http:// www.honeyd.org). En este caso estoy usando Ubuntu y para instalarlo es bastante sencillo ya que se encuentra en los repositorios, para ello, iremos al menú [Sistema]–>[Administración]–>[Synaptic], como vemos en la Figura 1, buscaremos honeyd
add template tcp port 22 "sh scripts/test.sh" set template default tcp action reset set template uid 32767
bind 10.0.0.1 routerone bind 10.1.0.1 routertwo bind 10.2.0.1 routertwo bind 10.3.0.1 routerone bind 10.1.0.2 template bind 10.0.0.10 allopen bind 10.2.0.5 allopen
20
o como sucede a menudo, los sistemas no pueden detenerse para analizar daños y realizar un examen exhaustivo de que ha sucedido, esto pasa con servidores web o de correo electrónico, en donde toda la organización depende de esos servicios y el tiempo fuera de servicio de los mismos es crítico. Otro problema es que si el sistema es puesto fuera de servicio, tendremos muchísima información a analizar (ingreso de usuarios, correos enviados y leídos, archivos escritos, accesos a base de datos) que son el resultado de la operación normal de cualquier sistema pero donde se nos hace muy difícil separar esa actividad de las de un atacante. Los honeypots pueden ayudarnos a resolver estos problemas en forma fácil y rápida ya que es sencillo poner el sistema fuera de línea para un análisis detallado sin necesidad de tocar nada en los sistemas de producción. Esto es posible porque en los honeypots la única información que se almacena es la sospechosa, de ahí surge que la cantidad de información a analizar es mucho menor y casi de seguro que de un atacante. Con esta información de las herramientas y procedimientos usados por los atacantes se aumentan las posibilidades de que un contraataque tenga éxito. Para este tipo de uso los honeypots de alta interacción son los usados.
Linux+ 11/2007
seguridad Tecnologías de Seguridad
Figura 3. Herramientas de red
en la lista de software disponible y marcaremos tal como se ve, pulsamos Aplicar y esperamos que se termine la instalación. Ahora que tenemos instalado el demonio honeyd procederemos a configurarlo para su primer uso, abriremos una ventana de terminal yendo a [Aplicaciones]–>[Accesorios] –>[Terminal]. La configuración del mismo se encuentra en el directorio /etc/honeypot bajo el archivo honeyd.conf, podremos editarlo con el siguiente comando:
Figura 4. El servidor virtual nos responde
Editamos el archivo y guardamos, ahora ten- sudo honeyd -d -p /etc/honeypot/ dremos que hacer lo siguiente para ejecutar el nmap.prints -f /etc/honeypot/ demonio honeyd: honeyd.conf -i lo 10.0.0.0/8 sudo route -n add -net 10.0.0.0/8 lo
luego ejecutaremos: sudo nano /etc/honeypot/honeyd.conf
Como la mayoría de nuestras PCs cuentan con una sola interfaz de red, usaremos la siguiente configuración para correr honeyd en la interfaz loopback (127.0.0.1), en el archivo de configuración tenemos que usar el texto que muestra el Listado 1. Este archivo puede descargarse desde este enlace si no desean tipear el texto: http://www. honeyd.org/config/config.localhost Antes de editar el archivo es recomendable realizar una copia de seguridad de la siguiente manera: sudo cp /etc/honeypot/honeyd.conf /etc/honeypot/honeyd.conf.bak
P
U
sudo honeyd -d -p /etc/honeypot/ nmap.prints -f /etc/honeypot/ honeyd.conf -i lo 10.0.0.0/8
Con esto último ya tendremos corriendo nuestro honeypot como vemos en la Figura 2. Uso el parámetro -d porque no quiero que corra como demonio de fondo así me muestra los mensajes en la consola. Los parámetros -p y -f solamente dicen que use esos archivos para las huellas y la configuración, tomen nota que como estoy parado en el directorio /etc/honeypot no uso el camino completo a esos archivos, si no es así los debería poner para que sean encontrados de esta manera: B
L
I
C
www.lpmagazine.org
I
D
Nota: Podremos agregar este demonio en Ubuntu para que se ejecute en cada inicio del sistema yendo a este menú: [Sistema]–>[Preferencias] –>[Sesiones]–>[Programas de inicio]. Ahora vamos a ver como se ve nuestro servidor virtual, para ello usaremos algunas herramientas de red, en este caso la distribución Ubuntu tiene incorporada varias bajo un mismo programa, esto es en el menú [Sistema] –>[Administración]–>[Herramientas] de red, como vemos en la Figura 3. Por ejemplo vamos a hacer un ping a una dirección de esa red a ver qué pasa, podemos usar la consola si lo deseamos: ping 10.3.0.10
Como vemos en la Figura 4 el falso servidor nos responde, o sea está funcionando normalmente. La siguiente prueba es hacer un escaneo de puertos y ver qué servicios ofrece nuestro A
D
21
seguridad Tecnologías de Seguridad nuevo servidor, para eso en el programa de herramientas de red vamos a la viñeta Port Scan y ponemos la dirección 10.3.0.10, lo que nos devuelve 2 puertos abiertos, el 22 (ssh) y el 80 (www), que son los dos que hemos configurado en el archivo de configuración. Hay otro archivo importante en el honeyd que es el nmap.prints, este archivo NO lo vamos a editar pero a modo informativo les digo que es el que guarda las huellas de nmap. Nmap usa este archivo para validar el sistema operativo de un equipo remoto y honeyd lo usa para emular la pila de protocolos IP para ese sistema operativo, de esta manera podremos ir actualizando nuestro programa con nuevos sistemas operativos. Nota: los diferentes scripts están configurados para escribir los resultados dentro del directorio /var/log/, quizás necesiten permisos de escritura de acuerdo a si corremos el demonio como root o no, en caso que necesitemos darle permisos de escritura podremos ejecutar el siguiente comando en la consola: chmod 777 directorio
Figura 5. Escaneo de puertos
Si desean una explicación sencilla sobre permisos pueden ir a este enlace: https://help.ubuntu. com/community/FilePermissions.
Otros servicios
Podemos configurar honeyd para ejecutar otros servicios como telnet o servidores web como Apache o IIS, la instalación de honeyd instala muchos scripts en el directorio /usr/share/ honeyd/scripts, allí podremos ver cual se ajusta a lo que queramos hacer y podremos editarlos para conseguir un comportamiento diferente. Incluso hay scripts para simular ataques de virus conocidos u otros sistemas operativos, como vemos el abanico de posibilidades es enorme, solamente resta experimentar y ver cuales nos pueden ser más útiles. Por ejemplo usaremos el script del ruteador de telnet, éste se encuentra en /usr/share/ honeyd/scripts/router-telnet.pl, noten que este script está hecho en Perl (esto no es problema ya que en la mayoría de las distribuciones Linux se incluye el intérprete de Perl), para usarlo editaremos nuestro archivo honeyd.conf (recuerden que está en /etc/honeypot) y en la línea 26 agregaremos una nueva línea y pegaremos lo que sigue:
Figura 6. Ingreso al servidor virtual telnet
add default tcp port 23 "perl /usr/ share/honeyd/scripts/router-telnet.pl"
En la consola donde estamos corriendo honeyd podremos pulsar Ctrl+C para cerrarlo
Figura 7. Servidor de telnet funcionando
22
Linux+ 11/2007
seguridad Tecnologías de Seguridad •
•
•
• •
-M días: Tiempo máximo en días a partir del último cambio de la contraseña (Maximum). -W: Días de antelación con que se ha de avisar al usuario de que su contraseña va a caducar (Warning). -I: Días que transcurren desde que caduca la contraseña del usuario hasta que la cuenta queda bloqueada (Inactive). -d días: Número de días desde enero 1 de 1970 que la contraseña fue cambiada. -E días: Especifica la fecha en la cual la cuenta es bloqueada, en el formato YYYYMM-DD. También se puede usar el número de días transcurridos desde enero 1 de 1970 en lugar de la fecha.
Expiry Comprueba y fuerza la política de expiración de contraseñas.
Figura 8. Salida del comando last
y volverlo a ejecutar y así cargar la nueva atacante no tiene formar de saber si está acce- Last configuración: diendo a un sistema real o no. Muestra la última vez que se conectó un usuario. Este comando toma la información que sudo honeyd -d -p /etc/honeypot/ Otros comandos útiles saca en pantalla del archivo /var/log/wtmp. nmap.prints -f /etc/honeypot/ Como anexo a nuestro artículo sobre seguridad, honeyd.conf -i lo 10.0.0.0/8 pondré algunas sugerencias de seguridad que Logoutd siempre convienen tener a mano: logoutd fuerza las restricciones de hora de acceAhora podremos abrir otra ventana de consola so y puerto especificadas en /etc/porttime. y ejecutar nuestro cliente telnet de esta manera Chage a ver que pasa: Permite cambiar el password y los datos del Lastlog usuario. Opciones del comando chage: se ob- Formatea y muestra el contenido del registro de telnet 10.3.0.10 23 tienen toda una lista de los parámetros actuales último acceso /var/log/lastlog. Muestra el nomde tiempo de la cuenta del usuario deseado : bre con el que se ha accedido, puerto y hora del Como vemos en las imágenes 6 y 7, el servidor último acceso. virtual nos responde a nuestra petición y nos • -m días: Se indica el tiempo mínimo de presenta la pantalla de bienvenida y el login de días que deben transcurrir para que un Resumen ingreso al sistema. No hay diferencia con una usuario pueda cambiar su contraseña (Mi- Como hemos visto, los honeypots ofrecen un pantalla de ingreso real por lo que el presunto nimum). gran potencial en la protección de sistemas y el aprendizaje de las técnicas usadas por los atacantes a los mismos, su uso está creciendo día a día. Pero como siempre se ha visto, el tema de la seguridad es inagotable y siempre surgen nuevas técnicas a medida que las actuales van quedando obsoletas.
Sobre el autor Gabriel García es Licenciado en Sistemas de la Universidad CAECE en Argentina. Fundador de la compañía de diseño y programación web CrystalSys (www.crystalsys.com.ar), con más de 10 años de experiencia en la informática, programación en varios lenguajes y en diferentes plataformas para diferentes compañías alrededor del mundo.
Figura 9. Salida del comando lastlog
www.lpmagazine.org
23