Installation
git clone https://github.com/mvondracek/wifimitm.git
cd wifimitm
make
The implemented automated tool depends on several other tools, which are being controlled.
Wifimitm has to be able to start the required tools, therefore they have to be available
on a user’s system. The wifimitm package itself can be automatically installed by
the package’s setup.py
. After the installation, the implemented automated tool can
be started using its CLI named wifimitmcli
. The rest of software dependencies can be
satisfied by installation of required tools. For convenient setup of the implemented tool,
a Makefile
and several installation scripts and wrappers have been developed.
MITMf (Framework for Man-In-The-Middle attacks) has a number of dependencies,
therefore it is highly recommended to use MITMf
inside a virtual environment as stated in its installation guide(^MITMf_installation) .
MITMf could be installed using the package(^AUR_mitmf-git) available on Arch User
Repository (AUR), but unfortunately this package does not utilize the virtual environment.
An installation script MITMf_install.sh
is able to install MITMf, including its dependencies.
This script also creates a virtual environment dedicated to MITMf. An implemented wrapper
script is used to automate activation and deactivation of the virtual environment before
and after running MITMf. After installation, MITMf can be easily run encapsulated
in its virtual environment.
Wifiphisher is available in form of an AUR package(^AUR_wifiphisher), but this package
is not suitable for correct installation, because currently (May 2016), it is not updated
to the changes in the repository structure of wifiphisher. An implemented installation script
wifiphisher_install.sh
is able to create a dedicated virtual environment and install
wifiphisher. Convenient usage of wifiphisher installed inside its virtual environment is
achieved by a wrapper similar to the one for MITMf. Due to the fact that some changes
in wifiphisher’s source code were implemented, the installation script also applies
a software patch to the installed wifiphisher.
Tool upc_keys is implemented in the C language and therefore it is compiled during
installation. Compiled upc_keys and the executable wrappers for MITMf and wifiphisher,
which are described above, are linked from the /usr/bin/
directory after the installation.
The required tools are installed by their installation scripts to the /opt/
directory.
Installation of all the requirements can be started by requirements_install.sh
script
or Makefile
. A usage of implemented Makefile
, which can be used for a convenient installation,
is shown in table below.
Table: A usage of Makefile
Command | Description |
---|---|
make requirements |
Install requirements. |
make install |
Install the wifimitm package and the wifimitmcli tool. |
make man |
Install a manual page of wifimitmcli. |
make , make all |
Install requirements, the package, the tool and the manual page. |
Hardware requirements
Due to the nature of specific steps of the attack, a special hardware equipment is required. During the scanning and capturing of network traffic without being connected to the network, an attacking device needs a wireless network interface in monitor mode. For sending special forged packets, the wireless network interface also needs to be capable of packet injection. In order to be able to perform a phishing attack, a second wireless interface capable of master ([AP]) mode has to be available.
The user can check whether his hardware is capable of packet injection using the
aireplay-ng tool executed as aireplay-ng --test <replay interface>
. Managing monitor mode
of interface is possible with the airmon-ng tool.
Usage
After the installation, the CLI can be started via wifimitmcli. During wifimitmcli’s run,
usual output information is written to stdout, notifications concerning errors are written
to stderr. Wifimitmcli saves and loads attack data from the ∼/.wifimitm/
directory.
According to the fact that wifimitmcli is an automated tool, it does not expect any
input from a user during its progress. The user can control behaviour of wifimitmcli by
program arguments provided at start of wifimitmcli.
This way, wifimitmcli does not even have to be started manually by user, but it could
be a part of other scripts.
For information concerning usage of wifimitmcli, a user can start the tool
with -h
or --help
argument, which results in showing a help page.
More detailed information about wifimitmcli can be found on its installed manual page.
wifimitmcli --help
man wifimitmcli
Table below shows an overview of program arguments of wifimitmcli tool. The synopsis of wifimitmcli’s arguments is specified as follows:
wifimitmcli [-h] [-v] [-ll <level> ] [-p] [-cf FILE ] <ssid> <interface>
Table: Program arguments of wifimitmcli
Argument | Description |
---|---|
-h , --help |
Show help message and exit. |
-v , --version |
Show program’s version number and exit. |
-ll <level> , --logging-level <level> |
Select logging level (choices: disabled , critical , error , warning , info , debug ). |
-p , --phishing |
Enable phishing attack if dictionary attack fails. |
-cf FILE , --capture-file FILE |
Capture network traffic to provided file. |
<ssid> |
Attack network with provided SSID. |
<interface> |
Use provided wireless network interface for attack. |
As seen from the synopsis shown above, <ssid>
and <interface>
arguments are
mandatory to start wifimitmcli. In the case that provided arguments are not correct,
an appropriate error message and the synopsis is shown and the program terminates immediately
after the arguments check.
The implemented Python package wifimitm provides a functionality to log performed actions using Python’s logging (^Python_logging) module. Individual modules contained in the wifimitm package posses their own logger objects. The implemented wifimitmcli tool uses its logger as well. This approach makes it possible for wifimitmcli to control all noted loggers. Level of logging for the loggers can be set at start of wifimitmcli as a program argument.
Upon termination of the wifimitmcli tool, appropriate exit code indicating the result is returned. Some of the implemented exit codes are inspired by sysexits(^sysexits) . Exit codes of the implemented automated tool are shown in table below.
Table: Exit codes of wifimitmcli
Value | Name | Description |
---|---|---|
0 | EX_OK |
Program terminated successfully. |
2 | ARGUMENTS |
Incorrect or missing arguments provided. |
69 | EX_UNAVAILABLE |
Required program or file does not exist. |
77 | EX_NOPERM |
Permission denied. |
79 | TARGET_AP_NOT_FOUND |
Target AP was not found during scan. |
80 | NOT_IN_ANY_DICTIONARY |
WPA/WPA2 passphrase was not found in any available dictionary. |
81 | PHISHING_INCORRECT_PSK |
WPA/WPA2 passphrase obtained from phishing attack is incorrect. |
82 | SUBPROCESS_ERROR |
Failure in subprocess occured. |
130 | KEYBOARD_INTERRUPT |
Program received SIGINT. |