31 Marzo, 2017 a las 7:45

Cuando realizamos una auditoría de seguridad y llevamos a cabo una prueba de penetración gastamos una gran cantidad de tiempo y esfuerzo haciendo una correcta recopilación de información y búsqueda de vulnerabilidades en la coorporación. Si a la hora de aplicar este conocimiento para explotar una vulnerabilidad fallamos por que el ataque es detectado por un software antivirus echaremos a perder una gran cantidad de esfuerzo por no haber invertido algo de tiempo en asegurarnos que esto no pase.

Un error común de la gente que está aprendiendo técnicas de pentesting es no hacer caso a este apartado y no preocuparse por ser detectado. Esto pasa principalmente por que realizamos nuestros experimentos en laboratorios controlados y preparados para tener éxito. Cuando nos enfrentamos en un entorno real, en el que nos contratan para una auditoría de seguridad, este entorno es totalmente diferente ya que el cliente espera poder detectar cualquier ataque, por eso es importante invertir parte de nuestro tiempo en este tipo de tareas.

Aunque en este caso usaremos un exploit incluido en Metasploit nos valdrá de base para gran cantidad de exploits client side.

Cuando lanzamos un exploit de navegador -o client side- este se descarga en el equipo remoto y al ser interpretado por el navegador se explota la vulnerabilidad. La casuística de que el exploit se descargue en el equipo víctima da como resultado que este pueda ser interceptado por el software antivirus antes de explotar la vulnerabilidad.

En nuestro ejemplo vamos a usar el exploit firefox_webidl_injection que aprovecha una vulnerabilidad en las versiones de Firefox de 22 a 27 para ejecutar código. Además, en nuestro equipo víctima tendremos instalado el antivirus ESET con la protección a tiempo real activada y la base de datos actualizada. En este escenario vemos al intentar acceder a la URL maliciosa generada por metasploit que el antivirus salta y detecta nuestro exploit.

PoC: Haciendo indetectable un exploit de Metasploit

El primer paso para hacer indetectable el exploit es averiguar qué está llegando al cliente, para ello pausaremos la protección a tiempo real del antivirus y volveremos a acceder a la página. Una vez hecho haremos clic con el botón derecho en el navegador y veremos el código fuente de la página. El código fuente lo copiaremos y lo pegaremos dentro de notepad para poder trabajar cómodamente con él. Una vez hecho volveremos a activar la protección en tiempo real.

Si nos fijamos, una vez activada la protección en tiempo real, si procedemos a guardar el exploit que tenemos pegado en notepad el antivirus detectará el nuevo archivo creado como peligroso y nos saltará la advertencia.

Gracias a esto tenemos una forma de ir realizando cambios en el código hasta que lo hayamos modificado lo suficiente para que el antivirus no detecte la firma del mismo.

Es importante que los cambios que realicemos no afecten al correcto funcionamiento del exploit. Algunos ejemplos de cosas que pueden cambiarse son los nombres de las variables, la asignación de los strings alternando mayúsculas y minúsculas y convirtiendolas al formato correcto en tiempo de ejecución, etc.

Iremos jugando por todo el código y guardando de forma paulatina hasta que el antivirus no sea capaz de detectar el fichero como malicioso. Es una buena idea realizar este proceso con varios antivirus diferentes para tener una mayor seguridad.

En nuestro ejemplo cambiaremos el nombre de una variable “c” por “caracol”, además, el exploit realiza la función windows.open(“chrome://….”), en nuestro ejemplo el string que se pasa a la función windows.open lo partiremos en dos partes y las concatenaremos, de esta forma el funcionamiento del exploit no es alterado pero hemos variado lo suficiente el código para que el antivirus no lo detecte. Una vez que veamos que al guardar no se producen alertas es buena idea analizar el fichero directamente con el antivirus e incluso abrirlo en el navegador para ver que se ejecuta correctamente. Si el antivirus no detecta nada habremos dado con la clave de qué modificar para hacerlo indetectable.

Bien, ahora tenemos nuestro exploit funcional e indetectable a los antivirus. El siguiente paso es dejarlo disponible en un servidor Web. Para ello tenemos dos opciones: A – Colgarlo en nuestro propio servidor Web (apache, ngix, etc). O modificar el exploit dentro de Metasploit para poder usarlo con el framework modificando sus opciones y demás.

Ambas opciones tienen sus pros y sus contras que vamos a explicar:

Subir el exploit a nuestro propio servidor:  Esta es una buena opción ya que algunos antivirus son capaces de detectar el servidor Web que monta Metasploit e independientemente del exploit que usemos detiene la conexión para evitar riesgos. Si cogemos nuestro archivo y lo subimos a un servidor Apache (por ejemplo) evitaremos esta posibilidad. Por contra si el día de mañana queremos cambiar alguna opción del exploit (IP, Payload, etc.) deberemos volver a generarlo desde metasploit e indetectabilizarlo lo cual se torna bastante tedioso.

Editar el exploit de Metasploit: La ventaja de este método es justamente la contra del anterior y es que si deseamos modificar alguna característica del exploit, como por ejemplo el payload a utilizar, únicamente deberemos cargarlo en Metasploit y asignar las opciones que toquen, al haber modificado el exploit interno no tendremos que volver a ofuscar el código.

Para modificar el exploit, lo primero que haremos es ir a la carpeta donde está guardado el original (en nuestro caso /usr/share/metasploit-framework/modules/exploits/multi/browser) y crear una copia del exploit con un nombre que nos resulte identificativo (nosotros le pondremos firefox_webidl_injection_custom.rb) y lo abrimos con nuestro editor de texto favorito.

A continuación simplemente buscamos dentro del código las partes que hemos modificado en el html y las editamos, en nuestro caso modificaremos el nombre de la variable “c” y el string que pasamos a la función window.open.

Como podéis ver le hemos cambiado el nombre a la variable “c”  por “cajaAzul” y el string lo hemos divido en dos partes, al igual que hicimos en el fichero html.

Ahora simplemente tendremos que abrir de nuevo nuestro Metasploit y cargar y ejecutar el exploit que hemos generado. Cuando accedamos desde el navegador descargará el código fuente con las modificaciones que hemos realizado y no será detectado por el antivirus.

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Internet, Malware, Pentesting, Programación, Seguridad. Etiquetas: , , , , , , , , , .

2 comentarios en Hacer indetectables los exploits de navegador de Metasploit (y otros)

  1.  Diego dice:

    Increible!!! Eres un máster, lo que nadie te dice ni enseña en supuestos curso de hacking ético, gracias amigo ahora tendras 4 seguidores mas y suscriptores a tu youtube, sigue asi y seras el mejor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *