Disclaimer: This project should be used for authorized testing or educational purposes only.
BYOB is an open-source project that provides a framework for security researchers
and developers to build and operate a basic botnet to deepen their understanding
of the sophisticated malware that infects millions of devices every year and spawns
modern botnets, in order to improve their ability to develop counter-measures against
these threats.
It is designed to allow developers to easily implement their own code and add cool new
features without having to write a RAT (Remote Administration Tool) or a
C2 (Command & Control server) from scratch.
The RAT's key feature is that arbitrary code/files can be remotely loaded into memory
from the C2 and executed on the target machine without writing anything to the disk.
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 to copy to the ./byob/modules/ directory
automatically becomes remotely importable & directly usable by every client while
your command & control server is running
Write Your Own Modules: a basic module template is provided in ./byob/modules/ directory to make writing
your own modules a straight-forward, hassle-free process
Run 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 portable executable (Windows) or
bundled into an 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
Keylogger (byob.modules.keylogger): logs the user’s keystrokes & the window name entered
Screenshot (byob.modules.screenshot): take a screenshot of current user’s desktop
Webcam (byob.modules.webcam): view a live stream or capture image/video from the webcam
Ransom (byob.modules.ransom): encrypt files & generate random BTC wallet for ransom payment
Outlook (byob.modules.outlook): read/search/upload emails from the local Outlook client
Packet Sniffer (byob.modules.packetsniffer): run a packet sniffer on the host network & upload .pcap file
Persistence (byob.modules.persistence): establish persistence on the host machine using 5 different methods
Phone (byob.modules.phone): read/search/upload text messages from the client smartphone
Escalate Privileges (byob.modules.escalate): attempt UAC bypass to gain unauthorized administrator privileges
Port Scanner (byob.modules.portscanner): scan the local network for other online devices & open ports
Process Control (byob.modules.process): list/search/kill/monitor currently running processes on the host
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 modules
Generators (byob.core.generators): functions which all dynamically generate code for the client generator
Database (byob.core.database): handles interaction between command & control server and the SQLite database
Handler (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.)
Improve Phone/SMS module - add spreading ability via emails/text-messages when a contacts list is found on the target host
Improve Outlook/Email module - add spreading ability via emails/text-messages when a contacts list is found on the target host
Improve Ransom module - add methods for using a Bitcoin exchange API for generating temporary wallet addresses that are unique to the target host, expire after a given number of hours without receiving payment, and which notify the C2 server (maybe via webhooks?) when payment is received or the wallet expires
Support Python 3 - support both Python 2 and Python 3 in a single codebase