吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8083|回复: 20
收起左侧

[PC样本分析] Cobalt Strike剖析及免杀系列(四)CSbeacon端大马dll详解

  [复制链接]
GalaXY403 发表于 2022-9-6 21:46
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 GalaXY403 于 2022-9-6 21:48 编辑

样本信息:
MD5: 2f330d8eca0bfd3eb074352bbb27dba0
SHA1: c7dc77dbd94d2ea96e8f7a6dfec980478d5d5c6d
SHA256: 6daa192e9726a0a614d10b45ed1cb16c3330e0cee55a8f9bdf7ec8f696b918b4

前面几篇大概已经讲过关于小马payload的分析,关于后面dll的定位不过多赘述,前面定位到payload的virtualalloc函数之后通过返回值确定后面http拿到的dll的地址。
之前的文章说过传送来的dll前面会是一段加密,来解密后面的dll内容,下面是alloc申请到的首地址,也就是dll前面的加密程序。
1.jpg
顺着指令流往下走就ok,来到解密部分,下断点运行
2.jpg
前面解密不多说了,直接下到dllmain入口的断点
3.jpg
往上找pe标志mz
4.jpg
定位到复制后面数据到010editor中,生成新的pe文件,此文件就是cs的dll大马。
   5.jpg
   6.jpg
Dll大马定位就简略说这些,后面就直接IDA对源码分析,这里命名为k.dll。
首先分析大马内容,主模块每个case应该每个都会有网络请求,所以ida导入表定位httprequest函数。
7.jpg
查看request函数的交叉访问
8.jpg
查看最多分分支模块,模块上下文大概就是大马的主要业务部分,来到下面switch/case内容,大概是101条策略。
   9.jpg
10.jpg

继续做交叉,返回到调用函数,因为对switch做判断所以,大概率是cs控制端发的控制请求,所以注意第三个参数为switch判断内容
11.jpg
继续向上分析
12.jpg
这边上面部分函数就是cs控制端初始化switchflag分支条件了
13.jpg
后面就是src就是前面switchflag分支标志的网络请求模块, 这次的文章就主要挑前面主机通信过程说一下,后面beacon端的行为动作一百多个就不去一一做分析了
14.jpg
开始代码dll判断内存块查看先不去管,直接到sub_100131b,前面说了里面是有一个cs服务器交互模块的,我们看前面
15.jpg
刚开始的几个函数初始化buffer,一个是send的一个是recv的,由于这边的cs我们用的httplistener所以这次的分析只针对http传送后面dns类似但使用子域名的方式传送,对于buffer,cs使用数组,0号位置是buffer地址,1号位置是2参数位置截断地址,后面分别是buffer的size和截断的size
来到下面
16.jpg
这部分函数主要是初始化一些cs控制端的属性特征,像端口,url,还有一些其他的运行过程中的配置属性。
17.jpg
下面一直到91都是对属性的一些初始化
91以后是beacon与cs控制端的命令交互环节,也就是cs beacon>后面输入的命令执行循环,循环过程sleep心跳作为while条件然后一些基础代码就不说了,这边的重点来到cs 通信过程。
18.jpg
这些前面的第一个换行块函数做buffer初始化,然后下面注释网络连接的是初始化网络
来到103进入函数
19.jpg
一段前置函数,深度继续到HttpSend
20.jpg
21.jpg
这段是通信过程的关键代码,这边cs 的http还是像shellcode的网络请求相同,使用内置http请求路径然后通过post请求体携带数据。
这边对cs源码还没做逆向分析,不过根据beacon的通讯逻辑大概判断cs控制端将数据写入文件,然后beacon通过读取服务器上的文件内容作为命令传送
再通过tcp的socket recv函数作为线程wait等待服务器send继续执行,下面是recv的部分代码
22.jpg
这边参数的buffer是eax寄存器的,不能只分析逆向代码,来到汇编部分
23.jpg
可以看到eax是赋值了全局变量,也就是我这边改名的Buffer_RecvData,但是针对这个Buffer做交叉调用查看并没有哪个函数使用
24.jpg
所以大概的通讯过程大概如下
25.jpg
然后下面的sleep心跳在141行
26.jpg
进入就是这边的心跳判断
27.jpg
这个心跳变量是个全局变量,所以直接查看交叉调用,可以看到另一个分支就是我们cs经常用的sleep 5 这个命令了
28.jpg
也就是大马判断的case3
29.jpg
30.jpg
然后通信大概流程就差不多这样了,然后样本文件还有ida的分析文件放在下面自己拿
链接:https://pan.baidu.com/s/1QZDRVGv815iH7DhaPR0M7g
提取码:7vu4

免费评分

参与人数 8吾爱币 +14 热心值 +7 收起 理由
notifier + 1 + 1 谢谢@Thanks!
快乐的小跳蛙 + 1 + 1 好强
xiaohanjss + 1 + 1 谢谢@Thanks!
ddddhm + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
woshicp + 1 + 1 热心回复!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lgc81034 + 1 谢谢@Thanks!
wenzidancer + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

czymxd 发表于 2022-9-6 22:00
看起来好牛马一个
zero57 发表于 2022-9-7 00:31
楼主可以出一期修改CS特征的帖子不,跪拜学习学习!!
 楼主| GalaXY403 发表于 2022-9-7 09:32
zero57 发表于 2022-9-7 00:31
楼主可以出一期修改CS特征的帖子不,跪拜学习学习!!

后面有时间的话动态静态特征修改都会出一遍
Allen666 发表于 2022-9-6 22:55
感谢大佬,好用
tek2y 发表于 2022-9-6 22:58
学习了,感谢楼主
中原一点红 发表于 2022-9-7 21:16
虽然看不懂,不过还是支持下
感谢分享
a3322a 发表于 2022-9-8 06:22
感谢分享,学习了
tanghengvip 发表于 2022-9-8 16:19
现在免杀的花样层出不穷了
seawaycao 发表于 2022-9-9 12:21
谢谢分享!膜拜
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-4 23:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表