rpc

package
v1.4.16 Latest Latest
Warning

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

Go to latest
Published: Jun 18, 2021 License: GPL-3.0 Imports: 41 Imported by: 3

README

RPC

This package contains the RPC APIs. The RPC APIs are responsible for the majority of the server-side logic and are invoked either locally by the server console or remotely via a client binary connected via the transport package.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrInvalidSessionID - Invalid Session ID in request
	ErrInvalidSessionID = errors.New("Invalid session ID")
	// ErrMissingRequestField - Returned when a request does not contain a commonpb.Request
	ErrMissingRequestField = errors.New("Missing session request field")
)
View Source
var (
	ErrInvalidName = errors.New("Invalid session name, alphanumerics only")
)
View Source
var (
	// ErrInvalidPort - Invalid TCP port number
	ErrInvalidPort = errors.New("Invalid listener port")
)
View Source
var (
	// ErrTunnelInitFailure - Returned when a tunnel cannot be initialized
	ErrTunnelInitFailure = errors.New("Failed to initialize tunnel")
)

Functions

This section is empty.

Types

type ExportDirectory

type ExportDirectory struct {
	Characteristics       uint32
	TimeDateStamp         uint32
	MajorVersion          uint16
	MinorVersion          uint16
	Name                  uint32
	Base                  uint32
	NumberOfFunctions     uint32
	NumberOfNames         uint32
	AddressOfFunctions    uint32 // RVA from base of image
	AddressOfNames        uint32 // RVA from base of image
	AddressOfNameOrdinals uint32 // RVA from base of image
}

ExportDirectory - stores the Export data

type GenericRequest

type GenericRequest interface {
	Reset()
	String() string
	ProtoMessage()

	GetRequest() *commonpb.Request
}

GenericRequest - Generic request interface to use with generic handlers

type GenericResponse

type GenericResponse interface {
	GetResponse() *commonpb.Response
}

GenericResponse - Generic response interface to use with generic handlers

type Server

type Server struct {
	// Magical methods to break backwards compatibility
	// Here be dragons: https://github.com/grpc/grpc-go/issues/3794
	rpcpb.UnimplementedSliverRPCServer
}

Server - gRPC server

func NewServer

func NewServer() *Server

NewServer - Create new server instance

func (*Server) Backdoor

func (rpc *Server) Backdoor(ctx context.Context, req *sliverpb.BackdoorReq) (*sliverpb.Backdoor, error)

Backdoor - Inject a sliver payload in a file on the remote system

func (*Server) Canaries

func (rpc *Server) Canaries(ctx context.Context, _ *commonpb.Empty) (*clientpb.Canaries, error)

Canaries - List existing canaries

func (*Server) Cd

func (rpc *Server) Cd(ctx context.Context, req *sliverpb.CdReq) (*sliverpb.Pwd, error)

Cd - Change directory

func (*Server) CloseTunnel

func (s *Server) CloseTunnel(ctx context.Context, req *sliverpb.Tunnel) (*commonpb.Empty, error)

CloseTunnel - Client requests we close a tunnel

func (*Server) CreateTunnel

func (s *Server) CreateTunnel(ctx context.Context, req *sliverpb.Tunnel) (*sliverpb.Tunnel, error)

CreateTunnel - Create a new tunnel on the server, however based on only this request there's

no way to associate the tunnel with the correct client, so the client must send
a zero-byte message over TunnelData to bind itself to the newly created tunnel.

func (*Server) DeleteImplantBuild added in v1.2.0

func (rpc *Server) DeleteImplantBuild(ctx context.Context, req *clientpb.DeleteReq) (*commonpb.Empty, error)

DeleteImplantBuild - Delete an implant build

func (*Server) DeleteImplantProfile added in v1.2.0

func (rpc *Server) DeleteImplantProfile(ctx context.Context, req *clientpb.DeleteReq) (*commonpb.Empty, error)

DeleteImplantProfile - Delete an implant profile

func (*Server) Download

func (rpc *Server) Download(ctx context.Context, req *sliverpb.DownloadReq) (*sliverpb.Download, error)

Download - Download a file from the remote file system

func (*Server) Events

func (s *Server) Events(_ *commonpb.Empty, stream rpcpb.SliverRPC_EventsServer) error

Events - Stream events to client

func (*Server) Execute

func (rpc *Server) Execute(ctx context.Context, req *sliverpb.ExecuteReq) (*sliverpb.Execute, error)

Execute - Execute a remote process

func (*Server) ExecuteAssembly

func (rpc *Server) ExecuteAssembly(ctx context.Context, req *sliverpb.ExecuteAssemblyReq) (*sliverpb.ExecuteAssembly, error)

ExecuteAssembly - Execute a .NET assembly on the remote system in-memory (Windows only)

func (*Server) ExecuteToken added in v1.3.0

func (rpc *Server) ExecuteToken(ctx context.Context, req *sliverpb.ExecuteTokenReq) (*sliverpb.Execute, error)

ExecuteToken - Execute a remote process with token (windows only)

func (*Server) Generate

func (rpc *Server) Generate(ctx context.Context, req *clientpb.GenerateReq) (*clientpb.Generate, error)

Generate - Generate a new implant

func (*Server) GenerateUniqueIP added in v1.4.9

func (rpc *Server) GenerateUniqueIP(ctx context.Context, _ *commonpb.Empty) (*clientpb.UniqueWGIP, error)

GenerateUniqueIP - Wrapper around generate.GenerateUniqueIP

func (*Server) GenerateWGClientConfig added in v1.4.11

func (rpc *Server) GenerateWGClientConfig(ctx context.Context, _ *commonpb.Empty) (*clientpb.WGClientConfig, error)

func (*Server) GenericHandler

func (rpc *Server) GenericHandler(req GenericRequest, resp proto.Message) error

GenericHandler - Pass the request to the Sliver/Session

func (*Server) GetEnv

func (rpc *Server) GetEnv(ctx context.Context, req *sliverpb.EnvReq) (*sliverpb.EnvInfo, error)

GetEnv - Retrieve the environment variables list from the current session

func (*Server) GetJobs

func (rpc *Server) GetJobs(ctx context.Context, _ *commonpb.Empty) (*clientpb.Jobs, error)

GetJobs - List jobs

func (*Server) GetOperators

func (s *Server) GetOperators(ctx context.Context, _ *commonpb.Empty) (*clientpb.Operators, error)

GetOperators - Get a list of operators

func (*Server) GetSessions

func (rpc *Server) GetSessions(ctx context.Context, _ *commonpb.Empty) (*clientpb.Sessions, error)

GetSessions - Get a list of sessions

func (*Server) GetSystem

func (rpc *Server) GetSystem(ctx context.Context, req *clientpb.GetSystemReq) (*sliverpb.GetSystem, error)

GetSystem - Attempt to get 'NT AUTHORITY/SYSTEM' access on a remote Windows system

func (*Server) GetVersion

func (rpc *Server) GetVersion(ctx context.Context, _ *commonpb.Empty) (*clientpb.Version, error)

GetVersion - Get the server version

func (*Server) Ifconfig

func (rpc *Server) Ifconfig(ctx context.Context, req *sliverpb.IfconfigReq) (*sliverpb.Ifconfig, error)

Ifconfig - Get remote interface configurations

func (*Server) Impersonate

func (rpc *Server) Impersonate(ctx context.Context, req *sliverpb.ImpersonateReq) (*sliverpb.Impersonate, error)

Impersonate - Impersonate a remote user

func (*Server) ImplantBuilds

func (rpc *Server) ImplantBuilds(ctx context.Context, _ *commonpb.Empty) (*clientpb.ImplantBuilds, error)

ImplantBuilds - List existing implant builds

func (*Server) ImplantProfiles

func (rpc *Server) ImplantProfiles(ctx context.Context, _ *commonpb.Empty) (*clientpb.ImplantProfiles, error)

ImplantProfiles - List profiles

func (*Server) KillJob

func (rpc *Server) KillJob(ctx context.Context, kill *clientpb.KillJobReq) (*clientpb.KillJob, error)

KillJob - Kill a server-side job

func (*Server) KillSession

func (rpc *Server) KillSession(ctx context.Context, kill *sliverpb.KillSessionReq) (*commonpb.Empty, error)

KillSession - Kill a session

func (*Server) ListPivots added in v1.4.9

func (rpc *Server) ListPivots(ctx context.Context, req *sliverpb.PivotListReq) (*sliverpb.PivotList, error)

func (*Server) Ls

func (rpc *Server) Ls(ctx context.Context, req *sliverpb.LsReq) (*sliverpb.Ls, error)

Ls - List a directory

func (*Server) MakeToken

func (rpc *Server) MakeToken(ctx context.Context, req *sliverpb.MakeTokenReq) (*sliverpb.MakeToken, error)

MakeToken - Creates a new logon session to impersonate a user based on its credentials.

func (*Server) Migrate

func (rpc *Server) Migrate(ctx context.Context, req *clientpb.MigrateReq) (*sliverpb.Migrate, error)

Migrate - Migrate to a new process on the remote system (Windows only)

func (*Server) Mkdir

func (rpc *Server) Mkdir(ctx context.Context, req *sliverpb.MkdirReq) (*sliverpb.Mkdir, error)

Mkdir - Make a directory

func (*Server) Msf

func (rpc *Server) Msf(ctx context.Context, req *clientpb.MSFReq) (*commonpb.Empty, error)

Msf - Helper function to execute MSF payloads on the remote system

func (*Server) MsfRemote

func (rpc *Server) MsfRemote(ctx context.Context, req *clientpb.MSFRemoteReq) (*commonpb.Empty, error)

MsfRemote - Inject an MSF payload into a remote process

func (*Server) MsfStage

func (rpc *Server) MsfStage(ctx context.Context, req *clientpb.MsfStagerReq) (*clientpb.MsfStager, error)

MsfStage - Generate a MSF compatible stage

func (*Server) NamedPipes

func (rpc *Server) NamedPipes(ctx context.Context, req *sliverpb.NamedPipesReq) (*sliverpb.NamedPipes, error)

func (*Server) Netstat

func (rpc *Server) Netstat(ctx context.Context, req *sliverpb.NetstatReq) (*sliverpb.Netstat, error)

Netstat - List network connections on the remote system

func (*Server) Ping

func (rpc *Server) Ping(ctx context.Context, req *sliverpb.Ping) (*sliverpb.Ping, error)

Ping - Try to send a round trip message to the implant

func (*Server) Portfwd added in v1.4.12

func (s *Server) Portfwd(ctx context.Context, req *sliverpb.PortfwdReq) (*sliverpb.Portfwd, error)

Portfwd - Open an in-band port forward

func (*Server) ProcessDump

func (rpc *Server) ProcessDump(ctx context.Context, req *sliverpb.ProcessDumpReq) (*sliverpb.ProcessDump, error)

ProcessDump - Dump the memory of a remote process

func (*Server) Ps

func (rpc *Server) Ps(ctx context.Context, req *sliverpb.PsReq) (*sliverpb.Ps, error)

Ps - List the processes on the remote machine

func (*Server) Pwd

func (rpc *Server) Pwd(ctx context.Context, req *sliverpb.PwdReq) (*sliverpb.Pwd, error)

Pwd - Change directory

func (*Server) Regenerate

func (rpc *Server) Regenerate(ctx context.Context, req *clientpb.RegenerateReq) (*clientpb.Generate, error)

Regenerate - Regenerate a previously generated implant

func (*Server) RegistryCreateKey added in v1.4.4

func (rpc *Server) RegistryCreateKey(ctx context.Context, req *sliverpb.RegistryCreateKeyReq) (*sliverpb.RegistryCreateKey, error)

func (*Server) RegistryRead added in v1.4.4

func (rpc *Server) RegistryRead(ctx context.Context, req *sliverpb.RegistryReadReq) (*sliverpb.RegistryRead, error)

func (*Server) RegistryWrite added in v1.4.4

func (rpc *Server) RegistryWrite(ctx context.Context, req *sliverpb.RegistryWriteReq) (*sliverpb.RegistryWrite, error)

func (*Server) RemoveService

func (rpc *Server) RemoveService(ctx context.Context, req *sliverpb.RemoveServiceReq) (*sliverpb.ServiceInfo, error)

RemoveService deletes a service from the remote system

func (*Server) RevToSelf

func (rpc *Server) RevToSelf(ctx context.Context, req *sliverpb.RevToSelfReq) (*sliverpb.RevToSelf, error)

RevToSelf - Revert process context to self

func (*Server) Rm

func (rpc *Server) Rm(ctx context.Context, req *sliverpb.RmReq) (*sliverpb.Rm, error)

Rm - Remove file or directory

func (*Server) RunAs

func (rpc *Server) RunAs(ctx context.Context, req *sliverpb.RunAsReq) (*sliverpb.RunAs, error)

RunAs - Run a remote process as a specific user

func (*Server) SaveImplantProfile

func (rpc *Server) SaveImplantProfile(ctx context.Context, profile *clientpb.ImplantProfile) (*clientpb.ImplantProfile, error)

SaveImplantProfile - Save a new profile

func (*Server) Screenshot

func (rpc *Server) Screenshot(ctx context.Context, req *sliverpb.ScreenshotReq) (*sliverpb.Screenshot, error)

Screenshot - Take a screenshot of the remote system

func (*Server) SetEnv added in v1.4.2

func (rpc *Server) SetEnv(ctx context.Context, req *sliverpb.SetEnvReq) (*sliverpb.SetEnv, error)

SetEnv - Set an environment variable

func (*Server) Shell

func (s *Server) Shell(ctx context.Context, req *sliverpb.ShellReq) (*sliverpb.Shell, error)

Shell - Open an interactive shell

func (*Server) ShellcodeRDI

func (rpc *Server) ShellcodeRDI(ctx context.Context, req *clientpb.ShellcodeRDIReq) (*clientpb.ShellcodeRDI, error)

ShellcodeRDI - Generates a RDI shellcode from a given DLL

func (*Server) Sideload

func (rpc *Server) Sideload(ctx context.Context, req *sliverpb.SideloadReq) (*sliverpb.Sideload, error)

Sideload - Sideload a DLL on the remote system (Windows only)

func (*Server) SpawnDll

func (rpc *Server) SpawnDll(ctx context.Context, req *sliverpb.InvokeSpawnDllReq) (*sliverpb.SpawnDll, error)

SpawnDll - Spawn a DLL on the remote system (Windows only)

func (*Server) StartDNSListener

func (rpc *Server) StartDNSListener(ctx context.Context, req *clientpb.DNSListenerReq) (*clientpb.DNSListener, error)

StartDNSListener - Start a DNS listener TODO: respect request's Host specification

func (*Server) StartHTTPListener

func (rpc *Server) StartHTTPListener(ctx context.Context, req *clientpb.HTTPListenerReq) (*clientpb.HTTPListener, error)

StartHTTPListener - Start an HTTP listener

func (*Server) StartHTTPSListener

func (rpc *Server) StartHTTPSListener(ctx context.Context, req *clientpb.HTTPListenerReq) (*clientpb.HTTPListener, error)

StartHTTPSListener - Start an HTTPS listener

func (*Server) StartHTTPStagerListener

func (rpc *Server) StartHTTPStagerListener(ctx context.Context, req *clientpb.StagerListenerReq) (*clientpb.StagerListener, error)

StartHTTPStagerListener starts a HTTP(S) stager listener

func (*Server) StartMTLSListener

func (rpc *Server) StartMTLSListener(ctx context.Context, req *clientpb.MTLSListenerReq) (*clientpb.MTLSListener, error)

StartMTLSListener - Start an MTLS listener

func (*Server) StartService

func (rpc *Server) StartService(ctx context.Context, req *sliverpb.StartServiceReq) (*sliverpb.ServiceInfo, error)

StartService creates and starts a Windows service on a remote host

func (*Server) StartTCPStagerListener

func (rpc *Server) StartTCPStagerListener(ctx context.Context, req *clientpb.StagerListenerReq) (*clientpb.StagerListener, error)

StartTCPStagerListener starts a TCP stager listener

func (*Server) StartWGListener added in v1.4.9

func (rpc *Server) StartWGListener(ctx context.Context, req *clientpb.WGListenerReq) (*clientpb.WGListener, error)

StartWGListener - Start a Wireguard listener

func (*Server) StopService

func (rpc *Server) StopService(ctx context.Context, req *sliverpb.StopServiceReq) (*sliverpb.ServiceInfo, error)

StopService stops a remote service

func (*Server) TCPListener

func (rpc *Server) TCPListener(ctx context.Context, req *sliverpb.TCPPivotReq) (*sliverpb.TCPPivot, error)

func (*Server) Task

func (rpc *Server) Task(ctx context.Context, req *sliverpb.TaskReq) (*sliverpb.Task, error)

Task - Execute shellcode in-memory

func (*Server) Terminate

func (rpc *Server) Terminate(ctx context.Context, req *sliverpb.TerminateReq) (*sliverpb.Terminate, error)

Terminate - Terminate a remote process

func (*Server) TunnelData

func (s *Server) TunnelData(stream rpcpb.SliverRPC_TunnelDataServer) error

TunnelData - Streams tunnel data back and forth from the client<->server<->implant

func (*Server) UnsetEnv added in v1.4.15

func (rpc *Server) UnsetEnv(ctx context.Context, req *sliverpb.UnsetEnvReq) (*sliverpb.UnsetEnv, error)

UnsetEnv - Set an environment variable

func (*Server) UpdateSession

func (rpc *Server) UpdateSession(ctx context.Context, update *clientpb.UpdateSession) (*clientpb.Session, error)

func (*Server) Upload

func (rpc *Server) Upload(ctx context.Context, req *sliverpb.UploadReq) (*sliverpb.Upload, error)

Upload - Upload a file from the remote file system

func (*Server) WGListForwarders added in v1.4.12

func (rpc *Server) WGListForwarders(ctx context.Context, req *sliverpb.WGTCPForwardersReq) (*sliverpb.WGTCPForwarders, error)

func (*Server) WGListSocksServers added in v1.4.12

func (rpc *Server) WGListSocksServers(ctx context.Context, req *sliverpb.WGSocksServersReq) (*sliverpb.WGSocksServers, error)

func (*Server) WGStartPortForward added in v1.4.12

func (rpc *Server) WGStartPortForward(ctx context.Context, req *sliverpb.WGPortForwardStartReq) (*sliverpb.WGPortForward, error)

func (*Server) WGStartSocks added in v1.4.12

func (rpc *Server) WGStartSocks(ctx context.Context, req *sliverpb.WGSocksStartReq) (*sliverpb.WGSocks, error)

func (*Server) WGStopPortForward added in v1.4.12

func (rpc *Server) WGStopPortForward(ctx context.Context, req *sliverpb.WGPortForwardStopReq) (*sliverpb.WGPortForward, error)

func (*Server) WGStopSocks added in v1.4.12

func (rpc *Server) WGStopSocks(ctx context.Context, req *sliverpb.WGSocksStopReq) (*sliverpb.WGSocks, error)

func (*Server) Website

func (rpc *Server) Website(ctx context.Context, req *clientpb.Website) (*clientpb.Website, error)

Website - Get one website

func (*Server) WebsiteAddContent

func (rpc *Server) WebsiteAddContent(ctx context.Context, req *clientpb.WebsiteAddContent) (*clientpb.Website, error)

WebsiteAddContent - Add content to a website, the website is created if `name` does not exist

func (*Server) WebsiteRemove

func (rpc *Server) WebsiteRemove(ctx context.Context, req *clientpb.Website) (*commonpb.Empty, error)

WebsiteRemove - Delete an entire website

func (*Server) WebsiteRemoveContent

func (rpc *Server) WebsiteRemoveContent(ctx context.Context, req *clientpb.WebsiteRemoveContent) (*clientpb.Website, error)

WebsiteRemoveContent - Remove specific content from a website

func (*Server) WebsiteUpdateContent added in v1.2.0

func (rpc *Server) WebsiteUpdateContent(ctx context.Context, req *clientpb.WebsiteAddContent) (*clientpb.Website, error)

WebsiteUpdateContent - Update specific content from a website, currently you can only the update Content-type field

func (*Server) Websites

func (rpc *Server) Websites(ctx context.Context, _ *commonpb.Empty) (*clientpb.Websites, error)

Websites - List existing websites

Jump to

Keyboard shortcuts

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