5. ¿Qué es y cómo funciona una red CDN?
Servidor de origen
www.dominio.com
www.dominio.com
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
+
=
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. 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. 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
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. 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. 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. 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. 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
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. 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
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
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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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</> under
your account. Domains must be signed up and active on CloudFlare."}
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
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)
56. Explotando las relaciones entre peers
Peering
Transit
Provider A
Provider B
Provider C
Multi-Homed
Customer
Customer
Customer
Customer
Customer
Customer
Customer
57. Explotando las relaciones entre peers
Peering
Transit
Provider A
Provider B
Provider C
Multi-Homed
Customer
Customer
Customer
Customer
Customer
Customer
Customer
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. Arquitectura en los routers
Imagen obtenida de http://wiki.nil.com/Control_and_Data_plane
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. 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. 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