Get desktop application:
View/edit binary Protocol Buffers messages
Essentially, a transport request is either starting a reverse or a bind handler with different proto/address
HTTP Http = 3; // Either of these fields can be empty, except one. DNS Dns = 4; // They are used to share protocol-specific details QUIC Quic = 5; KCP Kcp = 6; MTLS Mtls = 7; NamedPipe Pipe = 8;
If force true, send a warning message (other routes passing through)
If force false, send the warning as an error, and Success false
ChangeTransportRequest - Request an implant to connect with new transport settings At the server, we should check the transport type, and if reverse, check a listener is running, otherwise return error and do not ask implant to change its transport.
Used in:
DNSSessionInit - Sends the key bytes for authentication.
DeleteTransportRequest - Delete one or more transports from the implant transport list
If TransportID != 0 delete based on ID
Else, kill all matches
All messages are sent in an Envelope, giving Type of Request, Ghost ID, etc...
Type of Request
Unique ID of the envelope
Command timeout
Error Status
Core of the message
Add needed fields here, like registration
HTTPBindRequest - Connect to a ghost implant running remotely
Enable HTTPS
Maybe not needed
Job BackgroundJob = 3; // Pass an entire job object.
HTTPListenerRequest - Start a HTTP listener for incoming ghost connections
Enable HTTPS
HTTPSessionInit - Sends the key bytes for authentication.
ListTransportsRequest - List available transports for a ghost implant
Listener - A reverse handler, for any protocol and source
Used in:
In case two same addresses for two ghosts
server.User Owner = 7;
Timestamp
NamedPipeRequest - Start a name pipe listener
Permissions - Who has the right to kill a listener
Used in:
Protocol - Protocol used for comms
Identify Protocol
Used in: , ,
Used in:
The connection does not serve any addition payload.
The connection will serve some payload.
Bind to a reverse listener runned by an implant
In case two same addresses for two ghosts
Job BackgroundJob = 3; // Pass an entire job object.
StartDNSListenerRequest - Start a DNS listener for implant C2
(message has no fields)
(message has no fields)
Start a listener either on the server, or on an implant
(message has no fields)
(message has no fields)
Stop a reverse handler listener on the server or implant
Transport - A transport is just a structure used by implants to receive/send/use transport configurations.
Used in: , , , ,
Wait for session delay
Type - // Do we start a listener on the implant, or do we reach back another address ?
Used in:
DIALER
LISTENER