这是[信安成长计划]的第 15 篇文章

0x00 目录

0x01 BOF功能分析

0x02 BOF功能执行

0x03 写在最后

其实在看过 RDI 与 DotNet 功能执行之后,BOF 的执行基本就不用再说了,唯一需要提及的可能就是它所包含的技术,而且相关的文章和代码也都很丰富了

0x01 BOF功能分析

在 CS 中,有相当一部分功能都是 BOF 形式的,我们随意选择一个

它继承了 PostExInlineObject 类,需要自己实现的并不多,但实际上,一些函数还是自己实现的好

在实际调用的时候,会先获取到 beacon 的 payload 和架构,然后一起传入后,调用了 go

在 go 函数里,首先会获取到需要执行的 bof 文件,然后对其进行解析

在其中他会获取执行函数,默认执行的函数是 go

这里就可以自己实现这个函数,让名字按照自己的想法来走

之后会对一些关键的位置进行解析,OBJ 实际上就是编译后但未链接的目标文件,这里就是把一些关键的节都取出来

然后接着就进行了任务的构建和发送,在构建的时候就将关键的信息都做成了一段数据,并不是将整个 OBJ 文件直接发送过去

最后一个放入的是参数,在我们当前这个 BOF 功能中,参数就是 beacon 的 payload,用于 BypassUAC 之后直接上线的

再结合之前的 DotNet 的操作,可以发现,参数是非常重要的,也是非常便于扩展的,我们可以定制自己想要的方式,然后将其他的内容通过参数传递过去,只需要在接受的时候进行处理就好了,后期的扩展性是很好的

0x02 BOF功能执行

这里就不跟了,任务号是 100,感兴趣的可以去看看

其中所使用的技术,有很多文章和开源代码了,直接参照这些会更舒服一点

直接来看 COFFLoader 就可以了

https://www.trustedsec.com/blog/coffloader-building-your-own-in-memory-loader-or-how-to-run-bofs/

https://github.com/trustedsec/COFFLoader

WBGlIl 的文章也是非常好的参考

https://wbglil.gitbook.io/cobalt-strike/cobalt-strike-yuan-li-jie-shao/untitled-3

0x03 写在最后

虽然这三种执行方式的细节点都直接略过了,实际上它们中间能够进行的修改操作还是可以有很多的,有一些细节是可以再优化一下了,不过整体来说,CS 是真的强,整体的代码规划和设计非常的完善,要在上面新增一些功能或者做一些改动都是非常方便的。

CobaltStrike逆向学习系列(15):CS功能分析-BOF的更多相关文章

  1. CobaltStrike逆向学习系列(14):CS功能分析-DotNet

    这是[信安成长计划]的第 14 篇文章 0x00 目录 0x01 DotNet功能分析 0x02 DotNet功能执行 0x03 写在最后 在上两篇文章中,讲述了 CS 中的一种功能执行方式 RDI, ...

  2. CobaltStrike逆向学习系列(1):CS 登陆通信流程分析

    这是[信安成长计划]的第 1 篇文章 关注微信公众号[信安成长计划][SecSource] 0x00 目录 0x01 密码校验 0x02 aggressor.authenticate 0x03 agg ...

  3. CobaltStrike逆向学习系列(11):自实现 Beacon 检测工具

    这是[信安成长计划]的第 11 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 检测原理 0x02 检测方案 0x03 存在的问题 0x04 解决方案 0x05 示例代码 0x06 ...

  4. CobaltStrike逆向学习系列(10):TeamServer 启动流程分析

    这是[信安成长计划]的第 10 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 基本校验与解析 0x02 初始化 0x03 启动 Listeners 在之前的分析中,都是针对 Cob ...

  5. CobaltStrike逆向学习系列(2):Stageless Beacon 生成流程分析

    这是[信安成长计划]的第 2 篇文章 关注微信公众号 [信安成长计划] 0x00 目录 0x01 Patch Beacon 0x02 Patch Loader 0x03 文件对比 0x04 流程图 C ...

  6. CobaltStrike逆向学习系列(12):RDI 任务发布流程分析

    这是[信安成长计划]的第 12 篇文章 0x00 目录 0x01 任务构建 0x02 结果处理 0x03 功能 DLL 分析 之前的分析都是针对整个 CS 的框架来进行的,但是功能也是整个 C2 中相 ...

  7. CobaltStrike逆向学习系列(7):Controller 任务发布流程分析

    这是[信安成长计划]的第 7 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Controller->TeamServer 0x02 TeamServer->Beacon ...

  8. CobaltStrike逆向学习系列(6):Beacon sleep_mask 分析

    这是[信安成长计划]的第 6 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 C2Profile 分析 0x02 set userwx "true" 0x03 s ...

  9. CobaltStrike逆向学习系列(3):Beacon C2Profile 解析

    这是[信安成长计划]的第 3 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Controller 端分析 0x02 Beacon 端分析 0x03 展示图 在上一篇文章中完成了 S ...

随机推荐

  1. 使用jadx反编译 调试“XX值得买”APP获取接口签名key(一)

    闲来无事,想抓取一下"XX值得买"上排行榜的即时数据,按照通用方法 安装夜神模拟器 新增android 5.0版模拟器 安装xposed框架 安装JustTrustMe.apk 打 ...

  2. 《剑指offer》面试题42. 连续子数组的最大和

    问题描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4 ...

  3. 2022年最新黑苹果monterey安装efi分享

    最新版本monterey 12.1 安装. 配置: 名称 型号 备注 主板 Gigabyte Z490M Gaming X   内存 威刚万紫千红DDR4 2666 16G x 2 两条16G  插2 ...

  4. 返回值Object-注解驱动作用

    返回值Object 两个常用实现类 StringHttpMessageConverterhe:负责读取字符串格式的数据和写出字符串格式的数据 MappingJackson2HttpMessageCon ...

  5. LNMP架构搭建

    目录 一:LNMP架构简介 1.Nginx与uwsgi 二:django框架+python 1.创建用户 2.安装依赖包 3.安装uwsgi和django 4.测试python 5.创建django项 ...

  6. Vue之JavaScript基础(闭包与原型链)

    闭包 定义:能够访问另一个函数作用域的变量的函数. 作用:可以通过闭包,设计私有变量及方法 实例: function outer() { var a = '变量1' var inner = funct ...

  7. 如何美化 Matplotlib 3D坐标系

    前言 ~mpl_toolkits.mplot3d 生成的3D坐标系背景色是灰色的,刻度线也向内延伸了,如果搭配上其他白色背景的 2D 图,看起来很奇怪,比如下面这张图: 网上有一些办法可以将3D坐标区 ...

  8. ApacheCN Golang 译文集 20211025 更新

    Go 云原生编程 零.前言 一.现代微服务架构 二.使用 RESTAPI 构建微服务 三.保护微服务 四.使用消息队列的异步微服务架构 五.使用 React 构建前端 六.在容器中部署应用 七.AWS ...

  9. shell 的here document 用法 (cat << EOF) (转)

    什么是Here Document Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here Docu ...

  10. laravel中observe不能监听到updated事件原因

    //这种方式不行Student::where('id', $request->student_id)->update($student); $findStudent = Student:: ...