Ver Mensaje Individual
  #12 (permalink)  
Antiguo 22/10/2012, 14:24
Maykk
 
Fecha de Ingreso: febrero-2011
Mensajes: 13
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: Malware en Archivos Web. Solucionar con Expresion Regular

Despues de mucho tiempo por fin pude solucionar lo que necesitaba.

!Impotante : Tener en cuenta que los comandos de búsqueda y reemplazo es muy poderoso porque busca en TODOS los archivos y subcarpetas, una vez ejecutados no se puedes deshacer, por lo que es muy importante estar muy seguro de que ese es el reemplazo que se quiere hacer, sugiero crear un carpeta y probar dentro de esta.

1. Tener acceso por SSH al host

2. Intalar ack
ack es un comando muy poderoso para linux que nos permite hacer busquedas dentro de los archivos y subcarpetas de manera muy facil.
http://betterthangrep.com/
Intalacion
Código:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
Uso (cuando es expresion regular la busqueda deber ir en comillas simples)
Código:
ack SEARCH
ack 'SEARCH'
3. Expresion Regular
Creamos nuestra expresion regular en mi caso encontra una que busca 1 o varias palabras dentro de UNA LINES de codigo. El ejemplo de aqui busca 3 palabras.
http://www.regular-expressions.info/completelines.html
Código:
^.*\b(SEARCH1|SEARCH2|SEARCH3)\b.*$

4. Buscar y Remplazar con ack y xargs

Esta es la lines de comando para buscar y reemplazar con ack
Código:
ack -l 'SEARCH' | xargs perl -pi -E 's/SEARCH/REPLACE/g'
5. EJECUCION !Impotante
Combinamos el 3. y 4. para tener las linea de comando completa que debemos ejecutar.
Código:
ack -l '^.*\b(SEARCH1|SEARCH2|SEARCH3)\b.*$' | xargs perl -pi -E 's/^.*\b(SEARCH1|SEARCH2|SEARCH3)\b.*$/REPLACE/g'
 . 
En mi caso tuve que ejecutar 2 lineas de comando; una para los archivos PHP y otra para los HTML donde la inserción de código malicioso se hacia a través de javascript simpre teniendo mucho cuidado con las etiquetas de ambos lenguajes.

Otro punto a tener en cuenta es que los reemplazos que yo hice los hice por una linea de caracteres única para verificar manualmente que los archivos que estaban contaminados realmente quedaran limpios.
Ejem:
Código:
antes: echo(gzinflate(base64_decode("JY5NDsIgEIX3Jr0DmU11UxK

Despues : //comentario_Archivo_Limpio
Saludos