La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Pedro Laguna Durán Microsoft Student Partner

Presentaciones similares


Presentación del tema: "Pedro Laguna Durán Microsoft Student Partner"— Transcripción de la presentación:

1 Pedro Laguna Durán Microsoft Student Partner plaguna@informatica64.com
Stop laughing! Javascript is cool now. Vamos a realizar una presentación donde pongamos de manifiesto lo mal visto que estaba el Javascript hace unos años, como algo en desuso y sin mucho futuro y que en este nuevo boom de la Web2.0 se ha puesto de moda con la tecnología AJAX. Como esto esta muy bien pero puede resultar poco vistoso para la gente (además de que no tendría nada de “seguridad” propiamente dicho) se contara luego como usar el Javascript con algunas técnicas nuevas de hacking. Pedro Laguna Durán Microsoft Student Partner

2 Agenda Breve historia del Javascript El Javascript en la actualidad
Hacking2.0 Robo de sesiones Escaneo de intranets Robo del historial de navegación Gusanos XSS ¿Hay algo que contar de la agenda? Vamos a dar un repaso breve al Javascript para meter a la gente en ambiente y luego vamos a explicar 4 técnicas de seguridad que usar Javascript para llevar su cometido a buen puerto.

3 Breve historia del Javascript
Lo que conocemos como Javascript es un lenguaje llamado ECMAScript, creado a partir del Javascript desarrollado por Netscape para su navegador y el Jscript que creo Microsoft para Internet Explorer Primera versión en marzo de 1996, para Netscape 2.0, en agosto del mismo año soporte en Internet Explorer 3.0 para JScript 1.0 Permite la ejecución de código en el contexto del navegador para interactuar con el DOM (Documento Objeto Modelo) de la pagina Al ejecutarse en el contexto del cliente permite una primera validación de los datos introducidos en los formularios Con solo esto para ofrecer… los programadores no se tomaban muy en serio al Javascript Estas son las slides que se pueden pasar rápido si vamos mal de tiempo. Se comenta un poco por encima lo que viene escrito en los puntos. Hacer especial hincapié en el tema del DOM (aunque vayamos a pasarlas rápido) pues es lo mas importante que nos va a proporcionar el Javascript. Al final hacer el chiste sobre que los demás lenguajes se sienten superiores a Javascript por las limitaciones de este y mostrar la imagen.

4 El Javascript en la actualidad
La API XMLHttpRequest desarrollada inicialmente por Microsoft en 2000 como parte de su Outlook Web Access ha revolucionado la forma en la que las personas interactúan con las paginas web Diferentes implementaciones de los principales navegadores web han dado lugar a que en la actualidad se intente estandarizar su funcionamiento por parte de la W3C Su uso en las paginas web se considera como parte del fenómeno llamado Web2.0 Llamadas asíncronas (¡y síncronas!) que hace el navegador de forma transparente al usuario para hacer mas cómoda su experiencia final Diversas consideraciones de seguridad hacen que no sea la herramienta perfecta para el robo de sesiones Aquí vamos a tirar un poco para “nuestro terreno”. Comentar que la actual tecnología de AJAX se basa en la primera implementación que hizo Microsoft del XMLHttpRequest Comentar ejemplos reales de paginas que hagan uso de AJAX, como Gmail, etc. etc.… El tema de las consideraciones de seguridad se refiere al tema de que el XMLHttpRequest no puede hacer llamadas a otros dominios que no sean el propio en el que se ejecuta. Esto es, que si ejecutamos un script en A.com no podemos hacer una llamada mediante XMLHttpRequest a B.com

5 Hacking2.0 “Buffer overflow is the past, XSS is the future”
XSS (Cross Site Scripting) es una técnica que nos permite ejecutar código en el contexto del navegador de la victima Comunidades online y demás sitios que permiten una gran personalización son propensas a tener este tipo de fallos, aunque no son las únicas Si conseguimos insertar un código Javascript malicioso podemos comprometer la seguridad de la aplicación web Vamos a explicar un poco que es XSS en esta slide para que la gente no se nos pierda antes de empezar. Dejar claro que esta es una técnica que se enfoca al ataque al usuario, no al servidor, como podría ser el caso del SQL Injection. Es importante que esto quede claro. Comentar también como todo sitio donde podamos introducir un texto, como nombre, nick, aficiones… que luego se vea reflejado en la pagina es susceptible de ser vulnerable a XSS.

6 Robo de sesiones Cuando nos logamos el servidor nos asocia un numero identificativo único, la sesión La sesión nos permite demostrar que somos un usuario legitimo sin tener que escribir nuestra contraseña en cada pagina a la que naveguemos Si logramos la sesión de otro usuario podremos navegar usurpando su identidad sin necesidad de conocer su clave Explicar las sesiones, como el servidor nos entrega una cookie que luego nuestro navegador usa para demostrar que somos un usuario legitimo en la aplicación y que ese numero que nosotros “arrastramos” es un identificador hacia nuestro usuario y no otro. Hacer el ejemplo de que podríamos tener la contraseña mas segura que quedamos, pero que si un usuario malintencionado nos roba la cookie de sesión, puede entrar en la pagina como nuestro usuario

7 DEMO Bien, la primera demo va a ser un ejemplo sobre como robar sesiones en una aplicación Web2.0, donde se permite el envío de mensajes entre usuarios. La aplicación se encuentra en y consta de 4 usuarios (admin, user1, user2 y eviluser) todos con contraseña Vamos a usar a nuestro eviluser para robar la sesión del usuario admin. En la carpeta de robo de sesiones se encuentra un código Javascript que será el que tengamos que enviar en un mensaje personal al usuario admin desde nuestra sesión de eviluser. Este código es un código que usar XMLHttpRequest para enviar por un mensaje personal al eviluser la sesión del admin. Recomiendo hacer lo siguiente: Arrancar el firefox que se encuentra en la carpeta de la presentación, es un firefox preparado con varias extensiones que nos ayudaran a hacer todo mas fácil. Logarnos en la aplicación con el usuario eviluser PASO OPCIONAL SI VAMOS BIEN DE TIEMPO: Demostrar que si nos enviamos un mensaje a nosotros mismos con el código que roba sesión al leerlo nos manda a nosotros un mensaje con nuestra propia sesión Abrir el Internet Explorer e iniciar sesión con el usuario admin Enviar desde evilusar un mensaje a admin para robar la sesión. Recibirlo y leerlo con el admin y refrescar la bandeja de entrada del eviluser para ver el mensaje recibido de parte del admin Usar la extensión Webdeveloper Toolbar del Firefox para cambiar la sesión de eviluser por la del admin. Refrescar la pagina para demostrar que ya estamos logado como el usuario admin Si queremos hacerlo realmente bien podemos usar o la extensión Firebug para Firefox o la extensión Flidder para IE para mostrar como se hace una petición POST totalmente transparente al usuario y que envía un mensaje a eviluser

8 Escaneo de intranets Conocer la infraestructura interna de una empresa puede ser interesante para planificar un ataque La gran mayoría de los firewalls no bloquean el trafico HTTP Al navegar desde una red interna las IPs de clase A, B y C son accesibles ¿Y si usamos Javascript para que nos analice la topología de la red? Aquí estaría bien explicar un poco de redes, algo básico al menos si vemos que la gente nos pone caras raras cuando les hablamos de Ips de clase A,B y C. Tenemos que comentar que hay empresas que dejan servidores con configuraciones por defecto en los mismos rangos de ips que los equipos de los empleados y que usando Javascript podemos intentar aprovechar alguna vulnerabilidad conocida en esos equipos, ya sean servidores o routers.

9 Aquí si me sale ira un grafico explicativo… pero aun no me entiendo con el Visio 

10 DEMO

11 Robo del historial de navegación
Conocer los hábitos de los usuarios nos ayudara a planificar mejores ataques y poder causar aun mas daño Si conocemos fallos de seguridad en varias paginas, usando esta técnica podríamos intentar usar una sesión no cerrada por parte de un usuario para realizar acciones malintencionadas Haciendo uso de Javascript y mezclándolo con un poco de CSS podemos lograr conocer que URLs ha visitado un usuario Comentar algo de CSS, como podemos cambiar el color y la forma de los distintos elementos HTML de las paginas web. Preguntar si no se han dado cuenta de que los enlaces visitados a veces son de otro color que los enlaces no visitados. Para meter miedo y demostrar el poder de esta técnica, comentar que seria posible analizar las paginas que ha visitado un usuario y en consecuencia lanzar ataques de robo de sesión solo para esas paginas.

12 DEMO En la demo vamos a, simplemente, abrir el fichero HTML que se encuentra en la carpeta Robo de historial y a mostrar como algunos de los enlaces que ahí se encuentran nos los marca como visitados (No me seáis y visitad alguno antes de dar la charla :P) Podéis incluso demostrar como visitáis algún enlace de los que salga como no visitado y volver a refrescar la pagina para que vean como ahora si lo marca como visitado. Luego hay que mostrar el código fuente, intentad hacerlo lo mas ameno posible. Hay que enseñar como, teniendo una lista de URLs, vamos creando elementos del tipo a (enlaces) y como se comprueba el color, si es igual al color especificado como color para los enlaces visitados entonces se actúa en consecuencia (en este caso lo que vemos es un texto al lado que nos confirma que esta visitado, pero podría ser el robo de sesión mencionado antes)

13 Gusanos XSS Nueva y devastadora forma de ataque que tiene por objetivo las comunidades online con gran capacidad de personalización como MySpace o Facebook Usando Javascript son capaces de auto replicarse e infectar a otros usuarios del mismo sistema Son capaces de provocar una denegación de servicios a la pagina infectada, generando miles de peticiones por segundo y bloqueando el servidor Esta es la parte estrella de la charla. Hay que empezar contando como son los gusanos de sistemas operativos, como el sasser o el blaster y de cómo van buscando victimas a infectar para propagarse Usando esto como referencia vamos a explicar los gusanos XSS y como se propagan. Los gusanos xss aprovechan fallos xss para propagarse entre usuarios y, a la vez, hacer que estos infecten a mas personas. Hacen uso de funciones de Javascript para acceder a objetos dom de la pagina y sacar información, como pueden ser nombres de usuarios, valores de campos ocultos o, incluso, para acceder a su propio código y copiarlo a una variable para después propagarse. En su mayoría hacen uso de peticiones XMLHttpRequest, pero en otros casos les es necesario hacer uso de iframes para acceder a otros subdominios de la pagina. Todas estas peticiones de miles de usuarios infectados puede llegar a producir el colapso del servidor.

14 Gusanos XSS El gusano más famoso es el llamado Samy Worm
Infecto MySpace el 4 de octubre de 2005 y en menos de 24 horas genero tal cantidad de trafico que los responsables del servicio se vieron obligados a dejar de dar servicio a sus usuarios Usa técnicas de ofuscación para evitar los filtros antiXSS creados por los programadores de MySpace Apenas ocupa 4Kb, gracias a las técnicas de compresión que uso su creador El gusano hacia básicamente tres cosas: Copiarse en la pagina del usuario infectado para infectar a otras personas Agregar como amigo del usuario infectado al creador del gusano Añadir un texto en el perfil infectado con el mensaje “but most of all, samy is my hero” El gusano xss mas famoso hasta la fecha es el Samy Worm, aunque hay otros, como el que afecto al servicio de correo web de yahoo y que enviaba correos a toda la agenda de contactos de los usuarios. El creador tardo una semana en programarlo y nunca pensó que fuese a afectar de la manera que lo hizo. Recomiendo la lectura de la web del creador ( y de la explicación técnica del gusano ( para enterarse de los detalles y poder explayarnos en la presentación. Podemos enseñar el código fuente y explicarlo un poco por encima, se encuentra en la carpeta de Gusanos XSS (samy.txt)

15 DEMO Demo! Si sale va a ser la polla.
Tenemos nuestra aplicación de antes, la sms20. Vamos a distribuir un virus que lo que haga sea acceder a la lista de los usuarios registrados en la aplicación y enviarles a cada uno de ellos una copia de nuestro gusano. Para eso desde la cuenta de eviluser vamos a enviarnos un mensaje a nosotros mismos con el código que hay en la carpeta Gusanos XSS (sms20.txt) Después de hacer esto y refrescar podemos mostrar con el firebug o el flidder como estamos enviando mensajes a todos los usuarios de la aplicación. Después, cerramos sesión y la abrimos con cualquiera de los otros usuarios existentes y vemos lo mismo, volvemos a enviar un mensaje a todos los usuarios. Si volvemos a entrar con eviluser veremos como ahora enviamos el doble de mensajes, pues ya tenemos dos mensajes en nuestra bandeja de entrada. Crecimiento exponential y demasiada carga para el servidor si hablamos de comunidades grandes

16 Si lo hemos hecho bien ahora nos estarán aplaudiendo, ovacionando y las mujeres (u hombres, quien sabe) lanzándonos su ropa interior. Es el momento de recordar el inicio de la charla, con nuestra visión de Javascript como un lenguaje sin mucho respeto por parte de la comunidad de desarrolladores. Es el momento de mostrar la imagen final, con un Javascript orgulloso de serlo :P

17 Referencias Blog de RSnake [http://ha.ckers.org/]
Blog de pdp [ Blog de Jeremiah Grossman [ Writing an XSS worm [ Detecting, Analyzing, and Exploiting Intranet Applications using JavaScript [ Samy worm [ Javascript en Wikipedia [ Hacking Intranet Websites from the Outside (Take 2) [ Esta es una lista de enlaces a blogs y artículos de los cuales he aprendido y sacado información para realizar esta presentación. TODOS son de recomendable lectura y os animo a que os los sindiquéis (los blogs, claro)

18 http://www.equilibrioinestable.com/ plaguna@informatica64.com
¡GRACIAS! Gracias por leer estas notas sobre la presentación de seguridad para este UT2008. Espero que te hayan servido de algo, si no ya sabes, tienes mi correo para lo que quieras, estaré encantado de resolverte cualquier duda


Descargar ppt "Pedro Laguna Durán Microsoft Student Partner"

Presentaciones similares


Anuncios Google