Inyección de Código PHP ofuscado

En este caso les voy a comentar como deshaceros de una inyección de código php ofuscado en archivos PHP hackeados con eval(base64_decode()), de forma rápida, que envia a los navegantes que encuentran un enlace a su web, desde un buscador y les lleva a cualquier otra parte, menos a su web, que es donde debería, y estar preparados para nuevas intrusiones…

Muchos son los años que nos pasamos intentando salir en las primeras posiciones por ciertos términos de búsqueda relacionados con nuestra actividad. Te levantas cada mañana con ánimos renovados y con muchas ganas de hacer las cosas bien.

Un buen día te levantas y te das cuenta que tu web va perdiendo posiciones a marchas forzadas y no tienes ni idea del porque.

Te preguntas si las nuevas versiones de los algoritmos implantados recientemente por buscadores como Google son las que te han relevado a la segunda división y te das cuenta que no, que has seguido las directrices al pie de la letra y no es razón para tal descalabro.

Lo siguiente es mirar en tus archivos si hay algo que no concuerda o que se te ha pasado, y es entonces cuando ves arriba en la primera linea, de digamos un archivo php cualquiera, un código “rarisimo” que como poco te parece sospechoso, pero tu página funciona perfectamente y te supones que se te habrá colado en un típico copia pega, lo borras y listo, todo sigue igual de bien.

Llega el día que por puro azar, accedes a un buscador cualquiera y ves un enlace de tu pagina y haces clic en el mismo para comprobar la velocidad de apertura de tu pagina o por cualquier otro motivo.

Entonces, salta la sorpresa o el sorpreson, al hacer clic en el enlace, no es direccionado a tu web, si no a cualquier otra como el buscador de windows u otra cualquiera, y te hechas las manos a la cabeza y comienzas a atar cabos del porque tu página había perdido tantas visitas.

Me han hecho una inyección de código php

Inyección código php

Luego intentas acceder desde el navegador y saltan las alarmas de Malware, tu cerebro se calienta sobre manera y si no mantienes la calma, el desastre puede llegar a ser histórico.

¿Que hacer y como proceder?

Entonces, haces memoria y vas recordando que las claves de acceso a tus cuentas las cambias cada veinte, treinta días y por ahí seria muy difícil, aunque claro, no tiene porque ser el caso de todos, así que cuidado con eso.

Luego vas eliminando carpetas con sus archivos que ya no te son de utilidad y se van acumulando, sin objeto ni finalidad, por lo que vas haciendo espacio para ir descartando, pero el problema persiste.
Lo siguiente es eliminar extensiones que hayan instalado recientemente, luego las que llevan un tiempo instaladas y ya no son de utilidad, pero el problema persiste.

Joomla
Para averiguar si tienen algún usuario con permisos de Súper administrador en Joomla, tenemos que comprobar si se ha creado un grupo de usuario nuevo con privilegios de súper administrador y lo borramos.

WordPress
Para WordPress es parecido. Acceder a Usuarios y pulsar en Administrador, a ver si se nos a colado alguien no deseado. También existe la posibilidad que le hayan creado un grupo de perfil nuevo con todos los permisos. Es sencillo de crear nuevos perfiles con el plugin Members – Membership & User Role Editor Plugin. Cuidado con eso, también revisar plugins como BuddyPress.

El paso siguiente es ir a nuestra base de datos, y editar la tabla _users de nuestra base de datos joomla, por ejemplo desde PhpmyAdmin y en la columna de los emails, en el titulo de la misma email que es el nombre de la columna hacemos clic para que aparezcan de forma ordenada, de tal modo que si hay un usuario sin email o email muy sospechoso, aparecerá en primer lugar, así os evitáis el tener que buscar, y proceder a BORRAR ese usuario, ya que es lógico que el intruso NO incluya su email.

Una vez limpiada la tabla _users, el siguiente paso es averiguar si el código que nos encontramos en ese archivo php del que antes os he hablado, esta repetido en otros archivos. Lo mas seguro es que así sea.
Un forma rápida y sencilla de darse cuenta si nos han infectado con inyección de código php, es comparando el peso de los archivos habituales, que seguramente sea bastante superior, como por ejemplo el index.php de la raíz de joomla, con un peso superior a los 2k, habitual en joomla 2.5.

¿Que es el código base64?

Vamos a partir desde la creación de dicho código para funciones de Malware detectado por antivirus como el Avast y otros.

Eval(base64_decode)

El codificado en base64 que normalmente se extiende a TODOS los archivos PHP que tengas en tu servidor.

Base 64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de correos electrónicos, PGP y otras aplicaciones.

Todas las variantes famosas que se conocen con el nombre de Base64 usan el rango de caracteres A-Z, a-z y 0-9 en este orden para los primeros 62 dígitos, pero los símbolos escogidos para los últimos dos dígitos varían considerablemente de unas a otras. Otros métodos de codificación como UUEncode y las últimas versiones de binhex usan un conjunto diferente de 64 caracteres para representar 6 dígitos binarios, pero éstos nunca son llamados Base64.

También empleados para practicas de Malware, enviando nuestra web a otras direcciones desde los resultados de búsqueda de cualquier buscador. Información completa en la WIKIPEDIA

Para saber que es lo que se esconde dentro de esa línea de código, podemos ir a la web Motobit y marcar la opción: “decode the data from a Base64 string (base64 decoding)” y pulsar en el botón “convert the source data”.
Obtendremos el código que nos esta haciendo la puñeta, redireccionando nuestra web.

Para saber si nuestro sitio esta infectado podemos ir a https://sitecheck.sucuri.net para buscar código malicioso en los archivos, aunque no te dan la opción de limpiar los archivos.

Como eliminar los archivos php infectados con inyección de código php

Joomla
Este paso, hasta no hace mucho era muy tedioso y largo de ejecutar y gracias a espacios web de gente como Usher web nos han hecho la vida más fácil . Hoy se han creado scripts php que permiten hacer una copia de los archivos infectados y crear el archivo original, limpio para volver a seguir trabajando con normalidad.

 Descargar Archivos limpieza inyección código Base64 

Un vez descargados, descomprimimos y subimos por FTP a la raíz de nuestra(s) web(s) los dos archivos.
Lo siguiente es ejecutar el archivo llamado search_and_replace.php, realizara una exploración recursiva de TODOS los directorios y subdirectorios buscando archivos con extensión PHP.

HTML o HTM, para una vez terminada, mostrar en nuetra pantalla el listado completo de los archivos revisados marcando los infectados en rojo y los limpios en verde, creando archivos duplicados de los originales con un nombre diferenciado añadiéndole la extensión “_hackedcopy“, creando de nuevo el original, limpio del código inyectado.

Para terminar el trabajo de limpieza, ejecutaremos el archivo remove_copies.php que eliminara los duplicados con el código inyectado, dejando nuestro sistema libre de código malcioso y volviendo a apuntar a nuestra web desde cualquier resultado de busqueda, obtenido desde Google o cualquier Motor de búsqueda.

Teniendo estos archivos en la raíz de nuestro servidor, si tenemos unos cuantos sub dominios, no es aconsejable ejecutar. Si son demasiados los archivos infectados, se saltara unos cuantos, los cuales impedirán el funcionamiento normal de nuestra(s) web(s), por lo que es aconsejable no ejecutar desde la raiz de nuestro hosting, si tenemos mas de tres o cuatro webs en el mismo, si no desde los directorios subiendo los dos archivos. Es un poco mas pesado, pero efectivo.

WordPress

Descargar TextCrawler para buscar “eval (base64_decode (” algunaCadenaDeCaracteresOscura “));” y reemplazarlo con el código exacto, que es el método más simples de arreglar este código que ha infectado sus archivos php.

Puede usar cualquier herramienta de decodificador Php en línea que descifre las cadenas codificadas con eval () y base64_decode (). Hay unas cuantas como:

Para los que prefieren la vía rápida para poder encontrar archivos infectados en WordPress, ir la web Ektorsite y descargar un script que crearon para la ocasión.

Como averiguar cual es el archivo que nos ha infectado con inyección de código php

Bueno, aqui hay muchas variantes. En la mayoría de los casos, la infección se produce al instalar una extensión que nos hemos bajado de alguna web de descargas, que todos conocemos y hemos instalado en nuestro sistema. A parte de ser una práctica desaconsejable por las consecuencias finales, al margen de que comparta o no esa actividad, la cual hace ya tiempo que no práctico (esto se lo pueden creer o no, no tengo forma de demostrarlo, por lo que cada uno piense lo que quiera), por el respeto al trabajo de terceros que ayudan al crecimiento de CMS como Joomla!, WordPress, Drupal, Prestashop… sea o no de licencia GPL, un derivado de la licencia GNU.

Los archivos que se instalan e infectan nuestro sistema suelen tener un nombre disfrazado como por ejemplo style.css.php y se suelen alojar entre archivos con nombres parecidos para no ser detectados fácilmente de forma visual.

El código en base64 que infecta con inyección de código php archivos puede estar delimitado por comillas simples (‘), o por comillas dobles. Si ese es vuestro caso, hay que modificar la línea 86 del script de búsqueda y limpieza y poner esta otra expresión regular que usa comillas dobles.

"/eval\(base64_decode\(\"[A-Za-z0-9\=\/\+]+\"\)\);/"

Comenten vuestras experiencias para compartirlas con los demas y asi ayudar entre todos.

8 comentarios en «Inyección de Código PHP ofuscado»

  1. Tabla usuarios joomla
    Ya me estaba planteando rehacer la web por completo, cuando encontre este articulo. Los archivos de limpieza me funcionaron, pero no fue hasta que lei lo de los emails en la tabla _users cuando pude dar con la solución ya que la infeccion se repetia. Tambien busque archivos pero hasta donde llegue no vi nada raro. La cuesdtión es que han pasado unos días y todo parece ir normal. Estare vigilante. Gracias.

    Responder
  2. Eval
    Estimados solojoomla
    En la web indicada tengo un codigo (index.php) de la plantilla. Tiene que ver con la extension Aviary de Firefox. Agradecré me indiquen si es maligno o no. Al abrir web con firefox dice “URL maliciosa”.
    Saludos y gracias

    Responder
  3. Editar archivos
    Hola, ¿Has editado el archivo y mirado si tiene algun codigo que incluya codigo base64?
    Lo comento porque lo primero es editar el archivo sospechoso.

    [quote name=”agunafonzi”]Estimados solojoomla
    En la web indicada tengo un codigo (index.php) de la plantilla. Tiene que ver con la extension Aviary de Firefox. Agradecré me indiquen si es maligno o no. Al abrir web con firefox dice “URL maliciosa”.
    Saludos y gracias[/quote]

    Responder
  4. Copiar y Borrar
    Yo lo que haria es borrar o eliminar previa copia y ver si vuelve a saltarme el aviso de alerta, no sin antes pulsar las teclas CTRL+F5 para refrescar la cache de mi navegador. Creo que es lo mas efectivo para asegurarse.

    Responder
  5. Blog eliminado
    Han eliminado el Blog Crear paginas web de Blogger. Seguramente otro ejemplo de la diplomacia de Google, que los impuestos los pagaran fuera de america en paraisos fiscales, pero siguen siendo americanos para lo que les interesa… Primero disparan y despues preguntan.

    Responder
  6. permisos en archivos
    Hola ocn respecto a este tema lo que he podido comprobar es que se han infectado los archivos con permisos 755 deben ponerse 644 o 444 según corresponda. Gracias

    Responder
    • Hola, no… Las carpetas por orden general deben tener un chmod 755 y no los archivos. Para los archivos corresponde el chmod 644 y los que incluyen datos sencibles deben tener el chmod 444.
      Saludos

      Responder

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Lorenzo Lardillier Sanchez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a htpps://www.unelink.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad