¿Cuánto cuesta hacer un ping todas las direcciones de Internet?

(Puedes comprobar el resultado de este experimento en la segunda parte de este post: Resultado de un ping lanzado a todas las direcciones de Internet)

Internet, la red de redes; todas las organizaciones modernas del mundo están conectadas a Internet. Un gran número de individuos disponemos de conexión a Internet, en el trabajo, en el domicilio particular y en el dispositivo móvil.

Esto nos puede hacer pensar que estamos hablando de un vasto rango de direcciones, dentro de las cuales los atacantes pueden centrar sus ataques en una organización determinada. Por ahora tomaremos como toda Internet el espacio de direcciones de IPv4. Cuando se despliegue y esté en uso IPv6, está claro que todo esto cambiara y habrá un nivel añadido de complejidad.

Pero, ¿y si quisiéramos realizar una acción contra todas y cada una de las direcciones de Internet? ¿Sería viable? ¿Cuánto nos costaría? ¿Recursos técnicos? ¿Recursos físicos? ¿Tiempo? ¿Dinero?
Todas estas cuestiones nos las podemos plantear de manera teórica y quizás después hacer un pequeño experimento. Para empezar con el ejercicio teórico, vamos a suponer el siguiente escenario:

  • Queremos hacerle un ping (ICMP ECHO) a todas y cada una de las direcciones de Internet.
  • Queremos almacenar el resultado de si han contestado al ping o no (vamos si han hecho pong).

Veamos algunos cálculos:

¿Cuántas direcciones IP hay?

256^4= 4.294.967.296, en números redondos 4 mil millones de direcciones.

¿Cuánto ancho de banda consume un ping?

  • En nuestro caso como vamos a considerar 58 bytes por ping.
  • Veamos el ancho de banda que consumiríamos en hacerle un ping a toda Internet: 256^4 * 58 bytes = 232 GB.

Si queremos almacenar en disco la respuesta con solo un bit por dirección nos ocuparía 512 MB. Si por comodidad de proceso guardamos un byte por cada respuesta tenemos 4GB.

Si consideramos un ancho de banda de 50 Mbits/sec tenemos que en 10 horas podemos tener el escaneo realizado.

Conocimientos técnicos necesarios: Necesitamos hacer un programa que envíe de manera continua y ciega los paquetes, y otro proceso recibirá las respuestas de manera stateless (existe software similar para escaneos TCP llamado scanrand).

Capacidad técnica: Cualquier informático con conocimiento de sockets en C, mirando el ping.c podría realizar este programa.

Potencia necesaria: Con un PC normalito es más que suficiente; en nuestros experimentos hemos podido hacerlo sin problemas con un Dual-Core 2.66Ghz 4GB de RAM y una conexión de 100Mbits a Internet.

Coste del equipo y la conexión: Pues en algún conocido hoster puede costar 30 EUR al mes. En porcentaje de uso del servidor podríamos decir que 0,42 EUR de presupuesto.

Así pues, cualquier persona con conocimientos programación en C con 30 Euros puede realizar una acción masiva y global a todas las direcciones de Internet en menos de 10 horas. Una muestra más que simplemente por estar conectado a Internet es posible recibir un ataque. En la historia de Internet han existido múltiples gusanos que han atacado de manera indiscriminada todas las direcciones de Internet, y las redes de hoy en día y la potencia de los equipos hacen que las incidencias locales se conviertan en globales en pocos minutos. Un famoso ejemplo de esto fue el gusano SQL Slammer que consiguió en poco menos de 10 minutos colapsar Internet, aprovechándose de una vulnerabilidad atacada con un solo paquete UDP de 376 bytes.

Así pues, ha quedado claro que Internet es un lugar muy, muy pequeño, y hay que estar bien protegido, ya que con tan solo estar conectado a Internet te conviertes en (al menos) un objetivo indirecto de ataques globales y automatizados. Y no estar en Internet ya no es una opción.

En el siguiente post veremos el resultado de llevar a la práctica este ejercicio teórico. Para ello, nos decidimos a realizar un simple y benigno ping, contra todas las direcciones IP de Internet. Aunque es cierto que un ping puede ser el primer paso para un ataque más sofisticado posterior, no es esta (evidentemente) la intención de este experimento. Además, el realizar un ping nos puede mostrar además el nivel de filtrado o en nivel poblacional de los rangos IP de Internet lo cual puede tener un cierto interés académico.

No se pierdan el siguiente post en el que pasaremos a describir los resultados del experimento. ¿Qué problemas técnicos nos habremos encontrado? ¿Cuántas habrán hecho un pong? ¿Cuántas quejas habremos recibido? ¿Algún contraataque? ¿Qué redes contestan más?

Comments

  1. La aproximación de 4*10^9 direcciones IP en internet es bastante correcta dado que si al total de direcciones le restamos las no enrutables (RFC1918) y las multicast (RFC5771) tenemos casi 290*10^6 menos a hacerles un ICMP echo reply.

  2. En este experimento aun conociendo que muchas redes estas reservadas según: http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml
    se han considerado como si todo el espacio fuera plano y accesible, tanto para los cálculos teóricos como para el ejercicio práctico.

  3. No tenia ni idea de esto la verdad y me he quedado ko, que un ataque masivo sea tan facil de generar…es acojonante.

  4. Con la mía os vais a gastar el dinero, no va a contestar.
    # iptables -A INPUT -i ppp0 -p icmp –icmp-type ping -jDROP

  5. Lo que más me inquieta es cómo llegas a tener estas inquietudes… Cuanto menos curioso y original!!

    Esperamos los resultados :)

  6. Hay un dato que no me cuadra, ni aquí ni en los resultados, y es que comentáis que lo habéis hecho con un PC normal, supongo que desde la casa de uno de vosotros y habéis dicho que con 50mbps se realizaría en 10h, que más bien, tirando de calculadora serían 11:40h, pero: ¿tenéis en vuestras casas 50mbps de subida o lo habéis hecho en vuestro lugar de trabajo o en algún sitio con una conexión más amplia?

    Un saludo.

  7. No lo hemos hecho desde una conexión doméstica sino desde un cpd con una buena conexión a Internet.