Este documento presenta varias técnicas para romper el protocolo TCP/IP, incluyendo port scanning, spoofing de IP e ICMP, hijacking de conexiones, y ataques basados en redireccionamiento ICMP como suplantación de DNS. El orador explica cómo funcionan estos métodos y cómo aprovechan las características subyacentes de los protocolos para propósitos no intencionados, a veces relacionados con seguridad pero no necesariamente maliciosos.
How to use Redis with MuleSoft. A quick start presentation.
Rompiendo el protocolo: Usos y abusos de TCP/IP
1.
2. Rompiendo el protocolo: Usos y Abusos de TCP/IPDaniel Torres Falkonert (bytemare) bytemare@lownoisehg.orgtwitter: @bytemarehackhttp://www.lownoisehg.org
3. Agenda Avisos Parroquiales ¿Qué es romper el protocolo? Obedeciendo las reglas Rompiendo El protocolo Ejemplos Conclusiones
4. 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 ?
5. 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
6. 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.
8. ¿Qué es romper el protocolo? protocolo. (Del b. lat. protocollum, y este del gr. πρωτόκολλον). 1. m. Serie ordenada de escrituras matrices y otros documentos que un notario o escribano autoriza y custodia con ciertas formalidades. 2. m. Acta o cuaderno de actas relativas a un acuerdo, conferencia o congreso diplomático. 3. m. Regla ceremonial diplomática o palatina establecida por decreto o por costumbre. 4. m. Plan escrito y detallado de un experimento científico, un ensayo clínico o una actuación médica.
9. Esencialmente es encontrar usos no intencionados a las leyes y propiedades de un sistema para aplicarlas en formas nuevas e inventivas para resolver un problema
12. Protocolo IP “Es un protocolo no orientado a conexión usado tanto por el origen como por el destino para la comunicación de datos a través de una red de paquetes conmutados”
13. Protocolo IPv4 local ISP local ISP Tier 3 ISP local ISP local ISP Tier-2 ISP Tier-2 ISP NAP Tier-2 ISP local ISP Tier-2 ISP Tier-2 ISP local ISP local ISP local ISP Provee 3 servicios primarios Direccionamiento Global Servicio de datagramas no fiable (Besteffort) Fragmentación Tier 1 ISP Tier 1 ISP Tier 1 ISP
14. Capa de red Diferentes problemas afectan la red . Daños de Hardware Congestión en la red Malas configuraciones … Diferentes tecnologías Esto puede tener diferentes efectos Pérdidas Duplicaciones Fragmentación Retardos daños en los datos …
15. Servicio Confiable ¿Cómo asegurar la confiabilidad a las aplicaciones si los protocolos inferiores no son confiables?
19. Encabezado Payload Datos Originales TCP divide los datos en paquetes… Añade los encabezados a cada paquete En el destino, se usa la información de los encabezados para reensamblar los datos originales Fragmentación en el origen(Flujo no estructurado)
20. Confirmación Positiva con Retransmisión Host 2 Host 1 Paquete Perdido Enviar paquete Iniciar Temp. El paquete debería llegar Y se debería enviar un ACK Temp El ACK debería llegar Expira el tiempo Retransmitir Paquete 1 Iniciar Temp Recibe Paquete 1 Envía ACK 1 Temp Recibe ACK 1 Cancelar Temp
26. Números de Secuencia Todo octeto de datos enviado por una conexión de TCP tiene asociado un número de secuencia Si hay un problema con un paquete solo se retransmite esta porción de los datos El mecanismo de acuse de recibo empleado es acumulativo, de tal forma que el acuse de recibo de un número de secuencia X indica que todos los octetos hasta, pero no incluyendo, X, han sido recibidos Este mecanismo permite la detección fácil y directa de duplicados o pérdida de segmentos. 26
27. Documentación Los rfc son las fuentes definitivas sobre los protocolos ARP (rfc826), IP (rfc791), ICMP (rfc792), TCP (rfc793), UDP (rfc768), … http://www.faqs.org/rfcs/
29. Port Scanning Se utiliza para saber qué puertos tiene abiertos un sistema. Se utilizan características básicas de TCP/IP para implementar la técnicas Se puede realizar con 2 enfoques Positivo Negativo 29 Daniel Torres Falkonert (C) 2008
30. Enfoque positivo Basado en las respuestas de los puertos que responden que están abiertos Rápido Confiable Fácil de detectar por la cantidad de paquetes 30 Daniel Torres Falkonert (C) 2008
31. TCP Connect Puerto Abierto Puerto Cerrado 31 Syn Syn Syn+Ack Rst+Ack Ack Rst No requiere privilegios e administrador Utiliza Stream Sockets Congestiona la red si se hacen muchas pruebas
32. TCP Half Open Scan Puerto Abierto Puerto Cerrado 32 Syn Syn Syn+Ack Rst+Ack Rst Requiere privilegios de administrador Utiliza Raw Sockets Congestiona un poco menos la red Daniel Torres Falkonert (C) 2008
33. Enfoque Negativo Basado en las respuestas de los puertos que responden que están cerrados Lento Poco fiable Un poco más difícil de detectar pero los paquetes tienen opciones sospechosas 33 Daniel Torres Falkonert (C) 2008
34. Null Stealth Scan Puerto Abierto Puerto Cerrado 34 Rst+Ack Requiere privilegios de administrador Utiliza Raw Sockets Congestiona poco la red Daniel Torres Falkonert (C) 2008
35. XMAS Stealth Scan Puerto Abierto Puerto Cerrado 35 Fin+Psh+Urg Fin+Psh+Urg Rst+Ack Requiere privilegios de administrador Utiliza Raw Sockets Congestiona poco la red Daniel Torres Falkonert (C) 2008
36. IP Spoofing “Suplantación de IP. Consiste básicamente en sustituir la dirección IP origen de un paquete TCP/IP por otra dirección IP a la cual se desea suplantar. “
47. Redireccionamiento Un paquetepara 192.168.1.x Reenvío 1st paquete redireccion Los siguientes paquetes Los hosts aprenden nuevas rutas por medio de redireccionamiento 192.168.20.0 192.168.1.0 192.168.1.1 Router 206.71.183.1 192.168.20.1 Router 206.71.183.2 IP 106.91.183.9 Default router 106.91.183.2 106.91.183.0 Host
48. Ataque de suplantación DNS, con la técnica de redirección ICMP El objetivo de este ataque es realizar una suplantación del servicio de DNS utilizado por el sistema con dirección IP 192.168.1.104 con dirección MAC 00:21:70:ED:EA:50. Se aplicará la técnica de redirección a través de mensajes ICMP código 5 tipo 1 [1], que permiten cambiar dinámicamente la tabla de enrutamiento de un host. El ataque fue realizado desde un sistema GNU/Linux 2.6.20 contra un Sistema Windows XP SP3. Para realizar la suplantación de DNS se utilizó la herramienta dnsspoof.
49. Ataque de suplantación DNS, con la técnica de redirección ICMP Este ataque tiene un efecto similar al ataque de hombre en el medio a través del envenamiento de la tabla ARP, sin embargo, tiene varias diferencias significativas: Modifica las tablas de enrutamiento de la víctima Un único paquete para que la víctima redirija el tráfico hacia el sistema del atacante por un tiempo razonable. No redirige todo el tráfico de la víctima.
51. Ataque de suplantación DNS, con la técnica de redirección ICMP Configuración de la red de la víctima
52. Ataque de suplantación DNS, con la técnica de redirección ICMP Tabla ARP de la víctima donde se puede ver la dirección MAC de el enrutador que usa por defecto.
53. Ataque de suplantación DNS, con la técnica de redirección ICMP Tabla de enrutamiento. no aparecen entradas que dirijan el tráfico hacia el servidor DNS, es importante tener esto en cuenta para más adelante notar el efecto del ataque.
54. Ataque de suplantación DNS, con la técnica de redirección ICMP Ruta previa al ataque hacia el servidor DNS (solo los primeros 3 saltos) el tráfico dirigido al servidor DNS se realiza a través de la puerta de enlace por defecto.
55. Ataque de suplantación DNS, con la técnica de redirección ICMP Mostramos que no se puede encontrar el nombre de dominio www.banco.com.co ejecutando nslookup en la víctima
56. Ataque de suplantación DNS, con la técnica de redirección ICMP En la captura de tráfico se puede confirmar que el servidor DNS no puede resolver el dominio
57. Ataque de suplantación DNS, con la técnica de redirección ICMP Configuración de la red del atacante
58. Ataque de suplantación DNS, con la técnica de redirección ICMP Se configuró y ejecutó la herramienta DNS Spoof, notese que se responderá con la dirección local del atacante a toda solicitud de resolución de nombres relacionada con el dominio banco.com.co
59. Ataque de suplantación DNS, con la técnica de redirección ICMP Note en la Fig. que la dirección MAC destino de la solicitud de resolución está dirigida a la dirección MAC de la puerta de enlace por defecto. Este es un detalle importante a tener en cuenta para ver el efecto del ataque.
60. Ataque de suplantación DNS, con la técnica de redirección ICMP tráfico generado al enviarle el paquete que causará la modificación de la tabla de enrutamiento del sistema víctima. Nótese que el mensaje ICMP “redirect for host” envía a la víctima suplantando la dirección de la puerta de enlace por defecto. Dado que todavía no ha habido comunicación desde el sistema atacante con la víctima, es necesario hacer una solicitud de arp en busca de la dirección MAC correspondiente a la ip 192.168.1.101 (Víctima).
61. Ataque de suplantación DNS, con la técnica de redirección ICMP En el detalle del mensaje ICMP (Fig. 15) se le informa que la ruta hacia la dirección IP 190.157.2.140 (servidor de nombres de la víctima) ha cambiado y que ahora la puerta de enlace para este host ahora es la 192.168.1.130 (Sistema del atacante). Note que el paquete se origina desde la dirección MAC 00:0c:29:a7:bf:5f que corresponde a la máquina del atacante, sin embargo, la dirección origen es 192.168.1.1 que es la del Gateway por defecto, cuya dirección MAC es la 00:21:29:78:ba:ae. Esto es una clara utilización de la técnica de suplantación IP (IP Spoofing).
62. Ataque de suplantación DNS, con la técnica de redirección ICMP Actualización de la tabla arp de la víctima
63. Ataque de suplantación DNS, con la técnica de redirección ICMP Tabla de enrutamiento de la víctima. Note la tercera entrada de la tabla.
64. Ataque de suplantación DNS, con la técnica de redirección ICMP Se logró suplantar al servidor de nombres, se ejecutó de nuevo un ping al nombre de dominio www.banco.com.co, para demostrar que ahora este se resuelve a la dirección IP del sistema atacante.
65. Ataque de suplantación DNS, con la técnica de redirección ICMP puede observase el proceso que sigue la aplicación ping ejecutada desde el sistema víctima, donde primero hace una solicitud ARP para averiguar la puerta de enlace a utilizar para dirigir el datagrama con la petición DNS, luego esta última se realiza y se responde suplantando al servidor DNS, en este punto es cuando entra en juego la aplicación dnsspoof. Y los siguientes paquetes muetran una secuencia normal ICMP echo request/reply (ping) desde el sitema víctima a la dirección ip resuelta por el supuesto DNS, que resulta ser la misma dirección desde la que se ejecutó el ataque, vale la pena decir que esta respuesta se hubiera podido dirigir a cualquier otra dirección IP.
66. Ataque de suplantación DNS, con la técnica de redirección ICMP Note como cambia la ruta a seguir para llegar al servidor DNS, nótese que ahora el primer salto es el sistema atacante y no la puerta de enlace por defecto.
67. Ataque de suplantación DNS, con la técnica de redirección ICMP Muchas veces la diferencia entre bug y funcionalidad es difusa. Este ataque puede extenderse para atacar otros servicios.
69. Hacking y programación ¿Para qué desarrollarlas? Adaptarse fácilmente a diferentes entornos Implementación de nuevas técnicas Modificar otras herramientas Evitar la detección
70. Herramientas de Hacking “A network security tool is an algorithmic implement that is designed to probe, assess, or increase the overall safety of or to mitigate the risk associated with an entity across a communications medium”. Mike Schiffman[7] Network securitytool== herramienta de hacking
73. Berkeley Sockets Son estructuras de datos que permiten la comunicación entre procesos. En nuestro caso a través de una red Los “Berkeley sockets” (A.K.A. BSD socket API) son una librería que permite su implementación. Es el estándar para sockets de red.
74. Socket: es una puerta entre el proceso aplicación y el protocolo de transporte de extremo a extremo (UCP o TCP) Controlado por El desarrollador De la aplicación Controlado por El desarrollador De la aplicación proceso Sockets proceso socket socket TCP con buffers, variables TCP con buffers, variables Controlado por el sistema operativo Controlado por el sistema operativo Internet servidoro cliente cliente o servidor
75. Visto de otra forma Puerto Puerto Proceso Proceso Transporte Host Host 76
76. Familias de Sockets Pueden ser: PF_INET para IPv4 PF_INET6 para IPv6. PF_PACKET para protocolos capa de enlace PF_UNIX comunicación local Dependiendo de la capa en la que se quiere trabajar hay diferentes tipos de socket
77. Stream Sockets (Capa de transporte) Se utilizan en la mayoría de los casos, en especial cuando no es necesario manipular los campos de los protocolos de red y transporte Pueden ser: De Flujo (Stream) sd = socket (PF_INET, SOCK_STREAM, 0) De Datagramas sd = socket (PF_INET, SOCK_DGRAM, 0) 0 se refiere al protocolo por defecto de transporte Más información: man 7 socket
78. Raw Sockets (Capa de Internet) Se utilizan para acceder a los protocolos de la capa de internet. Permiten manipular el segmento de datos Se llaman Raw Sockets: sd = socket (PF_INET, SOCK_RAW, <Protocol>) Protocol puede ser: IPPROTO_TCP, IPPROTO_UDP, IPPROTO_ICMP, IPPROTO_RAW
79. Raw Sockets (Capa de Internet) En algunos Casos, también se requiere manipular los campos del encabezado IP.(p.e. IP Spoofing) Para esto se especifica la opción IP_HDRINCL con la función setsockopt(): constinton = 1; setsockopt(sockd, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) Mas información: man 7 raw
80. Packet Sockets (Capa de Enlace) Se utilizan para acceder a los protocolos de la capa de enlace. Sockets de más bajo nivel (a nivel del Driver del dispositivo) Se llaman Packet Sockets Con ellos se puede hacer un Sniffer Prototipo: #include <sys/socket.h> #include <netpacket/packet.h> #include <net/ethernet.h> /* The L2 protocols */ sd = socket (PF_PACKET, intsocket_type, intprotocol)
82. Aclaración Se han eliminado líneas no relevantes en el código fuente que se presenta a continuación. En especial la parte de verificación de errores. Sin embargo al implementar las herramientas es importante incluir estas verificaciones
88. ¿Cómo se podría mejorar? Agregándole una función filtro Cuando se cumpla el criterio (o no se cumpla) ejecutar alguna acción Inyección de paquetes Análisis de encabezados Análisis de contenidos (DPI) Estadísticas …
90. El Backdoor Este es un ejemplo más elaborado Es una puerta trasera que se puede instalar en un sistema Linux ya comprometido. Solo hace uso de librerías estándar. Utiliza raw sockets y stream sockets Debe ejecutarse con privilegios de root Se ejecuta: Backdoor <clave>
91. ¿Cómo empezó todo? Corre en modo demonio. Espera que llegue un paquete especial ICMP tipo 0 (echo reply) Lo especial es que verifica el identificador de icmp si coincide se conecta a la dirección ip origen y al puerto que viene en el número de secuencia Si no coincide simplemente lo ignora
92. ¿Que tiene de especial? No está escuchando en ningún puerto, por lo tanto netstat no lo ve. Tampoco lo ve un port scanner. Se puede ver a través de ps (pero se le puede poner un nombre que no genere sospechas (sysklogd, httpd, etc.). Usando técnicas de rootkits se puede esconder aún más.
101. ¿Cómo Mejorarlo? Usar el campo de datos de icmp Soporte de otro tipo de mensajes icmp No usar la dirección origen del encabezado ip Aprovechar la fragmentación de ip Ejecutarlo como un LKM …
102. El Generador de paquetes El complemento del backdoor es un programa para generar un paquete ICMP con los datos que se necesitan para la conexión. La clave La Dirección IP El Puerto Utiliza Raw Sockets También la técnica IP Spoofing, de esta manera se le puede poner cualquier dirección de origen ]:-)
106. ¿Cómo mejorarlo? Generar los campos de los encabezados de manera dinámica Manejar otro tipo de mensajes ICMP Manipulación del segmento de datos …
107. El Backdoor Mejorado Es la misma idea del anterior También usa icmp (codigo 8 y 0) Cambia la forma de conectarse y de asignar el puerto Lo interesante es que utiliza el protocolo de intercambio de Diffie-Hellman para determinar en cuál puerto escuchar
108. ¿Qué hace? Espera que llegue un paquete ICMP tipo 8 (echo reply) con código 1 Si el código es 0, como normalmente debería ser, responde como un servidor de ping normal. De lo contrario hace el intercambio de diffie-Helmann
109. ¿Que tiene de especial? No está escuchando en ningún puerto, por lo tanto netstat no lo ve. Tampoco lo ve un port scanner. Se puede ver a través de ps (pero se le puede poner un nombre que no genere sospechas (sysklogd, httpd, etc.). Usando técnicas de rootkits se puede esconder aún más.
111. Ping Se utiliza para hacer pruebas Si el destino es alcanzable RTT (Round Trip Time) 2 Tipos de mensajes Echo request, tipo 8 Echo Reply, tipo 0
112. Ping Adiciona 2 campos al encabezado ICMP Identificador y secuencia También puede incluir una marca de tiempo En el paquete de respuesta se incluyen los mismos datos que en el del requerimiento
115. Protocolo de Diffie-Hellman Desarrollado por Whitfield Diffie y Martin Hellman Permite el intercambio secreto de claves entre dos partes que no han tenido contacto previo, utilizando un canal inseguro, y de manera anónima (no autenticada).
116. Protocolo de Diffie-Hellman Para dos partes A y B que intentan establecer una clave secreta y un adversario E, la versión básica es como sigue: Se establecen un primo p y un generador Estos son públicos, conocidos no sólo por las partes A y B sino también por el adversario E. A escoge al azar calcula X = g^x mod p, y envía X a B B escoge al azar calcula Y = g^y mod p, y envía Y a A
120. Conclusiones Es clave entender la teoría No hace daño leer los rfc Piense en alto nivel, programe en bajo nivel Baje de nivel según la necesidad (¿Hacer un cliente http con packet sockets?:-S) No es necesario aprenderse de memoria los llamados a las funciones. La red está plagada de ejemplos Use los buscadores!!!!! Hacker que se respete desarrolla algunas de sus herramientas