Limpiando sites infectados con un sólo comando en Linux



Justo hoy me dicen que uno de mis sites estaba infectado, los redirigía a una url, como siempre pasa en estos casos los que crean las inyecciones en sitios web saben que los dueños o usan Firefox o Chrome, entonces en el javascript inyectado detectan que navegador usás.

Si es con alguno de esos, no se "muestra", si es con, por ejemplo, Internet Explorer, activa la maldad. Ahora bien, mis lectores con IE no son más que el 10% por lo que, para colmo, había menos chances de que me entere.

Miro y veo que TODO archivo .php del servidor estaba infectado, habían logrado colar un típico "admin" ofuscado gracias a una vulnerabilidad de Wordpress en un theme de uno de los sitios, si, tanta mala suerte como para que in vivaracho aparezca por ahí y lo infecte.

Una vez adentro con un simple script se puede infectar todo archivo que controle el usuario y así lo hicieron, cada .php tenía un código extra en el encabezado que, para evitar ser fácilmente detectado, está codificado en BASE64, pero a esta altura no es tan difícil verlo, donde hay un eval(base64_decode(" en algún lado ya sabemos que nos dejaron un regalito extra.

Pero ¿cómo removerlo de veinte sitios a la vez? si en promedio cada uno tendrá 400-500 archivos tenía que reemplazar algo así como 10.000 archivos y sin romper nada, pues bien, para eso está el shell de Linux.

Una de las genialidades que más cuesta aprender de los sistemas Unix es la capacidad de concatenar comandos, así en una mísma sentencia podemos buscar, reemplazar y guardar lo que encontremos, miren este ejemplo:



Con eso estoy buscando cada archivo PHP y dentro de cada uno la parte característica que representa el probelma, luego lo reemplazo por la nada mísma y guardo.

Se toma su tiempito, tiene que buscar recursivamente en todos los directorios pero en dos minutos tenía todo resuelto.

Ahora a emparchar un theme, un maldito theme, que dejó el hueco ¿ven por qué odio usar wordpress? cero control, demasiado expuesto

Más ejemplos aquí y aquí

Otros posts que podrían llegar a gustarte...

Comentarios

  • Esas son las genialidades que fui aprendiendo gracias al laburo y que si bien las uso más en UNIX, comparten la mayoría de comandos con Bash y de esa manera podés armar semejante despelote de comandos hermosos que hacen las tareas mucho más sencillas.

    Buenísimo el tip!

    Saludos!

    • Responder
    • Citar
    • Comentado:
  • Che, escrachá el theme vulnerable al menos Guiño

    Saludos

    • Responder
    • Citar
    • Comentado:
  • Consejo:
    Guardate los errores por las dudas.

    $ find ./ -name "*.php" -type f | xargs sed -i ´s#<?php /\*\* eval(base64_encode("aWY.*?>##g´ 2>error.log

    • Responder
    • Citar
    • Comentado:
  • Marvin    

    Corrección

    Es una sola linea de comandos, pero comandos son varios... a no confundir

    • Responder
    • Citar
    • Comentado:
  • Lelale    

    Lo que me llama la curiosidad ¿Cuanto tiempo tuviste que investigar para que te solucione el problema? :D
    Habrá tardado dos minutos, pero el tiempo que gastaste en investigar también hay que contarlo y cobrárselo al HDP que te puso eso.
    PD: Si te ilumina la Pacha Mama, Dios o ET y lo encontrás, está como para arruinarle cualquier dato que tenga en línea

    • Responder
    • Citar
    • Comentado:
  • Fabio    

    Lelale dijo:

    Lo que me llama la curiosidad ¿Cuanto tiempo tuviste que investigar para que te solucione el problema? :D
    Habrá tardado dos minutos, pero el tiempo que gastaste en investigar también hay que contarlo y cobrárselo al HDP que te puso eso.
    PD: Si te ilumina la Pacha Mama, Dios o ET y lo encontrás, está como para arruinarle cualquier dato que tenga en línea


    fue rápido, cuando me fui dando cuenta que estaban todos los .php infectados simplemente comencé a buscar cómo hacerlo, a otro seguro ya le había pasado y como tenía bastante info sobre el malware fue más fácil encontrarlo.

    más allá de eso, otra facilidad es el hecho de tener acceso SSH al servidor, cosa que la mayoría de la gente no tiene por lo que deben descargar tooodo el código fuente de su site, limpiar y volver a subir o, subir toda una versión nueva y pisar la anterior

    • Responder
    • Citar
    • Comentado:
  • Marvin    

    El tanque es un Merkava III si no estoy equivocado, raro que la ametralladora esté tan adelante, salvo que sea de otro vehiculo que esté detrás del tanque.

    • Responder
    • Citar
    • Comentado:
  • Nicasius    

    aburrriiidddoooooo!!!!!!!!

    • Responder
    • Citar
    • Comentado:
  • Fabio.. una pregunta.. vos no tenes backupeados tus sitios webs en algun lado??

    Digo.. yo trabajo en .net y hago aplicaciones web pero no de uso masivo asi q no estoy al tanto de este tipo de "hijaputeses".. pero a lo q voy es.. si tuvieras tus respaldos.. seria cuestion de reemplazar todos tus files .php y listo.. o no?

    Iluminame si es q estoy muy errado.. gracias Guiño.

    • Responder
    • Citar
    • Comentado:
  • Matias    

    Dale, echale la culpa a Wordpress, como si el Postrev no hubiera sufrido de vez en cuando algún que otro ataque :D ...

    • Responder
    • Citar
    • Comentado:
  • Fabio    

    nicolas garcia dijo:

    Fabio.. una pregunta.. vos no tenes backupeados tus sitios webs en algun lado??

    Digo.. yo trabajo en .net y hago aplicaciones web pero no de uso masivo asi q no estoy al tanto de este tipo de "hijaputeses".. pero a lo q voy es.. si tuvieras tus respaldos.. seria cuestion de reemplazar todos tus files .php y listo.. o no?

    Iluminame si es q estoy muy errado.. gracias Guiño.


    siempre tengo un respaldo local y además, para algunos casos, un repositorio tipo SVN o Git para evitar perder mi código

    siempre , siempre, tenés que tener una versión local.

    ahora bien, como en este caso, imaginate tener 20 sitios web en un mismo servidor, todos infectados por la misma cadena de texto, volver a subirlos implica varias horas de upload por FTP que pueden carcomerte los sesos hasta que esté terminado.

    el replace que hago en cambio dura dos minutos, salvás todos los sitios sin equivocarte, sacás el virusete, buscás parchear el problema. En vez de volverte loco subiendo todo de nuevo tu tiempo mental se define solamente por encontrar el hueco y taparlo y tus clientes no te putean porque sus páginas web infectan o redirigen a sus visitantes


    Nicasius dijo:
    aburrriiidddoooooo!!!!!!!!


    estás invitado a nunca más visitar este blog aburrido y tedioso donde una vez al año se comentan temas técnicos que a varios de sus lectores les interesan entre los otros 600 posts al año

    y mejor no vuelvas porque te cabe un ban :D


    Marvin dijo:
    El tanque es un Merkava III si no estoy equivocado, raro que la ametralladora esté tan adelante, salvo que sea de otro vehiculo que esté detrás del tanque.


    es, efectivamente, un Merkava IIId Baz http://en.wikipedia.org/wiki/Merkava#Merkava_Mark_III y lleva una 12.7 ahí adelante además de otras dos 7.62

    • Responder
    • Citar
    • Comentado:
  • Julián    

    Por donde te entraron? por lo del timthumb?

    • Responder
    • Citar
    • Comentado:
  • cipres    

    Interesante...aguante el bash :D

    • Responder
    • Citar
    • Comentado:
  • Diego    

    Te tiro otra opcion...
    Tambien podrias tener infectada la copia local, y al hacer los cambios estan subiendo el problema al server.
    Me paso con un cliente... el cual se quejaba del tema. Solucionado al hacerle controlar su propia estacion de laburo.

    Hace un tiempo atras te tire un correo por un tema de comparar los sueldos para gente relacionada a TI. Si es posible te agradeceria mucho un post al respecto.

    O si algun lector sabe donde comparar sueldos TI es muy bienvenida la data.
    (Especificamente necesito para Admin. de Redes, y Sistemas, CCNA, CCNP) :-)

    Saludos!

    • Responder
    • Citar
    • Comentado:
  • chimango    

    cada vez que escucho a un tarado quejándose de que usar linux es como volver a la época del DOS, no sé si estrangularlo con sus propios intestinos porque no se acercó a uno (y que tocar una terminal en, por ejemplo, un Ubuntu donde funcione todo no es necesario desde hace algunos años ya) o por el hecho de que aún si tuvieras que usar la terminal, el xterm está a un par de parsecs de distancia de la línea de comandos del DOS.

    aguante chacarita y el VI.

    • Responder
    • Citar
    • Comentado:
  • gaston    

    Hola gente, tengo poca y nada de idea sobre unix/linux etc... utilice un cms para hacer un sitio y ahora lo tengo infecta. mi pc esta limpia.
    Podrian sugerirme como encontrarlo y eliminarlo?
    http://www.backlash-gaming.com/
    Ese es el sitio, por lo visto el virus me crea un script... pero entiendo poco y nada.
    Cualquier idea o ayuda les agradeceria... saludos

    • Responder
    • Citar
    • Comentado:
  • Nicasius    

    Fabio dijo:

    Nicasius dijo:

    aburrriiidddoooooo!!!!!!!!


    estás invitado a nunca más visitar este blog aburrido y tedioso donde una vez al año se comentan temas técnicos que a varios de sus lectores les interesan entre los otros 600 posts al año

    y mejor no vuelvas porque te cabe un ban :D


    bueno a ver... acepto tu reto pero rechazo tu invitación. Incluso al momento de hacer mi comentario sabia que sonaba mala onda y totalmente improductivo pero queria ver que pasaba, asi que ofrezco mis mas sinceras disculpas. Se que le pones un gran esfuerzo y cariño al blog que no siempre o mas bien pocas veces es recompensado. En fin, cualquier cosa que diga ahora va a sonar chupamedias asi que la corto aca jaja.
    De verdad lo siento mucho, te ofrezco a tomy y daly como regalo de reconciliacion(?) http://www.youtube.com/watch?v=ZWy_7eHBLRE&feature=youtu.be

    • Responder
    • Citar
    • Comentado:
  • Chequea si no te dejaron por casualidad algún script como por ejemple cgi-telnet usualmente en cgi-bin
    Saludos.


    Gran site.

    • Responder
    • Citar
    • Comentado:
  • Si por casualidad usas Filezilla para subir por FTP, fijate que el muy poronga guarda todos los passwords en un .xml plano sin encriptar ni nada, de ahí los tomó el hdp que me hackeó varios sitios...
    Salu2

    • Responder
    • Citar
    • Comentado:
  • Johncross    

    Qué lástima que no vi un post como este hace un tiempo, yo tuve que buscar y cambiar archivo por archivo de un blog y fue un laburo de presos. (menos mal que era sólo uno).
    Gracias Fabio!

    • Responder
    • Citar
    • Comentado:
  • ICeman    

    Augusto Iturri dijo:

    Si por casualidad usas Filezilla para subir por FTP, fijate que el muy poronga guarda todos los passwords en un .xml plano sin encriptar ni nada, de ahí los tomó el hdp que me hackeó varios sitios...
    Salu2

    Pero para eso tienen que tener acceso local a tu máquina... en cuyo caso que encuentren el password FTP de un sitio es uno de los menores de tus problemas.
    Y si tu máquina es compartida (con otros miembros de tu familia por ejemplo)
    chmod 600 ~/.filezilla/sitemanager.xml

    • Responder
    • Citar
    • Comentado:
  • Jonyx4    

    Fabio dijo:

    Lelale dijo:
    Lo que me llama la curiosidad ¿Cuanto tiempo tuviste que investigar para que te solucione el problema? :D
    Habrá tardado dos minutos, pero el tiempo que gastaste en investigar también hay que contarlo y cobrárselo al HDP que te puso eso.
    PD: Si te ilumina la Pacha Mama, Dios o ET y lo encontrás, está como para arruinarle cualquier dato que tenga en línea


    fue rápido, cuando me fui dando cuenta que estaban todos los .php infectados simplemente comencé a buscar cómo hacerlo, a otro seguro ya le había pasado y como tenía bastante info sobre el malware fue más fácil encontrarlo.

    más allá de eso, otra facilidad es el hecho de tener acceso SSH al servidor, cosa que la mayoría de la gente no tiene por lo que deben descargar tooodo el código fuente de su site, limpiar y volver a subir o, subir toda una versión nueva y pisar la anterior

    es genial el acceso al ssh, yo lamentablemente en mi hosting no tengo y todos los comandos, los tiro desde la crontab =D jaja, sabras el chino que es probar y probar cada 1 minuto jajaj

    • Responder
    • Citar
    • Comentado:

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https
Para evitar bots, si se tardó mucho en leer la nota seguramente no sirva y tenga que intentar dos veces

Negrita Cursiva Imagen Enlace


comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador