diff options
Diffstat (limited to 'mausezahn.8')
-rw-r--r-- | mausezahn.8 | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/mausezahn.8 b/mausezahn.8 new file mode 100644 index 0000000..1c89b29 --- /dev/null +++ b/mausezahn.8 @@ -0,0 +1,256 @@ +.\" netsniff-ng - the packet sniffing beast +.\" Copyright 2013 Herbert Haas, modified by Daniel Borkmann. +.\" Subject to the GPL, version 2. + +.TH MAUSEZAHN 8 "03 March 2013" "Linux" "netsniff-ng toolkit" +.SH NAME +mausezahn \- a fast versatile packet generator with Cisco-cli + +.SH SYNOPSIS + +\fB mausezahn\fR { [\fIoptions\fR] "<arg-string> | <hex-string>" } + +.SH DESCRIPTION + +mausezahn is a fast traffic generator which allows you to send nearly every +possible and impossible packet. In contrast to trafgen(8), mausezahn's packet +configuration is on protocol-level instead of byte-level and mausezahn also +comes with a built-in Cisco-like command-line interface, making it suitable +as a network traffic generator box in your network lab. + +Next to network labs, it can also be used as a didactical tool and for security +audits including penetration and DoS testing. As a traffic generator, mausezahn +is also able to test IP multicast or VoIP networks. Packet rates close to the +physical limit are reachable, depending on the hardware platform. + +mausezahn supports two modes, ``direct mode'' and a multi-threaded ``interactive +mode''. + +The ``direct mode'' allows you to create a packet directly on the command line +and every packet parameter is specified in the argument list when calling +mausezahn. + +The ``interactive mode'' is an advanced multi-threaded configuration mode with +its own command line interface (cli). This mode allows you to create an arbitrary +number of packet types and streams in parallel, each with different parameters. + +The interactive mode utilizes a completely redesigned and more flexible protocol +framework called ``mops'' (mausezahn's own packet system). The look and feel of +the cli is very close to the Cisco IOS^tm command line. + +You can start the interactive mode by executing mausezahn with the ``-x'' +argument (an optional port number may follow, otherwise it is 25542). Then use +telnet(1) to connect to this mausezahn instance. If not otherwise specified, +the default login/password combination is mz:mz, enable password is: mops. +This can be changed in /etc/netsniff-ng/mausezahn.conf. + +The direct mode supports two specification schemes: The ``raw-layer-2'' scheme, +where every single byte to be sent can be specified, and ``higher-layer'' scheme, +where packet builder interfaces are used (using the ``-t'' option). + +To use the ``raw-layer-2'' scheme, simply specify the desired frame as +hexadecimal sequence (the ``hex-string''), such as: + + mausezahn eth0 "00:ab:cd:ef:00 00:00:00:00:00:01 08:00 ca:fe:ba:be" + +In this example, whitespaces within the byte string are optional and separate +the Ethernet fields (destination and source address, type field, and a short +payload). The only additional options supported are ``-a'', ``-b'', ``-c'', and +``-p''. The frame length must be greater or equal 15 bytes. + +The ``higher-layer'' scheme is enabled using the ``-t <packet-type>'' option. +This option activates a packet builder and besides the ``packet-type'' an +optional ``arg-string'' can be specified. The ``arg-string'' contains +packet-specific parameters, such as TCP flags, port numbers, etc (see example +section). + +.SH OPTIONS +mausezahn provides a built-in context-specific help. Thus, simply append the +keyword ``help'' after the configuration options. The most important options +are: + +.SS -x [<port>] +Start mausezahn in interactive mode with a Cisco-like cli. Use telnet to log +into the local mausezahn instance. If no port has been specified, port 25542 +is used as default. + +.SS -v +Verbose mode. Capital -V is even more verbose. + +.SS -S +Simulation mode, i.e. don't put anything on the wire. This is typically combined +with the verbose mode. + +.SS -q +Quiet mode where only warnings and errors are displayed. + +.SS -c <count> +Send the packet count times (default: 1, infinite: 0). + +.SS -d <delay> +Apply delay between transmissions. The delay value can be specified in usec +(default, no additional unit needed), or in msec (e.g. 100m or 100msec), or +in seconds (e.g. 100s or 100sec). Note: mops also supports nanosecond delay +granulation if you need it (see interactive mode). + +.SS -p <lenght> +Pad the raw frame to specified length using zero bytes. Note that for raw +layer 2 frames the specified length defines the whole frame length, while for +higher layer packets the number of additional padding bytes are specified. + +.SS -a <src-mac|keyword> +Use specified source MAC address with hex notation such as 00:00:aa:bb:cc:dd. +By default the interface MAC address will be used. The keywords ``rand'' and +``own'' refer to a random MAC address (only unicast addresses are created) +and the own address, respectively. You can also use the keywords mentioned +below although broadcast-type source addresses are officially invalid. + +.SS -b <dst-mac|keyword> +Use specified destination MAC address. By default, a broadcast is sent in raw +layer 2 mode or the destination hosts/gateways interface MAC address in normal +(IP) mode. You can use the same keywords as mentioned above, as well as +``bc'' or ``bcast'', ``cisco'', and ``stp''. Please note that for the destination +MAC address the ``rand'' keyword is supported but creates a random address only +once, even when you send multiple packets. + +.SS -A <src-ip|range|rand> +Use specified source IP address, default is own interface IP. Optionally, the +keyword ``rand'' can again be used for a random source IP address or a range +can be specified, such as ``192.168.1.1-192.168.1.100'' or ``10.1.0.0/16''. +Also, a DNS name can be specified for which mausezahn tries to determine the +corresponding IP address automatically. + +.SS -B <dst-ip|range> +Use specified destination IP address (default is broadcast i.e. 255.255.255.255). +As with the source address (see above) you can also specify a range or a DNS name. + +.SS -t <packet-type> +Create the specified packet type using the built-in packet builder. Currently, +supported packet types are: ``arp'', ``bpdu'', ``ip'', ``udp'', ``tcp'', ``rtp'', +and ``dns''. There is currently also a limited support for ``icmp''. Type +``-t help'' to verify which packet builders your actual mausezahn version +supports. Also, for any particular packet type, for example ``tcp'' type +``mausezahn -t tcp help'' to receive a more in-depth context specific help. + +.SS -T <packet-type> +Make this mausezahn instance the receiving station. Currently, only ``rtp'' is +an option here and provides precise jitter measurements. For this purpose, start +another mausezahn instance on the sending station and the local receiving station +will output jitter statistics. See ``mausezahn \-T rtp help'' for a detailed help. + +.SS -Q <[CoS:]vlan> [, <[CoS:]vlan>, ...] +Specify 802.1Q VLAN tag and optional Class of Service. An arbitrary number of +VLAN tags can be specified (that is you can simulate QinQ or even QinQinQinQ..). +Multiple tags must be separated via a comma or a period (e.g. "5:10,20,2:30"). +VLAN tags are not supported for ARP and BPDU packets (in which case you could +specify the whole frame in hex using the raw layer 2 interface of mausezahn). + +.SS -M <label[:cos[:ttl]][bos]> [, <label...>] +Specify a MPLS label or even a MPLS label stack. Optionally, for each label the +experimental bits (usually the Class of Service, CoS) and the Time To Live +(TTL) can be specified. And if you are really crazy you can set/unset the +Bottom of Stack (BoS) bit at each label using the ``S'' (set) and ``s'' +(unset) option. By default, the BoS is set automatically and correct. Any other +setting will lead to invalid frames. Enter ``-M help'' for detailed instructions +and examples. + +.SS -P <ascii-payload> +Specify a cleartext payload. Alternatively, each packet type supports a +hexadecimal specification of the payload (see for example ``-t udp help''). + +.SS -f <filename> +Read the ascii payload from the specified file. + +.SS -F <filename> +Read the hex payload from the specified file. Actually, this file must be also +an ascii text file, but must contain hexadecimal digits, e.g. "aa:bb:cc:0f:e6...". +You can use also spaces as separation characters. + +.SH USAGE EXAMPLE + +.SS mausezahn eth0 \-c 0 \-d 2s \-t bpdu vlan=5 +Send BPDU frames for VLAN 5 as used with Cisco's PVST+ type of STP. By default +mausezahn assumes that you want to become the root bridge. + +.SS mausezahn eth0 \-c 128000 \-a rand \-p 64 +Perform a CAM table overflow attack. + +.SS mausezahn eth0 \-c 0 \-Q 5,100 \-t tcp "flags=syn,dp=1-1023" \-p 20 \-A rand \-B 10.100.100.0/24 +Perform a SYN flood attack to another VLAN using VLAN hopping. This only works +if you are connected to the same VLAN which is configured as native VLAN on the +trunk. We assume that the victim VLAN is VLAN 100 and the native VLAN is VLAN 5. +Lets attack every host in VLAN 100 which use a IP prefix of 10.100.100.0/24, also +try out all ports between 1 and 1023 and use a random source IP address. + +.SS mausezahn eth0 \-c 0 \-d 10msec \-B 230.1.1.1 \-t udp "dp=32000,dscp=46" \-P "Multicast test packet" +Send IP multicast packets to the multicast group 230.1.1.1 using a UDP header +with destination port 32000 and set the IP DSCP field to EF (46). Send one +frame every 10 msec. + +.SS mausezahn eth0 \-Q 6:420 \-M 100,200,300:5 \-A 172.30.0.0/16 \-B target.anynetwork.foo \-t udp "sp=666,dp=1-65535" \-p 1000 \-c 10 +Send UDP packets to the destination host target.anynetwork.foo using all +possible destination ports and send every packet with all possible source +addresses of the range 172.30.0.0/16; additionally use a source port of 666 +and three MPLS labels, 100, 200, and 300, the outer (300) with QoS field 5. +Send the frame with a VLAN tag 420 and CoS 6; eventually pad with 1000 bytes +and repeat the whole thing 10 times. + +.SS mausezahn \-t syslog sev=3 \-P "Main reactor reached critical temperature." \-A 192.168.33.42 \-B 10.1.1.9 \-c 6 \-d 10s +Send six forged syslog messages with severity 3 to a Syslog server 10.1.1.9; use +a forged source IP address 192.168.33.42 and let mausezahn decide which local +interface to use. Use an inter-packet delay of 10 seconds. + +.SS mausezahn \-t tcp "flags=syn|urg|rst, sp=145, dp=145, win=0, s=0-4294967295, ds=1500, urg=666" \-a bcast \-b bcast \-A bcast \-B 10.1.1.6 \-p 5 +Send an invalid TCP packet with only a 5 byte payload as layer-2 broadcast and +also use the broadcast MAC address as source address. The target should be +10.1.1.6 but use a broadcast source address. The source and destination port +shall be 145 and the window size 0. Set the TCP flags SYN, URG, and RST +simultaneously and sweep through the whole TCP sequence number space with an +increment of 1500. Finally set the urgent pointer to 666, i.e. pointing to +nowhere. + +.SH NOTE +When multiple ranges are specified, e.g. destination port ranges and +destination address ranges, then all possible combinations of ports and +addresses are used for packet generation. Furthermore, this can be mixed with +other ranges e.g. a TCP sequence number range. Note that combining ranges +can lead to a very huge number of frames to be sent. As a rule of thumb you +can assume that about 100,000 frames and more are sent in a fraction of one +second, depending on your network interface. + +mausezahn has been designed as fast traffic generator so you might easily +overwhelm a LAN segment with myriads of packets. And because mausezahn should +also support security audits it is also possible to create malicious or +invalid packets, SYN floods, port and address sweeps, DNS and ARP poisoning, +etc. + +Therefore, don't use this tool when you are not aware of possible consequences +or have only little knowledge about networks and data communication. If you +abuse mausezahn for 'unallowed' attacks and get caught, or damage something of +your own, then this is completely your fault. So the safest solution is to try +it out in a lab environment. + +.SH LEGAL +mausezahn is licensed under the GNU GPL version 2.0. + +.SH HISTORY +.B mausezahn +was originally written by Herbert Haas. According to his website [1], he +unfortunately passed away in 2011. Thus, having this tool unmaintained as well. +It has been adopted and integrated into the netsniff-ng toolkit and is further +being maintained and developed from there. Maintainers are Tobias Klauser +<tklauser@distanz.ch> and Daniel Borkmann <dborkma@tik.ee.ethz.ch>. + + [1] http://www.perihel.at/ + +.SH SEE ALSO +.BR netsniff-ng (8), +.BR trafgen (8), +.BR ifpps (8), +.BR bpfc (8), +.BR flowtop (8), +.BR astraceroute (8), +.BR curvetun (8) + +.SH AUTHOR +Manpage was written by Herbert Haas and modified by Daniel Borkmann. |