Cobalt Strike bof开发

之前我开发bof都用MingGW来编译,异常麻烦。然后我学到了用这个项目 https://github.com/evilashz/Visual-Studio-BOF-template 来开发,很不错。

首先将项目中的Beacon Object File放到Visual Studuio的Templates中。

image-20260205113103509

0x01.问题修复

修改一下beacon.h,加一个头文件,因为我发现没有这个会发生错误。

image-20260205113213250

然后Visual Studio创建项目的时候就可以选择Beacon Object File了。但是会引发一个错误。提示找不到Source.cpp。

image-20260205113413182

很傻逼,明明是Source.c。

image-20260205113507142

所以要改那个模板文件,或者去掉都可。bof开发尽量不要使用C++。

image-20260205113719167

还有平台工具集的问题,现在大伙大多数用的都是Visual Studio 2022,而这个模板生成的工具集为Visaul Studio 2019(v142),基本都没有安装吧,这样生成肯定会出错的。

image-20260205114655260

在scheduled-tasks.vcxproj将所有的v142修改为v143即可。Source.cpp也要修改为Source.c。

image-20260205114920608

image-20260205115101262

我们还需要修改scheduled-tasks.vcxproj.filters这个文件,同样将Source.cpp修改为Source.c。如果不修改,我们创建的项目Source.c就不在Source Files虚拟目录下面,很不美观。

image-20260205115814411

到这里问题基本被修复了。

0x02.使用

在批生成中选择生成BOF。如果你不想生成BOF类型,可以配置其它生成。

image-20260205120036646

现在看属性页问题也基本没有了。

image-20260205120136474

其实Source.c就是提供的开发模板,这个地方需要包含beacon.h没改,在模板的Source.c那里改一下吧,这样才能正确使用beacon内部api。

image-20260205120425206

了解Cobalt Strike的都知道beacon的执行bof默认入口函数是go,所以这里为什么还有main函数,这样做的目的是为了能够兼容生成exe(但感觉我既然是要写bof,要你这个main函数有屁用)。

写个打印到beacon控制台的程序测试一下。还是和写普通C代码一样,往常编译即可。

image-20260205143551582

source.obj就是我们的目标coff文件了。

image-20260205143700703

没问题的,美滋滋。

image-20260205143907508