This project is under construction. I have no idea whether it will be rolled out more broadly or not.
Install docker, docker compose, curl, and wget. You should defer to the docker documentation for how to install docker and docker compose, but this might work for you on kali, which I took from this page.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get -y install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
bookworm stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get -y install curl wget
Run the 1-liner install
curl -sSL https://raw.githubusercontent.com/BC-SECURITY/Empire-Launcher/main/install.sh | bash
Type empire
to see the help menu
usage: empire [-h] {up,down,destroy,server,client,use} ...
Empire Launcher v0.0.1
Docker Compose File: /Users/vinnybod/.empire/docker-compose.yaml
positional arguments:
{up,down,destroy,server,client,use}
Available commands
up Starts the Empire server and mysql db
down Stops the Empire server and mysql db
destroy Stops the Empire server and mysql db and removes the data
server Server-related commands
client Client-related commands
use Change the Empire version
optional arguments:
-h, --help show this help message and exit
empire up
to start the server!
- There is a set list of ports that are bound to the host. You change this list by modifying
~/.empire/docker-compose.yaml
The end goal for this install is that it can be run as a 1-liner with curl.
The script will then take less than a minute to:
- create an ~/.empire directory
- copy a default docker-compose and server-config into it
- add the empire "binary" to the user's path
It will expect the user to already have a few things installed like docker and wget
Then a plethora of commands will be available to the user (Not all of these are implemented)
empire
- Prints the help menuempire up
- Starts the Empire server and mysql dbempire down
- Stops the Empire server and mysql dbempire destroy
- Stops the Empire server and mysql db and removes the dataempire server logs
- Prints the logs from the Empire serverempire server logs -f
- Prints the logs from the Empire server and mysql db and follows themempire database logs
- Prints the logs from the mysql dbempire client
- Starts the Empire client, attached to the running server containerempire database dump
- Dumps the mysql database to the host's ~/.empire/app-data directoryempire use version 5.8.0
- Changes the version of Empire that is running (by docker tag)empire server attach
- Attaches to the running server container with a bash session
- The docker-compose file creates a Docker volume for the mysql db to persist data between runs.
- The docker-compose file binds the empire data directories to the host's
~/.empire/app-data
directory. - This allows the user to modify the
~/.empire/server-config.yml
and other files without having to rebuild the image. - It also allows the files to persist between runs.
This will only work with the 5.8.4 container or higher. It will only run with the public build of Empire/Starkiller.
If you want to use your own empire container instead of the one from Dockerhub, you can build it with the following commands. The ssh mounting is useful if you are wanting to use the sponsors build of starkiller since it requires a github ssh credential.
git fetch origin
git checkout docker-beta
eval $(ssh-agent)
# This command will be different depending on your ssh key
# ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_ed25519
docker buildx build --ssh default=$SSH_AUTH_SOCK -t bcsecurity/empire .