Provided by: icmpush_2.2-6_i386 bug

NOMBRE

       icmpush - Generador de paquetes ICMP

SINOPSIS

       icmpush tipo [opciones] host

DESCRIPCIÓN

       icmpush es una aplicación para generar diversos tipos de paquetes ICMP.
       Actualmente soporta los  tipos  ICMP  de  error  siguientes:  Redirect,
       Source  Quench, Time Exceeded, Destination Unreach, Parameter Problem y
       los  tipos  ICMP  de  información  siguientes:  Address  Mask  Request,
       Timestamp,  Information  Request,  Echo  Request, Router Solicitation y
       Router Advertisement.

       No es misión de esta página describir en profundidad los entresijos del
       protocolo  ICMP, pero cuanto más conocimiento se tenga del mismo, mejor
       comprensión se tendrá del uso,  funcionamiento  y  utilidades  de  esta
       herramienta.

       La cantidad de argumentos necesarios puede parecer excesiva, pero, como
       su propio autor indica, la construcción  de  un  paquete  ICMP  que  se
       ajuste   al   formato   del  protocolo  requiere  una  serie  de  datos
       imprescindibles que deben ser suministrados desde la línea de comandos.

       Hacia el final de esta página se incluye una gran cantidad de  ejemplos
       que  ilustran  algunas  de  las  posibilidades  reales  de  uso de este
       programa.

OPCIONES

       -h, --help
              Ayuda.

       -V, --version
              Versión del programa.

       -v, --verbose
              Modo informativo.

       -vv, --more_verbose
              Más informativo aún. Útil para depuración.

       El tipo de ICMP, siguiendo un orden por código de menor a mayor,  puede
       ser cualquiera de los siguientes:

       -du, --dest_unreach
              Destination  Unreach.  El paquete IP no pudo ser entregado. Este
              tipo ICMP es de error.

       -sq, --src_quench
              Source Quench. El paquete IP  no  se  entrega  a  causa  de  una
              congestión en la red. Este es tipo ICMP es de error.

       -red, --redirect
              Redirect.  Requerimiento  para  desviar  paquetes IP a través de
              otro router. Este tipo ICMP es de error.

       -echo, --echo_request
              Echo Request. Petición a un host para que devuelva una respuesta
              de eco. Este tipo ICMP es de informacin.

       -rta, --router_advert direccin[/preferencia]
              Router  Advertisement.  El  router comunica la disponibilidad de
              uno o varios  routers  con  dirección  direccin  y  preferencia
              preferencia.  Si se omite esta última se toma la preferencia por
              defecto que es 0. Este tipo ICMP es de informacin.

       -rts, --router_solicit
              Router Solicitation. Requerimiento por parte de un host para que
              se  envíe  un anuncio de uno o varios routers. Como el anterior,
              forma parte del intercambio de mensajes Router Discovery y es un
              tipo ICMP de informacin.

       -tx, --time_exc
              Time  Exceeded.  Se  ha acabado el tiempo de un paquete IP. Este
              tipo ICMP es de error.

       -param, --param_problem
              Parameter Problem. Valor erróneo en una variable de la  cabecera
              IP. Este tipo ICMP es de error.

       -tstamp, --timestamp
              Timestamp. Solicitud de la hora de un host. Este tipo ICMP es de
              informacin.

       -info, --info_req
              Information Request. El host solicita una respuesta Info  Reply.
              Este tipo ICMP es de informacin.

       -mask, --mask_req
              Address  Mask  Request.  Averiguar la mascara de red para la red
              local actual. Este tipo ICMP es de informacin.

       Las opciones pueden ser cualquiera de las siguientes:

       -sp, --spoof direccin
              Dirección IP a usar como origen del paquete ICMP.

       -to, --timeout segundos
              Tiempo de espera en segundos para leer las respuestas.  Solo  es
              válido   para   ICMPs   de  informacin  salvo  el  tipo  Router
              Advertisement (-rta).  Por defecto  es  de  5  segundos.  Si  se
              indica 0 no se leen las respuestas.

       -n, --no_resolve
              No usar resolución DNS de nombre de host.

       -lt, --lifetime segundos
              Tiempo  de vida en segundos de un anuncio de router. Válido solo
              para Router Advertisement (-rta). Por defecto son 1800  segundos
              (30').

       -gw, --gateway direccin
              Host  que  actuará  como  pasarela  de  ruta en un ICMP Redirect
              (-red). Por defecto será la dirección de spoof (-sp), si  se  ha
              especificado,  o la dirección IP del interfaz de salida si no se
              ha especificado.

       -dest, --route_dest direccin
              Host o red destino de ruta en  un  ICMP  Redirect  (-red).  Esta
              opción es obligatoria si se envía un ICMP Redirect.

       -orig, --orig_host direccin
              Host  origen en la cabecera IP que se envía en la parte de datos
              de un ICMP de error. Por defecto será igual a la IP del host  al
              que se manda el paquete ICMP.

       -psrc, --port_src puerto
              Puerto  (tcp o udp) origen a usar en la cabecera IP que se envía
              en la parte de datos de un ICMP de error. Por defecto es 0.

       -pdst, --port_dest puerto
              Puerto (tcp o udp) destino a usar en la cabecera IP que se envía
              en la parte de datos de un ICMP de error. Por defecto es 0.

       -prot, --protocol icmp|tcp|udp
              Protocolo  a  usar en la cabecera IP que se envía en la parte de
              datos de un ICMP de error. Debe ser uno de  los  tres  listados.
              Por defecto es tcp.

       -id, --echo_id identificador
              Identificador  de  Echo  usado  en  la  cabecera IP que se envía
              cuando es un ICMP de error y el  protocolo  de  la  cabecera  IP
              (-prot) de los datos de error es icmp. Por defecto es 0.

       -seq, --echo_seq secuencia
              Número de secuencia de Echo usado en la cabecera IP que se envía
              cuando es un ICMP de error y el  protocolo  de  la  cabecera  IP
              (-prot) de los datos de error es icmp. Por defecto es 0.

       -pat, --pattern patrn
              Patrón de datos a enviar en un Echo Request (-echo).

       -gbg, --garbage bytes|max
              Cantidad  de  bytes  basura que se enviarán en cualquier paquete
              ICMP. Con max se envía el máximo posible.

       -ptr, --pointer byte
              Puntero a byte erróneo en un paquete ICMP indicando un  problema
              en  un  parámetro.  Válido  sólo  para el tipo Parameter Problem
              (-param).

       -c, --code cdigo|num|max
              Código de ICMP enviado. Código  cdigo  válido  para  los  tipos
              Destination  Unreach  (-du),  Redirect  (-red)  y  Time Exceeded
              (-tx).

              Se puede especificar un código numérico num para los tipos  ICMP
              que  no  tienen (Echo Request, Information Request, Address Mask
              Request,  Router  Solicitation,  Router  Advertisement,   Source
              Quench, Parameter Problem y Timestamp).

              Si  se  usa  max  se  enviará  un  código  ICMP  superior  a los
              admitidos.

              La siguiente sección CDIGOS ICMP enumera los  tipos  de  código
              cdigo válidos.

CÓDIGOS ICMP

       Los  cdigos  válidos  para  usar  con  los  tipos Destination Unreach,
       Redirect y Time Exceeded son,

       - Para usar con el tipo Destination Unreach (-du):

       net-unreach (Net Unreachable) indica red de destino no accesible.

       host-unreach (Host Unreachable) indica host de destino no accesible.

       prot-unreach (Protocol Unreachable) indica que el protocolo deseado  no
       está a disposición en el host destino.

       port-unreach (Port Unreachable) indica que el puerto deseado en el host
       destino no está disponible.

       frag-needed (Fragmentation Needed and Don't Fragment  was  Set)  indica
       que  el  paquete  IP  tuvo  que  ser fragmentado por su tamaño, pero el
       emisor no lo permitió por medio  del  flag  DF  (DON'T  FRAGMENT  o  NO
       FRAGMENTAR).

       sroute-fail  (Source Route Failed) indica que no se pudo seguir la ruta
       deseada que se indicaba en el paquete IP.

       net-unknown (Destination Network Unknown) indica que no  se  conoce  la
       red de destino.

       host-unknown (Destination Host Unknown) indica que no se conoce el host
       de destino, pero sí la red.

       host-isolated (Source Host Isolated) indica que no se puede acceder  al
       host de destino.

       net-ano  (Communication  with  Destination  Network is Administratively
       Prohibited) indica que el acceso a la red de destino  se  deniega,  vía
       cortafuegos o similar, por parte del receptor.

       host-ano  (Communication  with  Destination  Host  is  Administratively
       Prohibited) indica que el acceso al host de  destino  se  deniega,  vía
       cortafuegos o procedimiento análogo, por parte del receptor.

       net-unr-tos  (Destination  Network  Unreachable  for  Type  of Service)
       indica que no se puede acceder a la red  de  destino  con  el  tipo  de
       servicio (TOS, type of service) solicitado.

       host-unr-tos  (Destination Host Unreachable for Type of Service) indica
       que no se puede acceder al host destino con el TOS solicitado.

       com-admin-prohib (Communication Administratively Prohibited) indica que
       un router no puede encaminar un paquete por filtrado administrativo.

       host-precedence-viol   (Host   Precedence   Violation)  indica  que  la
       precedencia IP del paquete original no está permitida.

       precedence-cutoff (Precedence  cutoff  in  effect)  indica  que  se  ha
       intentado enviar un paquete con un nivel de precedencia IP menor que el
       mínimo impuesto por los administradores.

       - Para usar con el tipo Redirect (-red):

       net (Redirect Datagram for the Network) indica que el  destino  es  una
       red.

       host (Redirect Datagram for the Host) indica que el destino es un host.

       serv-net (Redirect Datagram for the Type Of Service and Network) indica
       que el destino es tipo de servicio y red.

       serv-host (Redirect Datagram for the Type Of Service and  Host)  indica
       que el destino es tipo de servicio y host.

       y

       - Para usar con el tipo Time Exceeded (-tx):

       ttl  (Time to Live exceeded in Transit) indica que el tiempo de vida en
       la cabecera de un paquete IP se ha agotado.

       frag (Fragment Reassembly Time Exceeded) indica que los  fragmentos  de
       un paquete IP no han podido ser reensamblados.

CÓDIGOS DE RETORNO

       icmpush  puede  ser  usado  de  una  forma  muy sencilla en guiones del
       intérprete de  comandos  que  estemos  usando  (típicamente  bash).  El
       programa devuelve los siguientes códigos al shell que le invocó:

       Valor  Significado
       -----  -----------
       0      Programa finalizado OK.
       1      Número de argumentos incorrecto.
       2      Protocolo ICMP desconocido.
       3      No se pudo crear socket tipo RAW.
       4      Tipo de paquete ICMP incorrecto.
       5      Gateway incorrecto.
       6      Destino de ruta incorrecto.
       7      Código de paquete ICMP incorrecto.
       8      Host original incorrecto.
       9      Error enviando paquete.
       10     Protocolo no implementado todavía.
       11     Dirección IP o host de spoof incorrecto.
       12     No se pudo reservar memoria para unión data_hdr.
       13     Dirección IP o host destino del paquete incorrecto.
       14     Protocolo desconocido.
       16     Error leyendo socket RAW.
       17     Error al iniciar manejador de señal SIGALRM.
       18     Los datos que se quieren enviar en el paquete
              Echo Request son demasiado grandes.
       19     Puerto origen incorrecto.
       20     Puerto destino incorrecto.
       21     Valor de timeout incorrecto.
       22     Echo ID incorrecto.
       23     Número de secuencia incorrecto.
       24     Datos de Echo incorrectos.
       25     Error en IP_HDRINCL.
       26     Dirección de router en Router Advertisement
              incorrecta.
       27     Número de bytes basura incorrecto.
       28     Puntero de ICMP Parameter Problem es incorrecto.

EJEMPLOS

       -  En  repuesta  a un paquete enviado con origen en el puerto TCP 100 y
       con destino en el  puerto  90,  queremos  enviar  un  ICMP  Redirect  a
       tontoligo.es para modificar su tabla de rutas con los siguientes datos:
       10.12.12.12 como gateway hacia el host death.es enmascarando el  origen
       del paquete como originado desde el host infect.comx:

       icmpush  -red  -sp  infect.comx  -gw 10.12.12.12 -dest death.es -c host
       -prot tcp -psrc 100 -pdst 90 tontoligo.es

       - En respuesta a un paquete ICMP  Echo  Request  enviado  con  un  ECHO
       REQUEST  id  100  y  un  numero  de secuencia ECHO REQUEST 90, queremos
       enviar un ICMP Redirect al host almorranas.es para modificar  su  tabla
       de  rutas  con  los siguientes datos: el host pizza.death como pasarela
       hacia  el  host  death.es  enmascarando  el  origen  del  paquete  como
       originado desde el host infect.comx:

       icmpush  -red  -sp  infect.comx  -gw pizza.death -dest death.es -c host
       -prot icmp -id 100 -seq 90 almorranas.es

       - Queremos enviar un paquete ICMP Destination Unreach al host  10.2.3.4
       diciéndole  que  nuestro  puerto TCP numero 20, conectado con su puerto
       TCP 2100, es inalcanzable. Nos enmascaramos como el host 10.1.1.1:

       icmpush -du -sp 10.1.1.1 -c port-unreach -prot tcp -psrc 2100 -pdst  20
       10.2.3.4

       -  Queremos enviar un paquete ICMP Destination Unreach al host 10.2.3.4
       diciéndole que el host inferno.hell y su puerto TCP 69, relacionado con
       su  puerto  TCP  666  es  inalcanzable.  Nos  enmascaramos como como el
       gateway router.comx:

       icmpush -du -sp router.comx -c host-unreach -prot tcp -psrc  666  -pdst
       69 -orig inferno.hell 10.2.3.4

       -  Queremos  enviar un paquete ICMP Source Quench al host ldg02.hell en
       respuesta a un paquete destinado  al  host  ldg00  con  protocolo  UDP,
       puerto  origen  100  y  destino  200.  Nos enmascaramos como el gateway
       10.10.10.1:

       icmpush -sq -sp 10.10.10.1 -prot udp -psrc 100 -pdst  200  -orig  ldg00
       ldg02.hell

       -  Queremos  enviar un paquete ICMP Time Exceeded al host ldg02.hell en
       respuesta a un paquete destinado  al  host  ldg00  con  protocolo  UDP,
       puerto  origen  100  y  puerto  destino  200.  Nos enmascaramos como el
       gateway ldg04.hell:

       icmpush -tx -sp ldg04.hell -c frag -prot udp -psrc 100 -pdst 200  -orig
       ldg00 ldg02.hell

       -  Queremos  enviar  un  paquete ICMP Address Mask Request y esperar 10
       segundos para ver las respuestas. Enmascararemos el paquete con  origen
       en 10.2.3.4 y lo mandaremos a la dirección 10.0.1.255:

       icmpush -mask -sp 10.2.3.4 -to 10 10.0.1.255

       -  Queremos  enviar  un  paquete ICMP Timestamp al host sepultura.hell.
       Enmascaramos el paquete como enviado por el host  10.2.3.1.  Usamos  el
       tiempo de espera por defecto, 5 segundos:

       icmpush -tstamp --spoof 10.2.3.1 sepultura.hell

       -   Queremos  enviar  un  paquete  ICMP  Information  Request  al  host
       nominas.hell.  La dirección origen sera nuestra propia dirección IP,  y
       el tiempo de espera sera de 20 segundos:

       icmpush -info -to 20 nominas.hell

       -   Queremos  enviar  un  paquete  ICMP  Router  Solicitation  al  host
       vagos.hell. La dirección de origen sera nuestra propia dirección IP,  y
       el tiempo de espera sera de 20 segundos:

       icmpush -rts --timeout 20 vagos.hell

       -  Queremos  enviar un paquete ICMP Echo Request al host vagos.hell con
       un el patrón  de  datos  'MiNombreEsGump'.  La  dirección  origen  sera
       nuestra  propia  dirección  IP. El tiempo de espera para leer los datos
       será de 2 segundos:

       icmpush -echo -data MiNombreEsGump -to 2 vagos.hell

       - Queremos enviar un paquete ICMP Echo Request  a  10.12.0.255  con  el
       siguiente  patrón  de  datos:  'D  E  A  T  H' (espacios inclusive). La
       dirección origen la enmascararemos como 192.168.0.255,  y  no  queremos
       leer las respuestas:

       icmpush -echo -sp 192.168.0.255 -data 'D E A T H' -to 0 192.168.0.255

       -  Queremos  enviar  un  ICMP Destination Unreach al host destino.death
       pero enviándolo con un código ICMP superior  a  los  legales  añadiendo
       además 60K de datos basura:

       icmpush -du -c max -gbg 60000 destino.death

       -  Queremos  enviar  un  ICMP  Router  Advertisement  al host death.es,
       diciéndole que los routers a usar son: router1.xtc con preferencia  20,
       router2.xtc  con  preferencia  50  y  router3.xtc  con  preferencia por
       defecto (0). Nos enmascararemos como el router routerpadre.xtc

       icmpush -rta router1.xtc/20 -rta router2.xtc/50  -rta  router3.xtc  -sp
       routerpadre.xtc death.es

       -  Queremos  enviar  un  ICMP  Parameter  Problem al host desgracias.es
       diciéndole que el  paquete  que  ha  enviado  al  host  paleto.org  con
       protocolo  udp, puerto origen 13 y puerto destino 53, tiene un error en
       el byte 13 de la cabecera IP.  Además, le añadiremos  todos  los  bytes
       basura posibles:

       icmpush -sp paleto.org -param -ptr 13 -prot udp -psrc 13 -pdest 53 -gbg
       max desgracias.es

       - Queremos enviar un paquete ICMP Timestamp al host www.paletos.org con
       el código 38 en lugar del código (0) que llevaría normalmente:

       icmpush -tstamp -c 38 www.paletos.org

VER TAMBIÉN

       Postel,  John,  "Internet  Control  Message  Protocol  - DARPA Internet
       Program Protocol  Specification",  RFC  792,  USC/Information  Sciences
       Institute, September 1981.

       Mogul,   Jeffrey   and   John  Postel,  "Internet  Standard  Subnetting
       Procedure", RFC  950,  Stanford,  USC/Information  Sciences  Institute,
       August 1985.

       Braden,  Robert,  "Requeriments  for  Internet  Hosts  -  Communication
       Layers", RFC 1122, USC/Information Sciences Institute, October 1989.

       Deering, Stephen, "ICMP Router Discovery  Messages",  RFC  1256,  Xerox
       PARC, September 1991.

       Baker,  Fred,  "Requeriments for IP Version 4 Routers", RFC 1812, Cisco
       Systems, June 1995.

       El cdigo fuente de Linux, en especial todo lo referente al  código  de
       red, y principalmente lo referido al protocolo ICMP.

AUTOR

       Slayer <tcpbgp@softhome.net>