CobaltStrike分析-beacon 解析

VSole2023-06-05 09:03:01

一、beacon loader

1.1 静态分析

IDA 逆向,在入口处很容易能够找到 main 函数的地址 修改前是403040。

重点关注sub_4017F8()。

基于一些特征随机利用格式化字符串生成了一个字符串buffer, 同时创建了一个新的线程,执行函数sub_4016E6。

直接看sub_401630。

以上面生成的buffer为名字创建了一个命名管道,然后进行判断,如果命名管道创建成功,ConnectNamedPipe函数将等待客户端连接到管道。如果成功连接到管道, 使用WriteFile函数将shellcode数据写入已连接的命名管道。如果写入成功,则更新指针lpBuffer和剩余要写入的字节数nNumberOfBytesToWrite。其中 lpbuffer是将要写入的数据指针,&dword_404020[5]

返回sub_4017F8返回的是一个函数sub_4017A6(0i64)。

开辟了一块内存,然后等待sub_401704函数执行返回一个非0值。

sub_401704主要是从FileA也就是前面创建的命名管道中读取数据,然后写入lpBuffer指向的位置,也就是说 从FileA中读取内容,然后写入v0。

然后调用sub_401595,修改一下数据类型之后有:

利用a3所在的密钥循环解密shellcode,然后创建线程执行。

至此,loader所做的事已经十分清晰了:

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

2.将shellcode写入命名管道

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

4.执行shellcode

其跳转顺序和参数如下所示:

 

接下来动态分析一下。

1.2 动态分析

由于cobaltstrike并没有地址空间随机化,每次都是在固定位置加载的,所以在上面静态分析的基础上很容易下断动态分析。

创建命令管道。

![image-20230424224308896]

解密过程:

解密后的shellcode写入这里:

二、beacon 执行

jump rcx之后跳转到shellcode执行 可以将其dump下来,也就是beacon.dll, Cobaltstrike 的 payload 许多都是和msf相似的,因此如果想要深入的理解CS的相关原理,推荐同时阅读msf的相关源码。

使用IDA分析

检查导出函数:

第一个是反射式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的绕过按照专题进行分析。

三、总结

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

beaconpayload
本作品采用《CC 协议》,转载必须注明作者和本文链接
在某次HW行动中对一个学校的资产进行渗透测试,在其一个智慧校园管理系统发现了一处sql注入。因为网站没有waf,所以直接拿sqlmap跑:可以跑出管理员的账号,并且拿到了os-shell。因为os-shell不方便,所以想弹个cs的shell或者上个webshell。但是当时局限于直接在web目录写shell,还有powershell反弹shell。
“不要因为没有掌声而丢弃自己的梦想”C2介绍命令与控制是指在单个或一组目标受害者主机上建立和维持对植入工具的控制的过程。C2框架通常提供借助某个通信协议与植入工具进行通信的能力,向受害者系统发出命令,并且在C2服务器上接收这些命令的输出,使攻击者实现物理访问或直接的虚拟访问。命令与控制协议依赖于每个受控植入工具和C2服务器之间的同步或异步通信信道。
渗透测试工具收集整理
如果成功连接到管道, 使用WriteFile函数将shellcode数据写入已连接的命名管道。使用IDA分析检查导出函数:第一个是反射式DLL注入,限于篇幅,在本篇中不展开分析第二个是DLL的入口函数。在后续的文章中,会根据检测特征和csprofile的绕过按照专题进行分析。同时,大部分的CS检测特征都是在此。而在后续的文章分析中,将会着重的分析CS beacon中使用到的几种DLL注入方式;beacon config的检测;同时结合CS profile 的配置,研究一下CS的对抗检测方式。
进程注入 OPSEC tips
2021-11-18 22:14:52
这篇文章将分析最经典的注入方法:VirtualAllocExWriteProcessMemoryCreate
CS 域前置+流量混淆
2021-10-14 06:58:22
域前置(Domain Fronting)被称为域前端网络攻击技术,是一种隐藏连接真实端点来规避互联网审查的技术。这种技术被安全人员多用来隐藏 Metasploit,Cobalt Strike 等团队控制服务器流量, 以此来一定程度绕过检查器或防火墙检测的技术,国内外如:Amazon ,Google,Akamai 等大型厂商都会提供一些域前端技术服务。
#默认情况下,payload_inject执行之后会在本地产生一个新的handler,由于已经有了一个不需要再产生一个,所以这里设置为true. #这里是当前获得的session的id. 可以看到 cs 成功接收到 shell右键 Interact 调出 beacon 界面,net view 查看当前域中计算机列表,然后执行 shell 命令前面加上 shell 就可以了,例如 shell ipconfig四、制作木马首先创建监听器用于木马回连,Host 为 cs 服务端的 ipAttacks->Packages->Windows Executable?需要派生的目标右击选择Spawn,然后创建一个?
SMB Beacon 与命名管道在 Windows 中,无管理员权限的情况下,即无法添加白名单。定义特定版本的协议的消息数据包集称为方言。进行身份验证后,用户可以访问服务器上不受共享级别安全性保护的所有共享。
CS的流量行为特征
2022-07-21 13:45:40
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
分享每周看到的有意思的威胁狩猎相关的文章,本人仅做翻译
VSole
网络安全专家