-
Notifications
You must be signed in to change notification settings - Fork 283
Glossary
Janusz Szmigielski edited this page Aug 30, 2019
·
26 revisions
-
Relays
- stand-alone pieces of C3 Networks. They communicate usingInterfaces
. There are two types ofRelays
:Gate Relays
(orGateways
) andNode Relays
. -
Gateway
- a specialRelay
that controls one C3 Network. A C3 Network cannot operate without an operationalGateway
. TheGateway
is the bridge back to the attacker’s infrastructure fromNode Relays
. It's also responsible for communicating back to a third-party C2 server (such as Cobalt Strike’s Teamserver).Gateways
should always be hosted within attacker-controlled infrastructure. -
Node Relay
- an executable to be launched on a compromised host.Node Relays
communicate throughDevices
either between one another or back to theGateway
. -
Interface
- a high level name given to anything that facilitates the sending and receiving of data within a C3 network. They are always connected to someRelay
and their purpose is to extendRelay's
capability. Currently there are three types ofInterfaces
:Channels
,Peripherals
andConnectors
. -
Devices
- common name forChannels
andPeripherals
. This abstraction is created to generalizeInterfaces
that able to be used onNode Relays
. -
Channel
- anInterface
used to transport data between twoRelays
.Channels
works in pairs and do not support the one-to-many transmission (seeNegotiation Channels
). -
Negotiation Channel
- a specialChannel
capable of establishing regularChannel
connections with multipleRelays
. The negotiation process is fully automatic.Negotiation Channels
support only negotiation protocol and cannot be used in any other transmission. -
Gateway Return Channel (GRC)
- the configuredChannel
that aRelay
will use to send data back to theGateway
.GRC
may be a route through anotherRelay
. The firstChannel
(initial) on aNode Relay
is automatically set asGRC
for thatNode Relay
. -
Peripherals
- a third-party implant of a command and control framework.Peripherals
talk to their native controllers via aController
. For example, Cobalt Strike’s SMB beacon. -
Connectors
- an integration with a third-party command and control framework. For instance the ‘External C2’ interface exposed by Cobalt Strike’s Teamserver through the externalc2_start command. -
Binders
- common name forPeripherals
andConnectors
. -
Device ID
- a dynamic ID that uniquely addresses oneDevice
on aRelay
. -
Agent ID
- a dynamic ID that uniquely addresses aNode Relay
.Node Relay
instantiated from the same executable will have differentAgent IDs
. -
Build ID
- a static ID that is built into everyRelay
. Stays unchanged over reboots. Can be used to to block compromisedNode Relays
. -
Route ID
- a pair of anAgent ID
and aDevice ID
. Used to describe one "path" to aNode Relay
(Node Relays
might be reachable via manyRoutes
). -
Routes
- a "path" to aNode Relay
. EveryRelay
keeps a table of all of their childRelays
(and grandchildren, grand-grandchildren, and so on) along withChannel
Device IDs
used to reach that particularRelay
(seeRoute ID
). When a packet from theGateway
arrives to aNode Relay
, routing table is used to choose appropriateChannel
to send the packet through to the recipient. -
Update Delay Jitter
- delay between successive updates of anInterface
(in case ofChannels
- calls to OnReceiveFromChannel method). Can be set to be randomized in provided range of time values.