graph LR
Channel_Abstraction["Channel Abstraction"]
Client_Base["Client Base"]
TCP_Client["TCP Client"]
SMB_Client["SMB Client"]
Pivoting_Manager["Pivoting Manager"]
External_C2_Manager["External C2 Manager"]
TCP_Client -- "implements" --> Client_Base
SMB_Client -- "implements" --> Client_Base
Pivoting_Manager -- "uses" --> TCP_Client
Pivoting_Manager -- "uses" --> SMB_Client
External_C2_Manager -- "uses" --> Channel_Abstraction
TCP_Client -- "relies on" --> Channel_Abstraction
SMB_Client -- "relies on" --> Channel_Abstraction
One paragraph explaining the functionality which is represented by this graph. What the main flow is and what is its purpose.
Provides a unified, high-level interface for sending and receiving data, abstracting the underlying communication protocol (e.g., TCP, SMB). This allows the beacon's core logic to remain agnostic to the transport mechanism.
Related Classes/Methods:
src/channel.hsrc/channel.cpp
A foundational component that implements shared logic and a common interface for all communication clients. It likely handles connection state, data serialization/deserialization, and error handling, reducing code duplication across different client types.
Related Classes/Methods:
src/client.hsrc/client.cppsrc/clientint.h
A concrete implementation for standard C2 communication over a TCP socket. This component manages the direct, low-level network connection to the C2 server.
Related Classes/Methods:
src/client_tcp.cpp
A concrete implementation for C2 communication over SMB named pipes. This is essential for peer-to-peer communication within a compromised network, enabling beacons to chain together.
Related Classes/Methods:
src/client_smb.cpp
Orchestrates peer-to-peer communication by leveraging other beacons as proxies. It uses the TCP and SMB clients to connect to other implants, effectively turning them into internal routers for C2 traffic.
Related Classes/Methods:
src/beacon_pivot.cpp
Implements a framework for loading and managing third-party communication channels. This allows the implant to be extended with new protocols (e.g., DNS, ICMP) via dynamically loaded libraries, decoupling them from the core beacon binary.
Related Classes/Methods:
src/beacon_extc2.cppsrc/client_smb_extc2.cpp