这是[信安成长计划]的第 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. leetcode 83. 删除排序链表中的重复元素 及 82. 删除排序链表中的重复元素 II

    83. 删除排序链表中的重复元素 问题描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: ...

  2. Android Sensor.TYPE_STEP_COUNTER 计步器传感器 步数统计

    注意:使用 计步器传感器 Sensor.TYPE_STEP_COUNTER 获取步数前需要手机支持该传感器 1.学习资料 1.1 SENSOR.TYPE_STEP_COUNTER 地址:开发者文档 翻 ...

  3. 极客大挑战2019 http

    极客大挑战 http referer 请求头 xff 1.查看源码,发现secret.php 2.提示要把来源改成Sycsecret.buuoj.cn,抓包,添加Referer Referer:htt ...

  4. T-SQL的存储过程

    1.简介 存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时 ...

  5. 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析

    设计背景 消息中间件的本身定义来考虑,应该尽量减少对于外部第三方中间件的依赖.一般来说依赖的外部系统越多,也会使得本身的设计越复杂,采用文件系统作为消息存储的方式. RocketMQ存储机制 消息中间 ...

  6. ansible command和shell的区别

    1.command模块不支持管道符和变量等,如果要使用这些,需要shell模块. 2.在使用ansible中的时候,默认的模块是-m command,从而模块的参数不需要填写,直接使用即可

  7. MySQL运维开发之路

    MySql h1 { color: rgba(0, 60, 128, 1); text-align: center } h1:hover { color: rgba(0, 255, 111, 1) } ...

  8. rsync.sh

    #!/bin/bash file1=`du -sm /var/www/vhosts/|awk '{print $1}'` ps=`ps -C rsync --no-header|wc -l` if [ ...

  9. Iceberg学习日记(1) 定位两个线上Iceberg查不到文件的问题

    前言 Iceberg是我们去年年底(2020)开始调研,目前上线了130多张表.主要用于流量日志清洗,数据报表,推荐特征基础数据.至今为也算是积累了一些使用及定位问题经验. 这篇文章会介绍两个线上Ic ...

  10. 解决matplotlib中文不显示问题

    在导入库时添加如下几行代码 from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcPa ...