c2

package
v1.31.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2024 License: Apache-2.0 Imports: 8 Imported by: 10

Documentation

Index

Constants

View Source
const (
	InvalidCategory           category = -1
	SimpleShellServerCategory category = 0
	SimpleShellClientCategory category = 1
	SSLShellServerCategory    category = 2
	HTTPServeFileCategory     category = 3
	HTTPServeShellCategory    category = 4
	ExternalCategory          category = 5
	ShellTunnelCategory       category = 6
)

Variables

View Source
var (
	SimpleShellServer = internalSupported["SimpleShellServer"]
	SimpleShellClient = internalSupported["SimpleShellClient"]
	SSLShellServer    = internalSupported["SSLShellServer"]
	HTTPServeFile     = internalSupported["HTTPServeFile"]
	HTTPServeShell    = internalSupported["HTTPServeShell"]
	ShellTunnel       = internalSupported["ShellTunnel"]
)

Simplified names in order to keep the old calling convention and allow for quick references in supported C2 functions.

Functions

func CreateFlags added in v1.0.8

func CreateFlags(implementation Impl)

Call into the c2 impl so that it can create command line flags.

Types

type Impl

type Impl struct {
	Name     string
	Category category
}

Internal representation of a C2 implementation. Each C2 is managed by the framework by the Impl struct type and should be unique.

func AddC2 added in v1.25.0

func AddC2(name string) Impl

Add an external C2 to the supported list. Use this to integrate a new C2 into the framework. This is expected to be called early in the configuration process in order to expose the name of the C2 to the rest of the framework.

func StringToImpl

func StringToImpl(c2Name string) (Impl, bool)

Return the internal representation of a C2 from a string.

type Interface

type Interface interface {
	CreateFlags()
	Init(channel channel.Channel) bool
	Run(timeout int)
}

An interface used by both reverse shells, bind shells, and stagers.

func GetInstance added in v1.0.8

func GetInstance(implementation Impl) (Interface, bool)

Factory pattern for creating c2 interfaces. Note that this is returning an interface, which is a bit anti-Go but it's more or less exactly what we want so.

Directories

Path Synopsis
The channel package is the container for first-party framework C2 structures and variables, it holds the internal settings for multiple types of C2s.
The channel package is the container for first-party framework C2 structures and variables, it holds the internal settings for multiple types of C2s.
The external C2 module extends the C2 functionality and exposes an interface to allow for an exploit to utilize a channel that is defined in an external repository.
The external C2 module extends the C2 functionality and exposes an interface to allow for an exploit to utilize a channel that is defined in an external repository.
httpservefile c2 spawns an HTTP or HTTPS server and hosts arbitrary user-provided files.
httpservefile c2 spawns an HTTP or HTTPS server and hosts arbitrary user-provided files.
httpservershell is (literally) a combination of HTTPServeFile and (SSLShell || SimpleShellServer).
httpservershell is (literally) a combination of HTTPServeFile and (SSLShell || SimpleShellServer).
shelltunnel is a simple C2 that copies shell traffic between a reverse shell origin and a connectback server.
shelltunnel is a simple C2 that copies shell traffic between a reverse shell origin and a connectback server.
sslshell is a simple c2 that listens for incoming ssl/tls connections in order to establish a reverse shell.
sslshell is a simple c2 that listens for incoming ssl/tls connections in order to establish a reverse shell.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL