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 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
5. 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.
6. 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
7. 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.
8. 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.
9. 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.
10. 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)
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)
14. 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)
16. Paso 1: Abrir la conexión Recibir el segmento SYN y extraer el ISN
17. Paso 1: Abrir la conexión Enviar Segmento ACK. Conexión abierta, listo para transmitir!
18. 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
19. 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
20. Paso 3: Computar Hay 2 casos: Respuesta Positiva: Las variables satisfacen la ecuación Respuesta negativa: Las variables no satisfacen la ecuación
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? Sin embargo, la solución no es viable debido a un pequeño problema
28. ¡¡¡¡¡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
29. Pero no todo está perdido Esto sirvió de inspiración para otras ideas interesantes
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 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
33. 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
34. 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.
35. Recordemos el Ping 2 Tipos de mensajes Echo request, tipo 8 Echo Reply, tipo 0
36. 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
37. 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
38. 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.
40. 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
41. 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
42. 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.
43. 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. …