models

package
v1.0.13 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2024 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PENDING   = "pending"
	SENT      = "sent"
	COMPLETED = "completed"
	CANCELED  = "canceled"
)

BeaconTask - Represents a host machine

View Source
const (
	DefaultChromeBaseVer = 106
	DefaultMacOSVer      = "10_15_7"
)

Variables

This section is empty.

Functions

func ChromeVer

func ChromeVer(baseVer int32) string

ChromeVer - Generate a random Chrome user-agent

func GenerateOperatorToken

func GenerateOperatorToken() string

GenerateOperatorToken - Generate a new operator auth token

func GenerateUserAgent

func GenerateUserAgent(goos string, goarch string, userAgent string, baseVer int32, macOsVer string) string

GenerateUserAgent - Generate a user-agent depending on OS/Arch

func IsC2Enabled

func IsC2Enabled(schemes []string, c2s []*clientpb.ImplantC2) bool

func MacOSVer

func MacOSVer(MacOSVersion string) string

func RandomFiles

func RandomFiles(httpC2PathSegments []*clientpb.HTTPC2PathSegment, minFiles int32, maxFiles int32) []*clientpb.HTTPC2PathSegment

func RandomPaths

func RandomPaths(httpC2PathSegments []*clientpb.HTTPC2PathSegment, minPaths int32, maxPaths int32) []*clientpb.HTTPC2PathSegment

func RandomizeImplantConfig

func RandomizeImplantConfig(h *clientpb.HTTPC2ImplantConfig, goos string, goarch string) *clientpb.HTTPC2ImplantConfig

RandomImplantConfig - Randomly generate a new implant config from the parent config, this is the primary configuration used by the implant generation.

Types

type Beacon

type Beacon struct {
	CreatedAt time.Time `gorm:"->;<-:create;"`

	ID                uuid.UUID `gorm:"type:uuid;"`
	Name              string
	Hostname          string
	UUID              uuid.UUID `gorm:"type:uuid;"` // Host UUID
	Username          string
	UID               string
	GID               string
	OS                string
	Arch              string
	Transport         string
	RemoteAddress     string
	PID               int32
	Filename          string
	LastCheckin       time.Time
	Version           string
	ReconnectInterval int64
	ActiveC2          string
	ProxyURL          string
	Locale            string
	Integrity         string

	ImplantBuildID uuid.UUID `gorm:"type:uuid;"`

	Interval    int64
	Jitter      int64
	NextCheckin int64

	Tasks []BeaconTask
}

Beacon - Represents a host machine

func (*Beacon) BeforeCreate

func (b *Beacon) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*Beacon) Task

func (b *Beacon) Task(envelope *sliverpb.Envelope) (*BeaconTask, error)

func (*Beacon) ToProtobuf

func (b *Beacon) ToProtobuf() *clientpb.Beacon

type BeaconTask

type BeaconTask struct {
	ID          uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	EnvelopeID  int64     `gorm:"uniqueIndex"`
	BaconID     uuid.UUID `gorm:"type:uuid;"`
	CreatedAt   time.Time `gorm:"->;<-:create;"`
	State       string
	SentAt      int64
	CompletedAt int64
	Description string
	Request     []byte // *sliverpb.Envelope
	Response    []byte // *sliverpb.Envelope
}

func (*BeaconTask) BeforeCreate

func (b *BeaconTask) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*BeaconTask) ToProtobuf

func (b *BeaconTask) ToProtobuf(content bool) *clientpb.BeaconTask

type Benchmark

type Benchmark struct {
	ID             uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt      time.Time `gorm:"->;<-:create;"`
	CrackstationID uuid.UUID `gorm:"type:uuid;"`
	HashType       int32
	PerSecondRate  uint64
}

Benchmark - Performance information about the crackstation

func (*Benchmark) BeforeCreate

func (b *Benchmark) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type CanaryDomain

type CanaryDomain struct {
	ID              uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ImplantConfigID uuid.UUID
	CreatedAt       time.Time `gorm:"->;<-:create;"`

	Domain string
}

CanaryDomain - Canary domain, belongs to ImplantConfig

func (*CanaryDomain) BeforeCreate

func (c *CanaryDomain) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type Certificate

type Certificate struct {
	ID             uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt      time.Time `gorm:"->;<-:create;"`
	CommonName     string
	CAType         string
	KeyType        string
	CertificatePEM string
	PrivateKeyPEM  string
}

Certificate - Certificate database model

func (*Certificate) BeforeCreate

func (c *Certificate) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook to automatically set values

type CrackCommand

type CrackCommand struct {
	ID          uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt   time.Time `gorm:"->;<-:create;"`
	CrackTaskID uuid.UUID `gorm:"type:uuid;"`

	// FLAGS
	AttackMode             int32
	HashType               int32
	Hashes                 []string `gorm:"type:text"`
	Quiet                  bool
	HexCharset             bool
	HexSalt                bool
	HexWordlist            bool
	Force                  bool
	DeprecatedCheckDisable bool
	Status                 bool
	StatusJSON             bool
	StatusTimer            uint32
	StdinTimeoutAbort      uint32
	MachineReadable        bool
	KeepGuessing           bool
	SelfTestDisable        bool
	Loopback               bool
	// MarkovHcstat2          []byte
	MarkovDisable   bool
	MarkovClassic   bool
	MarkovInverse   bool
	MarkovThreshold uint32
	Runtime         uint32
	Session         string
	Restore         bool
	RestoreDisable  bool
	// RestoreFile            []byte
	// --outfile FILE (28)
	OutfileFormat          []int32 `gorm:"type:integer[]"`
	OutfileAutohexDisable  bool
	OutfileCheckTimer      uint32
	WordlistAutohexDisable bool
	Separator              string
	Stdout                 bool
	Show                   bool
	Left                   bool
	Username               bool
	Remove                 bool
	RemoveTimer            uint32
	PotfileDisable         bool
	// Potfile                []byte
	EncodingFrom int32
	EncodingTo   int32
	DebugMode    uint32
	// --debug-file FILE (45)
	// --induction-dir DIR (46)
	// --outfile-check-dir DIR (47)
	LogfileDisable        bool
	HccapxMessagePair     uint32
	NonceErrorCorrections uint32
	// KeyboardLayoutMapping []byte
	// --truecrypt-keyfiles FILE (52)
	// --veracrypt-keyfiles FILE (53)
	// --veracrypt-pim-start PIM (54)
	// --veracrypt-pim-stop PIM (55)
	Benchmark    bool
	BenchmarkAll bool
	SpeedOnly    bool
	ProgressOnly bool
	SegmentSize  uint32
	BitmapMin    uint32
	BitmapMax    uint32
	CPUAffinity  []uint32 `gorm:"type:integer[]"`
	HookThreads  uint32
	HashInfo     bool
	// --example-hashes (66)
	BackendIgnoreCUDA     bool
	BackendIgnoreHip      bool
	BackendIgnoreMetal    bool
	BackendIgnoreOpenCL   bool
	BackendInfo           bool
	BackendDevices        []uint32 `gorm:"type:integer[]"`
	OpenCLDeviceTypes     []uint32 `gorm:"type:integer[]"`
	OptimizedKernelEnable bool
	MultiplyAccelDisabled bool
	WorkloadProfile       int32
	KernelAccel           uint32
	KernelLoops           uint32
	KernelThreads         uint32
	BackendVectorWidth    uint32
	SpinDamp              uint32
	HwmonDisable          bool
	HwmonTempAbort        uint32
	ScryptTMTO            uint32
	Skip                  uint64
	Limit                 uint64
	Keyspace              bool
	// --rule-left (88)
	// --rule-right (89)
	// RulesFile             []byte
	GenerateRules         uint32
	GenerateRulesFunMin   uint32
	GenerateRulesFunMax   uint32
	GenerateRulesFuncSel  string
	GenerateRulesSeed     int32
	CustomCharset1        string
	CustomCharset2        string
	CustomCharset3        string
	CustomCharset4        string
	Identify              string
	Increment             bool
	IncrementMin          uint32
	IncrementMax          uint32
	SlowCandidates        bool
	BrainServer           bool
	BrainServerTimer      uint32
	BrainClient           bool
	BrainClientFeatures   string
	BrainHost             string
	BrainPort             uint32
	BrainPassword         string
	BrainSession          string
	BrainSessionWhitelist string
}

func (*CrackCommand) BeforeCreate

func (c *CrackCommand) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (CrackCommand) FromProtobuf

func (CrackCommand) FromProtobuf(c *clientpb.CrackCommand) *CrackCommand

func (*CrackCommand) ToProtobuf

func (c *CrackCommand) ToProtobuf() *clientpb.CrackCommand

type CrackFile

type CrackFile struct {
	ID               uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt        time.Time `gorm:"->;<-:create;"`
	LastModified     time.Time
	Name             string
	UncompressedSize int64
	Sha2_256         string
	Type             int32
	IsCompressed     bool
	IsComplete       bool

	Chunks []CrackFileChunk
}

CrackFile - Performance information about the crackstation

func (*CrackFile) BeforeCreate

func (c *CrackFile) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*CrackFile) MaxN

func (c *CrackFile) MaxN(chunkSize int64) uint32

func (*CrackFile) ToProtobuf

func (c *CrackFile) ToProtobuf() *clientpb.CrackFile

type CrackFileChunk

type CrackFileChunk struct {
	ID          uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CrackFileID uuid.UUID `gorm:"type:uuid;"`
	N           uint32
}

CrackFileChunk - Performance information about the crackstation

func (*CrackFileChunk) BeforeCreate

func (c *CrackFileChunk) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*CrackFileChunk) ToProtobuf

func (c *CrackFileChunk) ToProtobuf() *clientpb.CrackFileChunk

type CrackJob

type CrackJob struct {
	ID          uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt   time.Time `gorm:"->;<-:create;"`
	CompletedAt time.Time
	Tasks       []CrackTask

	Command CrackCommand // Parent command
}

CrackJob - A crack job is a collection of one or more crack tasks, the crack job contains the parent command, whose keyspace may get broken up into multiple crack tasks and distributed to multiple crackstations

func (*CrackJob) Status

func (c *CrackJob) Status() clientpb.CrackJobStatus

type CrackTask

type CrackTask struct {
	ID             uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CrackstationID uuid.UUID `gorm:"type:uuid;"`
	CreatedAt      time.Time `gorm:"->;<-:create;"`
	StartedAt      time.Time
	CompletedAt    time.Time

	Command CrackCommand
}

CrackTask - An individual chunk of a job sent to a specific crackstation

func (*CrackTask) BeforeCreate

func (c *CrackTask) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (CrackTask) FromProtobuf

func (CrackTask) FromProtobuf(c *clientpb.CrackTask) *CrackTask

func (*CrackTask) ToProtobuf

func (c *CrackTask) ToProtobuf() *clientpb.CrackTask

type Crackstation

type Crackstation struct {
	// ID = crackstation name
	ID         uuid.UUID `gorm:"primaryKey;type:uuid;"`
	CreatedAt  time.Time `gorm:"->;<-:create;"`
	Tasks      []CrackTask
	Benchmarks []Benchmark
}

Crackstation - History of crackstation jobs

func (*Crackstation) BeforeCreate

func (c *Crackstation) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type Credential

type Credential struct {
	ID             uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt      time.Time `gorm:"->;<-:create;"`
	OriginHostUUID uuid.UUID `gorm:"type:uuid;"`

	Collection string
	Username   string
	Plaintext  string
	Hash       string // https://hashcat.net/wiki/doku.php?id=example_hashes
	HashType   int32
	IsCracked  bool
}

Credential - Represents a piece of loot

func (*Credential) BeforeCreate

func (c *Credential) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*Credential) ToProtobuf

func (c *Credential) ToProtobuf() *clientpb.Credential

type DNSCanary

type DNSCanary struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	ImplantName   string
	Domain        string
	Triggered     bool
	FirstTrigger  time.Time
	LatestTrigger time.Time
	Count         uint32
}

DNSCanary - Colletions of content to serve from HTTP(S)

func DNSCanaryFromProtobuf

func DNSCanaryFromProtobuf(m *clientpb.DNSCanary) DNSCanary

convert from protobuf

func (*DNSCanary) BeforeCreate

func (c *DNSCanary) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*DNSCanary) ToProtobuf

func (c *DNSCanary) ToProtobuf() *clientpb.DNSCanary

ToProtobuf - Converts to protobuf object

type DNSListener

type DNSListener struct {
	ID            uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ListenerJobID uuid.UUID `gorm:"type:uuid;"`

	Domains    []DnsDomain
	Canaries   bool
	Host       string
	Port       uint32
	EnforceOtp bool
}

func (*DNSListener) BeforeCreate

func (j *DNSListener) BeforeCreate(tx *gorm.DB) (err error)

func (*DNSListener) ToProtobuf

func (j *DNSListener) ToProtobuf() *clientpb.DNSListenerReq

type DnsDomain

type DnsDomain struct {
	ID            uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	DNSListenerID uuid.UUID `gorm:"type:uuid;"`
	Domain        string
}

type EncoderAsset

type EncoderAsset struct {
	ID              uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ImplantConfigID uuid.UUID

	Name string
}

EncoderAsset - Tracks which assets were embedded into the implant but we currently don't keep a copy of the actual data

func (*EncoderAsset) ToProtobuf

func (t *EncoderAsset) ToProtobuf() *commonpb.File

type ExtensionData

type ExtensionData struct {
	gorm.Model

	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HostID    uuid.UUID `gorm:"type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Name   string
	Output string
}

ExtensionData - Represents an indicator of compromise, generally a file we've uploaded to a remote system.

func (*ExtensionData) BeforeCreate

func (e *ExtensionData) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type HTTPListener

type HTTPListener struct {
	ID            uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ListenerJobID uuid.UUID `gorm:"type:uuid;"`

	Domain          string
	Host            string
	Port            uint32
	Secure          bool
	Website         string
	Cert            []byte
	Key             []byte
	Acme            bool
	EnforceOtp      bool
	LongPollTimeout int64
	LongPollJitter  int64
	RandomizeJarm   bool
	Staging         bool
}

func (*HTTPListener) BeforeCreate

func (j *HTTPListener) BeforeCreate(tx *gorm.DB) (err error)

func (*HTTPListener) ToProtobuf

func (j *HTTPListener) ToProtobuf() *clientpb.HTTPListenerReq

type Host

type Host struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HostUUID  uuid.UUID `gorm:"type:uuid;unique"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Hostname  string
	OSVersion string // Verbose OS version
	Locale    string // Detected language code

	IOCs          []IOC           `gorm:"foreignKey:HostID;references:HostUUID"`
	ExtensionData []ExtensionData `gorm:"foreignKey:HostID;references:HostUUID"`
}

Host - Represents a host machine

func (*Host) BeforeCreate

func (h *Host) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*Host) ToProtobuf

func (h *Host) ToProtobuf() *clientpb.Host

type HttpC2Config

type HttpC2Config struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Name string `gorm:"unique;"`

	ServerConfig  HttpC2ServerConfig
	ImplantConfig HttpC2ImplantConfig
}

HttpC2Config -

func HTTPC2ConfigFromProtobuf

func HTTPC2ConfigFromProtobuf(pbHttpC2Config *clientpb.HTTPC2Config) *HttpC2Config

HTTPC2ConfigFromProtobuf - Create a native config struct from Protobuf

func (*HttpC2Config) BeforeCreate

func (h *HttpC2Config) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2Config) GenerateImplantHTTPC2Config

func (h *HttpC2Config) GenerateImplantHTTPC2Config() *clientpb.HTTPC2ImplantConfig

func (*HttpC2Config) ToProtobuf

func (h *HttpC2Config) ToProtobuf() *clientpb.HTTPC2Config

type HttpC2Cookie

type HttpC2Cookie struct {
	ID                   uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HttpC2ServerConfigID uuid.UUID `gorm:"type:uuid;"`

	Name string
}

HttpC2Cookie - HTTP C2 Cookie (server only)

func (*HttpC2Cookie) BeforeCreate

func (h *HttpC2Cookie) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2Cookie) ToProtobuf

func (h *HttpC2Cookie) ToProtobuf() *clientpb.HTTPC2Cookie

type HttpC2Header

type HttpC2Header struct {
	ID                    uuid.UUID  `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HttpC2ServerConfigID  *uuid.UUID `gorm:"type:uuid;"`
	HttpC2ImplantConfigID *uuid.UUID `gorm:"type:uuid;"`

	Method      string
	Name        string
	Value       string
	Probability int32
}

HttpC2Header - HTTP C2 Header (server and implant)

func (*HttpC2Header) BeforeCreate

func (h *HttpC2Header) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2Header) ToProtobuf

func (h *HttpC2Header) ToProtobuf() *clientpb.HTTPC2Header

type HttpC2ImplantConfig

type HttpC2ImplantConfig struct {
	ID             uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HttpC2ConfigID uuid.UUID `gorm:"type:uuid;"`

	UserAgent          string
	ChromeBaseVersion  int32
	MacOSVersion       string
	NonceQueryArgChars string
	ExtraURLParameters []HttpC2URLParameter
	Headers            []HttpC2Header

	MaxFiles int32
	MinFiles int32
	MaxPaths int32
	MinPaths int32

	StagerFileExtension       string
	PollFileExtension         string
	StartSessionFileExtension string
	SessionFileExtension      string
	CloseFileExtension        string

	PathSegments []HttpC2PathSegment
}

HttpC2ImplantConfig - HTTP C2 Implant Configuration

func (*HttpC2ImplantConfig) BeforeCreate

func (h *HttpC2ImplantConfig) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2ImplantConfig) ToProtobuf

type HttpC2PathSegment

type HttpC2PathSegment struct {
	ID                    uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HttpC2ImplantConfigID uuid.UUID `gorm:"type:uuid;"`

	IsFile      bool
	SegmentType int32 // Poll, Session, Close
	Value       string
}

HttpC2PathSegment - Represents a list of file/path URL segments (implant only)

func (*HttpC2PathSegment) BeforeCreate

func (h *HttpC2PathSegment) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2PathSegment) ToProtobuf

func (h *HttpC2PathSegment) ToProtobuf() *clientpb.HTTPC2PathSegment

type HttpC2ServerConfig

type HttpC2ServerConfig struct {
	ID             uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HttpC2ConfigID uuid.UUID `gorm:"type:uuid;"`

	RandomVersionHeaders bool
	Headers              []HttpC2Header
	Cookies              []HttpC2Cookie
}

HttpC2ServerConfig - HTTP C2 Server Configuration

func (*HttpC2ServerConfig) BeforeCreate

func (h *HttpC2ServerConfig) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2ServerConfig) ToProtobuf

type HttpC2URLParameter

type HttpC2URLParameter struct {
	ID                    uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HttpC2ImplantConfigID uuid.UUID `gorm:"type:uuid;"`

	Method      string // HTTP Method
	Name        string // Name of URL parameter, must be 3+ characters
	Value       string // Value of the URL parameter
	Probability int32  // 0 - 100
}

HttpC2URLParameter - Extra URL parameters (implant only)

func (*HttpC2URLParameter) BeforeCreate

func (h *HttpC2URLParameter) BeforeCreate(tx *gorm.DB) (err error)

func (*HttpC2URLParameter) ToProtobuf

type IOC

type IOC struct {
	gorm.Model

	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	HostID    uuid.UUID `gorm:"type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Path     string
	FileHash string
}

IOC - Represents an indicator of compromise, generally a file we've uploaded to a remote system.

func (*IOC) BeforeCreate

func (i *IOC) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*IOC) ToProtobuf

func (i *IOC) ToProtobuf() *clientpb.IOC

type ImplantBuild

type ImplantBuild struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Name string `gorm:"unique;"`

	// Checksums stores of the implant binary
	MD5    string
	SHA1   string
	SHA256 string

	// Burned indicates whether the implant
	// has been seen on threat intel platforms
	Burned bool

	// Resource ID referencing build
	ImplantID uint64

	ImplantConfigID uuid.UUID

	// ECC
	PeerPublicKey           string
	PeerPublicKeyDigest     string
	PeerPrivateKey          string
	PeerPublicKeySignature  string
	AgeServerPublicKey      string
	MinisignServerPublicKey string

	// MTLS
	MtlsCACert string
	MtlsCert   string
	MtlsKey    string

	// WireGuard
	WGImplantPrivKey string
	WGServerPubKey   string

	Stage bool
}

ImplantBuild - Represents an implant

func ImplantBuildFromProtobuf

func ImplantBuildFromProtobuf(ib *clientpb.ImplantBuild) *ImplantBuild

func (*ImplantBuild) BeforeCreate

func (ib *ImplantBuild) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*ImplantBuild) ToProtobuf

func (ib *ImplantBuild) ToProtobuf() *clientpb.ImplantBuild

Convert ImplantBuild To Protobuf

type ImplantC2

type ImplantC2 struct {
	ID              uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ImplantConfigID uuid.UUID
	CreatedAt       time.Time `gorm:"->;<-:create;"`

	Priority uint32
	URL      string
	Options  string
}

ImplantC2 - C2 struct

func (*ImplantC2) BeforeCreate

func (c2 *ImplantC2) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*ImplantC2) String

func (c2 *ImplantC2) String() string

func (*ImplantC2) ToProtobuf

func (c2 *ImplantC2) ToProtobuf() *clientpb.ImplantC2

ToProtobuf - Convert to protobuf version

type ImplantConfig

type ImplantConfig struct {
	ID               uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ImplantProfileID *uuid.UUID

	ImplantBuilds []ImplantBuild
	CreatedAt     time.Time `gorm:"->;<-:create;"`

	// Go
	GOOS   string
	GOARCH string

	TemplateName string

	IsBeacon      bool
	BaconInterval int64
	BaconJitter   int64

	Debug               bool
	DebugFile           string
	Evasion             bool
	ObfuscateSymbols    bool
	ReconnectInterval   int64
	PollTimeout         int64
	MaxConnectionErrors uint32
	ConnectionStrategy  string
	SGNEnabled          bool

	// WireGuard
	WGPeerTunIP       string
	WGKeyExchangePort uint32
	WGTcpCommsPort    uint32

	C2 []ImplantC2

	IncludeMTLS bool
	IncludeWG   bool
	IncludeHTTP bool
	IncludeDNS  bool

	CanaryDomains   []CanaryDomain
	IncludeNamePipe bool
	IncludeTCP      bool

	// Limits
	LimitDomainJoined bool
	LimitHostname     string
	LimitUsername     string
	LimitDatetime     string
	LimitFileExists   string
	LimitLocale       string

	// Output Format
	Format clientpb.OutputFormat

	// For 	IsSharedLib bool
	IsSharedLib bool
	IsService   bool
	IsShellcode bool

	RunAtLoad bool

	HttpC2ConfigName       string
	NetGoEnabled           bool
	TrafficEncodersEnabled bool
	Assets                 []EncoderAsset
}

ImplantConfig - An implant build configuration

func ImplantConfigFromProtobuf

func ImplantConfigFromProtobuf(pbConfig *clientpb.ImplantConfig) *ImplantConfig

ImplantConfigFromProtobuf - Create a native config struct from Protobuf

func (*ImplantConfig) BeforeCreate

func (ic *ImplantConfig) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*ImplantConfig) CanaryDomainsList

func (ic *ImplantConfig) CanaryDomainsList() []string

CanaryDomainsList - Get string slice of canary domains

func (*ImplantConfig) ToProtobuf

func (ic *ImplantConfig) ToProtobuf() *clientpb.ImplantConfig

ToProtobuf - Convert ImplantConfig to protobuf equiv

type ImplantProfile

type ImplantProfile struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Name          string `gorm:"unique;"`
	ImplantConfig *ImplantConfig
}

ImplantProfile - An implant build configuration

func ImplantProfileFromProtobuf

func ImplantProfileFromProtobuf(pbProfile *clientpb.ImplantProfile) *ImplantProfile

ImplantProfileFromProtobuf - Create a native profile struct from Protobuf

func (*ImplantProfile) BeforeCreate

func (ip *ImplantProfile) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*ImplantProfile) ToProtobuf

func (ip *ImplantProfile) ToProtobuf() *clientpb.ImplantProfile

ToProtobuf - Convert ImplantProfile to protobuf equiv

type KeyExHistory

type KeyExHistory struct {
	Sha256    string    `gorm:"primaryKey;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`
}

KeyExHistory - Represents an implant

func (*KeyExHistory) BeforeCreate

func (k *KeyExHistory) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type KeyValue

type KeyValue struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Key   string `gorm:"unique;"`
	Value string
}

KeyValue - Represents an implant

func (*KeyValue) BeforeCreate

func (k *KeyValue) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type ListenerJob

type ListenerJob struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	JobID               uint32 `gorm:"unique;"`
	Type                string
	HttpListener        HTTPListener
	MtlsListener        MtlsListener
	DnsListener         DNSListener
	WgListener          WGListener
	MultiplayerListener MultiplayerListener
}

func ListenerJobFromProtobuf

func ListenerJobFromProtobuf(pbListenerJob *clientpb.ListenerJob) *ListenerJob

to model

func (*ListenerJob) BeforeCreate

func (j *ListenerJob) BeforeCreate(tx *gorm.DB) (err error)

orm hooks

func (*ListenerJob) ToProtobuf

func (j *ListenerJob) ToProtobuf() *clientpb.ListenerJob

To Protobuf

type Loot

type Loot struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	FileType int
	Name     string
	Size     int64

	OriginHostID uuid.UUID `gorm:"type:uuid;"`
}

Loot - Represents a piece of loot

func (*Loot) BeforeCreate

func (l *Loot) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*Loot) ToProtobuf

func (l *Loot) ToProtobuf() *clientpb.Loot

type MonitoringProvider

type MonitoringProvider struct {
	ID          uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	Type        string    // currently vt or xforce
	APIKey      string
	APIPassword string
}

func MonitorFromProtobuf

func MonitorFromProtobuf(m *clientpb.MonitoringProvider) MonitoringProvider

convert from protobuf

func (*MonitoringProvider) BeforeCreate

func (m *MonitoringProvider) BeforeCreate(tx *gorm.DB) (err error)

func (*MonitoringProvider) ToProtobuf

convert to protobuf

type MtlsListener

type MtlsListener struct {
	ID            uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ListenerJobID uuid.UUID `gorm:"type:uuid;"`
	Host          string
	Port          uint32
}

func (*MtlsListener) BeforeCreate

func (j *MtlsListener) BeforeCreate(tx *gorm.DB) (err error)

func (*MtlsListener) ToProtobuf

func (j *MtlsListener) ToProtobuf() *clientpb.MTLSListenerReq

type MultiplayerListener

type MultiplayerListener struct {
	ID            uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ListenerJobID uuid.UUID `gorm:"type:uuid;"`
	Host          string
	Port          uint32
}

func (*MultiplayerListener) ToProtobuf

type Operator

type Operator struct {
	ID                     uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt              time.Time `gorm:"->;<-:create;"`
	Name                   string
	Token                  string `gorm:"uniqueIndex"`   // NOTE: This is the SHA256 of the token
	PermissionAll          bool   `gorm:"default:false"` // Access all gRPC APIs
	PermissionBuilder      bool   `gorm:"default:false"` // Access Builder gRPC APIs
	PermissionCrackstation bool   `gorm:"default:false"` // Access Crackstation gRPC APIs
}

Operator - Collections of content to serve from HTTP(S)

func (*Operator) BeforeCreate

func (o *Operator) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

type ResourceID

type ResourceID struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Type  string // encoder or stager
	Name  string
	Value uint64 // prime number used to reference resource in requests
}

Host - Represents a host machine

func (*ResourceID) BeforeCreate

func (h *ResourceID) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*ResourceID) ToProtobuf

func (rid *ResourceID) ToProtobuf() *clientpb.ResourceID

ToProtobuf - Converts to protobuf object

type WGKeys

type WGKeys struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`
	PrivKey   string
	PubKey    string
}

WGKeys - WGKeys database model

func (*WGKeys) BeforeCreate

func (c *WGKeys) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook to automatically set values

type WGListener

type WGListener struct {
	ID            uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	ListenerJobID uuid.UUID `gorm:"type:uuid;"`
	Host          string
	Port          uint32
	NPort         uint32
	KeyPort       uint32
	TunIP         string
}

func (*WGListener) BeforeCreate

func (j *WGListener) BeforeCreate(tx *gorm.DB) (err error)

func (*WGListener) ToProtobuf

func (j *WGListener) ToProtobuf() *clientpb.WGListenerReq

type WGPeer

type WGPeer struct {
	// gorm.Model
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`
	PrivKey   string
	PubKey    string
	TunIP     string
}

WGPeer- WGPeer database model

func (*WGPeer) BeforeCreate

func (c *WGPeer) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook to automatically set values

type WebContent

type WebContent struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	WebsiteID uuid.UUID `gorm:"type:uuid;"`

	Path        string `gorm:"primaryKey"`
	Size        uint64
	ContentType string
}

WebContent - One piece of content mapped to a path

func WebContentFromProtobuf

func WebContentFromProtobuf(pbWebContent *clientpb.WebContent) WebContent

func (*WebContent) BeforeCreate

func (wc *WebContent) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook to automatically set values

func (*WebContent) ToProtobuf

func (wc *WebContent) ToProtobuf(content *[]byte) *clientpb.WebContent

ToProtobuf - Converts to protobuf object

type Website

type Website struct {
	ID        uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
	CreatedAt time.Time `gorm:"->;<-:create;"`

	Name string `gorm:"unique;"` // Website Name

	WebContents []WebContent
}

Website - Colletions of content to serve from HTTP(S)

func (*Website) BeforeCreate

func (w *Website) BeforeCreate(tx *gorm.DB) (err error)

BeforeCreate - GORM hook

func (*Website) ToProtobuf

func (w *Website) ToProtobuf(webContentDir string) *clientpb.Website

ToProtobuf - Converts to protobuf object

Jump to

Keyboard shortcuts

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