DroneSploit – A pentesting console framework

superior_hosting_service

DroneSploit
DroneSploit

DroneSploit – A pentesting console framework dedicated to drones


This CLI framework is based on sploitkit and is an attempt to gather hacking techniques and exploits especially focused on drone hacking. For the ease of use, the interface has a layout that looks like Metasploit.

DroneSploit was created by Alexandre D’Hondt and Yannick Pasquazzo. The project is still in the development stage, as both developers are working to improve its capabilities. For now, DroneSploit is designed to target only WiFi-controlled drones and includes a set of modules (based on Aircrack-NG) that allows users to hack into poorly configured ones. DroneSploit currently supports modules for the C-me and Flitt drones (Hobbico). New modules for other brands and models (including Parrot and DJI) are in development and due to be added shortly.

The project was presented at Black Hat Europe Arsenal 2019, and you can download the presentation from here.

Setup

This project is available on PyPi and can be simply installed using Pip:

pip3 install dronesploit

1. Startup

$ python3 main.py --help
usage: ./main.py [--dev] [-h] [-v]

Main

optional arguments:
  --dev          development mode (default: False)

extra arguments:
  -h, --help     show this help message and exit
  -v, --verbose  verbose mode (default: False)

The console is started using the launcher main.py. It may ask for sudo rights as it must have the permission for setting WiFi interfaces.

$ python3 main.py
[sudo] password for user:

[...]

At startup, a banner is shown and a summary of the available modules is shown.

DroneSploit
DroneSploit

Some requirements can be unsatisfied at startup like in the picture above. The command show issues allows to identify how this can be fixed.

2.1 From the root console

dronesploit > help
[...]

This will display multiple sections in function of the context ;

  • General commands are always displayed. Example: Getting help in DroneSploit – General commands
dronesploit help general
dronesploit-help-general
  • Level-specific commands are displayed according to the current console. Example: Getting help in DroneSploit – Specific commands:
dronesploit help others
dronesploit-help-others

2.2 From the project console

dronesploit > select test
dronesploit[test] > help
[...]

Now being into the context of a project, we now see the general commands again but with the project commands as the section for level-specific commands; Example: Getting help in DroneSploit – Project-level commands:

dronesploit help project
dronesploit-help-project

2.3 From the module console

dronesploit[test] > use auxiliary/wifi/deauth
dronesploit[test] auxiliary(wifi/deauth) > help
[...]

Now being into the context of a module, we now see the general commands again but with the module commands as the section for level-specific commands; Example: Getting help in DroneSploit – Module-level commands:

dronesploit help module
dronesploit-help-module

3. Listing available modules

This can be achieved by executing the following command:

dronesploit modules
dronesploit-modules

In the screenshot above, one can see two modules that are disabled, like shown at startup.

4. Enabling the WiFi monitor mode

The toggle command allows to toggle the WiFi mode for an interface. It autocompletes through the list of WiFi interfaces present on the system.

dronesploit monitor mode
dronesploit-monitor-mode

When executed, it switches between the managed and monitor modes

dronesploit managed mode
dronesploit-managed-mode

5. Scanning for targets

The scan command allows to quickly scan for targets (and requires a WiFi interface in monitor mode).

dronesploit scanning
dronesploit-scanning

The targets command then allows to list the discovered targets and their characteristics.

dronedploit targets list
dronedploit-targets-list

Targets are valid during a period of 5 minutes, meaning that they will still be displayed after this period, but when using the scan command again, the list will be updated (and targets that are not in the vicinity anymore will disappear).

6. Breaking into a target

Now that we have a target, we can start an attack. For this purpose, we start the appropriate attack module. Note that, in the example hereafter, the ESSID and INTERFACE options are automatically filled in with the current information.

dronesploit wpa2 psk attack
dronesploit-wpa2-psk-attack

The attack succeeded and the password is then known in the targets list.

dronesploit targets with password
dronesploit-targets-with-password

Sadly, lots of light commercial drones have the same default password ; the password command allows to fill in the password without having to run an attack.

dronesploit targets password
dronesploit-targets-password

7. Connecting to the target

At this point, we have a password for a target, we can know connect to it using the connectcommand.

dronesploit targets connect
dronesploit-targets-connect

Like shown in the screenshot above, the targets list has now a row highlighted in bold to show that we are connected to this target.

We can also connect to another target.

dronesploit targets connect another
dronesploit-targets-connect-another

In the case herebefore, we call a module for which the required model of target can not be found as connected to the attack machine, therefore raising a warning. If we show the options for this module, we get several required values that are not filled in.

dronesploit targets module required options
dronesploit-targets-module-required-options

8. Executing a module

We can now use a module for the connected drone using the use command.

dronesploit targets module options
dronesploit-targets-module-options

In this example, one can see that the value for the TARGET option is automatically filled in. The module is then directly ready to run.

Finally, we can run the module by using the run command.

dronesploit targets module run
dronesploit-targets-module-run