Questions? Check out the docs or join our Discord support server
Disclaimer: This project should be used for authorized testing or educational purposes only.
BYOB is an open-source post-exploitation framework for students, researchers and developers. It includes features such as:
Command & control server with intuitive user-interface
Custom payload generator for multiple platforms
12 post-exploitation modules
It is designed to allow students and developers to easily implement their own code and add cool new features without having to write a C2 server or Remote Administration Tool from scratch.
This project has 2 main parts: the original console-based application (/byob
) and the web GUI (/web-gui
).
Web GUI
Dashboard
A control panel for your C2 server with a point-and-click interface for executing post-exploitation modules. The control panel includes an interactive map of client machines and a dashboard which allows efficient, intuitive administration of client machines.
Payload Generator
The payload generator uses black magic involving Docker containers & Wine servers to compile executable payloads for any platform/architecture you select. These payloads spawn reverse TCP shells with communication over the network encrypted via AES-256 after generating a secure symmetric key using the Diffie-Hellman IKE.
Terminal Emulator
The web app includes an in-browser terminal emulator so you can still have direct shell access even when using the web GUI.
Console Application
Client
Generate fully-undetectable clients with staged payloads, remote imports, and unlimited post-exploitation modules
Remote Imports: remotely import third-party packages from the server without writing them to the disk or downloading/installing them
Nothing Written To The Disk: clients never write anything to the disk - not even temporary files (zero IO system calls are made) because remote imports allow arbitrary code to be dynamically loaded into memory and directly imported into the currently running process
Zero Dependencies (Not Even Python Itself): client runs with just the python standard library, remotely imports any non-standard packages/modules from the server, and can be compiled with a standalone python interpreter into a portable binary executable formatted for any platform/architecture, allowing it to run on anything, even when Python itself is missing on the target host
Add New Features With Just 1 Click: any python script, module, or package you copy to the
./byob/modules/
directory automatically becomes remotely importable & directly usable by every client while your command & control server is runningWrite Your Own Modules: a basic module template is provided in
./byob/modules/
directory to make writing your own modules a straight-forward, hassle-free processRun Unlimited Modules Without Bloating File Size: use remote imports to add unlimited features without adding a single byte to the client's file size
Fully Updatable: each client will periodically check the server for new content available for remote import, and will dynamically update its in-memory resources if anything has been added/removed
Platform Independent: everything is written in Python (a platform-agnostic language) and the clients generated can optionally be compiled into a portable executable (Windows) or bundled into a standalone application (macOS)
Bypass Firewalls: clients connect to the command & control server via reverse TCP connections, which will bypass most firewalls because the default filter configurations primarily block incoming connections
Counter-Measure Against Antivirus: avoids being analyzed by antivirus by blocking processes with names of known antivirus products from spawning
Encrypt Payloads To Prevent Analysis: the main client payload is encrypted with a random 256-bit key which exists solely in the payload stager which is generated along with it
Prevent Reverse-Engineering: by default, clients will abort execution if a virtual machine or sandbox is detected
Modules
Post-exploitation modules that are remotely importable by clients
Persistence (
byob.modules.persistence
): establish persistence on the host machine using 5 different methodsPacket Sniffer (
byob.modules.packetsniffer
): run a packet sniffer on the host network & upload .pcap fileEscalate Privileges (
byob.modules.escalate
): attempt UAC bypass to gain unauthorized administrator privilegesPort Scanner (
byob.modules.portscanner
): scan the local network for other online devices & open portsKeylogger (
byob.modules.keylogger
): logs the user’s keystrokes & the window name enteredScreenshot (
byob.modules.screenshot
): take a screenshot of current user’s desktopOutlook (
byob.modules.outlook
): read/search/upload emails from the local Outlook clientProcess Control (
byob.modules.process
): list/search/kill/monitor currently running processes on the hostiCloud (
byob.modules.icloud
): check for logged in iCloud account on macOS
Server
Command & control server with persistent database and console
Console-Based User-Interface: streamlined console interface for controlling client host machines remotely via reverse TCP shells which provide direct terminal access to the client host machines
Persistent SQLite Database: lightweight database that stores identifying information about client host machines, allowing reverse TCP shell sessions to persist through disconnections of arbitrary duration and enabling long-term reconnaissance
Client-Server Architecture: all python packages/modules installed locally are automatically made available for clients to remotely import without writing them to the disk of the target machines, allowing clients to use modules which require packages not installed on the target machines
Core
Core framework modules used by the generator and the server
Utilities (
byob.core.util
): miscellaneous utility functions that are used by many modulesSecurity (
byob.core.security
): Diffie-Hellman IKE & 3 encryption modes (AES-256-OCB, AES-256-CBC, XOR-128)Loaders (
byob.core.loaders
): remotely import any package/module/scripts from the serverPayloads (
byob.core.payloads
): reverse TCP shell designed to remotely import dependencies, packages & modulesStagers (
byob.core.stagers
): generate unique payload stagers to prevent analysis & detectionGenerators (
byob.core.generators
): functions which all dynamically generate code for the client generatorDAO (
byob.core.dao
): handles interaction between command & control server and the SQLite databaseHandler (
byob.core.handler
): HTTP POST request handler for remote file uploads to the server
To Do
Contributors welcome! Feel free to issue pull-requests with any new features or improvements you have come up with!
Remote Import Encryption - encryption for data streams of packages/modules being remotely imported (to maintain confidentiality/authenticity/integrity and prevent any remote code execution vulnerabilities arising from deserialization)
Transport Types - add support for more transport types (HTTP/S, DNS, etc.)
Bug Fixes - fix any bugs/issues