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>