Documentation ¶
Index ¶
- Constants
- Variables
- func CheckHTTPC2ConfigErrors() error
- func GetDatabaseConfigPath() string
- func GetHTTPC2ConfigPath() string
- func GetServerConfigPath() string
- type DNSJobConfig
- type DaemonConfig
- type DatabaseConfig
- type HTTPC2Config
- type HTTPC2ImplantConfig
- func (h *HTTPC2ImplantConfig) RandomCloseFiles() []string
- func (h *HTTPC2ImplantConfig) RandomClosePaths() []string
- func (h *HTTPC2ImplantConfig) RandomPollFiles() []string
- func (h *HTTPC2ImplantConfig) RandomPollPaths() []string
- func (h *HTTPC2ImplantConfig) RandomSessionFiles() []string
- func (h *HTTPC2ImplantConfig) RandomSessionPaths() []string
- type HTTPC2ServerConfig
- type HTTPJobConfig
- type JobConfig
- type LogConfig
- type MTLSJobConfig
- type MultiplayerJobConfig
- type NameValueProbability
- type ServerConfig
- func (c *ServerConfig) AddDNSJob(config *DNSJobConfig) error
- func (c *ServerConfig) AddHTTPJob(config *HTTPJobConfig) error
- func (c *ServerConfig) AddMTLSJob(config *MTLSJobConfig) error
- func (c *ServerConfig) AddMultiplayerJob(config *MultiplayerJobConfig) error
- func (c *ServerConfig) AddWGJob(config *WGJobConfig) error
- func (c *ServerConfig) RemoveJob(jobID string)
- func (c *ServerConfig) Save() error
- type WGJobConfig
- type WatchTowerConfig
Constants ¶
const ( // Sqlite - SQLite protocol Sqlite = "sqlite3" // Postgres - Postgresql protocol Postgres = "postgresql" // MySQL - MySQL protocol MySQL = "mysql" )
const ( DefaultChromeBaseVer = 100 DefaultMacOSVer = "10_15_7" )
Variables ¶
var ( ErrMissingCookies = errors.New("server config must specify at least one cookie") ErrMissingStagerFileExt = errors.New("implant config must specify a stager_file_ext") ErrMissingPollFileExt = errors.New("implant config must specify a poll_file_ext") ErrTooFewPollFiles = errors.New("implant config must specify at least one poll_files value") ErrMissingKeyExchangeFileExt = errors.New("implant config must specify a key_exchange_file_ext") ErrTooFewKeyExchangeFiles = errors.New("implant config must specify at least one key_exchange_files value") ErrMissingCloseFileExt = errors.New("implant config must specify a close_file_ext") ErrTooFewCloseFiles = errors.New("implant config must specify at least one close_files value") ErrMissingStartSessionFileExt = errors.New("implant config must specify a start_session_file_ext") ErrMissingSessionFileExt = errors.New("implant config must specify a session_file_ext") ErrTooFewSessionFiles = errors.New("implant config must specify at least one session_files value") ErrNonuniqueFileExt = errors.New("implant config must specify unique file extensions") ErrQueryParamNameLen = errors.New("implant config url query parameter names must be 3 or more characters") )
var ( // ErrInvalidDialect - An invalid dialect was specified ErrInvalidDialect = errors.New("invalid SQL Dialect") )
Functions ¶
func CheckHTTPC2ConfigErrors ¶
func CheckHTTPC2ConfigErrors() error
CheckHTTPC2ConfigErrors - Get the current HTTP C2 config
func GetDatabaseConfigPath ¶
func GetDatabaseConfigPath() string
GetDatabaseConfigPath - File path to config.json
func GetHTTPC2ConfigPath ¶
func GetHTTPC2ConfigPath() string
GetHTTPC2ConfigPath - File path to http-c2.json
func GetServerConfigPath ¶
func GetServerConfigPath() string
GetServerConfigPath - File path to config.json
Types ¶
type DNSJobConfig ¶
type DNSJobConfig struct { Domains []string `json:"domains"` Canaries bool `json:"canaries"` Host string `json:"host"` Port uint16 `json:"port"` JobID string `json:"job_id"` EnforceOTP bool `json:"enforce_otp"` }
DNSJobConfig - Persistent DNS job config
type DaemonConfig ¶
DaemonConfig - Configure daemon mode
type DatabaseConfig ¶
type DatabaseConfig struct { Dialect string `json:"dialect"` Database string `json:"database"` Username string `json:"username"` Password string `json:"password"` Host string `json:"host"` Port uint16 `json:"port"` Params map[string]string `json:"params"` MaxIdleConns int `json:"max_idle_conns"` MaxOpenConns int `json:"max_open_conns"` LogLevel string `json:"log_level"` }
DatabaseConfig - Server config
func GetDatabaseConfig ¶
func GetDatabaseConfig() *DatabaseConfig
GetDatabaseConfig - Get config value
func (*DatabaseConfig) DSN ¶
func (c *DatabaseConfig) DSN() (string, error)
DSN - Get the db connections string https://github.com/go-sql-driver/mysql#examples
type HTTPC2Config ¶
type HTTPC2Config struct { ImplantConfig *HTTPC2ImplantConfig `json:"implant_config"` ServerConfig *HTTPC2ServerConfig `json:"server_config"` }
HTTPC2Config - Parent config file struct for implant/server
func GetHTTPC2Config ¶
func GetHTTPC2Config() *HTTPC2Config
GetHTTPC2Config - Get the current HTTP C2 config
func (*HTTPC2Config) ChromeVer ¶
func (h *HTTPC2Config) ChromeVer() string
ChromeVer - Generate a random Chrome user-agent
func (*HTTPC2Config) GenerateUserAgent ¶
func (h *HTTPC2Config) GenerateUserAgent(goos string, goarch string) string
GenerateUserAgent - Generate a user-agent depending on OS/Arch
func (*HTTPC2Config) MacOSVer ¶
func (h *HTTPC2Config) MacOSVer() string
func (*HTTPC2Config) RandomImplantConfig ¶
func (h *HTTPC2Config) RandomImplantConfig() *HTTPC2ImplantConfig
RandomImplantConfig - Randomly generate a config
type HTTPC2ImplantConfig ¶
type HTTPC2ImplantConfig struct { UserAgent string `json:"user_agent"` ChromeBaseVersion int `json:"chrome_base_version"` MacOSVersion string `json:"macos_version"` URLParameters []NameValueProbability `json:"url_parameters"` Headers []NameValueProbability `json:"headers"` MaxFiles int `json:"max_files"` MinFiles int `json:"min_files"` MaxPaths int `json:"max_paths"` MinPaths int `json:"min_paths"` // Stager File Extension StagerFileExt string `json:"stager_file_ext"` // Poll files and paths PollFileExt string `json:"poll_file_ext"` PollFiles []string `json:"poll_files"` PollPaths []string `json:"poll_paths"` // Session files and paths StartSessionFileExt string `json:"start_session_file_ext"` SessionFileExt string `json:"session_file_ext"` SessionFiles []string `json:"session_files"` SessionPaths []string `json:"session_paths"` // Close session files and paths CloseFileExt string `json:"close_file_ext"` CloseFiles []string `json:"close_files"` ClosePaths []string `json:"close_paths"` }
HTTPC2ImplantConfig - Implant configuration options Procedural C2 =============== .txt = rsakey .css = start .php = session
.js = poll
.png = stop .woff = sliver shellcode
func (*HTTPC2ImplantConfig) RandomCloseFiles ¶
func (h *HTTPC2ImplantConfig) RandomCloseFiles() []string
func (*HTTPC2ImplantConfig) RandomClosePaths ¶
func (h *HTTPC2ImplantConfig) RandomClosePaths() []string
func (*HTTPC2ImplantConfig) RandomPollFiles ¶
func (h *HTTPC2ImplantConfig) RandomPollFiles() []string
func (*HTTPC2ImplantConfig) RandomPollPaths ¶
func (h *HTTPC2ImplantConfig) RandomPollPaths() []string
func (*HTTPC2ImplantConfig) RandomSessionFiles ¶
func (h *HTTPC2ImplantConfig) RandomSessionFiles() []string
func (*HTTPC2ImplantConfig) RandomSessionPaths ¶
func (h *HTTPC2ImplantConfig) RandomSessionPaths() []string
type HTTPC2ServerConfig ¶
type HTTPC2ServerConfig struct { RandomVersionHeaders bool `json:"random_version_headers"` Headers []NameValueProbability `json:"headers"` Cookies []string `json:"cookies"` }
HTTPC2ServerConfig - Server configuration options
type HTTPJobConfig ¶
type HTTPJobConfig struct { Domain string `json:"domain"` Host string `json:"host"` Port uint16 `json:"port"` Secure bool `json:"secure"` Website string `json:"website"` Cert []byte `json:"cert"` Key []byte `json:"key"` ACME bool `json:"acme"` JobID string `json:"job_id"` EnforceOTP bool `json:"enforce_otp"` LongPollTimeout int64 `json:"long_poll_timeout"` LongPollJitter int64 `json:"long_poll_jitter"` RandomizeJARM bool `json:"randomize_jarm"` }
HTTPJobConfig - Persistent HTTP job config
type JobConfig ¶
type JobConfig struct { Multiplayer []*MultiplayerJobConfig `json:"multiplayer"` MTLS []*MTLSJobConfig `json:"mtls,omitempty"` WG []*WGJobConfig `json:"wg,omitempty"` DNS []*DNSJobConfig `json:"dns,omitempty"` HTTP []*HTTPJobConfig `json:"http,omitempty"` }
JobConfig - Restart Jobs on Load
type LogConfig ¶
type LogConfig struct { Level int `json:"level"` GRPCUnaryPayloads bool `json:"grpc_unary_payloads"` GRPCStreamPayloads bool `json:"grpc_stream_payloads"` TLSKeyLogger bool `json:"tls_key_logger"` }
LogConfig - Server logging config
type MTLSJobConfig ¶
type MTLSJobConfig struct { Host string `json:"host"` Port uint16 `json:"port"` JobID string `json:"job_id"` }
MTLSJobConfig - Per-type job configs
type MultiplayerJobConfig ¶
type NameValueProbability ¶
type ServerConfig ¶
type ServerConfig struct { DaemonMode bool `json:"daemon_mode"` DaemonConfig *DaemonConfig `json:"daemon"` Logs *LogConfig `json:"logs"` Jobs *JobConfig `json:"jobs,omitempty"` Watchtower *WatchTowerConfig `json:"watch_tower"` GoProxy string `json:"go_proxy"` }
ServerConfig - Server config
func (*ServerConfig) AddDNSJob ¶
func (c *ServerConfig) AddDNSJob(config *DNSJobConfig) error
AddDNSJob - Add a persistent DNS job
func (*ServerConfig) AddHTTPJob ¶
func (c *ServerConfig) AddHTTPJob(config *HTTPJobConfig) error
AddHTTPJob - Add a persistent job
func (*ServerConfig) AddMTLSJob ¶
func (c *ServerConfig) AddMTLSJob(config *MTLSJobConfig) error
AddMTLSJob - Add Job Configs
func (*ServerConfig) AddMultiplayerJob ¶
func (c *ServerConfig) AddMultiplayerJob(config *MultiplayerJobConfig) error
AddMultiplayerJob - Add Job Configs
func (*ServerConfig) AddWGJob ¶
func (c *ServerConfig) AddWGJob(config *WGJobConfig) error
AddWGJob - Add Job Configs
func (*ServerConfig) RemoveJob ¶
func (c *ServerConfig) RemoveJob(jobID string)
RemoveJob - Remove Job by ID
type WGJobConfig ¶
type WGJobConfig struct { Port uint16 `json:"port"` NPort uint16 `json:"nport"` KeyPort uint16 `json:"key_port"` JobID string `json:"job_id"` }
WGJobConfig - Per-type job configs
type WatchTowerConfig ¶
type WatchTowerConfig struct { VTApiKey string `json:"vt_api_key"` XForceApiKey string `json:"xforce_api_key"` XForceApiPassword string `json:"xforce_api_password"` }
WatchTowerConfig - Watch Tower job config