Cobalt Strikes Bof执行.NET程序

本文阅读 4 分钟

前言(何为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是不会报行为异常的!

工具地址

InlineExecute-Assembly

如何使用

下载到本地后进行安装插件
cs导入插件.png
选择「Load」->查找你刚刚下载的.cna文件->「Open」即可
cs导入插件_1.png

导入完成后进入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文件!

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.zfjsec.com/770.html
-- 展开阅读全文 --
关于本站会出现https认证失败与备案域名失败公告
« 上一篇 09-19
vs2008 提示升级,但是没有输入序列号的地方怎么办?
下一篇 » 12-15

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复