如何使用bof-launcher在CC++Zig应用程序中执行Beacon对象文件(BOF)

关于bof-launcher

bof-launcher是一款针对Beacon对象文件(BOF)的安全测试工具,在该工具的帮助下,广大研究人员可以轻松在C/C++/Zig应用程序中执行Beacon对象文件(BOF)。

Cobalt Strike 4.1于2020年6月25日发布,该版本引入了一种能够运行Beacon对象文件的功能,即能够Beacon中执行代码、解析参数、调用一些Win32 API、报告输出和退出。自那时起,BOF变得非常流行,因此也衍生出了在Cobalt Strike的Beacon之外的其他环境中启动或执行BOF的需求。

功能介绍

bof-launcher是一个开源库,可以在Windows和UNIX/Linux系统上加载、重新定位和启动BOF。当前版本的bof-launcher支持下列功能:

1、与Cobalt Strike的Beacon完全兼容,可以编译和运行Cobalt Strike Community Kit中提供的每一个BOF以及其他所有遵循通用BOF模板的开源BOF;

2、作为一个完全独立的库分发,不依赖与任何其他组件(甚至不使用libc);

3、支持与C/C++/Zig应用程序完美集成;

4、增加了用Zig编程语言编写BOF的能力,该语言的所有功能和丰富的标准库都可以用于BOF;

5、异步BOF执行,能够在单独的线程中启动更耗时的BOF;

6、BOF进程注入,通过将其注入新进程来启动风险更大的BOF;

7、完美支持Windows COFF和UNIX/Linux ELF格式;

8、支持Linux ARM和AARCH64;

7、允许直接从文件系统运行BOF文件(需配合cli4bofs工具);

8、高效灵活的API用于BOF链调用;

工具下载

首先,广大研究人员需要使用下列命令将该项目源码克隆至本地:

git clone https://github.com/The-Z-Labs/bof-launcher.git

然后,我们可以直接使用Zig来构建该项目代码。为此,我们需要在当前目录中下载Zig的tarball文件,将该目录路径添加到PATH环境之后,构建项目代码就非常简单了:

cd bof-launcher

zig build

构建生成的文件将存储在ig-out/bin和zig-out/lib目录中。

下列命令即可构建并运行测试BOF:

zig build test

针对Linux操作系统,项目提供了一个专门的zigupdate.sh脚本来执行工具代码构建:

wget https://raw.githubusercontent.com/The-Z-Labs/bof-launcher/main/utils/zigupdate.sh

chmod +x zigupdate.sh; ./zigupdate.sh

<update PATH>

git clone https://github.com/The-Z-Labs/bof-launcher

cd bof-launcher

zig build

zig build test

bof-launcher库

bof-launcher库是一个完全开源且独立的代码库,可以用来执行任何形式的BOF构建。在Windows平台上,bof-launcher支持x86和x86_64架构,在Linux上支持x86、x86_64、ARM和AArch64架构。该代码库对外提供了CAPI和Zig API,支持解析COFF/ELF对象数据,能够加载所有需要的符号,最后处理BOF输出。

C API基础使用

// 加载对象文件(COFF或ELF)并获得一个对应的句柄

BofObjectHandle bof_handle;

if (bofObjectInitFromMemory(obj_file_data, obj_file_data_size, &bof_handle) < 0) {

    // handle the error

}

 

// 执行

BofContext* context = NULL;

if (bofObjectRun(bof_handle, NULL, 0, &context) < 0) {

    // handle the error

}

 

// 获取输出

const char* output = bofContextGetOutput(context, NULL);

if (output) {

    // 处理BOF输出

}

 

bofContextRelease(context);

工具使用

在开发和调试过程中,我们可以直接从文件系统来运行BOF代码。为此,我们还专门开发了cli4bofs工具。下载并构建项目代码后,我们就可以运行所有的BOF了。下面给出的是我们BOF的运行示例:

cli4bofs.exe exec .\zig-out\bin\wWinver.coff.x64.o

cli4bofs.exe exec .\zig-out\bin\udpScanner.coff.x64.o str:162.159.200.1-5:123,88

如需在其他CPU架构上运行该BOF的话,可以使用QEMU:

qemu-aarch64 -L /usr/aarch64-linux-gnu ./zig-out/bin/cli4bofs exec zig-out/bin/test_obj0.elf.aarch64.o

qemu-arm -L /usr/arm-linux-gnueabihf ./zig-out/bin/cli4bofs exec zig-out/bin/test_obj0.elf.arm.o

下列代码可以创建体积更大的跨平台BOF:

const w32 = @import("bof_api").win32;

const beacon = @import("bof_api").beacon;

 

extern fn @"ntdll$RtlGetVersion"(

    lpVersionInformation: *w32.RTL_OSVERSIONINFOW,

) callconv(w32.WINAPI) w32.NTSTATUS;

 

const RtlGetVersion = @"ntdll$RtlGetVersion";

 

pub export fn go(_: ?[*]u8, _: i32) callconv(.C) u8 {

    var version_info: w32.OSVERSIONINFOW = undefined;

    version_info.dwOSVersionInfoSize = @sizeOf(@TypeOf(version_info));

 

    if (RtlGetVersion(&version_info) != .SUCCESS)

        return 1;

 

    _ = beacon.printf(

        0,

        "Windows version: %d.%d, OS build number: %d\n",

        version_info.dwMajorVersion,

        version_info.dwMinorVersion,

        version_info.dwBuildNumber,

    );

    return 0;

}
#include <windows.h>

#include "beacon.h"

 

NTSYSAPI NTSTATUS NTAPI NTDLL$RtlGetVersion(OSVERSIONINFOW* lpVersionInformation);

 

unsigned char go(unsigned char* arg_data, int arg_len) {

    OSVERSIONINFOW version_info;

    version_info.dwOSVersionInfoSize = sizeof(version_info);

 

    if (NTDLL$RtlGetVersion(&version_info) != 0)

        return 1;

 

    BeaconPrintf(

        0,

        "Windows version: %d.%d, OS build number: %d\n",

        version_info.dwMajorVersion,

        version_info.dwMinorVersion,

        version_info.dwBuildNumber

    );

    return 0;

}

许可证协议

本项目的开发与发布遵循BSD-3-Clause开源许可证协议。

项目地址

bof-launcher:【GitHub传送门】

参考资料

Running BOFs with our 'bof-launcher' library

https://www.cobaltstrike.com/blog/cobalt-strike-4-1-the-mark-of-injection/

Beacon Object Files

https://www.cobaltstrike.com/

Z-Labs, Software Security Labs

Home ⚡Zig Programming Language

QEMU

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Diffusion Model 笔记]DDIM 笔记 数学推导 Denoising Diffusion Implicit Models

目录 核心总结符号定义第一套&#xff0c;快速简单讲清采样方法继续分析&#xff0c;待定系数法求解图示理解关于参数sigma 本文是观看以下视频的笔记&#xff0c;强烈推荐观看最后的图示理解&#xff1a; https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from333.788 论…

数据结构|树形结构|并查集

数据结构|并查集 并查集 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&#xff0c;希望有朝一日我们积累的滴水可以击穿顽石。 有趣的并查集剧情演绎&#xff1a;【算法与数据结构】—— 并…

idea自定义配置文件的注释

打开 IntelliJ Idea 软件 依次找到 File—>Editor—>File and Code Templates 设置 Files 下的Class、Interface、Enum等 输入下面的内容 /** * description: ${NAME} * date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} * author: author **/

php动态高亮web源代码

php动态高亮web源代码 注&#xff1a;配置好不允许高亮的文件名&#xff0c;安全第一 #php实现动态展示目录树结构源代码 适用于开放源代码&#xff0c;结合html缓存使用效果更佳&#xff0c;因循环较多不适合放首页 能力有限没实现行号 演示&#xff1a;show source|开放…

吉布提国家概况

吉布提国家概况 &#xff08;最近更新时间&#xff1a;2022年10月&#xff09; 【国 名】 吉布提共和国&#xff08;The Republic of Djibouti&#xff0c; La Rpublique de Djibouti&#xff09;。 【面 积】 2.32万平方公里。 【人 口】约100万。主要有伊萨族和阿法尔族。…

认识HTTP

HTTP缺点 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听 不验证通信方的身份&#xff0c;可能遭遇伪装 无法证明报文的完整性&#xff0c;所以有可能遭篡改 一、通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听 TCP/…

鸿蒙OpenHarmony【轻量系统 编译】 (基于Hi3861开发板)

编译 OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式&#xff0c;build.sh脚本编译方式请参考[使用build.sh脚本编译源码]。 使用build.sh脚本编译源码 进入源码根目录&#xff0c;执行如下命令进行版本编译。 ./build.sh --product-name name --ccache 说明&…

【算法基础实验】图论-深度优先搜索和深度优先路径

深度优先(DFS) 理论基础 深度优先搜索&#xff08;DFS, Depth-First Search&#xff09;是图和树的遍历算法中的一种&#xff0c;它从一个节点开始&#xff0c;沿着树的边走到尽可能深的分支&#xff0c;直到节点没有子节点为止&#xff0c;然后回溯继续搜索下一个分支。DFS …

python基础之元组、集合和函数的定义与返回值

1.元祖 1.元祖的定义 元组的数据结构跟列表相似 特征&#xff1a;有序、 有序&#xff1a;有&#xff08;索引/下标/index&#xff09; 正序、反序标识符&#xff1a; ( ) 里面的元素是用英文格式的逗号分割开来关键字&#xff1a;tuple 列表和元组有什么区别&#xff1f; 元组…

JavaEE 初阶篇-深入了解 I/O 高级流(缓冲流、交换流、数据流和序列化流)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 缓冲流概述 1.1 缓冲流的工作原理 1.2 使用缓冲流的步骤 1.3 字节缓冲流于字符缓冲流的区别 1.4 字节缓冲流的实例 1.5 字符缓冲流的实例 2.0 转换流概述 2.1 字符…

局部多项式近似与 AMPM 算法

kappa3; %已在您的代码中定义% 定义窗口大小 windowSize (2*kappa1);% 初始化梯度估计值 [rows, cols] size(wrappedPhase); phi_y zeros(rows, cols); phi_x zeros(rows, cols);% 遍历每个窗口 for m 1kappa:rows-kappafor n 1kappa:cols-kappa% 提取局部窗口Z_mn wrap…

Git--基础学习--面向企业--持续更新

一、基础学习 1.1基本命令 //查询基础信息 git config --global --list //选取合适位置创建 mkdir 文件名 //创建文件夹 //全局配置 git config --global user.email "****e***i" git config --global user.name "*** K****"//--------------------进入…

SHViT:具有内存高效宏设计的单头视觉Transformer

文章目录 摘要1、引言2、分析与方法2.1、宏观设计中的冗余分析2.2、微观设计中的冗余分析2.3、单头自注意力2.4、单头视觉转换器 3、实验3.1、实现细节3.2、SHViT在ImageNet-1K分类任务上的表现3.3、SHViT在下游任务中的表现3.4、消融研究 4、相关工作5、结论SHViT&#xff1a;…

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候&#xff0c;第一反应是使用resize()实现。很多情况下&#xff0c;我们会调用最近邻插值和双线性插值去放大图片&#xff0c;当然要说没有分辨率的损失那是不可能的&#xff0c;只能说在放大图片的过程中尽可能增加了图片的分…

免费的一键伪原创工具,用来高效写文章真妙!

写文章是一件耗时间、费精力的事&#xff0c;遇到没有写作灵感的时候&#xff0c;写文章就像嚼蜡一样难受&#xff0c;但好在有免费的一键伪原创工具&#xff0c;它能帮助我们高效率实现自动写作文章&#xff0c;并且整个写作的过程我们无需思考内容怎么去写&#xff0c;是可以…

自动驾驶传感器篇: GNSSIMU组合导航

自动驾驶传感器篇&#xff1a; GNSS&IMU组合导航 1.GNSS1.1 GNSS 系统概述1.2 GNSS系统基本组成1. 空间部分&#xff08;Space Segment&#xff09;&#xff1a;2. 地面控制部分&#xff08;Ground Control Segment&#xff09;&#xff1a;3. 用户设备部分&#xff08;Use…

x86 64位的ubuntu环境下汇编(无优化)及函数调用栈的详解

1. 引言 为了深入理解c&#xff0c;决定学习一些简单的汇编语言。使用ubuntu系统下g很容易将一个c的文件编译成汇编语言。本文使用此方法&#xff0c;对一个简单的c文件编译成汇编语言进行理解。 2.示例 文件名&#xff1a;reorder_demo.cpp #include<stdio.h>typede…

摩尔定律仍在延续|从最新1.6nm工艺节点看芯片发展-2

2nm工艺的斗争还没结束&#xff0c;TSMC台积电就又公开宣布了1.6nm&#xff08;TSMC A16TM&#xff09;半导体工艺&#xff0c;太卷了&#xff01; TSMC A16TM技术采用领先的纳米片晶体管&#xff0c;并结合创新的背侧电源轨方案&#xff0c;计划于2026年投入生产。这种设计极…

【项目】YOLOv8/YOLOv5/YOLOv9半监督ssod火灾烟雾检测(YOLOv8_ssod)

假期闲来无事找到一份火灾烟雾数据集&#xff0c;自己又补充标注了一些&#xff0c;通过论文检索发现现在的火灾检测工作主要局限于对新场景的泛化性不够强&#xff0c;所以想着用半监督&#xff0c;扩充数据集的方法解决这个问题&#xff0c;所以本文结合使用现在检测精度较高…

成功案例丨守“鲜”有道 Fortinet为都乐筑就全球安全防护网

作为全球知名的跨国食品企业&#xff0c;都乐业务遍布各大洲。在各种新兴业务模式层出不穷的数字化时代&#xff0c;都乐面临着生产持续性、安全运营、供应链安全等严峻的网络安全挑战。通过采用Fortinet的FortiSIEM、FortiMail等系列Fortinet Security Fabric安全平台生态产品…