红队C2数据通信之TLV模型

admin 2025年3月3日20:40:16评论10 views字数 1924阅读6分24秒阅读模式

红队C2数据通信之TLV模型

TLV也即Type-length-value,这种一种具有固定格式的数据通信模型,简称为TLV,我们这里只讲讲在红队C2开发中的使用。

格式

每个TLV数据包结构大概如下图:

红队C2数据通信之TLV模型
其中第一个字节type,指定了这个数据包中所需要传输的数据的类型,你可以自己设定比如0xa,代表string类型,0xb 代表int类型。
第二个字段是一个int类型值,length,指定了数据的长度,当你接收到一个数据包到时候,你要解析获取其中的数据,获取多少呢?这个字段的作用就在这。
第三个字段就是我们的数据本身了,没有额外的标识,这个地方数据一般都是序列化后的数据,比如一个字符串的二进制字节数据。

一般我们如果使用C语言,可以定义一个类似如下的结构体:

structTLV {
uint8_t type;           // 1 字节类型
int length;             // 长度,int 类型
    std::vector<uint8_t> value; // 值,字节数组
TLV(uint8_t t, const std::vector<uint8_t>& v)
        : type(t), length(static_cast<int>(v.size())), value(v) {}
};    // by gpt

应用

C2当中一般在进行命令传输以及结果回显获取中,通过tlv可以很好的规范化数据,一般我们获取被控机器的基本信息,比如获取机器用户名,机器名,ip地址,我们就可以把获取到的数据封装成单个的tlv数据包,再结合起来。

红队C2数据通信之TLV模型
其实像这个地方,你还可以把它再放入到一个更大的TLV数据中,因为我们C2通信有心跳数据,也有命令执行结果的数据,可以把他们分别再放在不同的 TLV 中再加以区分。

使用TLV也同时方便后续的扩展,因为C2开放的本质其实就是开发网络通信,假如你的项目别人接手了,或者说别人想拓展一些功能,但是通信还是沿用你的,使用tlv就很方便易懂,效率也很高,代码可读性啥的都会很好。

使用TLV也完全不会影响通信的加解密,你可以整个数据包加密,也可以对其中的数据字段做加密都是可以的。

rasta-mouse有一个项目,用于提供一种C2通信规范:
https://github.com/rasta-mouse/OST-C2-Spec

这个某种程度上也是TLV的一种应用,将各种任务进行标记独立,并封装在格式化数据包中,这个项目做的比较细化,对每个命令都做了细化单独处理,比如文件的读写删除等等,也可以在此基础上修改,找到符合自己的一种通信规范。

推荐阅读

  • • <a "https:="" href="https://mp.weixin.qq.com/s?__biz=MzkzMDgyMTM1Ng==&mid=2247484968&idx=1&sn=b9ba907250ae13f1fedd2ef2200e9ded&scene=21#wechat_redirect" title="红队研发:编写一个屏幕 Monitor 程序">红队研发:编写一个屏幕 Monitor 程序
  • • <a "https:="" href="https://mp.weixin.qq.com/s?__biz=MzkzMDgyMTM1Ng==&mid=2247484959&idx=1&sn=80aa30e9e097b748ac86ff032e7de6ee&scene=21#wechat_redirect" title="红队开发:让自己的Shellcode实现SMC">红队开发:让自己的Shellcode实现SMC
  • • <a "https:="" href="https://mp.weixin.qq.com/s?__biz=MzkzMDgyMTM1Ng==&mid=2247484931&idx=1&sn=de2469fc2b52e70cd19d357281c98d24&scene=21#wechat_redirect" title="外网露出:新版 CobaltStrike 顶级免杀套件Arsenal kit">外网露出:新版 CobaltStrike 顶级免杀套件Arsenal kit
  • • <a "https:="" href="https://mp.weixin.qq.com/s?__biz=MzkzMDgyMTM1Ng==&mid=2247484847&idx=1&sn=567bad022144ae165398c9632dcbc030&scene=21#wechat_redirect" title="部署属于自己的EDR对抗环境原创">部署属于自己的EDR对抗环境原创

原文始发于微信公众号(黑晶):红队C2数据通信之TLV模型

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月3日20:40:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   红队C2数据通信之TLV模型https://cn-sec.com/archives/3791329.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息