前言(何为bof文件)
信标对象文件 (BOF) 是编译后的 C 程序,按照约定编写,允许它在信标进程中执行并使用内部信标 API。BOF 是一种使用新的后开发功能快速扩展 Beacon 代理的方法!
BOF 是由 C 编译器生成的目标文件。Cobalt Strike 解析此文件并充当其内容的链接器和加载器。这种方法允许您编写与位置无关的代码,用于 Beacon,而无需繁琐的体操来管理字符串和动态调用 Win32 API。
- 优点
1.BOF体积小
2.通过官方API(beacon.h)去开发一些自定义的模块,多用于横向移动
- 缺点
1.没办法支持运行时间特别长的一些BOF(这里不知道官方定义的时间长代表啥意思、但是实际测试如果是长时间运行程序不适合使用!例如一直监听用户键盘输入和剪贴板)
2.BOF 是调用 Win32 API 和有限 Beacon API 的单文件 C 程序。不要期望使用此机制链接其他功能或构建大型项目。
3.对于有些c语法他并不是完全支持、例如str_len、会在控制台上报错!
4.BOF 在您的 Beacon 代理内部执行。如果 BOF 崩溃,有可能导致Beacon崩溃(这里也就是说如果你的BOF出现了报错、那么你的shell就直接掉了!!!!)
如何在“BOF”这种方式上运行.NET程序
上述已经说了关于BOF功能的一些介绍、但是本章节其实不是来讲怎么做一个BOF文件、小编打算下一章节再讲详细版本的BOF制作过程、本章节还是讲一下如何运行.NET程序!
如果你原先已经有.NET程序、但是开发bof费时费力、那么可以尝试一下下面的工具!并且也是可以做到文件不落地、WindowsDefender是不会报行为异常的!
工具地址
如何使用
下载到本地后进行安装插件
选择「Load」->查找你刚刚下载的.cna文件->「Open」即可
导入完成后进入shell内操作运行.NET程序
软件一些参数、我们只需要--dotnetassembly和--assemblyargs 即可
--dotnetassembly Directory path to your assembly **required**
--assemblyargs Assembly arguments to pass
--appdomain Change default name of AppDomain sent (default value is totesLegit and is set via the included aggressor script) *Domain always unloaded*
--amsi Attempts to disable AMSI via in memory patching (If successful AMSI will be disabled for the entire life of process)
--etw Attempts to disable ETW via in memory patching (If successful ETW will be disabled for the entire life of process unless reverted)
--revertetw Attempts to disable ETW via in memory patching and then repatches it back to original state
--pipe Change default name of named pipe (default value is totesLegit and is set via the included aggressor script)
--mailslot Switches to using mailslots to redirect console output. Changes default name of mailslot (If left blank, default value is totesLegit and is set via the included aggressor script)
--main Changes entry point to Main() (default value is Main(string[] args))
命令如下:
这是无参数的时候就直接这么使用、dotnetassembly后面记得是接的软件绝对路径
inlineExecute-Assembly --dotnetassembly C:zfjsec.exe
携带参数的使用
inlineExecute-Assembly --dotnetassembly C:zfjsec.exe --assemblyargs https://www.zfjsec.com
这样cs就会运行这个.net程序
注意、在运行程序的时候可能会出现“掉shell”的情况。是因为他阻止了其他Beacon的运行、等到你软件结束了或者运行完成后shell就会恢复“生命”
结尾
其实本章节没有着重讲解BOF、但是可以参考这个插件去制作“套娃”、只是做个记录、因为原先.NET开发可能软件比较大、突然不方便在重新写个BOF去使用、可以先暂时这样缓解、并且也是文件不落地!后续会详细介绍和使用编写BOF文件!