Cómo es la inyección de código malicioso en un sitio

Hace unos días estábamos revisando sitios por mantenimiento y uno en particular tenía un tráfico excesivo, obviamente cuando eso sucede hay que prestar atención y no era para menos.

El sitio no tenía actualizaciones hacía más de dos años, un Wordpress, más allá de las versiones desactualizadas los sitios con plugins suelen tener huecos no tanto por el sitio en sí (WP se ha vuelto muy seguro los últimos años) sino por todos esos plugins de developers que no tienen tantos parámetros de seguridad.

A partir de estos huecos se inyectan pequeñas porciones de código para escalar permisos y modificar el sitio, éste es uno de esos tantos casos que podrían afectar tu sitio sin que te dieras cuenta...

El exceso de tráfico fue la única señal, el sitio se veía perfecto, funcionaba, jamás nadie pensaría que requería algún tipo de cambio. Pero esta es exactamente la idea que buscaban los que lo atacaron.

El objetivo no era utilizarlo como spambot de mails, eso dura poco porque el mismo ISP te baja la cuenta, tampoco era un deface completo, en cambio el verdadero objetivo era utilizarlo para promover en Google otros sitios y para confundir al buscador.

Lo primero que encontré, en el encabezado del sitio, en el index.php, era un payload de apenas 20kb, simple, sencillo, casi indetectable:

Son 20kb encapsulados en BASE64 así que ese código es decodificado y luego ejecutado como PHP ¿qué hay ahí adentro? Esto:

Como verán es indescifrable pero si miran atentamente y separan variable por variable van a notar que es un intento de ofuscar código real que podría leerse. Esto se hace para evitar que algún antivirus detecte una cadena de texto conocida.

Meten todo en distintas variables y con texto ridículo en el medio para que ninguna función tenga su verdadero nombre, al final se concatena todo y se hace un replace de esa basura para que quede el código final, la variable $x999 es la que se evalúa realmente

Entonces podemos sacar el código real que es bastante más humano y comprensible:

Interesante ¿No? Aquí podemos entender qué hace cada función y es aquí donde vemos que todo este código está hecho para que sólo actúe ante usuarios coreanos y buscadores.

Para todo el resto "se hace el boludo", el dueño del sitio no puede enterarse que su sitio ha sido atacado, la vida pasa sin novedaes.

Pero vamos a ver qué hace cuando entra un coreano ¿Qué ejecuta? Trae un lindo archivo de datos de aquí: "http://opm.sm79.xyz/api.php?g=gitt" que es un array que está lleno de jugosa información. (enlace aquí, es medio pesado)

Esto también viene en base64, son 300kb, pero es fácil de descomprimir y no tiene misterios.

Por una parte tenemos sitios que, al parecer, han sido también atacados y son utilizados como re-buscadores para cuando quien entra a nuestro sitio es un buscador, le muestra una página llena de enlaces al buscador del Wordpress de otro sitio (!).

Cuando el usuario es un coreano lo envía a otro sitio de ese listado. Todo esto también es utilizado para keywords y otras chanchadas menores.

Es muy interesante el esfuerzo, por cada visita coreana o de buscador esos 20kb ejecutan en el servidor instrucciones para descargar esos otros 300kb, la carga real, y sólo en esos casos que le interesa cambiar la ejecución.

El exceso de ancho de banda se debía no al ataque sino a Google. Es que el spider del buscador creía que existían miles de páginas en coreano pero todas, ya inexistentes o por fallas de la inyección, daban un error 404.

Ese error 404 generaba una página de error de unos 65Kb, esto multiplicado miles de veces por día provocó que Google fuese quien terminara consumiendo todo el ancho de banda y no el ataque.

Si hubiesen sido más discretos el servidor seguiría todavía infectado.

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

Comentarios

  • GAK    

    Esto podría explicar la conducta rara de algunos sitios sin encontrar nada en la PC. Pero para un simple (y apurado) usuario no es mas que descartar el sitio y buscar por otro lado.

    • Responder
    • Citar
    • Comentado:
  • cesar    

    Corea del sur o norte?

    • Responder
    • Citar
    • Comentado:
    • .kr es corea del sur

      • Responder
      • Citar
      • Comentado:
  • Javier    

    Muy bueno!

    • Responder
    • Citar
    • Comentado:
  • Muy interesante, a mi me pasó algo parecido y terminé encontrando ese código "raro" que es el que lo hace todo.

    • 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