Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eikendev/hackenv

Manage and access your Kali Linux or Parrot Security VM from the terminal (SSH support + file sharing, especially convenient during CTFs, Hack The Box, etc.) :rocket::wrench:
https://github.com/eikendev/hackenv

cli ctf ctf-scripts ctf-tools hacking hackthebox kali kali-linux kali-setup kalilinux libvirt parrot-sec parrotsec penetration-testing pentest-scripts pentest-tool pentest-tools pentesting security security-tools

Last synced: about 1 month ago
JSON representation

Manage and access your Kali Linux or Parrot Security VM from the terminal (SSH support + file sharing, especially convenient during CTFs, Hack The Box, etc.) :rocket::wrench:

Awesome Lists containing this project

README

        


hackenv



Access your Kali Linux and Parrot Security instances with ease.


hackenv lets you comfortably manage your hacking environment from the terminal.



Build status 
License 

## 🚀 Installation

The **preferred way** is to download the binary from the [latest release](https://github.com/eikendev/hackenv/releases).

Alternatively, install the [required dependencies](#dependencies) and build it yourself:
```bash
go install github.com/eikendev/hackenv/cmd/...@latest
```

## 🤘 Features

- Support for Kali Linux and Parrot Security.
- Create short-lived virtual machines within seconds.
- Download the latest official live image conveniently.
- **Simple and intuitive** command line interface.
- Configure instant SSH access based on **public-key authentication**.
- Set up a **shared directory** between host and guest.
- Set the same **keyboard layout** in the guest as on the host.

## 📄 Usage

First, make sure you have the [required dependencies](#dependencies) installed.
Also, you will need a bridge interface [as described below](#creating-a-bridge-interface).
This can be as simple as running `hackenv fix create-bridge` (or `./bin/hackenv_createbridge`).

Then, download an image using `hackenv get`.
This will download a live image from the official mirrors.
The download can take a while, so sit back and enjoy some tea.

| :warning: **If you run SELinux, you must label the new image yourself. Check [the section on file sharing](#file-sharing) for more information.** |
|-----------------------------------------------------------------|

Next, run `hackenv up` to boot the virtual machine.
Once this command is finished, the VM is running and fully configured.
The VM will be short-lived (volatile), meaning any data and configuration stored outside the shared directory will be removed once the machine shuts down.
This is by design and admittedly opinionated.

You can now start an SSH session with `hackenv ssh` or spin up a GUI with `hackenv gui`.

Note that by default, hackenv will operate with Kali Linux, and respectively download its image.
If you want to operate with Parrot Security instead, specify `hackenv --type=parrot`, or check out [the configuration](#configuration).

### File Sharing

hackenv will automatically set up a shared directory between the host and the virtual machine.
On the host side the directory is `~/.local/share/hackenv/shared`, while on the guest side it is located at `/shared`.

If SELinux denies access to the shared directory, you have to adjust the context of the directory.
You can run `hackenv fix apply-labels` (or `./bin/hackenv_applylabels`) if you are on Fedora or similar.
The script will also relabel the downloaded images.
If you add new files to the shared directory from outside, do not forget to label them as well.

### Creating a Bridge Interface

hackenv uses a bridge so that you can reach the guest from the host for SSH, while the guest can access the Internet.
You can create this bridge by running `hackenv fix create-bridge` (or `./bin/hackenv_createbridge`).
Note that this script **will request privileges** so it can create an interface.

Of course, please adapt the script to your specific needs.
The interface is expected to have the name `virbr0` by default, but this can be changed using command line flags.

## ⚙ Configuration

The tool currently does not support configuration via files.
However, some options can be set using environment variables.
Check out the help (`--help`) of a command to see what options support this.

For instance, to operate with Parrot Security by default, you can set `$HACKENV_TYPE=parrot`.
If you work with both operating systems, then I recommend using shell aliases:
```bash
alias kali='hackenv --type=kali'
alias parrot='hackenv --type=parrot'
```

## 🥙 Dependencies

- [libvirt](https://libvirt.org/) (virsh)
- [OpenSSH](https://www.openssh.com/) (ssh and ssh-keygen)
- setxkbmap
- [virt-viewer](https://virt-manager.org/) or [Remmina](https://remmina.org/)

To build the binary yourself, you also need the development files of libvirt, usually called `libvirt-dev` or `libvirt-devel`.

## 💡 Alternatives

If you do not like this tool, the following options are worth checking out:
- [Vagrant](https://www.vagrantup.com/) in combination with [VirtualBox](https://www.virtualbox.org/)
- [Docker](https://www.docker.com/) or [Podman](https://podman.io/)