Syslog, ¿amigo o enemigo? Parte I

Hola de nuevo, aquí estamos con otra entrada. A decir verdad, me cuesta un poco la manera de catalogarla si como un ataque en sí mismo o bien como como un ataque que sirva de pantalla a otro. Bueno, principio quieren las cosas, así que vamos a ello.

Vamos a dejar momentáneamente las cuestiones técnicas a un lado para charlar un poco de otros conceptos. Cuando se trata de auditar o realizar un test de penetración no siempre hemos de ir directos contra nuestro objetivo. Esto es, quizás debemos comprometer primero un equipo o sistema y luego desde éste, dirigirnos al objetivo en cuestión. ¿Qué es lo que quiero decir con esto? Que muchas veces deberemos dar un “rodeo” o dar pasos “intermedios” para conseguir nuestro fin. Este es el concepto número 1.

Una vez dentro de ese proceso de “pentesting” una premisa es hacer el menor “ruido” posible para no ser descubierto ya que eso mismo es lo que trataría de hacer un atacante. Un atacante, procurará ser sigiloso, discreto, cauto, no sólo para no levantar sospechas sino para que las distintas medidas y equipos de seguridad no hagan saltar alarmas y delaten su presencia. Obviamente, no empleará configuraciones “por defecto” sino que modificará los parámetros, campos, según sus necesidades. Sin embargo, esto no tiene por qué ser siempre así. Me explico. La idea es que no te detecten, pero esto también puede lograse haciendo mucho ruido y colándote entre la multitud. Imaginemos a un ladrón que ha conseguido burlar las medidas de seguridad de un banco; se hace con el botín; tira una bomba de humo o gas lacrimógeno y hace que todos los clientes entren en “modo pánico” y salgan despavoridos de la oficina, entre ellos, el ladrón. Este es el concepto número 2.

Bueno, se me olvidaba. Para que el ladrón burle las medidas de seguridad una buena opción podría ser suplantar la identidad (spoofear) de algún miembro del personal del banco. Este es el concepto número 3.

Vale, vale, tanto rollo ¿para qué? ¿Qué tiene que ver esto con Syslog? Venga va, ahora sí nos metemos con las cuestiones técnicas.

Syslog es un protocolo con el que podemos hacer que un equipo o sistema (cliente) envíe a un servidor mensajes que informen sobre eventos en él. Entre otras cosas, podría ser:

1.- Acceso correcto o incorrecto al sistema.

2.- Anomalías de algún tipo.

3.- Cambios en las configuraciones.

4.- Errores en los sistemas.

5.- Otros…

Existen servidores de pago y también algunas versiones gratuitas como Free Kiwi Syslog Server u otros que podréis encontrar en Sourceforge. Iros allí y buscar por la palabra, como es lógico, Syslog.

Para esta entrada voy a tener 3 equipos. Un router virtualizado con GNS3, un servidor Syslog con el software Free Kiwi Syslog Server y un equipo con Kali Linux. Estos últimos en máquinas virtuales.

Aquí os dejo una muestra de lo que sería mensaje de un login del usuario “netadmin” al router.

Deshabilitar y habilitar de la interfaz Fastethernet 1/1.

El tipo de mensaje que recibamos irá en función del nivel de aviso que queramos que se nos comunique. A más nivel, mayor control de lo que pasa pero también tendremos más cantidad de mensajes y, dependiendo el número de equipos, que tengamos pues puede llegar a ser un poco caótico.

Esto es yendo a buenas pero ¿qué pasaría si alguien intentase lanzar un ataque para ganar acceso a nuestro equipo mediante la herramienta THC-Hydra?

Por cada intento de conexión recibiremos un aviso.

Una de las posibilidades que nos puede ofrecer el software de servidor Syslog es que cada aviso que recibamos podremos enviarlo a su vez por correo electrónico, lo cual puede llegar a ser de gran utilidad si creamos una cuenta específica para el servidor y recibimos los avisos a nuestro correo. Lo digo no para dar más trabajo sino para esos puestos que requieran hacer guardias o disponibilidad 24×7, etc.

Sin embargo, ¿son todo ventajas? Tal vez no, puede haber algún inconveniente. Eso lo dejamos  para la próxima….

 

 

Avisando con Syslog…

Saber si algo anómalo ocurre en nuestra de red resulta de vital importancia para llevar a cabo una correcta administración de nuestra infraestructura. Estas anomalías pueden venir dadas por una gran cantidad de causas pero por citar algunas podríamos hablar de fallo  de una fuente de alimentación para equipos con redundancia eléctrica, reseteo imprevisto de un dispositivo, intentos de accesos fallidos, etc. etc. etc.

Para tener conocimiento de ello, los equipos de red pueden tener disponible el protocolo Syslog para que, en caso de producirse algún suceso digno de ser notificado, envíen un mensaje de registro a una estación central donde los procese una aplicación y podamos visualizarlo. Existen una gran variedad de herramientas bajo los acrónimos SIEM, SIM y SEM. Alguna de ellas pueden ser Kiwi Syslog Server o algunas con una gran variedad de otras funcionalidades entre las que se encuentran las del registro de estos mensajes como puede ser Cisco Prime Lan Management Solution (LMS).

Pues bien, entre una de mis tareas en mi actual cliente estaba la de configurar esta herramienta para que enviase por correo electrónico las alarmas que el conjunto de administradores creímos más relevantes. Para ello en primer lugar configuramos los equipos para habilitar este protocolo mediante los siguientes comandos

Router(config)#logging on 

Habilitamos syslog a nivel global del equipo

Router(config)#logging 192.168.10.53

Indicamos la IP del host donde se enviarán los mensajes.

Router(config)#logging trap x

Indicamos el nivel a un valor determinado entre 0 y 7. La tabla que figura a continuación establece los niveles configurables. Hay que tener en cuenta según el número que indicamos llevará implícito también los números superiores. Esto es, si elegimos el número 5, recibiremos también los mensajes del nivel 6  y 7.

0 Emergencia: el sistema está inutilizable
1 Alerta: se debe actuar inmediatamente
2 Crítico: condiciones críticas
3 Error: condiciones de error
4 Peligro: condiciones de peligro
5 Aviso: normal, pero condiciones notables
6 Información: mensajes informativos
7 Depuración: mensajes de bajo nivel

Por último: 

Router(config)#service timestamps log datetime

El mensaje llevará consigo una marca horaria.

Una vez configurada la aplicación Cisco Prime LMS con un servidor de correo, cuenta de usuario, dirección de envío, etc. estaría listo para recibir correos con el siguiente contenido:

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 10 23:17:53 switch-0001.dominiopruebas.net 2013 Feb 10

23:17:52 GMT +01:00 %SYS-2-PS_FAIL: Power supply 2 failed 

En este caso el mensaje nos dice que la fuente de alimentación (PS, Power Supply) número 2 del switch con nombre switch-001, ha fallado. El mensaje ha sucedido a las 23:17:52 y la aplicación ha mandado el correo a las 23:17:53, un segundo más tarde.  Cabe destacar que se trataba de un switch Cisco 6509-E que poseen dos fuentes de alimentación redundantes, vamos que no estamos hablando de un 2960…

Suponiendo  que a la mañana siguiente nos damos cuenta de ello y la cambiamos por otra nueva, recibiremos el siguiente:

Syslog message generated from device switch-0001: Feb 11 08:15:22 switch-0001.dominiopruebas.net 2013 Feb 11 08:15:21 GMT +01:00 %SYS-2-PS_OK: Power supply 2 okay

Como os habréis podido imaginar los datos horarios son falsos, en realidad lo que hice fue apagarla para ver si lo que había configurado iba bien.

Pero como mi mente es algo inquieta, pensé en lugar de simular una un fallo de hardware fuese víctima de un ataque, por ejemplo de un CAM overflow. Hay más información aqui.

Así que preparé mi Backtrack, configuré el switch  igual que otro cualquiera, lo conecté a la red y venga.

Eché mano de la aplicación macof. Macof lo que hace básicamente es generar tramas con direcciones MAC de origen aleatorias de tal manera que por cada trama que entre en el switch la incluirá en la tabla CAM. Al ser todas distintas la tabla CAM se irá llenando, hasta que al final se sature, porque obviamente la memoria tiene un límite. ¿Y qué pasa cuando eso ocurre? Pues que el switch podría comportarse como un hub. Aparte de ello, también lancé un ataque con THC Hydra similar a lque explico en mis entradas Mejorando acceso por SSH (Parte I) y Mejorando acceso por SSH (Parte II)

Vamos que entre el llenado de la memoria más la carga en la CPU… iba bien servido. Así que lo dejé. Pues bien al cabo de un par de minutos empecé a recibir los siguientes correos:

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001:: Feb 11 16:46:51 switch-0001.dominiopruebas.net 20: Feb 11 15:46:51: %PLATFORM-1-CRASHED: System previously crashed with the following message:

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 21: Feb 11 15:46:51: %PLATFORM-1-CRASHED: Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(50)SE5, RELEASE SOFTWARE (fc1)

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 22: Feb 11 15:46:51: %PLATFORM-1-CRASHED: Technical Support: http://www.cisco.com/techsupport

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 23: Feb 11 15:46:51: %PLATFORM-1-CRASHED: Copyright (c) 1986-2010 by Cisco Systems, Inc.

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 24: Feb 11 15:46:51: %PLATFORM-1-CRASHED: Compiled Tue 28-Sep-10 13:44 by prod_rel_team 

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 25: Feb 11 15:46:51: %PLATFORM-1-CRASHED:  

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 26: Feb 11 15:46:51: %PLATFORM-1-CRASHED: Debug Exception (Could be NULL pointer dereference) Exception (0x2000)!

Mensaje generado automáticamente por la aplicación Cisco LMS

Syslog message generated from device switch-0001: Feb 11 16:46:51 switch-0001.dominiopruebas.net 28: Feb 11 15:46:51: %PLATFORM-1-CRASHED: SRR0 = 0x010469F0  SRR1 = 0x00029230  SRR2 = 0x006548A4  SRR3 = 0x00021000

Resultan claras las palabras %PLATFORM-1-CRASHED: Luego el equipo se reinició y como el ataque continuaba pues vuelta a empezar, y a los dos minutos ¡catapum!, otra vez reinicio y así hasta parar.

Como vemos resultan muy útiles estos protocolos. La verdad que la herramienta de Cisco que pongo como ejemplo es una maravilla, como maravilla es lo que cuesta su licencia. La verdad que para la red que administramos es muy necesaria y el gasto se justifica, no tanto en otros entornos más pequeños. En cualquier caso lo que pretendo hacer ver es los mecanismos de los que podemos disponer para estar avisados en el caso de que algo raro suceda.

Espero haya sido interesante.

Un saludo, seguiremos informando