Computación ParasitariaDaniel Torres Falkonert (bytemare) bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org
Grupo de Investigación (Hacking only) Creado en 1995 Multidisciplinario (No sólo Ingenieros) Objetivo Común:Seguridad vs. Inseguridad Sin Ánimo de Lucro Recursos Propios Sin Afiliación a Empresas/Entidades¿ Qué es LowNoise HG ?
Sobre bytemareDescubrí el gusto por los computadores desde los 4 años (Gracias papá!!)En el mundo de la seguridad desde el año 96Ingeniero de Sistemas (Uniandes)Especialista en seguridad de la información (Uniandes)Trabajo en Informática Forense desde el 2003Mi primer computador
DisclaimerTodo lo que se hable y se muestre en esta charla es el resultado de investigaciones con fines educativos.Todo descubrimiento realizado, ha sido y será usado de forma legal, por LNHG.La audiencia debe asumir todo lo se exponga hoy, como “falso” y “sin fundamento” hasta que lo compruebe personalmente.
Definición: ParasitismoProceso por el cual una especie amplía su capacidad de supervivencia utilizando a otras especies para que cubran sus necesidades básicas y vitales.http://es.wikipedia.org/wiki/Parasitismo
Definición: Computación parasitariaEs 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.
Pero eso no es lo que hace el malware?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.
AntecedentesEl término surgió a raíz de una publicación que salió en el año 2001 en la revista nature.Se afirma que es posible  aprovecharse de los algoritmos para la verificación de errores en los datos del protocolo TCP.
La idea OriginalAl 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.El destino hará una verificación de integridad de los datos:Los que fallen la prueba serán descartados (Respuesta erronea)Los que la pasen seran aceptados y se enviará una respuesta (Respuesta correcta)
La idea Original (Cont.)Al aprovechar de manera distribuida (y masiva) esta capacidad de cómputo , se podrían resolver problemas muy Complejos (Del tipo NP Completo)
Ejemplo [2]Veamos como funciona
Configuración inicialEl parasito y el destino se pueden “ver” por la red
Paso 1: Apertura de conexión TCP modificadaPasosAbrir la conexión TCP desde el parásitoIntercambiar 3 mensajes (3-Way Handshake)Extraer el número de secuenciainicial (ISN) del host (Se necesitaparacomunicarsemásadelante)
Paso 1: Abrir la conexiónEnviar segmento SYN
Paso 1: Abrir la conexiónRecibir el segmento SYN y extraer el ISN
Paso 1: Abrir la conexiónEnviar Segmento ACK.  Conexión abierta, listo para transmitir!
Paso 2: Preparar el segmento TCPCalcular checksum:Normalmente:Rellenar con ceros el campo del checksumSumar el segmento (En bloques de 16-bits)Insertar el resultado en el campo del checksumModificación (Para el ataque)Rellenar con ceros el campo del checksumPoner la posiblerespuesta en el campo de datos, rellenandoparaobtener la longitudadecuada.Sumar el segmento (En bloques de 16-bits)Insertar el resultado en el campo del checksum
Paso 2: Preparar el segmento TCPChecksum: Se determina por el problema a resolver (Ecuación booleana)Data: Las variables que se someterán a prueba
Paso 3: ComputarHay 2 casos:Respuesta Positiva: Las variables satisfacen la ecuaciónRespuesta negativa: Las variables no satisfacen la ecuación
Paso 3a: Computar (Repuesta positiva)Enviar el segmento TCP Modificado
Paso 3a: Computar (Respuesta positiva)Segmento TCP Válido, se pasa a la capa de aplicación
Paso 3a: Computar (Respuesta positiva)Respuesta del protocolo de aplicación. Al recibirla se sabe que la respuesta satisface la ecuación.
Paso 3b: Computar (Respuesta negativa)Se envía el segmento modificado
Paso 3b: Computar (Respuesta negativa)Segmento inválido!!! Se descarta en la capa de transporte
Paso 3b: Computar (Respuesta negativa)Expira el temporizador en el parasito. Asume que la respuesta es incorrecta.Hay que tener en cuenta que  la respuesta podría perderse y el parásito pensar que la respuesta es negativa (Falso negativo)
Suena bien, cierto?Sin embargo, la solución no es viable debido a un pequeño problema
¡¡¡¡¡La eficiencia!!!!!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.Además el uso del ancho de banda sería excesivo
Pero no todo está perdidoEsto sirvió de inspiración para otras ideas interesantes
Almacenamiento ParasitarioLa Red como medio de almacenamiento
Malabarismo con paquetes [3]Salewsky y Purczynski propusieron diferentes vectores de ataque que se aprovecharían de la capacidad de almacenamiento que pueda tener una red.
La IdeaEl 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).Este podría aprovecharse para almacenar datos temporalmente en la redSe definen 2 tipos de almacenamiento
Tipos de almacenamiento flotanteClase AAprovecha características de algunos protocolos que envían como respuesta los mismos datos que estaban en el requerimiento inicial:TCP: Syn+Ack, Rst+AckICMP: Echo Request/ReplyErrores en HTTP, FTP o SMTP
Ejemplo almacenamiento clase AUna 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 (echorequest) y recibir una respuesta de  tipo 0 (echo reply), también conocida como ping.
Recordemos el Ping2 Tipos de mensajesEcho request, tipo 8Echo Reply, tipo 0
PingTiene una característica interesante: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.En teoría puede funcionar como un flip-flop pero en la red
Malabarismo con icmpSi se realizan varios requerimientos Echo request/Reply, en teoría se puede generar un sistema de almacenamiento.Para compensar las pérdidas se pueden usar algoritmos tipo IDA (InformationDispersalAlgorithm) [4]Esta implementación se encuentra en desarrollo por LowNOISEHG
Tipos de almacenamiento flotanteClase BUtiliza 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.
Almacenamiento clase B: SMTP
Propiedades almacenamiento FlotanteTipo ABaja latencia (de milisegundos a minutos)Baja capacidad por sistema (No muy útil para almacenamiento masivo)No muy confiable si la red presenta muchas pérdidasPoca probabilidad de almacenamiento permanente (Anti-forense)Tipo BLatencia alta (De minutos a horas)Alta capacidad de almacenamiento con tiempo de vida considerableVarios intentos de accesoAlta probabilidad de dejar rastros en el hosts
Capacidad de almacenamiento EstimadaSe utilizó la siguiente ecuación:Cmax = L * Tmax / (Psize* Dsize)Donde:Cmax : Capacidad máxima en bytesL:  Ancho de banda en bytes por segundoTmax: Máximo tiempo de vida de un paquete en segundosPsize: Tamaño requerido de un paquete para almacenar los datos inicialesDsize: tamaño requerido de los paquetes para mantener la información
DEMOUn 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.
ConclusionesMuchas veces la diferencia entre un bug y una funcionalidad es muy difusa.Genera varios interrogantes sobre la propiedad de los recursos en internet.Es una técnica similar a la utilizada por BOINC (SETI@home) pero con diferente filosofía.No necesariamente es una amenaza para la seguridad, pero es bueno conocer su existencia.Muchos de sus conceptos son solo ideas que no tienen una forma eficiente de implementarse, pero en teoría es posible realizarlosMitigarla puede ser un problema MUY complejo debido a que se aprovecha de características fundamentales de los protocolos.…
Referencias[1] http://www.nature.com/nature/journal/v412/n6850/abs/412894a0.html[2] http://www.nd.edu/~parasite/tcp.pdf[3] http://lcamtuf.coredump.cx/juggling_with_packets.txt [4] http://portal.acm.org/citation.cfm?id=62050
Preguntas
Aquí encontrarán publicadas las charlas de LowNOISEhttp://www.lownoisehg.org/CampusParty2011/
Muchas Gracias!!!bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org

Computacion Parasitaria

  • 2.
    Computación ParasitariaDaniel TorresFalkonert (bytemare) bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org
  • 3.
    Grupo de Investigación(Hacking only) Creado en 1995 Multidisciplinario (No sólo Ingenieros) Objetivo Común:Seguridad vs. Inseguridad Sin Ánimo de Lucro Recursos Propios Sin Afiliación a Empresas/Entidades¿ Qué es LowNoise HG ?
  • 4.
    Sobre bytemareDescubrí elgusto por los computadores desde los 4 años (Gracias papá!!)En el mundo de la seguridad desde el año 96Ingeniero de Sistemas (Uniandes)Especialista en seguridad de la información (Uniandes)Trabajo en Informática Forense desde el 2003Mi primer computador
  • 5.
    DisclaimerTodo lo quese hable y se muestre en esta charla es el resultado de investigaciones con fines educativos.Todo descubrimiento realizado, ha sido y será usado de forma legal, por LNHG.La audiencia debe asumir todo lo se exponga hoy, como “falso” y “sin fundamento” hasta que lo compruebe personalmente.
  • 6.
    Definición: ParasitismoProceso porel cual una especie amplía su capacidad de supervivencia utilizando a otras especies para que cubran sus necesidades básicas y vitales.http://es.wikipedia.org/wiki/Parasitismo
  • 7.
    Definición: Computación parasitariaEsla 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.
  • 8.
    Pero eso noes lo que hace el malware?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.
  • 9.
    AntecedentesEl término surgióa raíz de una publicación que salió en el año 2001 en la revista nature.Se afirma que es posible aprovecharse de los algoritmos para la verificación de errores en los datos del protocolo TCP.
  • 10.
    La idea OriginalAlInsertar 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.El destino hará una verificación de integridad de los datos:Los que fallen la prueba serán descartados (Respuesta erronea)Los que la pasen seran aceptados y se enviará una respuesta (Respuesta correcta)
  • 11.
    La idea Original(Cont.)Al aprovechar de manera distribuida (y masiva) esta capacidad de cómputo , se podrían resolver problemas muy Complejos (Del tipo NP Completo)
  • 12.
  • 13.
    Configuración inicialEl parasitoy el destino se pueden “ver” por la red
  • 14.
    Paso 1: Aperturade conexión TCP modificadaPasosAbrir la conexión TCP desde el parásitoIntercambiar 3 mensajes (3-Way Handshake)Extraer el número de secuenciainicial (ISN) del host (Se necesitaparacomunicarsemásadelante)
  • 15.
    Paso 1: Abrirla conexiónEnviar segmento SYN
  • 16.
    Paso 1: Abrirla conexiónRecibir el segmento SYN y extraer el ISN
  • 17.
    Paso 1: Abrirla conexiónEnviar Segmento ACK. Conexión abierta, listo para transmitir!
  • 18.
    Paso 2: Prepararel segmento TCPCalcular checksum:Normalmente:Rellenar con ceros el campo del checksumSumar el segmento (En bloques de 16-bits)Insertar el resultado en el campo del checksumModificación (Para el ataque)Rellenar con ceros el campo del checksumPoner la posiblerespuesta en el campo de datos, rellenandoparaobtener la longitudadecuada.Sumar el segmento (En bloques de 16-bits)Insertar el resultado en el campo del checksum
  • 19.
    Paso 2: Prepararel segmento TCPChecksum: Se determina por el problema a resolver (Ecuación booleana)Data: Las variables que se someterán a prueba
  • 20.
    Paso 3: ComputarHay2 casos:Respuesta Positiva: Las variables satisfacen la ecuaciónRespuesta negativa: Las variables no satisfacen la ecuación
  • 21.
    Paso 3a: Computar(Repuesta positiva)Enviar el segmento TCP Modificado
  • 22.
    Paso 3a: Computar(Respuesta positiva)Segmento TCP Válido, se pasa a la capa de aplicación
  • 23.
    Paso 3a: Computar(Respuesta positiva)Respuesta del protocolo de aplicación. Al recibirla se sabe que la respuesta satisface la ecuación.
  • 24.
    Paso 3b: Computar(Respuesta negativa)Se envía el segmento modificado
  • 25.
    Paso 3b: Computar(Respuesta negativa)Segmento inválido!!! Se descarta en la capa de transporte
  • 26.
    Paso 3b: Computar(Respuesta negativa)Expira el temporizador en el parasito. Asume que la respuesta es incorrecta.Hay que tener en cuenta que la respuesta podría perderse y el parásito pensar que la respuesta es negativa (Falso negativo)
  • 27.
    Suena bien, cierto?Sinembargo, la solución no es viable debido a un pequeño problema
  • 28.
    ¡¡¡¡¡La eficiencia!!!!!la capacidadde cómputo necesaria para implementar la generación de los paquetes, es proporcional al poder de cómputo necesaria para resolver el problema.Además el uso del ancho de banda sería excesivo
  • 29.
    Pero no todoestá perdidoEsto sirvió de inspiración para otras ideas interesantes
  • 30.
    Almacenamiento ParasitarioLa Redcomo medio de almacenamiento
  • 31.
    Malabarismo con paquetes[3]Salewsky y Purczynski propusieron diferentes vectores de ataque que se aprovecharían de la capacidad de almacenamiento que pueda tener una red.
  • 32.
    La IdeaEl artículose 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).Este podría aprovecharse para almacenar datos temporalmente en la redSe definen 2 tipos de almacenamiento
  • 33.
    Tipos de almacenamientoflotanteClase AAprovecha características de algunos protocolos que envían como respuesta los mismos datos que estaban en el requerimiento inicial:TCP: Syn+Ack, Rst+AckICMP: Echo Request/ReplyErrores en HTTP, FTP o SMTP
  • 34.
    Ejemplo almacenamiento claseAUna 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 (echorequest) y recibir una respuesta de tipo 0 (echo reply), también conocida como ping.
  • 35.
    Recordemos el Ping2Tipos de mensajesEcho request, tipo 8Echo Reply, tipo 0
  • 36.
    PingTiene una característicainteresante: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.En teoría puede funcionar como un flip-flop pero en la red
  • 37.
    Malabarismo con icmpSise realizan varios requerimientos Echo request/Reply, en teoría se puede generar un sistema de almacenamiento.Para compensar las pérdidas se pueden usar algoritmos tipo IDA (InformationDispersalAlgorithm) [4]Esta implementación se encuentra en desarrollo por LowNOISEHG
  • 38.
    Tipos de almacenamientoflotanteClase BUtiliza 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.
  • 39.
  • 40.
    Propiedades almacenamiento FlotanteTipoABaja latencia (de milisegundos a minutos)Baja capacidad por sistema (No muy útil para almacenamiento masivo)No muy confiable si la red presenta muchas pérdidasPoca probabilidad de almacenamiento permanente (Anti-forense)Tipo BLatencia alta (De minutos a horas)Alta capacidad de almacenamiento con tiempo de vida considerableVarios intentos de accesoAlta probabilidad de dejar rastros en el hosts
  • 41.
    Capacidad de almacenamientoEstimadaSe utilizó la siguiente ecuación:Cmax = L * Tmax / (Psize* Dsize)Donde:Cmax : Capacidad máxima en bytesL: Ancho de banda en bytes por segundoTmax: Máximo tiempo de vida de un paquete en segundosPsize: Tamaño requerido de un paquete para almacenar los datos inicialesDsize: tamaño requerido de los paquetes para mantener la información
  • 42.
    DEMOUn ejemplo derobo 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.
  • 43.
    ConclusionesMuchas veces ladiferencia entre un bug y una funcionalidad es muy difusa.Genera varios interrogantes sobre la propiedad de los recursos en internet.Es una técnica similar a la utilizada por BOINC (SETI@home) pero con diferente filosofía.No necesariamente es una amenaza para la seguridad, pero es bueno conocer su existencia.Muchos de sus conceptos son solo ideas que no tienen una forma eficiente de implementarse, pero en teoría es posible realizarlosMitigarla puede ser un problema MUY complejo debido a que se aprovecha de características fundamentales de los protocolos.…
  • 44.
    Referencias[1] http://www.nature.com/nature/journal/v412/n6850/abs/412894a0.html[2] http://www.nd.edu/~parasite/tcp.pdf[3]http://lcamtuf.coredump.cx/juggling_with_packets.txt [4] http://portal.acm.org/citation.cfm?id=62050
  • 45.
  • 46.
    Aquí encontrarán publicadaslas charlas de LowNOISEhttp://www.lownoisehg.org/CampusParty2011/
  • 47.