CobaltStrike分析-beacon 解析

admin 2024年11月10日21:17:33评论36 views字数 1733阅读5分46秒阅读模式

本篇详细的分析了CS beacon payload的加载过程


beacon loader

1.1 静态分析

IDA 逆向,在入口处很容易能够找到 main 函数的地址 修改前是403040。
CobaltStrike分析-beacon 解析
CobaltStrike分析-beacon 解析
重点关注sub_4017F8()。
CobaltStrike分析-beacon 解析
基于一些特征随机利用格式化字符串生成了一个字符串buffer, 同时创建了一个新的线程,执行函数sub_4016E6。
CobaltStrike分析-beacon 解析
直接看sub_401630。
CobaltStrike分析-beacon 解析
以上面生成的buffer为名字创建了一个命名管道,然后进行判断,如果命名管道创建成功,ConnectNamedPipe函数将等待客户端连接到管道。如果成功连接到管道, 使用WriteFile函数将shellcode数据写入已连接的命名管道。如果写入成功,则更新指针lpBuffer和剩余要写入的字节数nNumberOfBytesToWrite。其中 lpbuffer是将要写入的数据指针,&dword_404020[5]
返回sub_4017F8返回的是一个函数sub_4017A6(0i64)。
CobaltStrike分析-beacon 解析
开辟了一块内存,然后等待sub_401704函数执行返回一个非0值。
CobaltStrike分析-beacon 解析
sub_401704主要是从FileA也就是前面创建的命名管道中读取数据,然后写入lpBuffer指向的位置,也就是说 从FileA中读取内容,然后写入v0。
然后调用sub_401595,修改一下数据类型之后有:
CobaltStrike分析-beacon 解析
利用a3所在的密钥循环解密shellcode,然后创建线程执行。
至此,loader所做的事已经十分清晰了:

1.创建一个命名管道,格式为%c%c%c%c%c%c%c%c%cMSSE-%d-server

2.将shellcode写入命名管道

3.从命名管道中取出shellcode然后和密钥亦或解密

4.执行shellcode

其跳转顺序和参数如下所示:
CobaltStrike分析-beacon 解析
接下来动态分析一下。

1.2 动态分析

由于cobaltstrike并没有地址空间随机化,每次都是在固定位置加载的,所以在上面静态分析的基础上很容易下断动态分析。
创建命令管道。
CobaltStrike分析-beacon 解析
![image-20230424224308896]
解密过程:
CobaltStrike分析-beacon 解析
解密后的shellcode写入这里:
CobaltStrike分析-beacon 解析



beacon 执行

jump rcx之后跳转到shellcode执行 可以将其dump下来,也就是beacon.dll, Cobaltstrike 的 payload 许多都是和msf相似的,因此如果想要深入的理解CS的相关原理,推荐同时阅读msf的相关源码。
CobaltStrike分析-beacon 解析
CobaltStrike分析-beacon 解析
使用IDA分析
检查导出函数:
CobaltStrike分析-beacon 解析
第一个是反射式DLL注入,限于篇幅,在本篇中不展开分析
第二个是DLL的入口函数。
一直跟进到DLLmain,其分析可以参考https://github.com/bestspear/ReBeacon_ForClang,是wbglil在XCon2022分析的议题,slide可以在这里(https://github.com/Mount4in/Security-Conference-Topic/blob/main/2022XCON/Beacon%E5%AE%8C%E6%95%B4%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B%E7%A0%94%E7%A9%B6.pdf)下载。余下内容不再一一详解,如果感兴趣,可以参考鸡哥的文章和wbglil的研究展开分析。在后续的文章中,会根据检测特征和csprofile的绕过按照专题进行分析。
CobaltStrike分析-beacon 解析


总结

本篇主要是总结了一下beacon模式下payload加载的方式,CS马有大量的思路和msf是相似的,因此,在分析的时候可以同时看一看msf相关的资料。在本人第一次分析的时候,花了比较长时间才dump下来beacon的payload。同时,大部分的CS检测特征都是在此。而在后续的文章分析中,将会着重的分析CS beacon中使用到的几种DLL注入方式;beacon config的检测;同时结合CS profile 的配置,研究一下CS的对抗检测方式。

CobaltStrike分析-beacon 解析

看雪ID:安和桥南

https://bbs.kanxue.com/user-home-882195.htm

*本文为看雪论坛优秀文章,由看雪论坛 安和桥南 原创,转载请注明来自看雪社区
CobaltStrike分析-beacon 解析

# 

原文始发于微信公众号(看雪学苑):CobaltStrike分析-beacon 解析

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

发表评论

匿名网友 填写信息