0x00 前言
关于BOF大家应该不太陌生了,由CobaltStrike 4.1
引入的功能被大家熟知,介绍:聊聊Cobalt Strike 4.1的 BOF;
说白了也就是程序编译后还没有链接的中间产物,在红队行动中,一般由我们的植入体充当链接器,这样一来我们编写的obj文件体积又小且不落地,十分不错,也可以算是OPSEC的方式。
0x01 Visual-Studio-BOF-template优化
开发BOF可能大家会用到,https://github.com/dtmsecurity/bof_helper这个工具
再者就是Trustedsec
提供的模板,https://github.com/trustedsec/CS-Situational-Awareness-BOF
或是https://github.com/securifybv/Visual-Studio-BOF-template
后者的项目可以添加一个Visual Studio的项目模板,其中定义了一些用作BOF动态解析的函数,以及对这些函数结构又做了一次宏定义。
这样的话我们预先定义好就不用再代码中将用到的API都按KERNEL32$HeapAlloc
类似这样的格式编写了;最后还可以BOF和平常c的编译格式切换:
这样最大的好处就是调试和编译BOF变得十分方便,而且是在我们比较熟悉的Visual Studio
上面。
Visual-Studio-BOF-template
项目中提供的bofdef.h
文件是比较旧的,于是乎我将trustedsec
这两个项目中的bofdef.h
文件更换到了模板中,又进行了分类,这样定义编写都比较方便明了:
按导出DLL名字区分文件,如果其中缺少定义还可以自己添加
添加函数结构定义后,回到bofdef.h
文件添加对应的宏定义
最后就可以像写C代码一样编写BOF了。
比如COM添加计划任务的例子,定义好需要的结构后,不用担心任何规定语法直接像写C一样编写:
0x03 添加模板
git clone https://github.com/evilashz/Visual-Studio-BOF-template
模板我更改为Visual Studio 2022
工具集VS143,当然如果你没有的话也不妨碍,创建项目后再属性设置工具集即可。
路径为
%UserProfile%\Documents\Visual Studio 2022\Templates\ProjectTemplates
将模板文件夹放入即可,创建项目时即可看到,
0x04 总结
总而言之,说白了,我是十分推荐用这个项目去做BOF开发的,编译和调试非常方便,理论上定义好各类的函数,就可以做到直接将现有的C代码复制过来就可以编译一个BOF。
所以说我写这篇文章的意思就是希望大家一起使用这个项目,将平时自己编写添加的函数结构都可以集合到bofdef中,欢迎大家PR。