Skip to content

fooHQ/foojank

Repository files navigation

Foojank

Foojank is a prototype of a command and control framework written in Go.

Foojank uses NATS as a command-and-control server. NATS, a widely used message broker, is commonly used in IoT and cloud systems to facilitate communication between distributed services. NATS offers a persistence layer known as JetStream, enabling it to store messages on the server even when the receiver is offline. Additionally, NATS provides an object store that can be utilized for storing files.

Foojank leverages the NATS features to offer:

  • Asynchronous or real-time communication with Agents over TCP or WebSockets.
  • Server-based storage for file sharing and data exfiltration.
  • JWT-based authentication and authorization.
  • Full observability.
  • Extensibility.

Foojank is currently compatible only with our prototype agent, Vessel. However, we plan to implement support for integrating custom agents into the framework in the future.

Installation

Note

These steps are only suitable for a quick evaluation of the framework's capabilities or for developers. For an actual installation guide, please refer to Foojank manual.

Requirements

Compatibility

  • macOS
  • Linux
  • Windows is currently not supported by Devbox. This affects only the client's compatibility, not the agent's.

Build Foojank client:

$ git clone https://github.com/foohq/foojank
$ cd foojank/
$ devbox run build build-foojank-prod

Run Foojank client:

$ ./build/foojank

To set up a testing NATS server, follow the steps outlined in the server README.

Usage

Foojank is controlled using a command-line client.

NAME:
   foojank - Command and control framework

USAGE:
   foojank [global options] [command [command options]]

VERSION:
   0.4.0

COMMANDS:
   account  Manage accounts
   agent    Manage agents
   config   Manage configuration
   job      Manage jobs
   profile  Manage profiles
   storage  Manage storage

GLOBAL OPTIONS:
   --no-color     disable color output (default: false)
   --help, -h     show help
   --version, -v  print the version

License

This software is distributed under the Apache License Version 2.0 found in the LICENSE file.