Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ICMP6(1)		     General Commands Manual			ICMP6(1)

NAME
     icmp6 - A security assessment tool for attack vectors based on ICMPv6 pack-
     ets

SYNOPSIS
     icmp6  [-i  INTERFACE] [-s SRC_ADDR[/LEN]] [-d DST_ADDR] [-S LINK_SRC_ADDR]
     [-D LINK-DST-ADDR] [-c HOP_LIMIT] [-y FRAG_SIZE] [-u DST_OPT_HDR_SIZE]  [-U
     DST_OPT_U_HDR_SIZE]  [-H  HBH_OPT_HDR_SIZE]  [-t TYPE[:CODE] | -e CODE | -A
     CODE -V CODE -R CODE] [-r TARGET_ADDR] [-x PEER_ADDR]  [-c  HOP_LIMIT]  [-m
     MTU]   [-O   POINTER]   [-p   PAYLOAD_TYPE]   [-P	PAYLOAD_SIZE]  [-n]  [-a
     SRC_PORTL[:SRC_PORTH]]  [-o  DST_PORTL[:DST_PORTH]]  [-X	TCP_FLAGS]   [-q
     TCP_SEQ]  [-Q TCP_ACK] [-V TCP_URP] [-w TCP_WIN] [-M] [-j PREFIX[/LEN]] [-k
     PREFIX[/LEN]] [-J LINK_ADDR] [-K  LINK_ADDR]  [-b	PREFIX[/LEN]]  [-g  PRE-
     FIX[/LEN]] [-B LINK_ADDR] [-G LINK_ADDR] [-f] [-L | -l] [-z] [-v] [-h]

DESCRIPTION
     icmp6 allows the assessment of IPv6 implementations with respect to a vari-
     ety of attack vectors based on ICMPv6 error messages. It is part of the SI6
     Networks' IPv6 Toolkit: a security assessment suite for the IPv6 Protocols.

     This  tool  has two modes of operation: "active" and "listening". In active
     mode, the tool attacks a specific target without listening to any	incoming
     traffic, while in "listening" mode the tool listens to traffic on the local
     network, and launches an attack in response to such traffic. Active mode is
     employed  if  an IPv6 Destination Address is specified. "Listening" mode is
     employed if the "-L" option (or its long counterpart "--listen") is set. If
     both an attack target and the "-L" option	are  specified,  the  attack  is
     launched against the specified target, and then the tool enters "listening"
     mode to respond incoming packets with ICMPv6 error messages.

     The  tool	supports  filtering  of  incoming  packets based on the Ethernet
     Source Address, the Ethernet Destination Address, the IPv6 Source	Address,
     and  the  IPv6 Destination Address.  There are two types of filters: "block
     filters" and "accept filters". If any "block filter" is specified, and  the
     incoming packet matches any of those filters, the message is discarded (and
     thus no ICMPv6 error messages are sent in response). If any "accept filter"
     is  specified,  incoming  packets must match the specified filters in order
     for the tool to respond with ICMPv6 error messages.

OPTIONS
     icmp6 takes its parameters as command-line options. Each of the options can
     be specified with a short name (one  character  preceded  with  the  hyphen
     character,  as  e.g.  "-i") or with a long name (a string preceded with two
     hyphen characters, as e.g. "--interface").

     The icmp6 tool supports IPv6 fragmentation, which might be of use	to  cir-
     cumvent  layer-2  filtering  and/or  Network  Intrusion  Detection  Systems
     (NIDS). However, IPv6 fragmentation is not enabled by default, and must  be
     explicitly enabled with the "-y" option.

     -i INTERFACE, --interface INTERFACE
	    This  option specifies the network interface that the tool will use.
	    If the destination address ("-d" option) is a link-local address, or
	    the "listening" ("-L") mode is selected, the interface must  be  ex-
	    plicitly specified. The interface may also be specified along with a
	    destination address, with the "-d" option.

     -s SRC_ADDR, --src-address SRC_ADDR

	    This option specifies the IPv6 source address (or IPv6 prefix) to be
	    used  for  the  Source Address of the attack packets. If a prefix is
	    specified, the Source Address is randomly selected from that prefix.
	    If this option is left unspecified, the IPv6 Source Address  of  the
	    attack packets is randomly selected from the prefix ::/0.

     -d DST_ADDR, --dst-address DST_ADDR

	    This option specifies the IPv6 Destination Address of the victim. It
	    can  be  left  unspecified only if the "-L" option is selected (that
	    is, if the tool is to operate in "listening" mode).

	    When operating in "listening" mode ("-L" option), the IPv6	Destina-
	    tion Address is selected according to the IPv6 Source Address of the
	    incoming packet.

     -S SRC_LINK_ADDR, --src-link-address SRC_LINK_ADDR

	    This  option  specifies  the link-layer Source Address of the attack
	    packets. If left unspecified, the link-layer Source Address is  ran-
	    domized.

     -D DST_LINK_ADDR, --dst-link-address DST_LINK_ADDR

	    This  option specifies the link-layer Destination Address of the at-
	    tack packets. If left unspecified, it is set to that  of  the  local
	    router  (for non-local destinations) or to that corresponding to the
	    destination host (for local hosts).

	    When operating in "listening" mode, the link-layer	Destination  Ad-
	    dress  is  set  to	the  link-layer  Source  Address of the incoming
	    packet.

     -c HOP_LIMIT, --hop-limit HOP_LIMIT

	    This option specifies the Hop Limit to be used for the Redirect mes-
	    sages. If this option is left unspecified, the Hop Limit is  random-
	    ized to a value between 64 and 243.

     -y SIZE, --frag-hdr SIZE

	    This  option  specifies that the ICMPv6 error messages must be frag-
	    mented. The fragment size must be specified as an argument	to  this
	    option.

     -u HDR_SIZE, --dst-opt-hdr HDR_SIZE

	    This option specifies that a Destination Options header is to be in-
	    cluded  in the outgoing packet(s). The extension header size must be
	    specified as an argument to this option (the header is  filled  with
	    padding options). Multiple Destination Options headers may be speci-
	    fied by means of multiple "-u" options.

     -U HDR_SIZE, --dst-opt-u-hdr HDR_SIZE

	    This option specifies a Destination Options header to be included in
	    the "unfragmentable part" of the outgoing packet(s). The header size
	    must  be  specified  as  an  argument  to this option (the header is
	    filled with padding options). Multiple Destination	Options  headers
	    may be specified by means of multiple "-U" options.

     -H HDR_SIZE, --hbh-opt-hdr HDR_SIZE

	    This  option specifies that a Hop-by-Hop Options header is to be in-
	    cluded in the outgoing packet(s). The header size must be  specified
	    as an argument to this option (the header is filled with padding op-
	    tions).  Multiple  Hop-by-Hop  Options  headers  may be specified by
	    means of multiple "-H" options.

     -t TYPE, --icmp6 TYPE

	    This option specifies the Type and Code of the ICMPv6 error  message
	    in the form "--icmp6 TYPE:CODE". If left unspecified, the ICMPv6 er-
	    ror  message  defaults to "Parameter Problem, Erroneous header field
	    encountered" (Type 4, Code 0).

	    Note: Other options (such as "--icmp6-unreachable") provide  an  al-
	    ternative for setting the ICMPv6 Type and Code.

     -e, --icmp6-dest-unreach

	    This  option  sets the ICMPv6 Type to "1" (Destination Unreachable),
	    and allows the  user  to  specify  the  ICMPv6  Code,  in  the  form
	    "--icmp6-dest-unreach CODE".

	    Note:  this  option is an alternative to the "-t" option for setting
	    the ICMPv6 Type and Code.

     -E, --icmp6-packet-too-big

	    This option sets the ICMPv6 Type to "1", and the ICMPv6 Code to  "0"
	    (Packet Too Big).

	    Note:  this  option is an alternative to the "-t" option for setting
	    the ICMPv6 Type and Code.

     -A, --icmp6-time-exceeded

	    This option sets the ICMPv6 Type to "3" (Time Exceeded), and  allows
	    the  user  to specify the ICMPv6 Code, in the form "--icmp6-time-ex-
	    ceeded CODE".

	    Note: this option is an alternative to the "-t" option  for  setting
	    the ICMPv6 Type and Code.

     -R, --icmp6-param-problem

	    This option sets the ICMPv6 Type to "4" (Parameter Problem), and al-
	    lows   the	 user	to   specify   the  ICMPv6  Code,  in  the  form
	    "--icmp6-param-problem CODE".

	    Note: this option is an alternative to the "-t" option  for  setting
	    the ICMPv6 Type and Code.

     -m MTU, --mtu MTU

	    This specifies the value of the "MTU" field of ICMPv6 Packet Too Big
	    error messages.

     -O POINTER, --pointer POINTER

	    This option specifies the value of the "Pointer" field of ICMPv6 Pa-
	    rameter Problem error messages.

     -p TYPE, --payload-type TYPE

	    This  option specifies the payload type to be included in the ICMPv6
	    Payload. Currently supported payloads are "TCP", "UDP", and "ICMP6".
	    The payload-type defaults to "TCP".

	    When the tool operates in "Listening" mode,  this  option  specifies
	    the  type  of packets the tool will listen to. In listening mode, an
	    additional type can be specified: "IP6"; this will cause the tool to
	    listen to all IPv6 traffic.

     -P SIZE, --payload-size SIZE

	    Size of the payload to be included in the ICMPv6 Payload  (with  the
	    payload  type  being  specified  by the "-p" option). By default, as
	    many bytes as possible are included, without exceeding  the  minimum
	    IPv6 MTU (1280 bytes).

     -n, --no-payload

	    This  option specifies that no payload should be included within the
	    ICMPv6 error message.

     -C HOP_LIMIT, --ipv6-hlim HOP_LIMIT

	    This option specifies the Hop Limit of the IPv6 packet  included  in
	    the  payload of the ICMPv6 error message. If this option is left un-
	    specified, the Hop Limit is randomized to a  value	between  64  and
	    243.

     -r ADDRESS, --target-addr ADDRESS

	    This  option specifies the Source Address of the IPv6 packet that is
	    embedded in the ICMPv6 error message. If left unspecified, it is set
	    to the same address as the IPv6 Destination  Address  of  the  outer
	    packet.

	    When  operating in "Listening mode", the tool automatically embeds a
	    piece of the received packet (unless otherwise specified by the "-n"
	    option), and hence the IPv6 Source	Address  of  the  embedded  IPv6
	    packet is set accordingly.

     -x ADDRESS, --peer-addr ADDRESS

	    This  option  specifies  the  Destination Address of the IPv6 packet
	    that is embedded in the ICMPv6 error message. If  left  unspecified,
	    it is set to a random value.

	    When  operating in "Listening mode", the tool automatically embeds a
	    piece of the received packet (unless otherwise specified by the "-n"
	    option), and hence the IPv6 Destination Address of the embedded IPv6
	    packet is set accordingly.

	    Note: since the victim host is expected to check that the ICMPv6 er-
	    ror message corresponds to an ongoing communication  instance,  when
	    operating  in  "active  mode",  this option should be set to a value
	    that corresponds to an ongoing communication instance.

     -o PORT, --target-port PORT

	    This option specifies the Source Port of the TCP or UDP packet  con-
	    tained  in	the  ICMPv6 Payload. If a port range is specified in the
	    form "-o LOWPORT:HIGHPORT" the tool will send one ICMPv6 error  mes-
	    sage for each port in that range.

	    Note:  This  option  is  meaningful only if "TCP" or "UDP" have been
	    specified (with the "-p" option).

     -a PORT, --peer-port PORT

	    This option specifies the Destination Port of the TCP or UDP  packet
	    contained in the ICMPv6 Payload. If a port range is specified in the
	    form  "-o LOWPORT:HIGHPORT" the tool will send one ICMPv6 error mes-
	    sage for each port in that range.

	    Note: This option is meaningful only if "TCP"  or  "UDP"  have  been
	    specified (with the "-p" option).

     -X TCP_FLAGS, --tcp-flags TCP_FLAGS

	    This  option  specifies the flags of the TCP header contained in the
	    ICMPv6 Payload. The flags are specified as "F" (FIN), "S" (SYN), "R"
	    (RST), "P" (PSH), "A" (ACK), "U" (URG), "X" (no flags). If left  un-
	    specified, only the "ACK" bit is set.

	    Note:  This  option  is  meaningful only if "TCP" has been specified
	    (with the "-p" option).

     -q SEQ_NUMBER, --tcp-seq SEQ_NUMBER

	    This option specifies the Sequence Number of  the  TCP  header  con-
	    tained in the ICMPv6 Payload. If left unspecified, the Sequence Num-
	    ber is randomized.

	    Note:  This  option  is  meaningful only if "TCP" has been specified
	    (with the "-p" option).

     -Q ACK_NUMBER, --tcp-ack ACK_NUMBER

	    This option specifies the Acknowledgment Number of	the  TCP  header
	    contained  in the ICMPv6  Payload. If left unspecified, the Acknowl-
	    edgment Number is randomized.

	    Note: This option is meaningful only if  "TCP"  has  been  specified
	    (with the "-p" option).

     -V URG_POINTER, --tcp-urg URG_POINTER

	    This option specifies the Urgent Pointer of the TCP header contained
	    in	the  ICMPv6  Payload. If left unspecified, the Urgent Pointer is
	    set to 0.

	    Note: This option is meaningful only if  "TCP"  has  been  specified
	    (with the "-p" option).

     -w TCP_WIN, --tcp-win TCP_WIN

	    This  option specifies the Window of the TCP header contained in the
	    ICMPv6 Payload. If left unspecified, the Window is randomized.

	    Note: This option is meaningful only if  "TCP"  has  been  specified
	    (with the "-p" option).

     -j SRC_ADDR, --block-src SRC_ADDR

	    This  option  sets a block filter for the incoming packets, based on
	    their IPv6 Source Address. It allows the specification  of	an  IPv6
	    prefix  in	the  form "-j prefix/prefixlen". If the prefix length is
	    not specified, a prefix length of "/128" is selected (i.e., the  op-
	    tion assumes that a single IPv6 address, rather than an IPv6 prefix,
	    has been specified).

     -k DST_ADDR, --block-dst DST_ADDR

	    This  option sets a block filter for the incoming Neighbor Solicita-
	    tion messages, based on their IPv6 Destination  Address.  It  allows
	    the  specification	of  an	IPv6  prefix in the form "-k prefix/pre-
	    fixlen". If the prefix length is not specified, a prefix  length  of
	    "/128"  is selected (i.e., the option assumes that a single IPv6 ad-
	    dress, rather than an IPv6 prefix, has been specified).

     -J SRC_ADDR, --block-link-src SRC_ADDR

	    This option sets a block filter for the incoming packets,  based  on
	    their  link-layer  Source  Address. The option must be followed by a
	    link-layer address (currently, only Ethernet is supported).

     -K DST_ADDR, --block-link-dst DST_ADDR

	    This option sets a block filter for the incoming packets,  based  on
	    their link-layer Destination Address. The option must be followed by
	    a link-layer address (currently, only Ethernet is supported).

     -b SRC_ADDR, --accept-src SRC_ADDR

	    This option sets an accept filter for the incoming packets, based on
	    their  IPv6  Source  Address. It allows the specification of an IPv6
	    prefix in the form "-b prefix/prefixlen". If the  prefix  length  is
	    not  specified, a prefix length of "/128" is selected (i.e., the op-
	    tion assumes that a single IPv6 address, rather than an IPv6 prefix,
	    has been specified).

     -g DST_ADDR, --accept-dst DST_ADDR

	    This option sets a accept filter for the incoming packets, based  on
	    their  IPv6  Destination  Address. It allows the specification of an
	    IPv6 prefix in the form "-g prefix/prefixlen". If the prefix  length
	    is	not  specified, a prefix length of "/128" is selected (i.e., the
	    option assumes that a single IPv6 address, rather than an IPv6  pre-
	    fix, has been specified).

     -B SRC_ADDR, --accept-link-src SRC_ADDR

	    This  option sets an accept filter for the incoming Neighbor Solici-
	    tation messages, based on their link-layer Source Address.	The  op-
	    tion  must be followed by a link-layer address (currently, only Eth-
	    ernet is supported).

     -G DST_ADDR, --accept-link-dst DST_ADDR

	    This option sets an accept filter for the incoming packets, based on
	    their link-layer Destination Address. The option must be followed by
	    a link-layer address (currently, only Ethernet is supported).

     -f, --sanity-filters

	    This option automatically adds a "block filter" for the IPv6  Source
	    Address of the packets.

	    Note:  This  option may be desirable when the tool operates in "Lis-
	    tening mode" and is instructed to listen to "ICMP6" or "IP6" packets
	    (thus possibly avoiding packet loops).

     -l, --loop

	    This option instructs the icmp6 tool to send periodic  ICMPv6  error
	    messages  to  the  victim  node. The amount of time to pause between
	    sending ICMPv6 error messages can be specified by means of the  "-z"
	    option,  and  defaults  to 1 second. Note that this option cannot be
	    set in conjunction with the "-L" ("--listen") option.

     -z, --sleep

	    This option specifies the amount of time to  pause	between  sending
	    ICMPv6 error messages (when the "--loop" option is set). If left un-
	    specified, it defaults to 1 second.

     -L, --listen

	    This instructs the icmp6 tool to operate in "Listening" mode (possi-
	    bly  after	attacking a given node). Note that this option cannot be
	    used in conjunction with the "-l" ("--loop") option.

     -v, --verbose

	    This option instructs the icmp6 tool to be verbose.  When the option
	    is set twice, the tool is "very verbose", and the tool also  informs
	    which  packets have been accepted or discarded as a result of apply-
	    ing the specified filters.

     -h, --help

	    Print help information for the icmp6 tool.

EXAMPLES
     The following sections illustrate typical use cases of the icmp6 tool.

     Example #1

     # icmp6 -i eth0 -L -p TCP -v

     The tool employs the network interface "eth0", and operates in  "Listening"
     mode  ("-L" option). Each ICMPv6 error message will contain the ICMPv6 Pay-
     load as many bytes from the captured packet without exceeding  the  minimum
     IPv6  MTU	(1280 bytes). The tool will print detailed information about the
     attack ("-v" option).

     Example #2

     # icmp6  --icmp6-packet-too-big  -p  ICMP6  -d  2001:db8:10::1  --peer-addr
     2001:db8:11::2 -m 1240 -v

     The  tool	will send an ICMPv6 Packet Too Big error message that advertises
     an MTU of 1240 bytes. The ICMPv6 error message will be sent to the  address
     "	"2001:db8:10::1". The ICMPv6 error message will embed an ICMPv6 Echo Re-
     quest message with the Source Address set to  "2001:db8:10::1" (i.e.,  Des-
     tination  Address of the error message), and the Destination Address set to
     "2001:db8:11::2) ("--peer-addr" option). The value of the "Identifier"  and
     "Sequence	Number"  fields of the embedded ICMPv6 Echo Request message will
     be randomized. The tool will provide detailed information about the  attack
     ("-v" option).

SEE ALSO
     RFC  5927	(available  at	<http://www.rfc-editor.org/rfc/rfc5927.txt>) and
     "Security Assessment of the Transmission Control Protocol (TCP)" (available
     at       <http://www.si6networks.com/publications/tn-03-09-security-assess-
     ment-TCP.pdf>) for a discussion of ICMPv6 attacks against TCP.

AUTHOR
     The icmp6 tool and the corresponding manual pages were produced by Fernando
     Gont <fgont@si6networks.com> for SI6 Networks.

COPYRIGHT
     Copyright (c) 2011-2013 Fernando Gont.

     Permission is granted to copy, distribute and/or modify this document under
     the  terms  of the GNU Free Documentation License, Version 1.3 or any later
     version published by the Free Software Foundation; with no  Invariant  Sec-
     tions,  no  Front-Cover  Texts, and no Back-Cover Texts.  A copy of the li-
     cense is available at <http://www.gnu.org/licenses/fdl.html>.

									ICMP6(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=icmp6&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help