A command an control implementation in go. Let's see how far I can go with this.
Go to file
Stefan Etringer 790b38d837 cleanup 2025-10-02 12:14:19 +00:00
agents changed style of logs so they can read more easily 2025-07-15 15:14:14 +00:00
imgs added image 2025-10-02 12:10:31 +00:00
src added more description 2025-10-02 11:05:09 +00:00
.gitignore added weblogger to display logs, timestamps and levels on the webpage 2025-04-29 15:03:49 +00:00
LICENSE Initial commit 2025-01-06 10:59:01 +01:00
Makefile added text formatting to commandOutput 2025-07-04 14:47:21 +00:00
README.md cleanup 2025-10-02 12:14:19 +00:00
go.mod refractoring, added test 2025-07-03 14:50:38 +00:00
go.sum refractoring, added test 2025-07-03 14:50:38 +00:00
main.go added the logger interface, json logs, and logs input from agents to the server. This means there is an new type which is named logs. It can be sent from the agents to the server 2025-07-15 13:16:48 +00:00
rename.sh init 2025-01-06 11:07:53 +01:00

README.md

gontrol

A command & control server inside your browser, which uses websockets to communicate to agents, while acting as a proxy server to their network. Even through VPNs.

The webUI contains a list of all agents, a log stream of events on the agents and the C2 server itself. There is a graph which diplays an overview of the connected and disconnected agents, as well.

gontrol-webui

Usage

Commands may be send in a bulk to multiple agents or just a single agent at a time. The results of the agents will be displayed alongside their name on the UI. Sending and receiving commands is done in a somewhat cli like style. Check the preferred agents on the list and type your command into the box at the bottom of the page. Press Execute to send the command. Any following commands will be sent to the selected agents.

Connect to an agent directly via clicking Connect. While an agent is located in another network than the C2 server connect via Connect via Proxy. If the agents supports interactive mode you will see a fully interactive command line interface inside your browser.

Communication between server and agents

The websocket is used to keep the connection alive between server and agents. Communication of requesting commands to and delivering outputs from the agents as response is done via HTTP.