Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Técnica
Antonio Merola
Grado de dificultad
I
CMP quiere decir Internet Control Message ICMP (ver Figura 1). La Tabla 2 define varios
Protocol (Protocolo de Control de Mensa- tipos y códigos de ICMP.
jes de Internet). Se ocupa de la entrega de
mensajes en condiciones no-transitorias de La petición/respuesta eco
error. La especificación RFC y las funciones del ICMP
ICMP se subrayan en el RFC 792. La Tabla 1 La petición/respuesta eco del ICMP se utiliza
contiene una lista de los documentos RFC que para comprobar si un host está listo o no.
tienen que ver con el ICMP. El ICMP se utiliza,
por ejemplo, cuando un host recibe una petición
En este artículo aprenderás...
UDP en un puerto que no está a la escucha,
o cuando la fragmentación IP es necesaria y el • detalles sobre el funcionamiento del ICMP y su
bit DF está definido (ver el recuadro La Frag- utilización,
mentación IP y el ICMP). El mismo se involucra • cómo puede utilizarse el ICMP para el reco-
en los informes sobre las condiciones de error nocimiento, la detección de huellas digitales,
y la consultas que se hacen a la red. los canales secretos, y los ataques de DoS
Aunque el ICMP se resume en datagramas y MITM,
• qué tipo de mensajes ICMP se pueden utilizar
IP, como los protocolos de transporte, tales como
con malas intenciones y cómo,
el TCP o el UDP (la capa OSI 4), es un protocolo
• cómo el ICMP puede interrumpir las conexio-
de red con capas (la capa OSI 3) como el mismo
nes TCP,
protocolo IP. El ICMP es una parte integral del IP, • cómo protegerse contra el abuso del ICMP.
no utiliza un esquema cliente-servidor o números
de puerto, puede ser transmitido y no da garan-
Lo que deberías saber...
tías de entrega de un mensaje. Los datos más
importantes en el protocolo ICMP son los tipo de • cómo utilizar el sistema operativo *NIX,
mensaje y los código de mensaje para un tipo de • debes tener conocimientos básicos del TCP/
mensaje específico. Estos dos números se inclu- IP.
yen en los primeros dos bytes del encabezado
40 Photuris 0 – Reservado
1 – Indice de parámetros de seguridad desconocido
2 – Parámetros de seguridad válidos, pero falló la autenti-
cación
3 – Parámetros de seguridad válidos, pero falló el desci-
frado
ma red. La red debe estar protegida router. Esto evitará que otras redes se consigue configurando todas las
para que no se le utilice como un (p.ej. externas) envíen peticiones máquinas de la red para que igno-
amplificador. Por lo tanto, el reenvío a las direcciones de transmisión de ren los paquetes ICMP envíados
de la transmisión dirigida debe des- la red interna. Esto se describe en el a las direcciones de trasmisión. Si
activarse en todos los puertos del RFC 2644. Otra capa de protección todas las máquinas de una red se
Posible abuso
Este mecanismo es bastante seguro, Los mensajes ICMP implicados son: mensaje y en el Listado 5 la salida
aunque es obvio que puede utilizar- tcpdump.
se en el reconocimiento. Si el host • la petición de la marca de tiempo
de destino reenvía un mensaje de tipo 3 desde el origen hacia el Posible abuso
puerto UDP no asequible, está vivo destino, colocando la marca de La respuesta de la marca de tiempo
y funciona. La simple detección de tiempo que se origina, nos revela más sobre las caracterís-
huellas digitales también puede rea- • la respuesta de la marca de ticas del funcionamiento de esa red
lizarse en base al TTL. tiempo (tipo 14) desde el destino de lo que nos gustaría revelarle a los
hacia el origen, incluyendo la usuarios fuera de la red local. Por es-
marca de tiempo que se origina ta razón, el RFC 1122 establece que
La marca de tiempo de
(tiempo de origen), la marca de los mensajes de consulta de la peti-
la petición/respuesta tiempo de recibimiento (tiempo ción de la marca de tiempo del ICMP
del ICMP de destino) y la marca de tiempo y la respuesta de la marca de tiempo
Los paquetes de marca de tiempo de la trasmisión de la respuesta son completamente opcionales. Está
de la petición/respuesta del ICMP se (tiempo de destino). claro que esta información puede ser
utilizan para medir la cadencia de la utilizada para el reconocimiento y la
red, manipulando el tiempo de retar- Ver en el Listado 4 un ejemplo, en detección de huellas digitales, basa-
do de los paquetes. la Figura 3 observa el formato del dos en los valores TTL.
Destino ICMP no
asequible
Este mensaje es utilizado por el
router/firewall para informar al remi-
tente sobre los host/redes con des-
tino no asequible. Es posible que el
host no exista; pero también es posi-
ble que ese host esté temporalmente
desactivado.
Los mensajes ICMP implicados
son:
Posible abuso
Si los routers de tu red envían este
tipo de mensaje, entonces un intruso Figura 4. El formato del mensaje ICMP redirect
puede mapear fácilmente la red.
El ICMP redirect
Este tipo de mensaje es utilizado
por un router/firewall para informar
a la fuente sobre una ruta favorita
hacia el host de destino seleccio-
nado. El router envía un paquete al
destino y un ICMP lo redirecciona
a la fuente que contiene la entra-
da alternativa, lo que provoca un
cambio en la tabla de routing de la
fuente. El router que lanza el ICMP
redirect tiene que estar en la mis- Figura 5. La tabla de routing del Windows XP SP2 antes de la redirección
ma subred que la fuente y la nueva
entrada.
Los mensajes ICMP implicados
son:
Posible abuso
Un usuario con malas intenciones
puede cambiar la tabla de routing Figura 6. La tabla de routing del Windows XP SP2 después del
de un host para redireccionar el redireccionamiento
Es necesaria la
fragmentación ICMP
El tipo de mensaje ICMP fragmen- Listado 9. Un ataque icmp-reset visualizado en el tcpdump
tation required but DF set se utiliza
# tcpdump -ile1 -nnv icmp and host 192.168.1.4
en un router/firewall para informar 10.10.228.237 > 192.168.1.4: §
al remitente sobre la necesidad de icmp: 10.10.228.237 protocol 6 unreachable for §
la fragmentación cuando el bit DF 192.168.1.4.3763 > 10.10.228.237.80: 3634163930 §
(don't fragment) está configurado en [|tcp] (ttl 211, id 28211, len 576) (ttl 214, id 31456)
los paquetes originales. El mensaje
de error contiene el MTU de la red
que necesita la fragmentación. Listado 10. La reacción contra un ataque icmp-reset visualizado en el
Los mensajes ICMP implicados tcpdump
son:
# tcpdump -ile1 -nn 'tcp[13] & 4 != 0'
192.168.1.4.3763 > 10.10.228.237.80: §
• tipo 3 código 4 desde el dispositi- R 1428640266:1428640266(0) ack 667972724 win 0 (DF)
vo de filtrado hacia el origen.
Posible abuso
Este tipo de mensaje puede ser usa-
do para el reconocimiento, ya que
permite a un intruso comprobar la
productividad de la ruta para planifi-
car un ataque DoS.
La dirección de
máscara de la petición/ Figura 9. La suspensión de la conexión Putty por medio de la herramienta
respuesta ICMP icmp-reset
Este mensaje se emplea para obte-
ner el valor de la dirección de más- Listado 11. Un ataque icmp-reset que conduce a la suspensión de la
cara. Por ejemplo, los sistemas sin conexión sin un cliente Putty
disco necesitan obtener sus másca-
ras por sí mismos. # icmp-reset -c 10.239.7.27:1040-1060 -s 10.239.5.41:22 -t client -r 56
# tcpdump -ile1 -nn host 10.239.5.41 and port 22
Los mensajes ICMP involucra-
10.239.7.27.1049 > 10.239.5.41.22: §
dos son: S [tcp sum ok] 782249187:782249187(0) win 16384 §
<mss 460,nop,nop,sackOK> (DF) (ttl 127, id 23641, len 48)
• tipo 17 código 0 desde el origen 10.239.5.41.22 > 10.239.7.27.1049: §
hacia el destino para la petición S [tcp sum ok] 4070582427:4070582427(0) ack 782249188 win 5840 §
<mss 1460,nop,nop,sackOK> (DF) (ttl 64, id 0, len 48)
de máscara,
(...)
• tipo 18 código 0 desde el destino 10.239.5.41 > 10.239.7.27: §
hacia el origen para la respuesta icmp: 10.239.5.41 protocol 6 unreachable §
de máscara. for 10.239.7.27.1049 > 10.239.5.41.22: 1144805691 §
[|tcp] (ttl 206, id 57166, len 576)
(...)
La Figura 8 muestra el formato
10.239.5.41 > 10.239.7.27: §
del mensaje ICMP Address mask icmp: 10.239.5.41 protocol 6 unreachable §
request/reply y el Listado 8 ilustra for 10.239.7.27.1049 > 10.239.5.41.22: 1512665611 §
un ejemplo. [|tcp] (ttl 234, id 63018, len 576)
ext_if = "ne1"
prv_if = "ne2"
srv_mail ="192.168.1.5/32"
my_bsd ="192.168.1.4/32"
(...)
# Block all inbound TCP requests on port 133, sending back ICMP unreachable
block return-icmp in quick on $ext_if proto tcp from any to $srv_mail port auth
# Let the admin bsd machine receive time to live exceeded in transit and udp port unreachable
pass in on $ext_if inet proto icmp from any to $my_bsd icmp-type 11 keep state
pass out on $prv_if inet proto icmp from $my_bsd to any icmp-type 11 keep state
pass in on $ext_if inet proto icmp from any to $my_bsd icmp-type 3 code 3 keep state
pass out on $prv_if inet proto icmp from $my_bsd to any icmp-type 3 code 3 keep state