Computación ParasitariaDaniel Torres Falkonert (bytemare) bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoise...
Grupo de Investigación (Hacking only)<br /> Creado en 1995<br /> Multidisciplinario (No sólo Ingenieros)<br /> Objetivo Co...
Sobre bytemare<br />Descubrí el gusto por los computadores desde los 4 años (Gracias papá!!)<br />En el mundo de la seguri...
Disclaimer<br />Todo lo que se hable y se muestre en esta charla es el resultado de investigaciones con fines educativos.<...
Definición: Parasitismo<br />Proceso por el cual una especie amplía su capacidad de supervivencia utilizando a otras espec...
Definición: Computación parasitaria<br />Es la manera en que un atacante podría aprovecharse de los recursos de  procesami...
Pero eso no es lo que hace el malware?<br />SI!!, pero a diferencia del “malware” tradicional no habría necesidad de llega...
Antecedentes<br />El término surgió a raíz de una publicación que salió en el año 2001 en la revista nature.<br />Se afirm...
La idea Original<br />Al Insertar datos controlados dentro de los paquetes es posible poder realizar operaciones booleanas...
La idea Original (Cont.)<br />Al aprovechar de manera distribuida (y masiva) esta capacidad de cómputo , se podrían resolv...
Ejemplo [2]<br />Veamos como funciona<br />
Configuración inicial<br />El parasito y el destino se pueden “ver” por la red<br />
Paso 1: Apertura de conexión TCP modificada<br />Pasos<br />Abrir la conexión TCP desde el parásito<br />Intercambiar 3 me...
Paso 1: Abrir la conexión<br />Enviar segmento SYN<br />
Paso 1: Abrir la conexión<br />Recibir el segmento SYN y extraer el ISN<br />
Paso 1: Abrir la conexión<br />Enviar Segmento ACK.  Conexión abierta, listo para transmitir!<br />
Paso 2: Preparar el segmento TCP<br />Calcular checksum:<br />Normalmente:<br />Rellenar con ceros el campo del checksum<b...
Paso 2: Preparar el segmento TCP<br />Checksum: Se determina por el problema a resolver (Ecuación booleana)<br />Data: Las...
Paso 3: Computar<br />Hay 2 casos:<br />Respuesta Positiva: Las variables satisfacen la ecuación<br />Respuesta negativa: ...
Paso 3a: Computar (Repuesta positiva)<br />Enviar el segmento TCP Modificado<br />
Paso 3a: Computar (Respuesta positiva)<br />Segmento TCP Válido, se pasa a la capa de aplicación<br />
Paso 3a: Computar (Respuesta positiva)<br />Respuesta del protocolo de aplicación. Al recibirla se sabe que la respuesta s...
Paso 3b: Computar (Respuesta negativa)<br />Se envía el segmento modificado<br />
Paso 3b: Computar (Respuesta negativa)<br />Segmento inválido!!! Se descarta en la capa de transporte<br />
Paso 3b: Computar (Respuesta negativa)<br />Expira el temporizador en el parasito. Asume que la respuesta es incorrecta.<b...
Suena bien, cierto?<br />Sin embargo, la solución no es viable debido a un pequeño problema<br />
¡¡¡¡¡La eficiencia!!!!!<br />la capacidad de cómputo necesaria para implementar la generación de los paquetes, es proporci...
Pero no todo está perdido<br />Esto sirvió de inspiración para otras ideas interesantes<br />
Almacenamiento Parasitario<br />La Red como medio de almacenamiento<br />
Malabarismo con paquetes [3]<br />Salewsky y Purczynski propusieron diferentes vectores de ataque que se aprovecharían de ...
La Idea<br />El artículo se basa en la observación de que en las comunicaciones en la red existe un retardo mayor que cero...
Tipos de almacenamiento flotante<br />Clase A<br />Aprovecha características de algunos protocolos que envían como respues...
Ejemplo almacenamiento clase A<br />Una de los opciones que dan los autores para utilizar a la red como medio de  almacena...
Recordemos el Ping<br />2 Tipos de mensajes<br />Echo request, tipo 8<br />Echo Reply, tipo 0<br />
Ping<br />Tiene una característica interesante:<br />Si se envían datos como carga en la petición “echo request”, la respu...
Malabarismo con icmp<br />Si se realizan varios requerimientos Echo request/Reply, en teoría se puede generar un sistema d...
Tipos de almacenamiento flotante<br />Clase B<br />Utiliza colas de datos inactivas para almacenar información por un peri...
Almacenamiento clase B: SMTP<br />
Propiedades almacenamiento Flotante<br />Tipo A<br />Baja latencia (de milisegundos a minutos)<br />Baja capacidad por sis...
Capacidad de almacenamiento Estimada<br />Se utilizó la siguiente ecuación:<br />Cmax = L * Tmax / (Psize* Dsize)<br />Don...
DEMO<br />Un ejemplo de robo de recursos de manera parasitaria a través de http y html5, a través del uso de un acortador ...
Conclusiones<br />Muchas veces la diferencia entre un bug y una funcionalidad es muy difusa.<br />Genera varios interrogan...
Referencias<br />[1] http://www.nature.com/nature/journal/v412/n6850/abs/412894a0.html<br />[2] http://www.nd.edu/~parasit...
Preguntas<br />
Aquí encontrarán publicadas las charlas de LowNOISE<br />http://www.lownoisehg.org/CampusParty2011/<br />
Muchas Gracias!!!<br />bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org<br />
Upcoming SlideShare
Loading in …5
×

Computacion Parasitaria

800 views
690 views

Published on

Diapositivas de mi charla sobre computación parasitaria en Campus Party 04 (2011) en Bogotá, CO.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
800
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Computacion Parasitaria

  1. 1.
  2. 2. Computación ParasitariaDaniel Torres Falkonert (bytemare) bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org<br />
  3. 3. Grupo de Investigación (Hacking only)<br /> Creado en 1995<br /> Multidisciplinario (No sólo Ingenieros)<br /> Objetivo Común:<br />Seguridad vs. Inseguridad<br /> Sin Ánimo de Lucro<br /> Recursos Propios<br /> Sin Afiliación a Empresas/Entidades<br />¿ Qué es LowNoise HG ?<br />
  4. 4. Sobre bytemare<br />Descubrí el gusto por los computadores desde los 4 años (Gracias papá!!)<br />En el mundo de la seguridad desde el año 96<br />Ingeniero de Sistemas (Uniandes)<br />Especialista en seguridad de la información (Uniandes)<br />Trabajo en Informática Forense desde el 2003<br />Mi primer computador<br />
  5. 5. Disclaimer<br />Todo lo que se hable y se muestre en esta charla es el resultado de investigaciones con fines educativos.<br />Todo descubrimiento realizado, ha sido y será usado de forma legal, por LNHG.<br />La audiencia debe asumir todo lo se exponga hoy, como “falso” y “sin fundamento” hasta que lo compruebe personalmente.<br />
  6. 6. Definición: Parasitismo<br />Proceso por el cual una especie amplía su capacidad de supervivencia utilizando a otras especies para que cubran sus necesidades básicas y vitales.<br />http://es.wikipedia.org/wiki/Parasitismo<br />
  7. 7. Definición: Computación parasitaria<br />Es la manera en que un atacante podría aprovecharse de los recursos de procesamiento y/o ancho de banda de uno o más sistemas conectados a Internet, sin necesidad de romper la seguridad de estos.<br />
  8. 8. Pero eso no es lo que hace el malware?<br />SI!!, pero a diferencia del “malware” tradicional no habría necesidad de llegar a comprometer la seguridad de los sistemas para poder utilizar sus recursos debido a que se utilizaría solamente el acceso a partes del servicio que estén explícitamente disponibles para ser accedidas a través de Internet.<br />
  9. 9. Antecedentes<br />El término surgió a raíz de una publicación que salió en el año 2001 en la revista nature.<br />Se afirma que es posible aprovecharse de los algoritmos para la verificación de errores en los datos del protocolo TCP.<br />
  10. 10. La idea Original<br />Al Insertar datos controlados dentro de los paquetes es posible poder realizar operaciones booleanas básicas a través del algoritmo de detección de errores de TCP.<br />El destino hará una verificación de integridad de los datos:<br />Los que fallen la prueba serán descartados (Respuesta erronea)<br />Los que la pasen seran aceptados y se enviará una respuesta (Respuesta correcta)<br />
  11. 11. La idea Original (Cont.)<br />Al aprovechar de manera distribuida (y masiva) esta capacidad de cómputo , se podrían resolver problemas muy Complejos (Del tipo NP Completo)<br />
  12. 12. Ejemplo [2]<br />Veamos como funciona<br />
  13. 13. Configuración inicial<br />El parasito y el destino se pueden “ver” por la red<br />
  14. 14. Paso 1: Apertura de conexión TCP modificada<br />Pasos<br />Abrir la conexión TCP desde el parásito<br />Intercambiar 3 mensajes (3-Way Handshake)<br />Extraer el número de secuenciainicial (ISN) del host (Se necesitaparacomunicarsemásadelante)<br />
  15. 15. Paso 1: Abrir la conexión<br />Enviar segmento SYN<br />
  16. 16. Paso 1: Abrir la conexión<br />Recibir el segmento SYN y extraer el ISN<br />
  17. 17. Paso 1: Abrir la conexión<br />Enviar Segmento ACK. Conexión abierta, listo para transmitir!<br />
  18. 18. Paso 2: Preparar el segmento TCP<br />Calcular checksum:<br />Normalmente:<br />Rellenar con ceros el campo del checksum<br />Sumar el segmento (En bloques de 16-bits)<br />Insertar el resultado en el campo del checksum<br />Modificación (Para el ataque)<br />Rellenar con ceros el campo del checksum<br />Poner la posiblerespuesta en el campo de datos, rellenandoparaobtener la longitudadecuada.<br />Sumar el segmento (En bloques de 16-bits)<br />Insertar el resultado en el campo del checksum<br />
  19. 19. Paso 2: Preparar el segmento TCP<br />Checksum: Se determina por el problema a resolver (Ecuación booleana)<br />Data: Las variables que se someterán a prueba<br />
  20. 20. Paso 3: Computar<br />Hay 2 casos:<br />Respuesta Positiva: Las variables satisfacen la ecuación<br />Respuesta negativa: Las variables no satisfacen la ecuación<br />
  21. 21. Paso 3a: Computar (Repuesta positiva)<br />Enviar el segmento TCP Modificado<br />
  22. 22. Paso 3a: Computar (Respuesta positiva)<br />Segmento TCP Válido, se pasa a la capa de aplicación<br />
  23. 23. Paso 3a: Computar (Respuesta positiva)<br />Respuesta del protocolo de aplicación. Al recibirla se sabe que la respuesta satisface la ecuación.<br />
  24. 24. Paso 3b: Computar (Respuesta negativa)<br />Se envía el segmento modificado<br />
  25. 25. Paso 3b: Computar (Respuesta negativa)<br />Segmento inválido!!! Se descarta en la capa de transporte<br />
  26. 26. Paso 3b: Computar (Respuesta negativa)<br />Expira el temporizador en el parasito. Asume que la respuesta es incorrecta.<br />Hay que tener en cuenta que la respuesta podría perderse y el parásito pensar que la respuesta es negativa (Falso negativo)<br />
  27. 27. Suena bien, cierto?<br />Sin embargo, la solución no es viable debido a un pequeño problema<br />
  28. 28. ¡¡¡¡¡La eficiencia!!!!!<br />la capacidad de cómputo necesaria para implementar la generación de los paquetes, es proporcional al poder de cómputo necesaria para resolver el problema.<br />Además el uso del ancho de banda sería excesivo<br />
  29. 29. Pero no todo está perdido<br />Esto sirvió de inspiración para otras ideas interesantes<br />
  30. 30. Almacenamiento Parasitario<br />La Red como medio de almacenamiento<br />
  31. 31. Malabarismo con paquetes [3]<br />Salewsky y Purczynski propusieron diferentes vectores de ataque que se aprovecharían de la capacidad de almacenamiento que pueda tener una red.<br />
  32. 32. La Idea<br />El artículo se basa en la observación de que en las comunicaciones en la red existe un retardo mayor que cero entre el envío de un requerimiento y la recepción de la respuesta (RTT).<br />Este podría aprovecharse para almacenar datos temporalmente en la red<br />Se definen 2 tipos de almacenamiento<br />
  33. 33. Tipos de almacenamiento flotante<br />Clase A<br />Aprovecha características de algunos protocolos que envían como respuesta los mismos datos que estaban en el requerimiento inicial:<br />TCP: Syn+Ack, Rst+Ack<br />ICMP: Echo Request/Reply<br />Errores en HTTP, FTP o SMTP<br />
  34. 34. Ejemplo almacenamiento clase A<br />Una de los opciones que dan los autores para utilizar a la red como medio de almacenamiento, es mediante la utilización de una propiedad que posee el Protocolo ICMP al realizar una petición de tipo 8 (echo<br />request) y recibir una respuesta de tipo 0 (echo reply), también conocida como ping. <br />
  35. 35. Recordemos el Ping<br />2 Tipos de mensajes<br />Echo request, tipo 8<br />Echo Reply, tipo 0<br />
  36. 36. Ping<br />Tiene una característica interesante:<br />Si se envían datos como carga en la petición “echo request”, la respuesta, el “echo reply”, contendrá estos mismos datos que se enviaron originalmente.<br />En teoría puede funcionar como un flip-flop pero en la red<br />
  37. 37. Malabarismo con icmp<br />Si se realizan varios requerimientos Echo request/Reply, en teoría se puede generar un sistema de almacenamiento.<br />Para compensar las pérdidas se pueden usar algoritmos tipo IDA (InformationDispersalAlgorithm) [4]<br />Esta implementación se encuentra en desarrollo por LowNOISEHG<br />
  38. 38. Tipos de almacenamiento flotante<br />Clase B<br />Utiliza colas de datos inactivas para almacenar información por un periodo considerable de tiempo. Esto basándose en protocolos que almacenen los datos recibidos y en caso de error los retornen al origen, pero con la propiedad de mantenerlos almacenados si no pueden contactarlo.<br />
  39. 39. Almacenamiento clase B: SMTP<br />
  40. 40. Propiedades almacenamiento Flotante<br />Tipo A<br />Baja latencia (de milisegundos a minutos)<br />Baja capacidad por sistema (No muy útil para almacenamiento masivo)<br />No muy confiable si la red presenta muchas pérdidas<br />Poca probabilidad de almacenamiento permanente (Anti-forense)<br />Tipo B<br />Latencia alta (De minutos a horas)<br />Alta capacidad de almacenamiento con tiempo de vida considerable<br />Varios intentos de acceso<br />Alta probabilidad de dejar rastros en el hosts<br />
  41. 41. Capacidad de almacenamiento Estimada<br />Se utilizó la siguiente ecuación:<br />Cmax = L * Tmax / (Psize* Dsize)<br />Donde:<br />Cmax : Capacidad máxima en bytes<br />L: Ancho de banda en bytes por segundo<br />Tmax: Máximo tiempo de vida de un paquete en segundos<br />Psize: Tamaño requerido de un paquete para almacenar los datos iniciales<br />Dsize: tamaño requerido de los paquetes para mantener la información<br />
  42. 42. DEMO<br />Un ejemplo de robo de recursos de manera parasitaria a través de http y html5, a través del uso de un acortador de URLs diseñado para este fin.<br />
  43. 43. Conclusiones<br />Muchas veces la diferencia entre un bug y una funcionalidad es muy difusa.<br />Genera varios interrogantes sobre la propiedad de los recursos en internet.<br />Es una técnica similar a la utilizada por BOINC (SETI@home) pero con diferente filosofía.<br />No necesariamente es una amenaza para la seguridad, pero es bueno conocer su existencia.<br />Muchos de sus conceptos son solo ideas que no tienen una forma eficiente de implementarse, pero en teoría es posible realizarlos<br />Mitigarla puede ser un problema MUY complejo debido a que se aprovecha de características fundamentales de los protocolos.<br />…<br />
  44. 44. Referencias<br />[1] http://www.nature.com/nature/journal/v412/n6850/abs/412894a0.html<br />[2] http://www.nd.edu/~parasite/tcp.pdf<br />[3] http://lcamtuf.coredump.cx/juggling_with_packets.txt <br />[4] http://portal.acm.org/citation.cfm?id=62050<br />
  45. 45. Preguntas<br />
  46. 46. Aquí encontrarán publicadas las charlas de LowNOISE<br />http://www.lownoisehg.org/CampusParty2011/<br />
  47. 47. Muchas Gracias!!!<br />bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org<br />

×