Exploration is a modular and extensible Command and Control (C2) framework tailored for red team operations. This repository contains the backend TeamServer (written in C++) and the frontend Client (written in Python).
The latest release package includes:
- The C++ TeamServer
- The Python Client
- Windows modules and beacons from C2Implant
- Linux modules and beacons from C2LinuxImplant
The TeamServer is a standalone C++ application responsible for managing listeners and active sessions. The Client, written in Python, communicates with the TeamServer through gRPC.
Beacons deployed on target machines initiate callbacks to the TeamServer, establishing interactive sessions. These sessions are used to send commands, receive output, and control implants.
Supported communication channels include: TCP, SMB, HTTP, and HTTPS.
A precompiled version of the TeamServer is available in the release archive, which includes default TLS certificates for gRPC and HTTP communication.
To download the latest release, use the following command, or visit the release page:
wget -q $(wget -q -O - 'https://api.github.com/repos/maxDcb/C2TeamServer/releases/latest' | jq -r '.assets[] | select(.name=="Release.tar.gz").browser_download_url') -O ./C2TeamServer.tar.gz \
&& mkdir C2TeamServer && tar xf C2TeamServer.tar.gz -C C2TeamServer --strip-components 1To launch the TeamServer:
cd Release
./TeamServerIf you prefer containerized execution (recommended to avoid host library issues), build and run the Dockerfile:
# 0) Get Dockerfile
curl -sL https://raw.githubusercontent.com/maxDcb/C2TeamServer/refs/heads/master/Dockerfile -o Dockerfile
# 1) Build
sudo docker build -t exploration-teamserver .
# 2) Create a host copy of the release
CID=$(sudo docker create exploration-teamserver)
sudo docker cp "$CID":/opt/teamserver/Release /opt/C2TeamServer
sudo docker rm "$CID"
# 3) Run container with host Release mounted (for easy editing)
sudo docker run -it --rm --name exploration-teamserver -v /opt/C2TeamServer/Release:/opt/teamserver/Release -p 50051:50051 -p 80:80 -p 443:443 -p 8443:8443 exploration-teamserverInstall the Python client using uv:
# uv
uv tool install git+https://github.com/maxDcb/C2TeamServer.git#subdirectory=C2Client Set the path to the TeamServer certificate, if you run in a docker you can simply cp the server.crt, or if you follow the above section it should be in /opt/C2TeamServer/TeamServer/server.crt:
export C2_CERT_PATH=/path/to/teamserver/cert/server.crtConnect to the TeamServer:
c2client --ip 127.0.0.1 --port 50051 Explore an in-depth, hands-on guide to developing a modern Command and Control (C2) framework. This series covers the architecture, design decisions, and implementation details of the C2TeamServer project.
- Part 0 — Setup and Basic Usage: Learn how to set up and launch your first Linux beacon.
- Part 1 — TeamServer & Architecture: Discover the build system, messaging choices, and listener management.
- Part 2 — GUI & Operator Workflows: Dive into the design goals and functionalities of the graphical user interface.
- Part 3 — Beacons & Listeners: Understand implant architecture and channel implementations.
- Part 4 — Modules: Explore module templates and implementation strategies.
The added emojis help bring some fun and engagement to the titles and sections, guiding the reader through the document while also visually highlighting the key parts.
The Exploration C2 Framework consists of multiple components, including the C2TeamServer, C2Implant, and C2LinuxImplant. Below are the build instructions for C2TeamServer.
-
Install Dependencies:
- Ensure you have CMake, g++, and Conan installed.
sudo apt install cmake pip3 install conan
-
Clone the Repository: If you haven't cloned the repository already, you can do so with:
git clone https://github.com/maxDcb/C2TeamServer.git cd C2TeamServer git submodule update --init -
Configure the Build:
- Create a build directory and navigate into it.
mkdir build cd build- Run CMake to configure the build process. This may take some time if you haven't installed the necessary dependencies yet, which are provided by Conan.
cmake .. -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./conan_provider.cmake
-
Build the TeamServer:
- Now, you can compile the TeamServer with the following command:
make
- This will generate the
TeamServerbinary along with the TeamServer modules and copy them into theReleasefolder in the root directory of the project.



