viernes, 11 de noviembre de 2011

Mi servidor envía Spam: Crónica de un mes muy negro

Supongo que hay un momento en la vida en que todo webmaster debe enfrentarse a graves problemas en sus páginas web: vulnerabilidades, hackers en busca de BBDD, malware, Sql Injection, FTP comprometidas, etc.. y muchas de las veces por descuido de los propios clientes y su falta de previsión en la seguridad de sus ordenadores.

Pues por primera vez en mi vida he tenido que enfrentarme a un problema "gordo", nada de troyanos que se meten en tu ordenador, te roban las FTP y meten un virus en los códigos de la web de los clientes (este es muy típico en los clientes que pasan de tener un Anti Malware decente como www.malwarebytes.org) o incluso de los osados que navegan sin antivirus...

No, esta vez me jodieron bien (otra vez por culpa de los clientes con poca consciencia del peligro que corren navegando a la tuntún por la red).

Esta es la Crónica de un mes bien negro:

Martes día 11 de octubre: Un buen día un cliente me dice que los correos de Hotmail le vienen rebotados. Primero pensé lo típico "Lo habrá escrito mal". Pero al leer el código de error me encuentro con algo atípico:

"host mx1.hotmail.com[65.55.37.104] said: 550 OU-001(COL0-MC3-F23) Unfortunately, messages from IP XXXXXXXX weren't sent.
Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. (in reply to MAIL FROM command)"

Me quedo flipando. ¿¿Estoy en una blacklist?? Envío un mail a los de soporte del servidor y empiezo a indagar (porque estos lumbreras donde tengo el server son más lentos que el caballo del malo). Descubro a través de http://cbl.abuseat.org que mi IP efectivamente está en una blacklist por spammer, la herramienta http://mxtoolbox.com lo corrobora. Lo primero que pienso es en que algún cliente desaprensivo ha enviado un emailing con 2000 remitentes.. Miro la cola de correo del server y no veo nada anormal.

Miércoles 12 de octubre: Festivo. Los del server no contestan.

Jueves 13 de octubre: Pasa un día y envío dos mails más a los del servidor. NADA. Llamo por teléfono y... NADA.

Viernes 14: Nada. Pasa el fin de semana. Los tíos simplemente me deslistan y los de CBL me vuelven a listar.

Lunes 17 de octubre: por la mañana me cojo el cabreo de mi vida, me cago en todo lo cagable y me dicen que para mirarlo tendrán que cobrarme a 45 euros/hora. Accedo (si me lo dicen el primer día todo eso que nos hubiéramos ahorrado) porque no tengo ni idea de lo que es.

Martes 18: Lo miran y me dicen que hay muchos correos que envían copia a Hotmail (porque el filtro de Spam del servidor se los come todos, tanto spam como correos buenos). Se eliminan las redirecciones, se baja el filtro (para ser más restrictivo) de Spam Assassin y se elimina el "bounce to". Me dan de baja en la black list ... and again!.

Miércoles 19: Volvemos a las andadas. Envío otro email a soporte. Me han de cobrar más. Accedo. Otro día perdido (ya van 8 días en black list con el consiguiente cabreo de clientes que no pueden enviar a Hotmail y a cualquier correo que tiene filtro de spam basado en Spammhaus).
Entonces empiezan a encontrar cositas (a estas alturas estoy ya en 4 listas de spam: barracuda, cbl, swinog, tiopan... cágate!).

"se ha ejecutado un script en php con codigo cifrado, que al ejecutarlo desde web (http://www.dominio.com/img/image.php lanza spam al menos a yahoo.com, segun el log que ha generado en la carpeta /tmp"; "El Script image.php lanzaba procesos de perl. Se han contabilizado 126 procesos perl corriendo del usuario xxxx"

ZASCA! se matan los procesos Pearl y se elimina el archivo (que fue subido por FTP el 7 de octubre). Se deslista de la black list la IP del servidor...

y... viernes 21: vuelvo a estar en black list! ¿Pero que cojones está pasando???? Desespero total, los clientes vuelven al ataque, envío un correo a soporte, y por la tarde a eso de las 17 horas recibo un email del servicio técnico de mi servidor donde se me informa (a media siesta) que tengo 48 horas para solucionar el problema o me "chapan" el server (con 40 proyectos web dentro). Huelga decir que llamé 15 veces, envié 10 emails suplicando... etc. Cuando estaba por cortarme las venas o tirarme por la ventana, llorando de desesperación como una nenaza me llamó la comercial diciéndome que podían volver a mirarlo pero que en fin de semana la tarifa era más alta. Accedo (¿qué opciones tenía?). Y vuelven a indagar...

Viernes 21 a Domingo 23 octubre: Se Revisan los procesos. Detectamos procesos perl. Estos procesos se han generado mediante un script en perl en la carpeta cgi-bin del dominio xxxxxxx.
Este fichero (log.cgi) fue subido por FTP el día 11 de Oct. En esa fecha estaba el usuario FTP ya eliminado del alojamiento.

Este script era lanzado via web.

Trazas web:
access_log:78.159.121.132 - - [21/Oct/2011:13:54:08 +0200] "GET /cgi-bin/test/log.cgi HTTP/1.1" 200 198 "-" "Mozilla/5.0 (compatible; Goooglebot/2.1; +http://www.google.com/bot.html)"
access_log:78.159.121.132 - - [21/Oct/2011:13:54:09 +0200] "GET /cgi-bin/test/log.cgi HTTP/1.1" 200 173 "-" "Mozilla/5.0 (compatible; Goooglebot/2.1; +http://www.google.com/bot.html)"
access_log:78.159.121.132 - - [21/Oct/2011:13:54:09 +0200] "GET /cgi-bin/test/log.cgi HTTP/1.1" 200 173 "-" "Mozilla/5.0 (compatible; Goooglebot/2.1; +http://www.google.com/bot.html)"
access_log:78.159.121.132 - - [21/Oct/2011:13:54:09 +0200] "GET /cgi-bin/test/log.cgi HTTP/1.1" 200 173 "-" "Mozilla/5.0 (compatible; Goooglebot/2.1; +http://www.google.com/bot.html)"

La IP que lanza el script via web, es de Suecia. Y no tiene relación con Google.
http://www.geobytes.com/IpLocator.htm?GetLocation&IpAddress=78.159.121.132

El script tenía el codigo ofuscado y generaba el mismo tipo de log que el previo.
Busqueda de scripts en perl. (Sin coincidencias)
Busqueda de malwares conocido r57, c99, webshell, passthru, shell_exec, base64_decode, edoced_46esab, PHPShell. (Sin coincidencias)
Eliminados phpinfo en alojamientos, puesto facilita información a atacantes.
Eliminado otro script en perl similar al primero (mailcheck.php), en el alojamiento del dominio xxxxxx
Cambiada contraseña del usuario FTP de xxxxx.

Lunes 24: Parece que ya ha pasado el vendaval.

Lunes 27: ¿Otra vez a las andadas? Falsa alarma, no estamos en black list pero Hotmail nos ha metido dentro de su filtro. Se pide el deslistado directamente a Hotmail.

Viernes 4 de noviembre: Otro cliente en otro servidor diferente dice que le rebotan los emails. Nooooooooooo ¿otra vez? no me jodas! Tras la experiencia envío emails a soporte y empiezo a investigar siguiendo las pautas que siguieron en el otro server (por qué todo pasa en viernes cuando ya no hay manera de llamar a nadie del servicio técnico??? Dios!). Tras dos horas de intensa búsqueda encuentro un script en CGI en la carpeta cgi-bin de un dominio. El script se llama dm.cgi (leed esta referencia). Renombro los archivos y cambio usuarios y FTP a la espera de una respuesta por parte del servidor y para que viera qué cojones era eso.

Sábado 5 de noviembre: (igualito que los del otro servidor, vamos). Borran archivos directamente y piden deslistado de la IP. Me informan que dicho archivo fue subido también por FTP a la carpeta cgi-bin.

Lunes 7 de noviembre: todo vuelve a la normalidad. Pido a todos los clientes afectados que pasen a sus ordenadores un antivirus, un antimalware y que pasen por www.pandasoftware.es y pasen el Active Scan para ver los resultados. BINGO! todos tenían virus, troyanos, keyloggers y creo que hasta a Keith Richards tocando "simpathy for the devil"... Dios!

CONCLUSIONES: después de pasar probablemente el mes más malo de mi vida, empastillao hasta las cejas para poder dormir por culpa de los nervios (sólo mis compañeros de www.rentabilizadores.com y mi novia y demás familia y amigos saben por lo que he pasado estos días) he llegado a la conclusión de que:

1) los clientes son el arma de destrucción masiva más chunga que puedes tirarte a la cara.
2) No tengas proyectos web que no sean tuyos y conozcas al dedillo en tu servidor para poder detectar archivos sospechosos a la mínima de cambio.
3) Ten copias en local de todos tus proyectos.
4) Jamás des los datos de FTP a clientes o te la pueden liar.
5) Si tu server ha sido comprometido busca en las carpetas cgi-bin archivos sospechosos como dm.cgi, log.cgi, image.php (este lo encontramos en la carpeta img) o mailcheck.php.
6) No contrates nunca un VPS en xxxxx (este dato lo pondré cuando tenga el servidor completamente migrado a otro sitio), su servicio técnico es lento, MUY lento. O en su defecto ármate de paciencia.

Espero que todo este rollo os sirva de ayuda si habéis caido en esta historia, es algo que no le deseo a nadie porque si no sabes de qué va es para pegarse cabezazos contra la pared. Dicen que de los errores aprende uno... yo preferiría haberlo aprendido en otro sitio y de otra manera, la verdad. Este mes de penas y nervios me ha costado un año de vida pero fijo!

Ah! por cierto, desde Google dicen que esto no afecta al SEO de las web que están en esa IP, que una cosa es la IP de entrega de correo y la otra los proyectos web del servidor y bla bla bla... yo os digo: y una mier***. (Sí que afecta, comprobado).

3 comentarios:

  1. Te comprendo aWebo, yo no he pasado por tanto, pero algo parecido sí, los clientes son muy peligrosos.
    Hay veces que no te suben un script, sino que sus ordenadores infectados se ponen a enviar spam a través de tu servidor de correo. De repente ves cómo la cola de correo se satura y te das cuenta de que algo raro pasa... En ese caso hay que buscar en los logs SMTP el usuario autenticado en el servidor que está enviando tantos correos y caparlo.
    Por cierto, enhorabuena porque sin ser técnico has descrito muy bien todo el problema paso a paso. Además, gracias por escribirlo porque es una guía muy útil de referencia para saber hacia dónde tirar cuando pasan estas cosas.
    Saludos, cabrón.
    byrna.

    ResponderEliminar
  2. Gracias compañero, por lo de cabrón, jajaja.. La idea es que si a alguien le pasa algo similar tenga una guía sobre lo que debe hacer y no se sienta desamparado..

    ResponderEliminar
  3. Te comprendo perfectamente... yo he pasado por eso varia veces... y ahora mismo estoy de nuevo en lo mismo.

    A ver si lo soluciono pronto.

    Un saludo.

    ResponderEliminar