To add an exploit one has to go through a similar process as with the hardware profile, but in the case of the exploits, there are more options to provide and set.
If a new exploit needs a new hardware support then you first need to add a hardware profile, otherwise, you should use the default hardware profile.
To add an actual exploit profile you need to go through the following process:
- Create an exploit {name}.yaml file and name it as you wish. For example, exploit1337.yaml should be stored in the exploits directory
- Then you need to add the description of the exploit in YAML to the file which should have the following structure, see example 1:
name: "internalblue_CVE_2018_5383_Invalid"
author: "Internalblue team"
type: "PoC"
mass_testing: true
bt_version_min: 2.0
bt_version_max: 5.2
hardware: "nexus5"
command: "./internalblue_CVE_2018_5383_Invalid.sh"
parameters:
- name: "target"
name_required: false
type: "str"
help: "Target MAC address"
required: true
is_target_param: true
parameter_connector: " "
- name: "directory"
name_required: false
type: "str"
help: "Directory to save output"
required: true
is_target_param: false
parameter_connector: " "
log_pull:
in_command: true
pull_parameter: "directory"
directory:
change: true
directory: "modules/tools/custom_exploits"
3. With that you added an exploit, and you can verify that with the following command
sudo -E env PATH=$PATH bluekit -l
- If your exploit is not a DoS proof of concept, then we would ask you to add the following wrapper
- Call report_vulnerable function from the bluekit package when the exploit worked and a target device is vulnerable. Add data you want to save in the toolkit logs.
from bluekit.report import report_not_vulnerable, report_vulnerable, report_error
report_vulnerable("STRING YOU WANT TO APPEAR IN THE LOGS")
- Call report_not_vulnerable function from bluekit package when the device is not vulnerable. Add the data you want to save in the toolkit logs.
from bluekit.report import report_not_vulnerable, report_vulnerable, report_error
report_not_vulnerable("STRING YOU WANT TO APPEAR IN THE LOGS")
- For other codes please consult the documentation