Está en la página 1de 24

CURSO DE TCP/IP: ICMP

(Protocolo de Mensajes de
Control de Internet).
- ICMP es, posiblemente, el protocola ms utilizado por los hackers
- ICPM nos dar informacin MUY VALIOSA sobre el funcionamiento de las conexiones.
- Veremos que este protocolo nos permite detectar gusanos y ataques, tracear conexiones,
destruir firewalls, degradar servicios, descubrir datos sobre nuestras "victimas"... ...

1. Introduccin Por tanto, ICMP es un protocolo de Control


(Internet Control Message Protocol), que
Imagino que muchos de los lectores que sirve para avisar de los errores en el
han seguido fielmente el curso de TCP/IP procesamiento de los datagramas, es
desde sus comienzos estarais esperando decir, de los paquetes IP.
que este mes hablase del protocolo IP, Como ICMP funciona sobre IP, los
ya que una vez explicados los protocolos paquetes ICMP sern siempre a su vez
de transporte clsicos (TCP y UDP) el paquetes IP. Esto podra dar lugar a
orden lgico sera llegar a la capa inferior, situaciones en las que se generasen bucles
o la capa de red. infinitos donde un paquete ICMP avisa de
errores de otro paquete ICMP. Para evitar
Pero, para vuestra sorpresa, an no esto, hay una regla de oro, y es que,
vamos a llegar a esa parte tan esperada, aunque los paquetes ICMP sirvan para
pero tambin tan compleja; si no que arreglar errores de otros paquetes, jams
vamos a seguir con el orden lgico, con se enviarn paquetes ICMP para avisar
un protocolo que, aunque no sea un de errores en otro paquete ICMP.
protocolo de transporte, si que funciona
por encima del protocolo IP. Aunque esto suene a trabalenguas, ya
iremos viendo en detalle el funcionamiento
La diferencia entre ICMP y otros del protocolo ICMP, y se aclararn muchas
protocolos que funcionen por encima de cosas.
IP (como TCP, UDP, u otros que no hemos
Muchos de vosotros conoceris ya algo
mencionado) es que ICMP se considera
sobre ICMP, pero quiz alguno se est
casi una parte de IP, y las especificaciones
preguntando: Pero realmente es tan
estndar de IP obligan a que cualquier
importante este protocolo? Si jams he
sistema que implemente el protocolo IP
odo hablar de l! Seguro que no se usa
tenga tambin soporte para ICMP.
para nada!.

Y por qu es tan importante ICMP para Pues por supuesto que se usa, y mucho,
IP? Pues porque IP no es un protocolo aunque es normal que no os suene,
100% fiable (como nada en esta vida), teniendo en cuenta que es un protocolo
e ICMP es precisamente el que se encarga que no suele usar la gente en su casita,
de manejar los errores ocasionales que si no que es usado sobre todo por los
se puedan dar en IP. routers.

Pgina 14 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

An as, aunque los paquetes ICMP sean


generados normalmente por un router, Aqu podrs encontrar la traduccin al espaol del RFC
el receptor del paquete suele ser un 792 (Protocolo ICMP), concretamente en el enlace
usuario como t, as que en realidad s h t t p : / / w w w. r f c - e s . o r g / g e t f i l e . p h p ? r f c = 0 7 9 2
que ests usando el protocolo ICMP
aunque no te des cuenta. No dudes en pasarte por www.rfc-es.org y, si te es posible,
participar en su proyecto. Desde esta revista damos las
Por ejemplo, cuando intentas acceder a gracias a quienes colaboran de forma totalmente
una IP que no existe, normalmente se te desinteresada en este tipo de iniciativas que nos benefician
notificar por medio de un mensaje ICMP. a todos.
Adems, hay tambin una serie de
aplicaciones, como Ping, o Traceroute, El protocolo ICMP consta simplemente de
que utilizan ICMP, y en este caso s que una serie de mensajes totalmente
eres t el que genera los paquetes. independientes que se generan para cada
situacin de error que se de en el
Aparte de todo esto, para nosotros ICMP procesamiento de un paquete IP, o bien
es especialmente interesante ya que, tal por otras circunstancias especiales en las
y como podis leer en ms de un que un usuario desea conocer cierta
documento de los que circulan en la red informacin sobre una mquina.
sobre ICMP, se dice de este protocolo que
es mucho ms til para un hacker que Por eso, no hay que andar con complejas
para un usuario normal. explicaciones sobre conexiones virtuales,
ni nada de nada. Simplemente basta con
Para este artculo ir explicando uno a
ir explicando cada mensaje por separado.
uno los diferentes mensajes ICMP, y
contando en cada uno alguna curiosidad
un poco ms oscura para darle ms gracia
2.1. Destino inalcanzable
a la cosa (buscad los epgrafes en color
rojo). Por ltimo, como era de esperar, (Destination Unreachable)
terminar explicando cmo generar
Este es el primer mensaje ICMP, que sirve
paquetes ICMP desde cero con las
para avisar de un gran nmero de
aplicaciones ya conocidas.
situaciones de error, aunque todas con
una misma consecuencia: no se ha podido
2. Directamente al grano acceder al destino que se solicitaba.

Igual que hacen en el RFC que explica el


Cuando intentas acceder a una IP (una
protocolo ICMP (RFC 792 : ftp://ftp.rfc-
pgina Web, u otro servidor de cualquier
editor.org/in-notes/rfc792.txt), no nos
tipo), puede haber muchos motivos por
enrollaremos mucho con explicaciones
los que no puedas llegar a acceder y,
previas, e iremos directamente al grano.
siempre que estos motivos tengan que
ver directamente con la parte de la que
! Como ya debes...
se encarga el protocolo de red (IP),
cualquier dificultad que haya te ser
Como ya debes suponer, los RFCs son documentos escritos
notificada mediante un mensaje ICMP de
originalmente en ingls. Para quien no domine el idioma,
este tipo.
contamos con la inestimable ayuda de la Web www.rfc-es.org

PC PASO A PASO N 23 Pgina 15


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Por supuesto, puede haber otros motivos


por los que no puedas acceder a los
contenidos que buscas. Por ejemplo, al
intentar acceder a una pgina Web, el
Servidor Web podra responderte con un
error 404 (te recuerdo que expliqu
todo esto en mi artculo sobre HTTP en
la serie RAW, hace ya unos cuantos
nmeros...).

Esta situacin de error no es


responsabilidad de IP y, por tanto,
tampoco de ICMP, por lo que este error
Por supuesto, me imagino que no
no se notificara mediante un mensaje
entendis ni papa de los contenidos de
ICMP, si no que sera responsabilidad del
esta tabla.
Servidor Web el generar una respuesta
de error 404 de HTTP. Explicar todos los cdigos en detalle va a
ser demasiado (y, realmente, poco
Un error que s que sera responsabilidad
interesante), as que explicar slo lo
de IP al intentar acceder a una pgina
suficiente para que os hagis una idea de
Web sera que la IP del Servidor Web que
lo ms importante.
buscamos no existiese.
En primer lugar, no hay que ser muy
Hay muchos otros motivos por los que
observador para darse cuenta de que la
un destino puede ser inalcanzable, como
mayora de los errores estn duplicados,
veremos en detalle ahora mismo. De
refirindose siempre o bien a la red, o
momento, vamos a ver el formato
bien al host.
detallado del mensaje:
Imaginemos que estamos en una red
local, cuyas direcciones IP abarcan desde
la 192.168.1.1 hasta la 192.168.1.255,
pero en la cual slo existen tres mquinas:
Mquina 1 192.168.1.1
Mquina 2 192.168.1.5
Campo: Type Y mquina 3 192.168.1.100
El primer campo, Type, se encuentra en
Si intentamos acceder a la mquina
todos los mensajes ICMP, y especifica el
192.168.1.200 recibiremos un mensaje
tipo de mensaje. En el caso del mensaje
de Host inalcanzable (cdigo 1). La IP
Destination Unreachable el tipo de
192.168.1.200 forma parte de una red a
mensaje es 3.
la que tenemos acceso, pero en cambio
Campo: Code ese host concreto no existe en la red.
El campo Code permite precisar el motivo
por el que el destino es inalcanzable. En cambio, si intentamos acceder en el
Segn el valor de este campo, podemos mismo escenario a la IP 10.12.200.1,
saber el motivo exacto, consultando la estaremos intentando acceder a una red
siguiente tabla: que no es la nuestra, por lo que el router

Pgina 16 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

no podr darnos acceso, y tendr que cuando se intenta acceder a un protocolo


respondernos con un error de Red de transporte que no est implementado
inalcanzable (cdigo 0). en el host de destino.

Con esta breve explicacin de paso he Por ejemplo, si enviamos un paquete UDP
explicado los dos primeros cdigos. Slo a una mquina que no tiene implementado
queda comentar que el cdigo 1 slo lo UDP. Como la capa IP es la encargada de
enviar el ltimo router dentro del camino reconocer al protocolo de nivel superior,
que lleve desde nuestra mquina hasta ser responsabilidad suya, y por tanto de
el host de destino, ya que ste ltimo ICMP, el notificar de los errores de
router ser el que sepa qu mquinas protocolos no implementados.
en concreto existen dentro de su red. En
El mensaje de Puerto inalcanzable
cambio, el cdigo 0 puede ser enviado
(cdigo 3) se genera cuando se intenta
por cualquiera de los routers que haya
acceder a un puerto en un protocolo de
en el camino entre tu mquina y el host
transporte (por ejemplo, TCP o UDP), y
de destino, ya que en cualquier punto
ese puerto no est accesible en el host
del camino se podra detectar que la red
de destino. En muchos casos, el propio
de destino es inalcanzable.
protocolo de transporte se encargar de
notificar este error (por ejemplo, en TCP
mediante el flag RST), pero siempre que
el protocolo de transporte no tenga
implementado un mecanismo para
notificar esta situacin, ser
responsabilidad de ICMP hacerlo.

El mensaje de Paquete demasiado


grande, y no puede ser fragmentado
(cdigo 4) tiene relacin con un campo
de la cabecera IP que veremos ms
adelante en el curso de TCP/IP. Este campo
especifica si un paquete puede ser o no
En la imagen la mquina H1 solicita fragmentado en trozos ms pequeos.
acceder a la IP 10.1.2.3 al router R1. En el caso de que est especificado que
ste pasa la bola a R2, el cual est el paquete no puede ser fragmentado, y
conectado a la red 10.x.x.x, donde el paquete sea demasiado grande como
debera encontrarse la IP solicitada. Como para ser enviado de una sola vez, el
R2 sabe que el host 10.1.2.3 no existe, paquete no podr ser transmitido.
responder con un mensaje ICMP Host
inalcanzable. El mensaje ICMP llegar a De momento con esto creo que tenemos
R1, que lo retransmitir hasta H1. suficiente, que no quiero llenar el artculo
entero slo con el primero de los mensajes
Con respecto al siguiente cdigo, ICMP y, al fin y al cabo, ya he explicado
Protocolo inalcanzable (cdigo 2), los cdigos ms comunes.
en primer lugar hay que decir que no se
Campo: Checksum
genera en un router, si no en el propio
host de destino. Este error se genera
Pues aqu nos encontramos de nuevo con

PC PASO A PASO N 23 Pgina 17


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

otro checksum, como los que ya vimos asegurarnos de que se trata de nuestro
en anteriores entregas cuando tratamos paquete, se incluyen tambin los 64
el UDP y TCP. En el artculo anterior primeros bits del campo de DATOS del
detall cmo generar un checksum para datagrama, por lo que el paquete puede
TCP, y tambin como realizar su quedar identificado sin lugar a dudas.
comprobacin para un paquete recibido.
Por ejemplo, imaginemos que enviamos
En el caso de ICMP, los checksums (sumas el siguiente paquete:
de comprobacin) se generan mediante
la misma operacin, pero en este caso
no es necesario aadir una
pseudocabecera, si no que directamente
la operacin se realiza nicamente con
todos los bits que componen la cabecera
ICMP.
En el caso de que este paquete genere,
Campo: Unused por ejemplo, un error de Destino
inalcanzable, ste ser el paquete ICMP
Pues eso, qu queris que os cuente que nos llegar en respuesta:
sobre un campo que no se usa?
Simplemente lo rellenis con ceros, y ya
est.

Campo: Internet Header + 64 bits of


original data datagram

Aqu ya hay bastante ms que decir, ya


que adems este campo es comn a
muchos mensajes ICMP. Este campo es
especialmente importante, ya que es el
que nos permite identificar de forma
unvoca a qu datagrama (paquete IP)
se refiere el mensaje ICMP. Dentro de la cabecera ICMP podemos ver
en verde la copia de la cabecera IP del
Como ya he dicho, un paquete ICMP paquete que gener el mensaje, as como
puede ser una respuesta a un paquete los primeros datos del campo de DATOS
IP que ha generado algn tipo de error. (en azul). Tambin es importante destacar
Si nos llegasen paquetes ICMP sin ms que, como se ve en la imagen, el nmero
no podramos saber cul de nuestros de protocolo asignado a ICMP es el 1.
paquetes IP gener el error.
Detectando gusanos mediante
Por eso, muchos paquetes ICMP llevan Destination Unreachable
incluidos en su propia cabecera la
cabecera IP del paquete que gener el Como os dije, comentar algn detalle
error. Adems, para terminar de curioso sobre cada uno de los mensajes
ICMP. Os voy a comentar una posible

Pgina 18 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

seal de alarma en relacin con los ser ejecutados para infectar una mquina
mensajes Destination Unreachable. (por ejemplo mediante un correo
electrnico), si no que basta con que den
Si observamos los logs de nuestra
con una mquina vulnerable (es decir,
conexin... que qu es eso? Pues en un
que tenga cierta versin de Windows sin
sistema que tenga implementada una
parchear).
buena poltica de seguridad es habitual
tener un mecanismo de monitorizacin
Por supuesto, si el gusano genera
que guarde un registro (un log) de lo que
direcciones IP que no existen, recibiremos
ocurre con las conexiones de nuestra
un mensaje Destination Unreachable
mquina.
cada vez que el gusano intente infectar
En caso de que no tengis nada de esto una de estas IPs. Por tanto, encontrar
montado (sera motivo para varios varios mensajes ICMP de este tipo cuyo
artculos el explicar cmo hacerlo bien origen desconocemos puede ser un
hecho), podis hacer pruebas sntoma de que tenemos un visitante no
simplemente poniendo en marcha un deseado en nuestro PC.
sniffer, como los que he explicado ya
en otros artculos (por ejemplo, Iris para No slo eso, si no que adems analizando
Windows, o Ethereal o Snort para Linux). en detalle la cabecera ICMP podremos
seguramente extraer informacin acerca
Pues como deca, si observamos lo que
del gusano, ya que estos mensajes ICMP,
ocurre en nuestra conexin con Internet,
tal y como acabamos de ver, incluyen en
y detectamos que nos llegan una gran
su cabecera toda la cabecera IP del
cantidad de mensajes ICMP de tipo
mensaje que gener el error, as como
Destination Unreachable, podra ser
los primeros 64 bits de datos.
sntoma de que estamos infectados con
algn gusano (Worm).
Este sistema no es definitivo, por
Un gusano es un tipo de virus informtico supuesto, ya que no todos los gusanos
cuya principal funcin consiste en utilizan este sistema para buscar vctimas,
reproducirse a toda costa al mayor as que el hecho de no recibir mensajes
nmero de vctimas posible. La gran Destination Unreachable no significa
mayora de los virus que existen hoy da ni mucho menos que no podamos estar
pueden ser calificados como gusanos, contaminados con algn otro tipo de
siendo buenos ejemplos los conocidos gusano ms inteligente.
virus Sasser, MyDoom, etc.
Podra comentar muchos otros aspectos
Algunos de estos gusanos intentarn oscuros de este tipo de mensajes ICMP,
reproducirse por un sistema tan burdo como los ataques Smack, Bloop,
como es el generar direcciones IP WinNewK, etc. Pero como el espacio es
aleatorias, e intentar acceder a todas limitado, y adems tengo que despertar
ellas para tratar de infectar una nueva un poco en vosotros la capacidad y el
mquina. nimo de investigar por vuestra cuenta,
ah os he dejado los nombres, para que
Esto es especialmente til en gusanos vuestro amigo Google os d ms detalles.
como el Sasser (y, de hecho, el Sasser
utiliza este sistema), que no necesitan

PC PASO A PASO N 23 Pgina 19


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Path MTU Discovery (P-MTU-D) tamao de MTU utilizar ya que, no slo


cada una de las dos mquinas tendr una
Una aplicacin importante de los mensajes MTU diferente, si no que tambin podran
Destination Unreachable, es el proceso tener MTUs diferentes cada uno de los
de Path MTU Discovery. routers que se encuentran en el camino
Ya sabemos que entre dos mquinas que entre las dos mquinas.
se comunican suele haber varias
Cuando un router se encuentra con un
mquinas intermedias, que actan como
paquete cuyo tamao es mayor que el de
routers para encaminar los paquetes
su MTU, tendr que fragmentarlo en
entre ambas mquinas.
trozos ms pequeos que s que quepan
El problema es que cada mquina de en su MTU.
todas las involucradas en el proceso
(incluyendo las mquinas de origen y El problema con esto es que la
destino) puede tener una configuracin fragmentacin es muy poco deseable, por
y unas caractersticas diferentes. Esto da motivos que explicar a lo largo del curso,
lugar a que haya mquinas preparadas por lo que conviene evitarla. Para poder
para manejar paquetes ms o menos evitar la fragmentacin, una buena idea
grandes. consiste en conseguir un acuerdo sobre
el tamao mximo de los paquetes entre
El tamao mximo de paquete que puede
todas las mquinas involucradas en la
manejar una mquina se denomina MTU
conexin.
(Max Transmission Unit), y depende de
la tecnologa utilizada, tal y como veremos
El mecanismo para conseguir este acuerdo
cuando hablemos sobre el nivel de enlace
se denomina Path MTU Discovery, y
a lo largo del curso.
viene detallado en el RFC 1191.
Por ejemplo, una tecnologa Ethernet
utiliza una MTU de 1500 Bytes, mientras A grandes rasgos, lo que se hace es enviar
que en X.25 se utiliza una MTU de slo un paquete demasiado grande, pero
576 Bytes. Pero bueno, ya explicaremos forzando a que no sea fragmentado
esto en otro nmero... (mediante una opcin que se puede
especificar en la cabecera IP). Si alguna
De momento, tenemos que tener la idea mquina del camino del paquete no puede
intuitiva de lo que es la MTU que, por manejar un paquete tan grande, al no
cierto, est bastante relacionada con el poder tampoco fragmentarlo no le quedar
MSS, es decir, el tamao mximo de ms remedio que responder con un ICMP
segmento que vimos en TCP. El tamao Destination Unreachable Code 4. A
mximo de segmento indica el tamao partir de ah, se ir repitiendo el proceso
mximo del campo de datos de un con diferentes tamaos de paquete, hasta
paquete TCP, el cual estar directamente que se de con un tamao que s que sea
relacionado con el tamao de MTU de la aceptado por todas las mquinas.
mquina que envi el paquete TCP.
Este tamao mximo para todo el camino
Si queremos que funcione correctamente
que se ha encontrado se denomina
una comunicacin entre dos mquinas
precisamente Path MTU.
tendr que haber un acuerdo sobre qu

Pgina 20 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

2.2. Tiempo excedido (Time determinado, y este valor se ir


Exceeded) decrementando en cada router por el que
pase el paquete.
Como podemos ver, la cabecera de este
mensaje consta de los mismos campos As, si por ejemplo un paquete tiene un
que el mensaje anterior: TTL = 3, el primer router que reciba el
paquete modificar este valor haciendo
TTL=2, y reenviar el paquete al prximo
router del camino entre el origen y el
destino.

En caso de que un paquete con TTL=0


Para explicar la utilidad de este mensaje llegue a un router, significar que el
vamos a ver mejor los campos que lo paquete no ha podido llegar a su destino
forman. en un plazo limitado, por lo que el router
tendr que responder al transmisor del
Campo: Type mensaje con un ICMP de tipo Time
Exceeded, y Code 0.
Para este tipo de mensajes, su valor ha
Code 1: Tiempo de reensamblaje
de ser 11, en decimal, por supuesto.
superado.
Campo: Code
Otra situacin en la que un paquete puede
caducar tiene relacin con la
En este caso slo existen dos posibles
fragmentacin que ya mencion antes.
valores, ya que este mensaje puede ser
enviado por dos motivos diferentes:
Como dije, un paquete demasiado grande
Code 0: Tiempo de vida superado.
puede ser dividido en fragmentos para
facilitar su transmisin. Los fragmentos
Como veremos a lo largo del curso, en
irn llegando al destino en cualquier orden,
la cabecera IP existe un campo TTL
y ste se encargar de reensamblar el
(Time To Live) que permite limitar el
paquete. Por supuesto, hay un lmite de
nmero de routers que atravesar un
tiempo por el que estar esperando el
paquete para llegar a su destino.
destino a que le lleguen todos los
fragmentos, para evitar quedarse
Si no limitsemos este nmero de saltos,
esperando indefinidamente en caso de
se podra dar el caso de que un paquete
que haya habido algn problema de
quedase circulando para siempre en la
transmisin.
red en caso de que algn router mal
configurado produjese un bucle cerrado
Si un paquete que est en proceso de
en el que los paquetes van de un router
reensamblaje no se completa en un tiempo
a otro sin sentido, sin llegar jams a su
determinado, se enviar un mensaje ICMP
destino.
de tipo Time Exceeded, y Code 1,
indicando que no se ha podido completar
Cada paquete IP llevar, por tanto, un
el reensamblaje del paquete.
campo TTL con un valor numrico

PC PASO A PASO N 23 Pgina 21


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Trazado de rutas mediante Time reenvindolo, por lo que el paquete llegar


Exceeded al prximo router, R2. En cambio, en este
segundo router ocurrir lo mismo que
Posiblemente habris utilizado alguna antes, pues se encontrar con un paquete
vez la conocida herramienta traceroute. con TTL=0 que no podr reenviar, por lo
que tendr que responder con un ICMP
Como sabris, esta herramienta permite Time Exceeded Code 0.
conocer todos los routers que existen en
el camino entre un origen y un destino.

Esta herramienta funciona precisamente


gracias a los mensajes ICMP de tipo
Time Exceeded, concretamente a los
de Code 0. Este proceso continuar, incrementando
en uno cada vez el valor de TTL, hasta
Lo que hace traceroute es empezar que finalmente sea el host de destino
enviando un paquete cualquiera al destino el que nos responda:
que queremos trazar, pero utilizando en
el paquete un TTL=1. En cuanto este
paquete llegue al primer router que haya
en el camino entre tu mquina y la
mquina de destino, este router
decrementar el TTL, por lo que lo dejar
Como vemos en la imagen, el host de
en TTL=0. Al no poder reenviarlo, ya
destino no nos responder con un Time
que el tiempo de vida del paquete ha
Exceeded, ya que el paquete s que ha
expirado, tendr que enviar un ICMP
podido llegar hasta l antes de expirar.
Time Exceeded Code 0 en respuesta.
En lugar de eso, nos responder con otro
mensaje ICMP, de tipo Echo Reply, que
veremos ms adelante. Esto se debe a
que los paquetes que va enviando
traceroute son en realidad mensajes
ICMP de tipo Echo Request. Como ya
he dicho, ms adelante comprenderemos
Este paquete contendr como IP de
de lo que estoy hablando.
origen la del router que lo gener (R1),
por lo que conocemos as ya la IP del
2.3. Problema de parmetros
primer router que nos hemos encontrado
(Parameter Problem).
en el camino.

Este mensaje se enva cuando algn


A continuacin, traceroute enviar otro
parmetro de la cabecera IP tiene un
paquete similar, pero con un TTL=2. El
valor incorrecto, siempre y cuando no sea
primer router del camino, R1 (cuya IP
un campo que tenga ya otro mensaje
ya conocemos), decrementar el TTL,
ICMP especfico para notificar el error.
pero al ser ahora el TTL=1, podr seguir

Pgina 22 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Este es el formato del mensaje: Destruyendo firewalls

Como comentario sobre este tipo de


mensaje ICMP comentar un exploit para
una aplicacin en concreto, que siempre
puede ser interesante.

Campo: Type La aplicacin no es ni ms ni menos que


Gauntlet Firewall, un firewall de
El valor en este caso es 12. Network Associates, la compaa del
famoso (y bastante triste) antivirus
Campo: Code
McAffee que, por cierto, hace poco
Aunque el RFC slo especifica un posible apareci la noticia de que es posible que
valor para este campo, en realidad pueden Microsoft compre tambin esta compaa.
ser implementados otros valores (como
ya ha pasado con otros campos vistos
El exploit que, por cierto, tambin afecta
anteriormente).
a otro producto de la misma compaa,
Estos son los posibles valores: WebShield, aprovecha una vulnerabilidad
de estos programas que da lugar a una
denegacin de servicio (DoS) con slo
enviar un mensaje ICMP Parameter
Problem malformado.
El valor ms habitual es el Code 0.
El exploit, y su explicacin en
En este caso, el campo Pointer indicar castellano los tenis en:
la posicin de la cabecera IP en la que http://www.hakim.ws/ezines/RazaMexi
se encuentra el error. Conociendo la cana/raza011/0x02.txt
cabecera IP, podemos localizar el
parmetro exacto cuyo valor es incorrecto.

El Code 1 es usado cuando una 2.4. Calmar al transmisor


trasmisin requiere opciones IP (Source Quench)
adicionales, como las usadas por el
ejrcito de los EEUU al utilizar Este mensaje es til para implementar
transmisiones seguras, en las que son un control de flujo rudimentario. Ya he
requeridas ciertas opciones de seguridad explicado algo sobre el control de flujo a
en los datagramas. lo largo del curso.

Sobre el Code 2 no hay mucho que decir, Como su nombre indica, este mensaje
ya que se explica por s slo. permite calmar al transmisor cuando est
Campo: Pointer enviando demasiados paquetes, y estos
no pueden ser procesados debido a la
Si el campo Code tiene valor 0, este excesiva velocidad.
campo especifica la posicin en bytes
dentro de la cabecera IP donde se Cuando un paquete no pueda ser
encuentra el parmetro errneo. procesado adecuadamente debido a la

PC PASO A PASO N 23 Pgina 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

saturacin del buffer de recepcin, habr avisando as de que no da a basto.


que notificar esta situacin mediante un
ICMP Source Quench. Cuando el Si estamos realizando un ataque de flood
transmisor reciba uno o ms Source y empezamos a recibir mensajes Source
Quench, debe bajar la tasa de Quench de la vctima tenemos una buena
transferencia para no seguir saturando prueba de que nuestro ataque est
al receptor. funcionando.

Este mecanismo es ms efectivo si el Por otra parte, el Source Quench mismo


receptor empieza a enviar los Source puede servir para realizar ataques DoS.
Quench antes de que haya realmente Si enviamos mensajes Source Quench
un problema, es decir, cuando est cerca a la vctima le estaremos pidiendo que
del lmite, pero sin haberlo superado an. limite su ancho de banda porque
supuestamente nos est saturando. Si
El formato del mensaje nos es ya muy conseguimos suplantar la personalidad
familiar: de una mquina a la que est conectada
la vctima (mediante spoofing) podremos
echar abajo esa conexin, limitando cada
vez ms el ancho de banda.

2.5. Redireccionar (Redirect)

Este mensaje, bastante peligroso, se


Campo: Type
utiliza cuando un router R recibe un
paquete que debe llevar hasta un destino,
El valor es 4.
pero se da cuenta de que existe un camino
ms corto hasta ese destino que no pasa
por R.
Campo: Code

Ve a m o s p o r e j e m p l o e s t e c a s o :
Aqu es siempre 0.

Denegacin de servicio y Source


Quench

Algunos de los ataques que he comentado


aprovechando el protocolo ICMP son
ataques de tipo Flood, es decir, ataques
DoS que funcionan mediante un
bombardeo masivo de paquetes.

Es posible que un sistema que est siendo


floodeado intente calmar al atacante
envindole mensajes ICMP Source
Quench, pensando que el bombardeo
no es malintencionado y, por tanto,

Pgina 24 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

La mquina H1 enva un datagrama al Veamos el formato del mensaje:


router R1 para que lo transmita hasta la
mquina H2. El router R1 mira en su
tabla de enrutamiento y descubre que
para llegar a H2 tiene que pasar primero
por R2. Analizando las direcciones de
R2 y H1 deduce que ambos pertenecen
a la misma red, por lo que H1 podra Campo: Type
acceder directamente a R2 sin necesidad
de pasar por R1. El valor es 5.

Campo: Code
Si no notificase esta situacin a H1 toda
la comunicacin entre H1 y H2 seguira De nuevo, tenemos varios posibles valores
el siguiente camino: para este campo:

El segundo caso, Code 1, es el explicado


en el ejemplo anterior.

El Code 0, es lo mismo, pero en lugar de


tratarse de un host de destino se trata
de toda una red.

Para el Code 2 y el Code 3 hay que


Mientras que si avisa de esta situacin
anticipar de nuevo algo sobre el protocolo
mediante un ICMP Redirect, podra
IP, que an no hemos visto.
ahorrarse un salto en el camino yendo
de forma ms directa:
Uno de los campos de la cabecera IP es
el TOS (Type Of Service), o Tipo de
Servicio. Este campo permite definir
diferentes servicios en funcin del ancho
de banda, fiabilidad, e interactividad que
requieren. Por ejemplo, un servicio de
transferencia de archivos requiere mucho
ancho de banda pero poca interactividad,
mientras que un servicio de terminal
remota (como un telnet) generalmente
necesitar poco ancho de banda, pero
mucha interactividad. Todo esto ya lo
veremos en detalle cuando hablemos del
protocolo IP.

PC PASO A PASO N 23 Pgina 25


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

En ciertos casos, un determinado router legtimo) de tipo Redirect, en el cual el


puede estar ms dedicado a transmitir campo Gateway Internet Address
cierto tipo de servicio, por lo que se puede contenga la propia direccin IP de la
optimizar la comunicacin utilizando los vctima.
caminos adecuados para cada caso.
Si la vctima es vulnerable a este ataque,
El RFC 1349 da detalles sobre el campo desde que reciba el paquete de Super
T O S y s u r e l a c i n c o n I C M P, Source Quench, redirigir todo su trfico
concretamente con los ICMPs Redirect, hacia si mismo, dando lugar a un bucle
y Destination Unreachable (donde infinito de tres pares de narices.
vimos que los Code 11 y 12 tambin se
refieren al tipo de servicio). El Super Source Quench es, por supuesto,
un ataque de tipo DoS, pero gracias a los
Campo: Gateway Internet Address paquetes Redirect de ICMP se pueden
llevar a cabo todo tipo de ataques de lo
Para los que an no lo sepis, un gateway ms variopintos. Existen herramientas
es lo que nosotros estamos llamando un para automatizar este tipo de ataques,
router, por lo que este campo indica como WinFreez, que permiten realizar
precisamente la direccin IP del router ataques DoS, ataques de suplantacin
al que queremos redireccionar el trfico. man in the middle, etc, etc. En el momento
que tienes el poder de redirigir el trfico
Por ejemplo, en el caso citado de una vctima hacia donde t quieras los
anteriormente, el router R1 enviara un lmites slo los pone tu imaginacin.
mensaje ICMP Redirect donde este
campo contendra la direccin IP del 2.6. Peticin de Eco (Echo
router R2.
Request)
Super Source Quench, y otras
Este es uno de los mensajes ICMP ms
historias
interesantes, aunque en principio pueda
parecer tan simple que carezca de inters.
Entre los mil usos ilegtimos que se
pueden hacer de los mensajes ICMP
Adems de utilizarse en la herramienta
Redirect, se encuentra el ataque
traceroute, como ya vimos, es tambin
conocido como Super Source Quench.
la base del funcionamiento del famoso
PING, ya que su funcin consiste
A pesar de que su nombre pueda
simplemente en solicitar a otra mquina
confundirnos, este ataque no tiene nada
que nos devuelva lo que le decimos, como
que ver con el ICMP Source Quench,
si de un eco se tratase.
aunque s que es cierto que, si bien un
Source Quench puede ralentizar tu
Un mensaje Echo Request contendr
conexin, un Super Source Quench lo
unos pocos datos de muestra (por
que hace es tirrtela por completo.
ejemplo, se suele usar el abecedario:
abcdefghijklmnopqrstuvwxyz), y el host
El ataque consiste simplemente en enviar
que lo reciba debera responder mediante
un mensaje ICMP spoofeado (para que
otro mensaje ICMP diferente, que es el
aparentemente provenga de un router

Pgina 26 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Echo Reply (lo veremos a continuacin), mensaje concreto de Echo Request, para
que contendr los mismos datos de que el Echo Reply correspondiente pueda
muestra (el abecedario de nuevo, por especificar a qu peticin de eco en
ejemplo). concreto est respondiendo.

El campo Sequence Number simula de


manera muy rudimentaria un nmero
de secuencia TCP, siendo por tanto un
n m e r o q u e s i m p l e m e n t e s e va
incrementando con cada Echo Request
para un mismo Identifier.
Como vemos, el formato del mensaje es
ms complejo que el de los anteriores De nuevo, el estndar nos deja libertad
tipos de ICMP. para que utilicemos este campo segn
las necesidades.
Campo: Type
Campo: Data
En este caso el valor es 8.
Este campo contiene los datos de muestra
Campo: Code
que queremos que nos sean devueltos,
Siempre tomar valor 0. como cuando gritamos Eco! y nos vuelve
la respuesta Eco!....
Campo: Identifier
En lugar de Eco podramos poner cualquier
Este campo simula en cierto modo el
otra palabra, como el ya mencionado
comportamiento de los puertos UDP,
abecedario.
aunque de forma mucho ms simple.
As que ya sabis, cuando vayis por la
Simplemente es un nmero que sirve montaa y encontris a un to que est
para identificar una sesin de mensajes berreando el abecedario
de eco. abcdefghijklmnopqrstuvwxyz, no debis
asustaros, ya que slo ser un friki con
Se usa por ejemplo cuando hacemos un una indigestin de mis artculos que habr
ping a una mquina, ya que siempre se terminado creyndose que es un PC y
har ms de un Echo Request a la est intentando hacer un ping
misma mquina. Toda esta serie de Echo
Sobre el mensaje Echo Request no voy
Request que componen un ping tendrn
a comentar nada de momento (en color
normalmente el mismo valor en el campo
rojo, me refiero , ya que comentar
Identifier.
luego juntos los mensajes Echo Request
Realmente, el estndar no exige ninguna y Echo Reply despus de hablar sobre
forma concreta de generar este campo, ste ltimo.
por lo que se deja un poco a las
necesidades de cada aplicacin. 2.7. Respuesta de Eco (Echo
Reply)
Campo: Sequence Number
Este mensaje tiene exactamente el mismo
Este campo, combinado con el anterior, formato, con los mismos campos.
permite identificar unvocamente un

PC PASO A PASO N 23 Pgina 27


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Todos los campos de la cabecera deben Como ya sabemos, todas las mquinas
llevar una copia exacta de los campos de una red estn interconectadas, por lo
del mensaje Echo Request al que estn que tericamente todos los paquetes que
respondiendo, excepto el campo Type, circulan por la red llegan a todas las
que debe ser 0, que es el nmero mquinas de la red. Cada mquina tendr
asignado al tipo de mensaje ICMP Echo que ser capaz de discernir qu paquetes
Reply. van dirigidos a ella y cuales no. Este es
el motivo por el que un sniffer puede
La invasin de los pitufos funcionar.

No se puede hablar de ICMP sin hablar Lo que hace el sniffer es poner a la


de una de las tcnicas ms clsicas para mquina en modo promiscuo, es decir,
explotar este protocolo con fines poco hacer que recoja todos los paquetes,
ticos, que es la conocida como el pitufo. aunque no sean dirigidos para esa
Jejeje, bueno, sta sera la traduccin al mquina. Una mquina que no est en
castellano. En realidad el trmino tcnico modo promiscuo slo debera recoger dos
es smurf. tipos de paquetes: los que van dirigidos
a su direccin IP, y los que van dirigidos
La tcnica de smurf consiste en un ataque a la direccin broadcast.
DoS basado en los mensajes Echo
Por tanto, qu pasara si envisemos un
Request y Echo Reply, y que se puede
mensaje Echo Request a la direccin
llevar a cabo sin necesidad de ninguna broadcast de una red? Pues tericamente
herramienta especial, ni siquiera un todas las mquinas de la red tendran
software para manipular raw sockets que recibir ese mensaje y, por tanto,
(como Nemesis o Hping, sobre los que enviar un Echo Reply en respuesta.
hablar al final del artculo), si no que Imaginemos que estamos en una red con
basta con la herramienta PING que mil mquinas. Con slo enviar nosotros
podemos encontrar en cualquier sistema un mensaje, habremos recibido mil
operativo. mensajes en respuesta...

El ataque consiste exactamente en un Qu pasara entonces si envisemos ese


flood mediante mensajes Echo Reply Echo Request con la IP de origen
generados por mquinas que no son la spoofeada para aparentar que quien
del propio atacante, por lo que se hace manda el mensaje no somos nosotros, si
bastante complicado para la vctima el no la mquina de nuestra vctima?
encontrar al culpable. Pues, tericamente, la vctima recibira
1000 mensajes Echo Reply que no tiene
Va m o s a v e r en qu consiste
ni idea de dnde narices han salido. Sabr
exactamente:
que las respuestas llegan de las mquinas
Todas las redes tienen definidas una de la red que hemos utilizado, pero no
direccin especial, que es la denominada podr saber quin dio la orden a esa
direccin broadcast. Esta direccin IP red de que le mandase los mensajes.
especial est reservada para paquetes
Si lanzamos varios Echo Request a varias
que estn dirigidos a todas las
redes diferentes, podremos conseguir que
mquinas de la red, y no a una sola.
llegue un autntico bombardeo de

Pgina 28 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

mensajes Echo Reply a la vctima, con Para evitar convertir nuestra red en una
lo que podramos llegar a saturar su amplificadora de ataques smurf, tenemos
conexin. que configurarla para que las mquinas
no respondan a mensajes ICMP dirigidos
a la direccin broadcast.

El ping de la muerte

Que nadie se eche las manos a la cabeza


diciendo: Pero si el ping de la muerte
est ms pasado de moda que las patillas
de Curro Jimnez!.

Es cierto que el ping de la muerte es un


ataque que difcilmente puede funcionar
hoy da, pero en su momento fue una
autntica bomba as que merece al
menos una mencin en este artculo en
el que no slo se trata la actualidad, si
Como vemos en la imagen, lo nico que
no tambin la historia de ICMP.
tiene que hacer el atacante es lanzar
unos cuantos pings, uno por cada red Digo lo de bomba porque es importante
que quiera utilizar como amplificadora diferenciar entre un DoS de tipo flood,
del ataque, utilizando en cada uno la y un DoS de tipo nuke.
direccin de broadcast, que es la que
Un flood ya hemos visto lo que es: tirar
vemos en la imagen.
abajo un sistema a base de saturarlo con
miles de paquetes. En cambio, un nuke
Una direccin broadcast normalmente se
es un ataque que tambin puede tirar
obtiene poniendo un 255 en aquellos
abajo un sistema, pero en este caso con
bytes de la IP que puedan variar segn
slo uno o unos pocos paquetes.
el tipo de red, es decir, poniendo un 255
donde en la mscara de red hay un 0.
Vimos un ejemplo de nuke al hablar del
ICMP Parameter Problem, y un ejemplo
Por ejemplo, para una red 192.168.1.1,
de flood por ejemplo en la tcnica de
con mscara de red 255.255.255.0, la
smurf mencionada anteriormente.
direccin broadcast ser
192.168.1.255.
El ping de la muerte (ping of death), y
sus variantes (como el jolt, o el IceNewk)
En general, para una red de clase A
es un ataque DoS de tipo nuke que
habr que poner un 255 en las 3 ltimas
explota una limitacin de los sistemas
cifras de la IP, en una red de clase B
operativos, ya que estos suelen tener
un 255 en las 2 ltimas cifras de la IP,
limitado a 65536 el tamao mximo de
y en una red de clase C un 255 slo en
paquete que pueden manejar.
la ltima cifra de la IP. Qu no sabis
de qu hablo? Pues esperad al prximo
No confundamos este tamao con la MTU,
artculo del curso, que tratar sobre el
ni con el MSS, ya que en este caso se
protocolo IP.
refiere al tamao que puede manejar el

PC PASO A PASO N 23 Pgina 29


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

propio sistema operativo, y no el tamao http://www.fi.upm.es/~flimon/ddos.pdf


de los paquetes que se pueden transmitir Es un documento muy interesante y fcil
a travs de una conexin. de leer, en el que encontraris tambin
una descripcin detallada del ataque smurf
Como la MTU siempre ser menor de que mencion anteriormente.
65536 la forma en que se consegua
enviar el ping de la muerte era utilizando Antes de que me vaya ms del tema,
la fragmentacin de la que ya hemos estaba diciendo que se puede aprovechar
hablado. El ping de la muerte consista un mensaje ICMP para pasar informacin
simplemente en un mensaje Echo sin que un firewall se entere.
Request de un tamao mayor que el
Si tenemos, por ejemplo, un troyano en
que poda manejar el sistema operativo
nuestro sistema, pero tenemos un
receptor, que se enviaba fragmentado
firewall, lo que no podr hacer el troyano
para que pudiese circular hasta su destino.
es abrir un puerto TCP en escucha para
Una vez en el destino, el sistema receptor
que su controlador se conecte
intentaba reensamblar el paquete
remotamente a nuestra mquina para
uniendo los fragmentos y, al encontrarse
hacernos todo tipo de judiadas.
con que el paquete era ms grande de
lo que poda manejar, el sistema
Como los firewalls son cada da ms
directamente cascaba.
comunes, los troyanos tienen que buscar
otros sistemas ms ingeniosos para poder
Este problema fue descubierto en 1996,
comunicarse con su controlador. Uno de
y en 1997 la mayora de los sistemas
estos sistemas consiste precisamente en
operativos ya disponan de parches para
aprovechar los mensajes Echo Request
arreglar este problema, pero.... quin
y Echo Reply.
sabe cuntos sistemas pueden quedar
ah fuera sin parchear?... Como hemos visto, ambos mensajes
contienen un campo DATA en el que se
Tneles para pasar informacin a puede meter cualquier cosa... pues
travs de firewalls simplemente intercambiando mensajes
de Echo que contengan todos los datos
Un sistema que es utilizado por programas que queramos transmitir entre el troyano
maliciosos, como troyanos, demonios de y su controlador, estos podrn realizar
redes DDoS, o cualquier otra aplicacin una comunicacin bastante similar a la
que necesite pasar informacin a travs que podran llevar a cabo a travs de un
de un firewall, es el crear un tnel puerto UDP.
mediante mensajes ICMP.
Otra historia es si el firewall filtra tambin
Qu os ha sonado muy raro eso de los los mensajes ICMP, pero en la mayora
demonios de redes DDoS? Jeje, he de los sistemas se deja abierto el Echo
conseguido despertar vuestra curiosidad Request hacia el exterior, y el Echo
una vez ms soltando por ah un trmino Reply desde el exterior, por lo que el
raro como quien no quiere la cosa. troyano podra utilizar Echo Request para
enviar sus datos, y el controlador del
Pues si queris saciar vuestra curiosidad troyano podra utilizar Echo Reply para
podis leer este documento en castellano: lanzar sus rdenes.

Pgina 30 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

2.8. Peticin de Sello de momento exacto en el que el emisor del


Tiempo y Respuesta de Sello Timestamp Request envi el mensaje.
Este tiempo se mide en milisegundos
de Tiempo (Timestamp
transcurridos desde la medianoche
Request y Timestamp Reply)
Campo: Receive Timestamp
Estos mensajes, al igual que los
anteriores, tambin son una pareja. Este campo se generar en el mensaje
Timestamp Reply. Especifica el
El Timestamp sirve para medir los momento exacto en el que el receptor del
tiempos de respuesta en una Timestamp Request (que, por supuesto,
comunicacin entre dos mquinas. El ser el emisor del Timestamp Reply)
mensaje Timestamp Request enva un recibi el mensaje Timestamp Request.
dato con el instante en que el mensaje Campo: Transmit Timestamp
fue enviado, y el mensaje de respuesta
Timestamp Reply contendr otros datos Este campo se genera tambin en el
informando sobre el tiempo que tard el mensaje Timestamp Reply. Especifica
paquete en ser procesado, tal y como el momento exacto en el que el emisor
veremos en breve. del Timestamp Reply envo el mensaje.
Comparando este campo con el anterior
podemos hacernos una idea del tiempo
que se ha tardado en procesar los
mensajes.

Explotando sistemas de seguridad


basados en el tiempo

Campo: Type Muchos sistemas de seguridad dependen


de la generacin de nmeros
El tipo para el mensaje Timestamp pseudoaleatorios.
Request es 13, y para el mensaje
Timestamp Reply es 14. Un ordenador es una mquina totalmente
determinista, por lo que es imposible
Campo: Code conseguir que genere un nmero
totalmente aleatorio, es decir, sin estar
Es siempre 0 en ambos mensajes. basado en ninguna regla matemtica que
lo genere.
Campos: Identifier y Sequence
Number Lo que se suele hacer para simular esta
aleatoriedad es aprovechar un parmetro
Tienen el mismo significado que en el que est en permanente cambio: el
caso de Echo Request y Echo Reply. tiempo.

Campo: Originate Timestamp Los nmeros pseudoaleatorios que genera


un ordenador suelen estar basados en
Este campo es generado en el mensaje
una frmula matemtica que incluye como
Timestamp Request. Especifica el

PC PASO A PASO N 23 Pgina 31


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

una de sus variables el tiempo exacto en directamente en red, y nada ms arrancar


el que se est generando el nmero (en necesitaban conocer la red en la que
milisegundos, o cualquier otra medida). entraban.
Esto permite que dos nmeros generados
consecutivamente con la misma frmula El mecanismo consista en enviar un
den resultados diferentes. datagrama que tuviese ceros en las
direcciones IP de origen y de destino
Por tanto, el permitir que cualquier (Information Request). Este paquete,
mquina nos pregunte la hora exacta al ser recibido por la mquina que se
(con precisin de milisegundos) que encargase del asunto dentro de la red,
tenemos en nuestra mquina, es facilitarle sera respondido con otro mensaje que
en gran medida la explotacin de s que tuviese direcciones IP de origen y
cualquier sistema que maneje nmeros de destino (Information Reply). La
aleatorios. Recordemos por ejemplo lo direccin IP de destino del Information
que cont en el artculo sobre TCP acerca Reply sera la IP asignada a la mquina
de los nmeros de secuencia, y de las que la solicit.
graves consecuencias que tendra que
un atacante conociese los nmeros
pseudoaleatorios que hemos utilizado
para generar los nmeros de secuencia
en nuestras conexiones TCP.
Ya conocemos el significado de todos los
Tambin cont algo sobre la adivinacin campos, as que slo hay que decir que
de nmeros pseudoaleatorios en el el campo Type para Information
artculo sobre DNS de la serie RAW, as Request es 15, y para Information
que a los aficionados a las matemticas Reply es 16. El campo Code para ambos
les recomiendo que le echen un vistazo. ser 0.

Buscando vctimas potenciales


2.9. Peticin de Informacin
y Respuesta de Informacin Uno de los usos ms clsicos de ICMP
(Information Request, e para fines oscuros es el de la deteccin
de mquinas en una red, para apuntar
Information Reply)
vctimas potenciales.

Esta nueva parejita de mensajes est en


No he hablado de ello hasta ahora porque
realidad obsoleta, ya que su funcionalidad
el sistema ms obvio y ms comn es
ha sido sustituida y mejorada por otros
utilizar simplemente un escaneo de
sistemas, como BOOT o DHCP.
pings que vaya recorriendo todas las
posibles IPs para ver cules de ellas
Al igual que en estos protocolos, el
responden al ping. Cada IP que responda
objetivo de estos mensajes es conseguir
es una mquina que est funcionando en
que una mquina entre en una red de
la red y, por tanto, una vctima potencial.
forma automatizada, es decir, sin conocer
previamente la configuracin de la red. Como este sistema es bien conocido por
Este sistema era til en estaciones de cualquier administrador que vigile
trabajo sin disco que arrancaban mnimamente la seguridad, es fcil

Pgina 32 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

encontrarse con sistemas que tengan Yo personalmente tengo abiertos slo los
cerrados los mensajes de Echo, por lo mensajes Echo Reply (para poder hacer
que no responderan al Echo Request, ping y traceroute), Time Exceeded (para
aunque la mquina estuviese vivita y poder hacer traceroute), y Destination
coleando. Un escaneo de pings nos dira Unreachable (para poder hacer P-MTU-
que esas mquinas no existen, ya que D, entre otras cosas).
no han respondido a nuestra llamada.
Si queris asegurar de verdad vuestro
Existen herramientas que aprovechan sistema o vuestra red os aconsejo que
otros tipos de mensajes ICMP menos investiguis bien el tema y lleguis a
comunes para hacer exactamente lo establecer una decisin sobre vuestra
mismo, con la ventaja de que, al ser un poltica de seguridad con ICMP.
mensaje poco conocido y, aparentemente
inocente, es ms probable que el 2.10. Otros mensajes ICMP.
administrador no los haya cerrado en el
firewall. Un ejemplo de estas Aunque el RFC 792 ni siquiera los
herramientas es ICMPEnum, que utiliza menciona, existen otros tipos de mensaje
precisamente no slo Echo Request para ICMP definidos. Al no formar parte del
hacer los escaneos, si no tambin estndar definido en el RFC, slo nombrar
Timestamp Request, e Information alguno de ellos por si os interesa buscar
Request. informacin sobre alguno en concreto.

Como ya hemos visto que los dos Personalmente, yo no me he encontrado


primeros tienen otros problemas nunca con casi ninguno de estos mensajes
potenciales de seguridad, quiz podamos ICMP, as que no s hasta qu punto ser
tener suerte y encontrarnos con que el til conocerlos.
administrador ha considerado totalmente
inofensivo el Information Request, y
haya dejado aqu la puerta abierta que
buscbamos.

Cul es la conclusin que podemos sacar


de este comentario rojo y de todos los
dems? Pues, abreviando, que si
queremos estar seguros lo mejor es cerrar
en nuestro firewall CASI TODOS los
mensajes ICMP. Como mucho, podemos
dejar entrar los mensajes de respuesta
(como Echo Reply), para poder hacer Como de costumbre, la lista completa de
ping y traceroute nosotros desde nmeros asignados a ICMP es mantenida
nuestra mquina, pero pocos motivos por el IANA (Internet Assigned Numbers
hay para dejar abiertos sus contrarios, Authority), y la podis consultar en:
los mensajes que, en lugar de
http://www.iana.org/assignments/icmp-
respondernos, nos preguntan a nosotros
parameters
desde fuera.

PC PASO A PASO N 23 Pgina 33


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Buscando huellas

He dejado para el final esta tcnica que


es en realidad una de las que dan ms
utilidad a ICMP a la hora de encontrar
informacin sobre un sistema para un
posible ataque. Lo he dejado para el final
porque es una tcnica que est
relacionada no con uno slo, si no con
muchos tipos de mensajes ICMP.

La tcnica conocida como OS


Fingerprinting consiste en analizar las
reacciones de un sistema ante distintos
tipos de mensajes ICMP y, conociendo
cual es la reaccin de cada sistema Aqu vemos que ante un mensaje ICMP
operativo conocido, poder realizar as TimeStamp Request a la direccin
una comparacin que nos lleve a deducir broadcast de una red, podemos obtener
qu sistema operativo est corriendo en informacin precisa sobre el sistema
la mquina que estamos analizando. operativo, siempre que la mquina
Hay una panda de chiflados (con cario) responda con un TimeStamp Reply.
que se dedican a hacer tablas que reflejan
el comportamiento de cada sistema ante En caso de que no responda, se
cada tipo de mensaje, aunque no llegan considerar (de momento) un SO
a estar tan chiflados como para tratar desconocido, y habr que hacer otras
de usar es informacin a palo seco... lo pruebas similares.
que hacen es introducir toda esta
informacin en una aplicacin que Si ha respondido, tenemos 3 posibles
automatiza la tarea de comparar las SOs: HPUX 10.20, Sun Solaris, o Linux
reacciones del sistema con la informacin Kernel 2.2.x. En ese caso, habr que
conocida sobre cada sistema operativo. continuar con la prueba, haciendo ahora
un Information Request a la direccin
La ms conocida de esas aplicaciones es broadcast. Si responde, ya sabemos que
NMap, de la que ya hemos hablado se trata de un HPUX 10.20. Si no
bastante en la revista. Nmap contiene responde, habr que continuar probando,
gran cantidad de informacin sobre las esta vez con un Address Mask Request
reacciones de cada SO ante (uno de los ICMPs que no hemos visto).
determinados paquetes, y utiliza esta Si responde, se trata de un Sun Solaris,
i n f o r m a c i n p a ra h a c e r u n O S y si no, de un Linux Kernel 2.2.x.
Fingerprinting, es decir, para deducir
cul es el sistema operativo de la mquina Esta informacin tambin se puede
que estamos analizando. mostrar en tablas ms complejas, como
sta, que muestra el valor del campo TTL
Para que os hagis una idea del tipo de que usa cada sistema operativo al enviar
informacin de la que estoy hablando, mensajes ICMP de Echo:
podemos mostrar por ejemplo este rbol:

Pgina 34 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

-P : permite especificar un archivo con


los datos, por ejemplo para un Echo
Request.
-G : permite especificar el campo
Gateway Address para los mensajes
Redirect.
Como ya he dicho, esta informacin no -qE : inyecta un paquete de Echo.
nos hace falta conocerla, ya que viene -qU : inyecta un paquete Destination
automatizada en herramientas como Unreachable.
Nmap, o Xprobe, pero si queris -qX : inyecta un paquete Time
informacin detallada y tenis los Exceeded.
c*j*n*s... como los de un toro, podis -qR : inyecta un paquete Redirect.
leeros la biblia del ICMP, que la tenis en -qT : inyecta un paquete Timestamp.
h t t p : / / w w w . s y s -
security.com/archive/papers/ICMP_Sca Si, por ejemplo, queremos lanzar un
nning_v3.0.pdf . ataque Super Source Quench a la IP
192.168.2.2 para cortar su conexin TCP
3. RAW Sockets ICMP con la IP 215.22.69.22, podramos hacer:

Para terminar, volvemos con nuestros nemesis icmp i 5 c 1 G 127.0.0.1


amigos Nemesis y Hping para jugar esta v b 192.168.2.2 B 215.22.69.22
vez con el protocolo ICMP. D 192.168.2.2 S 215.22.69.22 p
6
Existen herramientas dedicadas para
explotar el protocolo ICMP, como algunas El parmetro i 5 especifica que se trata
de las ya mencionadas, o la herramienta de un mensaje de tipo Redirect, que
SING (Send ICMP Nasty Garbage), pero sera como utilizar la opcin qR. El
por no romper la tradicin vamos a seguir parmetro c 1 especifica un Code 1, es
en nuestra lnea, utilizando las decir, redireccionar los datagramas para
herramientas ya conocidas. el host de destino.

3.1. Nemesis El parmetro G 127.0.0.1 es la base


del ataque Super Source Quench, ya
Empezamos con Nemesis, cuyas que indicamos aqu a la vctima que
instrucciones tenemos en el archivo redirija sus paquetes a la direccin de
nemesis-icmp.txt de la carpeta en la loopback, 127.0.0.1, es decir, a s
que instalamos la aplicacin. mismo.

Resumo aqu las opciones ms bsicas: El parmetro v es el clsico verbose


que nos muestra informacin de lo que
-i : permite especificar el valor del campo estamos haciendo.
Type.
-c : permite especificar el valor del campo El parmetro b no lo he explicado, y
Code. forma parte del campo Internet Header
-e : permite especificar el valor del campo + 64 bits of Original Data Datagram.
Identifier. Es concretamente la IP de origen del

PC PASO A PASO N 23 Pgina 35


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

datagrama que gener el supuesto error --spoof :permite especificar cualquier IP


que dio lugar a que se generase el de origen (IP spoofing).
mensaje Redirect.
--rand-source : permite hacer un IP
El parmetro B forma parte tambin de spoofing con direcciones IP aleatorias.
ese campo, y contiene la direccin IP de
--rand-dest : permite utilizar direcciones
destino del datagrama original que
IP de destino aleatorias. Algo parecido
supuestamente origin el Redirect.
a lo que expliqu que hacan algunos
gusanos, aunque en realidad lo normal
Los parmetros D y S ya los
es que un gusano utilice algn tipo de
conocemos de haber usado otras veces
heurstica para generar las IPs de una
Nemesis, y son la IP de destino y de
forma ms inteligente que una
origen respectivamente para este mismo
aleatoriedad pura y dura.
paquete.
--dont-frag : obliga a que el paquete no
El parmetro p 6 forma parte tambin
sea fragmentado. Esta opcin puede ser
del campo Internet Header + 64 bits
t i l p a ra r e a l i z a r u n P - M T U - D .
of Original Data Datagram, ya que es
el nmero de protocolo de transporte --tos : permite definir el tipo de servicio
que haba especificado en el datagrama que, como hemos visto, est relacionado
original, el cual, al tratarse de TCP, ser con algunos mensajes ICMP.
6.
--ttl : permite marcar un tiempo de vida
Por supuesto, os muestro este ejemplo
para el paquete IP. Como ya sabemos,
slo para mostrar el funcionamiento de
esto nos permite, entre otras cosas, hacer
Nemesis ICMP, y no garantizo que vaya
un traceroute.
a funcionar.
--tr-keep-ttl : esta opcin, combinada
3.2. Hping2 con la anterior, permite investigar un
router en concreto del camino. Esta opcin
Vamos a ver algunas de las opciones que fija el valor de ttl, por lo que podramos
nos da hping2 para ICMP. enviar varios paquetes, por ejemplo, al
En primer lugar, veamos las opciones cuarto router del camino haciendo: --ttl
generales: 4 --tr-keep-ttl.

--verbose : el clsico modo verbose Por ltimo, algunas de las opciones


para ver informacin en pantalla. especficas para ICMP. Por supuesto,
tenis todo mucho mejor explicado en
--count : permite especificar el nmero man hping2 :
de paquetes que queremos enviar.
--icmptype : permite especificar un Type
--traceroute : este es un modo especial en la cabecera ICMP.
que permite hacer un traceroute.
--icmpcode : permite especificar un Code
en la cabecera ICMP.
Con respecto a la parte IP que, por
supuesto, tambin es necesaria para --icmpipproto : podemos especificar
generar paquetes ICMP, tenemos: tambin los valores del campo Internet

Pgina 36 PC PASO A PASO N 23


Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP - Protocolo ICMP

Header + 64 bits of Original Data claro que no todo el mundo consulta estas
Datagram. Por ejemplo, este parmetro pginas para protegerse, y en cambio
es para especificar el nmero de basta con que una sola persona consulte
protocolo del datagrama que origin el esta lista con fines perversos para que
mensaje ICMP. pueda atacar a cualquier otra persona
que no haya tenido en cuenta la lista. As
--icmpcksum : nos permite generar un que, una vez ms, no se sabe si es peor
checksum invlido. Por defecto, si no el remedio o la enfermedad.
ponemos esta opcin, hping2 generar
automticamente el checksum correcto. Espero que este artculo os haya resultado
interesante, y que por lo menos haya
--file : permite especificar un fichero despertado en vosotros la curiosidad por
para el campo de DATOS. muchsimas cosas que he esbozado para
que vosotros ampliis informacin de lo
Vamos a ver un ejemplo sencillsimo, que ms os haya llamado la atencin.
para realizar un ataque smurf a la IP
217.138.2.2, utilizando como Por este artculo han circulado muchos
amplificadora la red 209.5.x.x : nombres que pueden ser fcilmente
consultados en Google, as que os animo
hping2 209.5.255.255 --icmp -- a que lo hagis.
verbose --spoof 217.138.2.2
Autor: PyC (LCo)
As de simple! Por cierto, que tenis
disponibles listas de redes que han sido
probadas y se sabe que pueden funcionar
como amplificadores smurf (es decir,
que responden a paquetes Echo Request
a la direccin broadcast). Podis
encontrar un registro de estas redes por
ejemplo en:
http://www.powertech.no/smurf/ .

Aunque pueda parecer que este tipo de


listas son mantenidas por lamers que
dedican su tiempo a ir destruyendo
mquinas ajenas, en realidad su cometido
suele ser justo el contrario. Se publican
estas listas no para ayudar a los
atacantes, si no para que la gente que
quiera configurar su firewall pueda filtrar
directamente todas las redes que sean
susceptibles de convertirse en fuentes
de un ataque smurf.

Pero claro, en realidad al final el resultado


suele ser el contrario del esperado. Est

PC PASO A PASO N 23 Pgina 37

También podría gustarte