Publi

Cómo localizar ese script en PHP que no para de enviar spam…

photo-1424296308064-1eead03d1ad9

Si administras un servidor en el que hay varias webs alojadas, tal vez te hayas encontrado alguna vez con envíos de correos indiscriminados en el servidor. O tal vez, tu proveedor de hosting te haya avisado de actividad maliciosa o ilegal por tu parte. Muchas veces se trata de un script malicioso que se ha instalado en el servidor que utiliza la función mail() de PHP, que a su vez llama al programa sendmail del sistema para el envío masivo de correos electrónicos.

Posibles causas de la infección

Puede ser porque:

  • No nos hemos dado cuenta y nos hemos descargado una aplicación con malware.
  • Una aplicación de nuestro servidor es vulnerable y alguien con malas intenciones ha podido subir un archivo en el sistema, tanto a través de un script como por FTP o utilizando cualquier otra técnica.
  • Alguna de las aplicaciones de nuestro servidor ha sido vulnerable y el código malicioso se ha propagado a todos los directorios visibles.

Lo bueno es que, si el script es accesible por web, los privilegios con los que se ejecutará el código malicioso serán los que tenga el usuario del servidor web (www-data, por ejemplo), por lo que si nuestro servidor está bien configurado, dicho programa no podrá acceder a sitios a los que el usuario del servidor web no pueda, y eso es bueno. Al menos, no podrá acceder fácilmente a ciertas contraseñas, archivos de sistema, incluso propagarse por scripts de otros usuarios.

Puede hacer muchas más causas, el caso es que el código malicioso suele estar cifrado, y el archivo se descifra siempre que se ejecuta, como esto que pongo a continuación (hay muchos scripts como este, más o menos dañinos, pero la forma suele ser parecida):
Screenshot 17-07-2016-210706

Casi siempre, el único cometido del script es propagarse por el servidor y enviar correo basura desde la máquina actual.

Repercusiones de todo esto

Bueno, no está bien que alguien coja nuestro ordenador para sus fines y si utilizan nuestro servidor para enviar correo, normalmente notaremos:

  • Menor rendimiento en el servidor (tanto CPU como ancho de banda)
  • Los archivos de log crecerán mucho
  • En ocasiones recibiremos mucho más correo no deseado de lo normal
  • Puede que nuestro proveedor de hosting contacte con nosotros en todo amenazante (por si somos nosotros los que lo causamos)
  • Si tenemos un servidor de correo legítimo en dicha máquina, los mensajes que se manden desde ahí poco a poco serán detectados como no deseados por los demás servidores.

Lo malo, es que si hay varias decenas de aplicaciones web en el servidor, es muy difícil detectar dónde está el problema (porque se pueden llevar a enviar varios mails por segundo y afectar a todas las webs de un servidor).

Medidas que podemos tomar: Desactivar el correo saliente

Si utilizamos postfix, podemos tomar una medida preventiva, para evitar que sigamos haciendo daño enviando correo no deseado. También es verdad que con esto evitaremos que se envíen correos originarios del servidor web por lo que tal vez otras webs también se vean afectadas por esto. Aunque es una buena medida para evitar un mal mayor.
Para este ejemplo el usuario del servidor web es www-data. Debemos editar /etc/postfix/main.cf y añadir al final la siguiente línea:

authorized_submit_users = !www-data, static:all

Tras esto, reiniciamos el servidor postfix. Al menos evitamos que se sigan enviando correos. Ahora deberíamos ver que Apache en su log de errores tendrá muchos errores como este:

sendmail: fatal: User www-data(33) is not allowed to submit mail

Medidas que podemos tomar: pasar un antivirus

Si disponemos de él, nunca está de más pasar un antivirus por nuestro servidor, ya que son capaces de detectar varios tipos de amenazas, incluso scripts maliciosos, aunque otras veces esto no tiene ningún efecto. Yo he probado con clamav, es importante tenerlo actualizado. Fue capaz de detectar muchos de los scripts maliciosos que había alojadas, aunque no todos.

$ clamscan -r –quiet /ruta/a/explorar/

Si no dice nada, no hay nada, cuando se queja es cuando encuentra cosas.

Medidas que podemos tomar: localizar el script malicioso

Para ello, debemos editar el archivo php.ini que utilice nuestro servidor (depende de si estamos utilizando módulo de Apache, CGI, FPM…), suelen estar en /etc/php/ , /etc/php5/ o rutas similares.
Ahí, podemos añadir al final unas líneas, o también buscar y modificar la configuración:

mail.add_x_header = On
mail.log = /tmp/phpmail.log

Con mail_add_x_header, el correo añadirá una línea X-PHP-Originating-Script en el que se indica qué script es el culpable. Y con mail.log escribimos un informe de todos los correos enviados por PHP. Este los podríamos ponerlo en /var/logs/ aunque tal vez el servidor web no tenga permiso para escribir ahí, por lo que podemos optar por crear un directorio en el que sí tenga permisos, o directamente ir a /tmp/ puesto que es una solución temporal.

Con esto, PHP generará un mensaje como este cada vez que se vaya a enviar un mensaje:

[24-Jul-2016 21:16:49 Europe/Berlin] mail() on [/ruta/del/script/nodeseado.php:2]: To: uncorreo@unserver.com — Headers:

Y con esta información, ya tenemos lo necesario para detectar dónde está el malo (o los malos). Sólo nos queda tomar las medidas pertinentes, borrar los scripts, aplicar cuarentena, etc.

Foto principal: Nicolai Berntsen

También podría interesarte....

There are 16 comments left Ir a comentario

  1. Miguel /
    Usando Mozilla Firefox Mozilla Firefox 47.0 en Ubuntu Linux Ubuntu Linux

    Voy a probarlo y te diré algo :), pero me parece genial la explicación.

    1. Gaspar Fernández / Post Author
      Usando Mozilla Firefox Mozilla Firefox 47.0 en Ubuntu Linux Ubuntu Linux

      Eso espero, pruébalo y me cuentas, yo conseguí bloquear el script en el servidor de un cliente, aunque como se niega a quitar o actualizar la aplicación, cada dos por tres vuelven a entrar infecciones parecidas…

  2. Pingback: Cómo localizar ese script en PHP que no para de enviar spam… | PlanetaLibre /

  3. maria /
    Usando Google Chrome Google Chrome 63.0.3239.132 en Windows Windows NT

    Yo tengo este problema de envío masivo hacia emails pp.com en mi web creada con wordpress y OVH directamente me ha cancelado el alojamiento. intento limpiar pero no consigo localizar el script, así que cada vez que reinstalo mi sitio, me vuelven a anular el alojamiento y vuelta a empezar…

  4. Andrew Mark /
    Usando Google Chrome Google Chrome 116.0.0.0 en Windows Windows NT

    This is an excellent post I seen thanks to share it. It is really what I wanted to see hope in future you will continue for sharing such a excellent post.
    Johnny Lawrence Jacket

  5. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    You’ve got the golden ticket to the world of the biggest web slots. Fantastic. สล็อตค่ายใหญ่

  6. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    I just idea it might be a plan to post incase any other person was having issues inquiring about yet I am somewhat uncertain in the event that I am permitted to put names and addresses on here. pasar123 slot

  7. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    I can suggest essentially not too bad and even dependable tips, accordingly see it: 먹튀커뮤니티

  8. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Long-lasting slots make a significant difference in user satisfaction. สล็อตเว็บตรง แตกง่าย

  9. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Incredible tips and straightforward. This will be exceptionally helpful for me when I get an opportunity to begin my blog. แหล่งรวมสล็อตทุกค่าย

  10. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Recognizes for paper such an advantageous creation, I lurched adjacent to your blog other than decode a restricted report. I need your system of engraving… 블로그

  11. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    You bear through a wonderful opening. I rational soundness unquestionably quarry it besides by and by propose to my buddys. I am reserved they assurance be profited from this scene. เว็บสล็อตโรม่า

  12. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Effectively, the article is really the best point on this registry related issue. I fit in with your decisions and will energetically anticipate your next updates. เกมป๊อกเด้งออนไลน์

  13. jsimitseo /
    Usando Google Chrome Google Chrome 121.0.0.0 en Windows Windows NT

    Such an especially significant article. To a great degree charming to examine this article.I should need to thank you for the undertakings you had made for creating this astonishing article. concierge doctor naples

  14. WilliamSEO /
    Usando Google Chrome Google Chrome 121.0.0.0 en Windows Windows NT

    I am continually hunting on the web down storys that can oblige me. There is clearly a numerous to comprehend about this. I feel you made couple of salubrious focuses in Attributes additionally. Confine occupied, amazing profession! สล็อตเว็บตรง แตกง่าย

  15. Rank Xone /
    Usando Google Chrome Google Chrome 122.0.0.0 en Windows Windows NT

    Good subject, comparative writings are I don’t know whether they are on a par with your work out. 123b

Leave a Reply