Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(Protocolo de Mensajes de
Control de Internet).
- ICMP es, posiblemente, el protocola más utilizado por los hackers
- ICPM nos dará información 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"... ...
¿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.
Con esta breve explicación de paso he Por ejemplo, si enviamos un paquete UDP
explicado los dos primeros códigos. Sólo a una máquina que no tiene implementado
queda comentar que el código 1 sólo 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 máquina 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é máquinas protocolos no implementados.
en concreto existen dentro de su red. En
El mensaje de Puerto inalcanzable
cambio, el código 0 puede ser enviado
(código 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 máquina 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 podría 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 situación, será
responsabilidad de ICMP hacerlo.
otro checksum, como los que ya vimos asegurarnos de que se trata de nuestro
en anteriores entregas cuando tratamos paquete, se incluyen también los 64
el UDP y TCP. En el artículo anterior primeros bits del campo de DATOS del
detallé cómo generar un checksum para datagrama, por lo que el paquete puede
TCP, y también como realizar su quedar identificado sin lugar a dudas.
comprobación para un paquete recibido.
Por ejemplo, imaginemos que enviamos
En el caso de ICMP, los checksums (sumas el siguiente paquete:
de comprobación) se generan mediante
la misma operación, pero en este caso
no es necesario añadir una
pseudocabecera, si no que directamente
la operación 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é queréis que os cuente que nos llegará en respuesta:
sobre un campo que no se usa?
Simplemente lo rellenáis con ceros, y ya
está.
señal de alarma en relación con los ser ejecutados para infectar una máquina
mensajes Destination Unreachable. (por ejemplo mediante un correo
electrónico), si no que basta con que den
Si observamos los logs de nuestra
con una máquina vulnerable (es decir,
conexión... ¿que qué es eso? Pues en un
que tenga cierta versión de Windows sin
sistema que tenga implementada una
parchear).
buena política de seguridad es habitual
tener un mecanismo de monitorización
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
máquina.
cada vez que el gusano intente infectar
En caso de que no tengáis nada de esto una de estas IPs. Por tanto, encontrar
montado (sería motivo para varios varios mensajes ICMP de este tipo cuyo
artículos el explicar cómo hacerlo bien origen desconocemos puede ser un
hecho), podéis hacer pruebas síntoma de que tenemos un visitante no
simplemente poniendo en marcha un deseado en nuestro PC.
sniffer, como los que he explicado ya
en otros artículos (por ejemplo, Iris para No sólo eso, si no que además analizando
Windows, o Ethereal o Snort para Linux). en detalle la cabecera ICMP podremos
seguramente extraer información acerca
Pues como decía, si observamos lo que
del gusano, ya que estos mensajes ICMP,
ocurre en nuestra conexión 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, podría ser
los primeros 64 bits de datos.
síntoma de que estamos infectados con
algún gusano (Worm).
Este sistema no es definitivo, por
Un gusano es un tipo de virus informático supuesto, ya que no todos los gusanos
cuya principal función consiste en utilizan este sistema para buscar víctimas,
reproducirse a toda costa al mayor así que el hecho de no recibir mensajes
número de víctimas posible. La gran Destination Unreachable no significa
mayoría de los virus que existen hoy día ni mucho menos que no podamos estar
pueden ser calificados como gusanos, contaminados con algún otro tipo de
siendo buenos ejemplos los conocidos gusano más inteligente.
virus Sasser, MyDoom, etc.
Podría comentar muchos otros aspectos
Algunos de estos gusanos intentarán 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 además tengo que despertar
ellas para tratar de infectar una nueva un poco en vosotros la capacidad y el
máquina. á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é más detalles.
como el Sasser (y, de hecho, el Sasser
utiliza este sistema), que no necesitan
Sobre el Code 2 no hay mucho que decir, Como su nombre indica, este mensaje
ya que se explica por sí sólo. 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 posición en bytes
dentro de la cabecera IP donde se Cuando un paquete no pueda ser
encuentra el parámetro erróneo. procesado adecuadamente debido a la
Este mecanismo es más 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 víctima le estaremos pidiendo que
del límite, pero sin haberlo superado aún. 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 máquina a la que esté conectada
la víctima (mediante spoofing) podremos
echar abajo esa conexión, limitando cada
vez más el ancho de banda.
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.
Campo: Code
Si no notificase esta situación a H1 toda
la comunicación entre H1 y H2 seguiría De nuevo, tenemos varios posibles valores
el siguiente camino: para este campo:
Echo Reply (lo veremos a continuación), 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é petición de eco en
ejemplo). concreto está respondiendo.
Todos los campos de la cabecera deben Como ya sabemos, todas las máquinas
llevar una copia exacta de los campos de una red están interconectadas, por lo
del mensaje Echo Request al que están que teóricamente todos los paquetes que
respondiendo, excepto el campo Type, circulan por la red llegan a todas las
que debe ser 0, que es el número máquinas de la red. Cada máquina 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 invasión de los pitufos funcionar.
mensajes Echo Reply a la víctima, con Para evitar convertir nuestra red en una
lo que podríamos llegar a saturar su amplificadora de ataques smurf, tenemos
conexión. que configurarla para que las máquinas
no respondan a mensajes ICMP dirigidos
a la dirección broadcast.
El ping de la muerte
una de sus variables el tiempo exacto en directamente en red, y nada más arrancar
el que se está generando el número (en necesitaban conocer la red en la que
milisegundos, o cualquier otra medida). entraban.
Esto permite que dos números generados
consecutivamente con la misma fórmula El mecanismo consistía 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,
máquina nos pregunte la hora exacta al ser recibido por la máquina que se
(con precisión de milisegundos) que encargase del asunto dentro de la red,
tenemos en nuestra máquina, es facilitarle sería respondido con otro mensaje que
en gran medida la explotación de sí que tuviese direcciones IP de origen y
cualquier sistema que maneje números de destino (Information Reply). La
aleatorios. Recordemos por ejemplo lo dirección IP de destino del Information
que conté en el artículo sobre TCP acerca Reply sería la IP asignada a la máquina
de los números de secuencia, y de las que la solicitó.
graves consecuencias que tendría que
un atacante conociese los números
pseudoaleatorios que hemos utilizado
para generar los números de secuencia
en nuestras conexiones TCP.
Ya conocemos el significado de todos los
También conté algo sobre la adivinación campos, así que sólo hay que decir que
de números pseudoaleatorios en el el campo Type para Information
artículo sobre DNS de la serie RAW, así Request es 15, y para Information
que a los aficionados a las matemáticas Reply es 16. El campo Code para ambos
les recomiendo que le echen un vistazo. será 0.
encontrarse con sistemas que tengan Yo personalmente tengo abiertos sólo los
cerrados los mensajes de Echo, por lo mensajes Echo Reply (para poder hacer
que no responderían al Echo Request, ping y traceroute), Time Exceeded (para
aunque la máquina estuviese vivita y poder hacer traceroute), y Destination
coleando. Un escaneo de pings nos diría Unreachable (para poder hacer P-MTU-
que esas máquinas no existen, ya que D, entre otras cosas).
no han respondido a nuestra llamada.
Si queréis asegurar de verdad vuestro
Existen herramientas que aprovechan sistema o vuestra red os aconsejo que
otros tipos de mensajes ICMP menos investiguéis bien el tema y lleguéis a
comunes para hacer exactamente lo establecer una decisión sobre vuestra
mismo, con la ventaja de que, al ser un política de seguridad con ICMP.
mensaje poco conocido y, aparentemente
inocente, es más 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 sólo Echo Request para ICMP definidos. Al no formar parte del
hacer los escaneos, si no también estándar definido en el RFC, sólo nombraré
Timestamp Request, e Information alguno de ellos por si os interesa buscar
Request. información sobre alguno en concreto.
Buscando huellas
Header + 64 bits of Original Data claro que no todo el mundo consulta estas
Datagram. Por ejemplo, este parámetro páginas para protegerse, y en cambio
es para especificar el número 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 más, no se sabe si es peor
checksum inválido. Por defecto, si no el remedio o la enfermedad.
ponemos esta opción, hping2 generará
automáticamente el checksum correcto. Espero que este artículo 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. muchísimas cosas que he esbozado para
que vosotros ampliéis información de lo
Vamos a ver un ejemplo sencillísimo, que más os haya llamado la atención.
para realizar un ataque smurf a la IP
217.138.2.2, utilizando como Por este artículo han circulado muchos
amplificadora la red 209.5.x.x : nombres que pueden ser fácilmente
consultados en Google, así que os animo
hping2 209.5.255.255 --icmp -- a que lo hagáis.
verbose --spoof 217.138.2.2
Autor: PyC (LCo)
¡Así de simple! Por cierto, que tenéis
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 dirección broadcast). Podéis
encontrar un registro de estas redes por
ejemplo en:
http://www.powertech.no/smurf/ .