使用 Visual Studio 开发 CS 的 BOF

admin 2022年7月18日11:22:36评论459 views字数 1332阅读4分26秒阅读模式

使用 Visual Studio 开发 CS 的 BOF

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的编译格式切换:

使用 Visual Studio 开发 CS 的 BOF

    这样最大的好处就是调试和编译BOF变得十分方便,而且是在我们比较熟悉的Visual Studio上面。

Visual-Studio-BOF-template项目中提供的bofdef.h文件是比较旧的,于是乎我将trustedsec这两个项目中的bofdef.h文件更换到了模板中,又进行了分类,这样定义编写都比较方便明了:

按导出DLL名字区分文件,如果其中缺少定义还可以自己添加

使用 Visual Studio 开发 CS 的 BOF

添加函数结构定义后,回到bofdef.h文件添加对应的宏定义

使用 Visual Studio 开发 CS 的 BOF

    最后就可以像写C代码一样编写BOF了。

    比如COM添加计划任务的例子,定义好需要的结构后,不用担心任何规定语法直接像写C一样编写:

使用 Visual Studio 开发 CS 的 BOF

使用 Visual Studio 开发 CS 的 BOF

0x03 添加模板

git clone https://github.com/evilashz/Visual-Studio-BOF-template

    模板我更改为Visual Studio 2022 工具集VS143,当然如果你没有的话也不妨碍,创建项目后再属性设置工具集即可。

路径为

%UserProfile%DocumentsVisual Studio 2022TemplatesProjectTemplates

将模板文件夹放入即可,创建项目时即可看到,

使用 Visual Studio 开发 CS 的 BOF

0x04 总结

    总而言之,说白了,我是十分推荐用这个项目去做BOF开发的,编译和调试非常方便,理论上定义好各类的函数,就可以做到直接将现有的C代码复制过来就可以编译一个BOF。

    所以说我写这篇文章的意思就是希望大家一起使用这个项目,将平时自己编写添加的函数结构都可以集合到bofdef中,欢迎大家PR。

GitHub:https://github.com/evilashz/Visual-Studio-BOF-template




使用 Visual Studio 开发 CS 的 BOF


原文始发于微信公众号(黑客在思考):使用 Visual Studio 开发 CS 的 BOF

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月18日11:22:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用 Visual Studio 开发 CS 的 BOFhttps://cn-sec.com/archives/1181969.html

发表评论

匿名网友 填写信息