• Save
Computacion Parasitaria
Upcoming SlideShare
Loading in...5
×
 

Computacion Parasitaria

on

  • 793 views

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

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

Statistics

Views

Total Views
793
Views on SlideShare
784
Embed Views
9

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 9

https://twitter.com 5
http://twitter.com 2
http://paper.li 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Computacion Parasitaria Computacion Parasitaria Presentation Transcript

  • 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 bytemare
    Descubrí el gusto por los computadores desde los 4 años (Gracias papá!!)
    En el mundo de la seguridad desde el año 96
    Ingeniero de Sistemas (Uniandes)
    Especialista en seguridad de la información (Uniandes)
    Trabajo en Informática Forense desde el 2003
    Mi primer computador
  • Disclaimer
    Todo 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: Parasitismo
    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.
    http://es.wikipedia.org/wiki/Parasitismo
  • Definición: Computación parasitaria
    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.
  • 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.
  • Antecedentes
    El 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 Original
    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.
    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 inicial
    El parasito y el destino se pueden “ver” por la red
  • Paso 1: Apertura de conexión TCP modificada
    Pasos
    Abrir la conexión TCP desde el parásito
    Intercambiar 3 mensajes (3-Way Handshake)
    Extraer el número de secuenciainicial (ISN) del host (Se necesitaparacomunicarsemásadelante)
  • Paso 1: Abrir la conexión
    Enviar segmento SYN
  • Paso 1: Abrir la conexión
    Recibir el segmento SYN y extraer el ISN
  • Paso 1: Abrir la conexión
    Enviar Segmento ACK. Conexión abierta, listo para transmitir!
  • Paso 2: Preparar el segmento TCP
    Calcular checksum:
    Normalmente:
    Rellenar con ceros el campo del checksum
    Sumar el segmento (En bloques de 16-bits)
    Insertar el resultado en el campo del checksum
    Modificación (Para el ataque)
    Rellenar con ceros el campo del checksum
    Poner 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 TCP
    Checksum: Se determina por el problema a resolver (Ecuación booleana)
    Data: Las variables que se someterán a prueba
  • Paso 3: Computar
    Hay 2 casos:
    Respuesta Positiva: Las variables satisfacen la ecuación
    Respuesta 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á perdido
    Esto sirvió de inspiración para otras ideas interesantes
  • Almacenamiento Parasitario
    La 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 Idea
    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).
    Este podría aprovecharse para almacenar datos temporalmente en la red
    Se definen 2 tipos de almacenamiento
  • Tipos de almacenamiento flotante
    Clase A
    Aprovecha características de algunos protocolos que envían como respuesta los mismos datos que estaban en el requerimiento inicial:
    TCP: Syn+Ack, Rst+Ack
    ICMP: Echo Request/Reply
    Errores en HTTP, FTP o SMTP
  • Ejemplo almacenamiento clase A
    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
    request) y recibir una respuesta de tipo 0 (echo reply), también conocida como ping.
  • Recordemos el Ping
    2 Tipos de mensajes
    Echo request, tipo 8
    Echo Reply, tipo 0
  • Ping
    Tiene 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 icmp
    Si 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 flotante
    Clase B
    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.
  • Almacenamiento clase B: SMTP
  • Propiedades almacenamiento Flotante
    Tipo A
    Baja latencia (de milisegundos a minutos)
    Baja capacidad por sistema (No muy útil para almacenamiento masivo)
    No muy confiable si la red presenta muchas pérdidas
    Poca probabilidad de almacenamiento permanente (Anti-forense)
    Tipo B
    Latencia alta (De minutos a horas)
    Alta capacidad de almacenamiento con tiempo de vida considerable
    Varios intentos de acceso
    Alta probabilidad de dejar rastros en el hosts
  • Capacidad de almacenamiento Estimada
    Se utilizó la siguiente ecuación:
    Cmax = L * Tmax / (Psize* Dsize)
    Donde:
    Cmax : Capacidad máxima en bytes
    L: Ancho de banda en bytes por segundo
    Tmax: Máximo tiempo de vida de un paquete en segundos
    Psize: Tamaño requerido de un paquete para almacenar los datos iniciales
    Dsize: tamaño requerido de los paquetes para mantener la información
  • DEMO
    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.
  • Conclusiones
    Muchas 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 realizarlos
    Mitigarla 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 LowNOISE
    http://www.lownoisehg.org/CampusParty2011/
  • Muchas Gracias!!!
    bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org