ICMP

El Protocolo de Mensajes de Control de Internet (ICMP por sus siglas en inglés) es un componente fundamental de la suite de protocolos de Internet. ICMP opera en la capa de red del modelo OSI y se utiliza para el diagnóstico, control y gestión de redes IP. A través de sus diversos tipos de mensajes y códigos, ICMP proporciona información sobre el estado y la eficiencia de la comunicación en la red.

Paquetes ICMP

Los mensajes ICMP son encapsulados en paquetes IP, lo que permite que los dispositivos de red intercambien información esencial para el funcionamiento y diagnóstico de la red. Cada mensaje ICMP contiene un campo de tipo y un campo de código que indican el propósito y la subclasificación del mensaje.

El "ping" es una utilidad de red utilizada para verificar la conectividad entre dos dispositivos en una red, generalmente una computadora cliente y un servidor. Su nombre proviene de la similitud con los sonidos que hacen los sonares en los submarinos para detectar objetos en su entorno. El ping envía pequeños paquetes de datos desde un dispositivo a otro y mide el tiempo que lleva que estos paquetes viajen de ida y vuelta. Esta medición se conoce como "tiempo de ida y vuelta" o "round-trip time" (RTT).

El ping se utiliza principalmente para diagnosticar problemas de conectividad en una red. Si los tiempos de ida y vuelta son consistentemente altos o si hay una alta tasa de paquetes perdidos, podría indicar problemas de congestión de red, latencia, problemas de enrutamiento o dispositivos inaccesibles.

Es importante tener en cuenta que no todos los dispositivos en una red pueden estar configurados para responder a los pings, por lo que un ping fallido no siempre indica un problema. Además, algunas redes pueden bloquear o limitar los paquetes ICMP por razones de seguridad.

Aquí te explico cómo funciona el proceso de ping:

  1. El Host A envía un paquete ICMP de solicitud de eco (ping) al Host B.
  2. El Host B recibe el paquete y responde con un paquete ICMP de respuesta de eco.
  3. El Host A recibe la respuesta y calcula el tiempo transcurrido entre el envío y la recepción.

Encabezado ICMP y Códigos

El encabezado ICMP consta de varias partes esenciales que permiten a los dispositivos de red comunicarse y diagnosticar problemas en la red. Además del campo "Type" (Tipo), también está el campo "Code" (Código), que proporciona información adicional sobre la naturaleza específica del mensaje ICMP.

  • 🔻 Tipo 0 (Echo Reply): Utilizado para responder a los mensajes de solicitud de eco (ping).
  • 🔻 Tipo 3 (Destino inalcanzable): Indica que la máquina de destino no es accesible o que un puerto específico en el destino no está disponible.
  • 🔻 Tipo 8 (Solicitud de eco - Ping): Se utiliza para verificar la conectividad entre dos dispositivos enviando un paquete de solicitud de eco y esperando una respuesta.
  • 🔻 Tipo 11 (Tiempo excedido): Indica que el paquete IP no pudo ser entregado dentro del tiempo esperado.
  • 🔻 Tipo 13 (Timestamp Request): Solicita que el host destino responda con su hora actual.
  • 🔻 Tipo 14 (Timestamp Reply): Respuesta a una solicitud de marca de tiempo.

El campo "Code" dentro del encabezado ICMP trabaja en conjunto con el campo "Type" para proporcionar detalles adicionales sobre el propósito del mensaje. Por ejemplo, para un mensaje ICMP de "Destino inalcanzable" (Type 3), el campo "Code" indica la razón exacta por la cual el destino es inalcanzable, como "Red inalcanzable", "Host inalcanzable", "Protocolo inalcanzable", etc.

Algunos tipos y códigos ICMP comunes incluyen:


Tipo 3: Destino inalcanzable
  • Código 0: Red inalcanzable.
  • Código 1: Host inalcanzable.
  • Código 2: Protocolo inalcanzable.
  • Código 3: Puerto inalcanzable.
  • Código 4: Fragmentación requerida y conjunto "No Fragmentar" (DF, Don't Fragment) establecido.
  • Código 5: Fuente de ruta fallida.
  • Código 6: Red de destino desconocida.
  • Código 7: Host de destino desconocido.
  • Código 9: Comunicación con el host de destino administrativamente prohibida.
  • Código 10: Comunicación con la red de destino administrativamente prohibida.
  • Código 11: Red de destino inalcanzable debido a la falta de rutas disponibles.

Tipo 8: Solicitud de eco (Ping)
  • Código 0: Código de respuesta por defecto para una solicitud de eco.

Tipo 11: Tiempo excedido
  • Código 0: Tiempo excedido en el tránsito.
  • Código 1: Tiempo excedido en el reensamblaje.

Tipo 12: Problema en los parámetros de Datagrama
  • Código 0: Punto de inicio de fragmentación no válido.
  • Código 1: Punto final de fragmentación no válido.
  • Código 2: Campo de encabezado "Desplazamiento" de fragmento no válido.

Tipo 13: Solicitud de marca de tiempo
  • Código 0: Solicitud de marca de tiempo.
  • Código 1: Respuesta de marca de tiempo.

Tipo 14: Marca de tiempo
  • Código 0: Marca de tiempo.

Tipo 15: Solicitud de información de dirección
  • Código 0: Solicitud de información de dirección.
  • Código 1: Respuesta de información de dirección.

Tipo 16: Información de dirección
  • Código 0: Información de dirección.

Tipo 17: Solicitud de máscara de subred
  • Código 0: Solicitud de máscara de subred.
  • Código 1: Respuesta de máscara de subred.

Tipo 18: Máscara de subred
  • Código 0: Máscara de subred.

Datos Adicionales y Suma de Comprobación (Checksum)

Aparte de los campos "Type" y "Code", el encabezado ICMP también contiene otros campos importantes:

  • Checksum (Suma de comprobación): Se utiliza para verificar la integridad del paquete ICMP. La suma de comprobación se calcula sobre todo el encabezado ICMP y los datos, y el valor resultante se coloca en este campo. Si el valor de la suma de comprobación no coincide con el valor calculado, el paquete podría estar dañado o haber sido modificado en tránsito.
  • Resto del encabezado y datos: Dependiendo del tipo y el código del mensaje ICMP, puede haber información adicional en el encabezado, como números de secuencia y de identificación para los mensajes de solicitud y respuesta de eco.

Ejemplo de Encabezado ICMP

Supongamos que tenemos un mensaje ICMP de "Destino inalcanzable" con el código "Red inalcanzable". El encabezado ICMP para este mensaje se vería así:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|  3  |   0   |      Suma de comprobación     |   Datos      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

El valor en el campo "Tipo" es 3 para indicar "Destino inalcanzable", y el valor en el campo "Code" es 0 para indicar "Red inalcanzable". El campo de suma de comprobación contendría el valor calculado para garantizar la integridad del paquete, y los datos adicionales podrían incluir información adicional sobre la red inalcanzable.

Ataques Relacionados a ICMP

☠️ Ping of Death: El ataque Ping of Death es un ataque de denegación de servicio (DoS) que explota vulnerabilidades en la implementación de ICMP. Consiste en enviar paquetes ICMP de tamaño excesivamente grande, lo que lleva a que el sistema objetivo no pueda manejarlos y se bloquee. Esto se debe a que muchos sistemas operativos no estaban preparados para manejar paquetes ICMP que superaran cierto tamaño.

☠️ Ataque Smurf: El ataque Smurf aprovecha la funcionalidad de difusión (broadcast) de las redes. El atacante envía paquetes ICMP de solicitud de eco (ping) con la dirección IP de la víctima como dirección de origen, a una red que permite la difusión. Esto provoca que todos los sistemas en esa red respondan al ping y saturen la víctima con respuestas, abrumando su capacidad de red.

  1. El atacante envía una gran cantidad de paquetes ICMP de solicitud de eco a una red que permite la difusión, utilizando la dirección IP de la víctima como dirección de origen.
  2. Todos los sistemas en la red responden al ping, generando una gran cantidad de tráfico hacia la dirección IP de la víctima.
  3. La víctima se ve abrumada por la cantidad de respuestas y sufre una denegación de servicio.

☠️ Ataque DDoS: En los ataques de denegación de servicio distribuido (DDoS), los atacantes utilizan una red de dispositivos comprometidos para inundar un objetivo con una gran cantidad de tráfico. Los ataques DDoS también pueden involucrar paquetes ICMP, generando un alto volumen de tráfico ICMP para saturar los recursos del objetivo y hacer que sea inaccesible.

  1. Un atacante controla una botnet (red de dispositivos comprometidos).
  2. La botnet envía una gran cantidad de paquetes ICMP a un objetivo específico.
  3. El objetivo recibe un tráfico ICMP abrumador, lo que consume sus recursos y lo hace inaccesible para los usuarios legítimos.