Carbon

Infrastructure automation for offensive operations. https://analog-substance.github.io/carbon/

Purpose


Carbon’s primary purpose is to provide a consistent execution environment to facilitate offensive security assessments.

It uses:

  • Packer to build images.
  • Terraform to provision infrastructure.
  • Golang project structure.

Features


It is aimed at supporting various services to ensure it can scale with you as your operations become more complex.

FeatureAWS ✅QEMU ✅VirtualBox ✅vSphere ❌Multipass ✅Azure ❌GCP ❌
Image build templates❌ N/A
Build images❌ N/A
Launch one off VM from images
Destroy VMs❌ N/A
VM Start/Stop/SSH/VNC
Infrastructure Creation❌ N/A

❌ = Not Right Now, but planned
✅ = Supported

Install


You can download a prebuilt release from our GitHub Releases page. Or use go install.

go install github.com/analog-substance/carbon@latest

Requirements

Carbon expects the following to be installed and accessible in your $PATH.

  • Packer
  • Terraform
  • SSH Client
  • vncviewer (TigerVNC)

Usage


Manage and use infrastructure with a consistent interface, regardless of where it lives.

Usage:
  carbon [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  config      Display config information
  dev         Unstable sub-commands for testing random ideas
  help        Help about any command
  image       manage images and image builds
  vm          Manage and interact with VMs

Flags:
      --config string         config file (default is $HOME/.carbon.yaml)
  -e, --environment strings   Environment to use. Some providers/profiles support many environments.
  -h, --help                  help for carbon
  -j, --json                  Output in JSON
  -p, --profile strings       Profile to use. Like an instance of a provider. Used to specify aws profiles
  -P, --provider strings      Provider to use vbox, aws
  -v, --version               version for carbon

Use "carbon [command] --help" for more information about a command.

Images


Bootstrap Image Build Configuration

carbon image bootstrap -n my-image -t ubuntu-24.04 -s aws

Build Images

carbon image build -n my-image

Manage Images and Image Builds

List image build configs.

carbon image list -b

Infrastructure


Create New Infrastructure

Modify Infrastructure

Teardown Infrastructure

Operating


Starting

carbon vm start -i i-afde123ae43

Stopping

carbon vm stop -i i-afde123ae43

Connecting to VMs

carbon vm ssh -i i-afde123ae43

Things to do


  • docs
    • vhs example gifs
  • create/destroy one off VMs
  • provision aws env (create files, call terraform)
  • Self Test to ensure dependencies are met
  • Cloud init from templates (Base, Operator, Operator Desktop, Implant VM)
  • vSphere provider
  • DNS management
    • point a domain
    • list domains
  • Jobs / Distributed execution
  • Simple deploy/config of services (Pwndoc, Gophish, modlishka, Guacamole, Sliver, Mythic)
  • GCP Provider
  • Azure Provider
  • LXD Provider
  • Different OS (CentOS, Arch)
  • Chat Bots
    • Slack Bot
    • Discord Bot
  • Web GUI
  • tests (lol, this should not be last)

Carbon CLI

Carbon CLI Reference

Types

Carbon has several types defined for providers to use

Providers

Providers help carbon work with various services.

Models

Individual “objects” to make things easier

Infrastructure as Code

Packer, Cloud Init, Terraform and Ansible.

Last modified October 29, 2024: update (0deef86)