Adivina quién viene a CDNear esta noche

809 views

Published on

Talk about how to identify and map CDN topology and technologies being used as well as several potential attack vectors against this kind of networks. Also, I explained how to process different information collected about a CDN network to infer routers information like role, vendor, peers and so on to create a graph database and apply some graph theory to spot critical assets. Everything was shown with a tool programmed for that, "CDN Mapper&Analyzer" (CDNMA). Finally few vulnerabilities (both reported and undisclosed) from CDN providers were shown.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
809
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Adivina quién viene a CDNear esta noche

  1. 1. Adivina quién viene a CDNear esta noche Alejandro Nolla Felipe Martín NAVAJA NEGRA CONFERENCE 2013
  2. 2. SHALL WE PLAY A GAME? Love to. How about attacking a CDN? WOULDN’T YOU PREFER A GOOD GAME OF CHESS?
  3. 3. class AlejandroNolla(mandalorian): #---------------------------------------------------------------------def __init__(self): self.name = 'Alejandro Nolla Blanco' self.nickname = 'z0mbiehunt3r' self.role = 'Threat Intelligence Analyst' self.interests = ['networking', 'python', 'offensive security']
  4. 4. Felipe Martín • • • • • Programador coj*nudo Y mejor amigo ;) Se ha currado toda la interfaz Troll friend is troll @fmartingr
  5. 5. ¿Qué es y cómo funciona una red CDN? Servidor de origen www.dominio.com www.dominio.com
  6. 6. Pero no toques, ¿por qué tocas? • • • • Utilización cada vez más habitual Falsa sensación de invulnerabilidad Mucho por aprender e investigar Aritmética básica + =
  7. 7. Vectores de ataque Servidor de origen www.dominio.com
  8. 8. Vectores de ataque Servidor de origen www.dominio.com
  9. 9. Vectores de ataque Servidor de origen www.dominio.com
  10. 10. Vectores de ataque Proveedor del servicio Servidor de origen www.dominio.com
  11. 11. Target #1: Frontales CDN • • Geolocalización de IPs de servidores • Asociación geolocalización -> País servido • Detección de balanceadores de carga/WAF/IPS • Qué Resolución DNS masiva Identificación de servicios Resol. DNS Cómo Análisis tecn. Ident. servicios
  12. 12. Nmap scan report for xxx.xxx.xxx.163 PORT STATE SERVICE REASON VERSION 20/tcp closed ftp-data reset 21/tcp closed ftp reset 25/tcp closed smtp reset 53/tcp closed domain reset 80/tcp open http syn-ack nginx 443/tcp open http syn-ack nginx 878/tcp closed unknown reset 3333/tcp open ssh syn-ack OpenSSH 4.3 (protocol 2.0) 8786/tcp open http reset Django httpd (WSGIServer 0.1; Python 2.4.3) 10050/tcp open tcpwrapped syn-ack
  13. 13. Nmap scan report for xxx.xxx.xxx.36 PORT STATE SERVICE REASON VERSION 80/tcp open http syn-ack nginx 1.0.14 443/tcp open http syn-ack nginx 1.0.14 2121/tcp open ftp syn-ack ProFTPD 1.3.3c 3333/tcp open ssh syn-ack OpenSSH 4.3 (protocol 2.0) 8080/tcp open http syn-ack Apache httpd 2.2.3 ((CentOS)) 8786/tcp open http syn-ack Django httpd (WSGIServer 0.1; Python 2.4.3) 10050/tcp open tcpwrapped syn-ack
  14. 14. Target #2: Infraestructura de red WAN
  15. 15. “Ecosistema” WAN • • • BGP • ASn / prefijos • Transit / Peering / IXP Routers • Protocolos • Fabricante • Características • Rol Topologías
  16. 16. Jefe! Una de traceroute....
  17. 17. Infiriendo la arquitectura • Cada prueba UDP utiliza un puerto de origen distinto 10  xxx.xxx.18.152  44  msec  48  msec  120  msec 11  xxx.xxx.18.197  44  msec      xxx.xxx.18.203  40  msec  44  msec 12  xxx.xxx.118.134  40  msec  44  msec      xxx.xxx.118.138  44  msec 13  xxx.xxx.240.195  44  msec  44  msec  40  msec xxx.xxx.18.203 xxx.xxx.118.138 xxx.xxx.18.152 xxx.xxx.240.195 xxx.xxx.18.197 xxx.xxx.118.134
  18. 18. Infiriendo la arquitectura • Cada prueba UDP utiliza un puerto de origen distinto 10  xxx.xxx.18.152  44  msec  48  msec  120  msec 11  xxx.xxx.18.197  44  msec      xxx.xxx.18.203  40  msec  44  msec 12  xxx.xxx.118.134  40  msec  44  msec      xxx.xxx.118.138  44  msec 13  xxx.xxx.240.195  44  msec  44  msec  40  msec xxx.xxx.18.203 xxx.xxx.118.138 xxx.xxx.18.152 xxx.xxx.240.195 xxx.xxx.18.197 xxx.xxx.118.134
  19. 19. Infiriendo la arquitectura • Cada prueba UDP utiliza un puerto de origen distinto 10  xxx.xxx.18.152  44  msec  48  msec  120  msec 11  xxx.xxx.18.197  44  msec      xxx.xxx.18.203  40  msec  44  msec 12  xxx.xxx.118.134  40  msec  44  msec      xxx.xxx.118.138  44  msec 13  xxx.xxx.240.195  44  msec  44  msec  40  msec xxx.xxx.18.203 xxx.xxx.118.138 xxx.xxx.18.152 xxx.xxx.240.195 xxx.xxx.18.197 xxx.xxx.118.134
  20. 20. Infiriendo la arquitectura • Cada prueba UDP utiliza un puerto de origen distinto 10  xxx.xxx.18.152  44  msec  48  msec  120  msec 11  xxx.xxx.18.197  44  msec      xxx.xxx.18.203  40  msec  44  msec 12  xxx.xxx.118.134  40  msec  44  msec      xxx.xxx.118.138  44  msec 13  xxx.xxx.240.195  44  msec  44  msec  40  msec xxx.xxx.18.203 xxx.xxx.118.138 xxx.xxx.18.152 xxx.xxx.240.195 xxx.xxx.18.197 xxx.xxx.118.134
  21. 21. Resolución inversa DNS • • • Comúnmente utilizado para troubleshooting Puede proporcionar valiosa información xe-11-1-0.edge1.NewYork1.Level3.net • Fabricante: juniper • Tipo de interfaz: 10_gigabit_ethernet • Rol: peering • Localización: Nueva York • Propietario: level3
  22. 22. Conexiones activas en el router 161/udp open snmp udp-response | snmp-netstat: | TCP xxx.xxx.xxx.34:23 xxx.xxx.xxx.202:49197 | TCP xxx.xxx.xxx.2:27692 xxx.xxx.xxx.1:179 | TCP xxx.xxx.xxx.196:26114 xxx.xxx.xxx.206:23 | TCP xxx.xxx.xxx.196:37388 xxx.xxx.xxx.150:179 | TCP xxx.xxx.xxx.203:12500 xxx.xxx.xxx.206:179 | TCP xxx.xxx.xxx.203:17543 xxx.xxx.xxx.205:179 | TCP xxx.xxx.xxx.203:32355 xxx.xxx.xxx.201:179 | TCP xxx.xxx.xxx.203:56588 xxx.xxx.xxx.33:179 | UDP xxx.xxx.xxx.196:123 *:* | UDP xxx.xxx.xxx.196:161 *:* |_ UDP xxx.xxx.xxx.196:162 *:*
  23. 23. Conexiones activas en el router 161/udp open snmp udp-response | snmp-netstat: | TCP xxx.xxx.xxx.34:23 xxx.xxx.xxx.202:49197 | TCP xxx.xxx.xxx.2:27692 xxx.xxx.xxx.1:179 | TCP xxx.xxx.xxx.196:26114 xxx.xxx.xxx.206:23 | TCP xxx.xxx.xxx.196:37388 xxx.xxx.xxx.150:179 | TCP xxx.xxx.xxx.203:12500 xxx.xxx.xxx.206:179 | TCP xxx.xxx.xxx.203:17543 xxx.xxx.xxx.205:179 | TCP xxx.xxx.xxx.203:32355 xxx.xxx.xxx.201:179 | TCP xxx.xxx.xxx.203:56588 xxx.xxx.xxx.33:179 | UDP xxx.xxx.xxx.196:123 *:* | UDP xxx.xxx.xxx.196:161 *:* |_ UDP xxx.xxx.xxx.196:162 *:* Telnet
  24. 24. Conexiones activas en el router 161/udp open snmp udp-response | snmp-netstat: | TCP xxx.xxx.xxx.34:23 xxx.xxx.xxx.202:49197 | TCP xxx.xxx.xxx.2:27692 xxx.xxx.xxx.1:179 | TCP xxx.xxx.xxx.196:26114 xxx.xxx.xxx.206:23 | TCP xxx.xxx.xxx.196:37388 xxx.xxx.xxx.150:179 | TCP xxx.xxx.xxx.203:12500 xxx.xxx.xxx.206:179 | TCP xxx.xxx.xxx.203:17543 xxx.xxx.xxx.205:179 | TCP xxx.xxx.xxx.203:32355 xxx.xxx.xxx.201:179 | TCP xxx.xxx.xxx.203:56588 xxx.xxx.xxx.33:179 | UDP xxx.xxx.xxx.196:123 *:* | UDP xxx.xxx.xxx.196:161 *:* |_ UDP xxx.xxx.xxx.196:162 *:* BGP
  25. 25. Interfaces en el router 161/udp open snmp udp-response | snmp-interfaces: | GigabitEthernet0/1 | IP address: xxx.xxx.xxx.196 Netmask: 255.255.255.248 | MAC address: 00:14:a8:00:00:2c (Cisco Systems) | Type: ethernetCsmacd Speed: 1 Gbps | Status: up | Traffic stats: 722.55 Mb sent, 4.19 Gb received | GigabitEthernet0/2 | IP address: yyy.yyy.yyy.2 Netmask: 255.255.255.252 | MAC address: 00:14:a8:00:00:2d (Cisco Systems) | Type: ethernetCsmacd Speed: 1 Gbps | Status: up | Traffic stats: 3.22 Gb sent, 3.13 Gb received | Loopback7 | IP address: xxx.xxx.xxx.203 Netmask: 255.255.255.255 | Type: softwareLoopback Speed: 4 Gbps | Status: up |_ Traffic stats: 0.00 Kb sent, 0.00 Kb received
  26. 26. Interfaces en el router 161/udp open snmp udp-response | snmp-interfaces: | GigabitEthernet0/1 | IP address: xxx.xxx.xxx.196 Netmask: 255.255.255.248 | MAC address: 00:14:a8:00:00:2c (Cisco Systems) | Type: ethernetCsmacd Speed: 1 Gbps | Status: up | Traffic stats: 722.55 Mb sent, 4.19 Gb received | GigabitEthernet0/2 | IP address: yyy.yyy.yyy.2 Netmask: 255.255.255.252 | MAC address: 00:14:a8:00:00:2d (Cisco Systems) | Type: ethernetCsmacd Speed: 1 Gbps | Status: up | Traffic stats: 3.22 Gb sent, 3.13 Gb received | Loopback7 | IP address: xxx.xxx.xxx.203 Netmask: 255.255.255.255 | Type: softwareLoopback Speed: 4 Gbps | Status: up |_ Traffic stats: 0.00 Kb sent, 0.00 Kb received
  27. 27. Interfaces en el router 161/udp open snmp udp-response | snmp-interfaces: | GigabitEthernet0/1 | IP address: xxx.xxx.xxx.196 Netmask: 255.255.255.248 | MAC address: 00:14:a8:00:00:2c (Cisco Systems) | Type: ethernetCsmacd Speed: 1 Gbps | Status: up | Traffic stats: 722.55 Mb sent, 4.19 Gb received | GigabitEthernet0/2 | IP address: yyy.yyy.yyy.2 Netmask: 255.255.255.252 | MAC address: 00:14:a8:00:00:2d (Cisco Systems) | Type: ethernetCsmacd Speed: 1 Gbps | Status: up | Traffic stats: 3.22 Gb sent, 3.13 Gb received | Loopback7 | IP address: xxx.xxx.xxx.203 Netmask: 255.255.255.255 | Type: softwareLoopback Speed: 4 Gbps | Status: up |_ Traffic stats: 0.00 Kb sent, 0.00 Kb received BGP/OSPF
  28. 28. Identificando Anycast BGP (RIPEstat)
  29. 29. Latencia de red (serialización + buffering + propagación) • Serialización : • Tamaño de paquete / Velocidad del enlace • 1500 bytes / 1Gbps = 0.12ms de retardo • Buffering o encolado: • Depende de la congestión del interfaz • Propagación: • Velocidad de la luz en el vacío ~300,000km/seg • Índice de refracción de la fibra óptica ~1.48 • Velocidad de la luz en fibra óptica ~200,000km/seg (300,000*(1/1.48)) • RTT mide el tiempo de ida y vuelta
  30. 30. Latencia de red (serialización + buffering + propagación) • Serialización : • Tamaño de paquete / Velocidad del enlace • 1500 bytes / 1Gbps = 0.12ms de retardo • Buffering o encolado: • Depende de la congestión del interfaz • Propagación: • Velocidad de la luz en el vacío ~300,000km/seg • Índice de refracción de la fibra óptica ~1.48 • Velocidad de la luz en fibra óptica ~200,000km/seg (300,000*(1/1.48)) • RTT mide el tiempo de ida y vuelta
  31. 31. Trilateración
  32. 32. Trilateración
  33. 33. IXP (Internet Exchange Point) • • • • Puntos de intercambio de tráfico La seguridad es responsabilidad de cada participante Localizaciones comunes para las principales redes CDN peeringdb.com: BBDD pública con información de peering • Peering públicos • Peering privados • Capacidades del enlace • Información variada sobre el tráfico
  34. 34. IXP en el mapa de Internet
  35. 35. Target #3: Servidor de origen • • • Necesitamos potenciales candidatos (ASn/rangos) Solicitar recurso no cacheable • GET / buscador/?query=consulta HTTP/1.1 Dos vías de análisis • Cabeceras HTTP • Contenido de la respuesta
  36. 36. Análisis de cabeceras HTTP AKAMAI Servidor de Origen HTTP/1.1 200 OK HTTP/1.1 200 OK Server: IBM_HTTP_Server Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:20 GMT Content-Type: text/html Server: IBM_HTTP_Server Content-Length: 2032 Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:16 GMT Content-Length: 2032 Connection: keep-alive Vary: Accept-Encoding Vary: Accept-Encoding Content-Type: text/html
  37. 37. Análisis de cabeceras HTTP AKAMAI Servidor de Origen HTTP/1.1 200 OK HTTP/1.1 200 OK Server: IBM_HTTP_Server Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:20 GMT Content-Type: text/html Server: IBM_HTTP_Server Content-Length: 2032 Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:16 GMT Content-Length: 2032 Connection: keep-alive Vary: Accept-Encoding Vary: Accept-Encoding Content-Type: text/html
  38. 38. Análisis de cabeceras HTTP AKAMAI Servidor de Origen HTTP/1.1 200 OK HTTP/1.1 200 OK Server: IBM_HTTP_Server Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:20 GMT Content-Type: text/html Server: IBM_HTTP_Server Content-Length: 2032 Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:16 GMT Content-Length: 2032 Connection: keep-alive Vary: Accept-Encoding Vary: Accept-Encoding Content-Type: text/html
  39. 39. Análisis de cabeceras HTTP AKAMAI Servidor de Origen HTTP/1.1 200 OK HTTP/1.1 200 OK Server: IBM_HTTP_Server Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:20 GMT Content-Type: text/html Server: IBM_HTTP_Server Content-Length: 2032 Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:16 GMT Content-Length: 2032 Connection: keep-alive Vary: Accept-Encoding Vary: Accept-Encoding Content-Type: text/html
  40. 40. Análisis de cabeceras HTTP AKAMAI Servidor de Origen HTTP/1.1 200 OK HTTP/1.1 200 OK Server: IBM_HTTP_Server Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:20 GMT Content-Type: text/html Server: IBM_HTTP_Server Content-Length: 2032 Accept-Ranges: bytes Date: Sun, 20 Nov 2012 10:12:16 GMT Content-Length: 2032 Connection: keep-alive Vary: Accept-Encoding Vary: Accept-Encoding Content-Type: text/html
  41. 41. Resultados en entorno real • • • • No somos vulnerables a DDoS, usamos CDN (ahí, provocando) Se descubrieron los servidores de origen • De producción • De pre-producción • Así como servidores de pruebas Vulnerables a múltiples ataques DoS Detección de balanceadores de carga • Y enumeración de IPs internas
  42. 42. Resultados en entorno real • • • • No somos vulnerables a DDoS, usamos CDN (ahí, provocando) Se descubrieron los servidores de origen • De producción • De pre-producción • Así como servidores de pruebas Vulnerables a múltiples ataques DoS Detección de balanceadores de carga • Y enumeración de IPs internas
  43. 43. Target #4: Proveedor servicio CDN • • • • • Notificadas múltiples vulnerabilidades Comunicación sólo hasta tener datos Rápidamente arregladas Múltiples intentos (infructuosos) de feedback Varias vulnerabilidades no notificadas :D
  44. 44. XSS Reflejado / Almacenado
  45. 45. Session Fixation GET / HTTP/1.1 Host: 190.93.240.253 ; __cfuid=cookie_tampering User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0 [...] HTTP/1.1 409 Conflict Server: cloudflare-nginx Date: Sat, 06 Jul 2013 19:12:03 GMT Content-Type: text/html Connection: keep-alive Cache-Control: max-age=6 Expires: Sat, 06 Jul 2013 19:12:09 GMT CF-RAY: 89e9ab725d3024a Set-Cookie: __cfduid=d06b07472e09dc[...]fc71373137923; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.240.253; __cfuid=cookie_tampering Content-Length: 2707
  46. 46. Potencial DoS/BoF de servidor backend GET / HTTP/1.1 Host: 190.93.240.253 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBC [...] HTTP/1.1 504 Gateway Time-out Server: cloudflare-nginx Date: Sat, 06 Jul 2013 19:14:11 GMT Content-Type: text/html Content-Length Connection: keep-alive CF-RAY: 89e9ab725d3024a Set-Cookie: __cfduid=d06b[...]7923; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=. 240.253 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbc
  47. 47. Posible bypass de WAF (no notificado) GET /api/v2/zstore/get?zsn=preset&z=aaaa.com</>&atok=1374[...]63 HTTP/1.1 Host: www.cloudflare.com [...] HTTP/1.1 200 OK Server: cloudflare-nginx [...] Content-Length: 71 {"request":{"act":"zstore_get"},"result":"error","msg":"Invalid zone."}
  48. 48. Posible bypass de WAF (no notificado) GET /api/v2/zstore/get?zsn=preset&z=aaaa.com%00</>&atok=1374[...]63 HTTP/1.1 Host: www.cloudflare.com [...] HTTP/1.1 200 OK Server: cloudflare-nginx [...] Content-Length: 169 {"request":{"act":"zstore_get"},"result":"error","msg":"Could not find aaaa.comu0000&lt;/&gt; under your account. Domains must be signed up and active on CloudFlare."}
  49. 49. ¿Atacar un CDN?
  50. 50. ¿Atacar un CDN?
  51. 51. ¿Atacar un CDN?
  52. 52. Atacar un CDN • Mapear infraestructura existente • Comprender la cohesión • Identificar puntos débiles • “It’s not a bug, it’s a feature” • Comprender la arquitectura interna de los dispositivos
  53. 53. El ataque de los cinco puntos de presión
  54. 54. Network boundaries y relaciones BPG • Identificación de fronteras de la red: • Aplicación de políticas de enrutamiento • Zona crítica en cuanto a capacidad y funcionamiento del routing • 4 te1-2-10g.ar3.DCA3.gblx.net (67.17.108.146) • 5 sl-st21-ash-8-0-0.sprintlink.net (144.232.18.65) • Identificación de relación BGP • t2-1.peer01.loudoun.va.ena.net (207.191.187.106) • ip65-46-186-97.z186-46-65.customer.algx.net (65.46.186.97)
  55. 55. Network boundaries y relaciones BPG Transit ISP ISP Backbone Peer ISP Cliente 2 Cliente 1
  56. 56. Explotando las relaciones entre peers Peering Transit Provider A Provider B Provider C Multi-Homed Customer Customer Customer Customer Customer Customer Customer
  57. 57. Explotando las relaciones entre peers Peering Transit Provider A Provider B Provider C Multi-Homed Customer Customer Customer Customer Customer Customer Customer
  58. 58. CDN-minigun (amplificando, que es gerundio) • • • • Necesitamos asegurar el “hit” • Solicitar recurso no existente (forzamos un 404) • Solicitar recurso no cacheable • Jugamos con la cabecera “Vary” No necesitamos recibir la respuesta del CDN ;) Solicitamos recursos pesados Throughput: peticiones/sec * IPs origen * frontales CDN
  59. 59. Arquitectura en los routers Imagen obtenida de http://wiki.nil.com/Control_and_Data_plane
  60. 60. Procesamiento de paquetes Slow Path (Control Plane) • • • Protocolos de enrutamiento (Routing Information Database) Procesador RISC (Instrucciones en software) Maneja algunas excepciones (IP options, ICMP generation, etc) Fast Path (Data Plane) • • Paquetes enviados a través del router Circuitos integrados ASIC (Instrucciones en hardware)
  61. 61. Atacando el control plane • • • ¿Fallo en el enlace? • Pérdida de sesión BGP • Efecto cascada (withdrawal de prefijos) Consumir CPU / buffers Low-Rate TCP-Targeted DoS / CXPST
  62. 62. Conclusiones • • • Una red CDN es un conjunto de redes • Múltiples y diversos dispositivos • Diferentes políticas de seguridad Mayor superficie de ataque Son necesarios técnicas y ataques más elaboradas
  63. 63. Rondita de preguntas @z0mbiehunt3r blog.alejandronolla.com alejandro.nolla@gmail.com

×