吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6473|回复: 11
收起左侧

[PC样本分析] Cobalt Strike剖析及免杀系列(一)cs原始壳分析

  [复制链接]
GalaXY403 发表于 2022-3-21 11:12
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
今儿砸门就随便搞点cs的artifact马的壳逆向玩玩吧
首先打开cs生成一个原始exe马
1.png
生成完马在虚拟机里od打开做下动态分析
2.png
中途win10的吾爱破解机子更新坏了我又重新配了个win7的破解机子,不过无伤大雅。
打开文件进入入口点
3.png
打开文件后先不要着急分析,首先看下这个pe文件的整体结构和各地址段位置,对于病毒木马的逆向分析着重关注exe的输入表信息,还有异常段信息,还有数据段位置。
4.png
首先看到位置信息知道代码没做重定向处理,一般exe的位置都会在00400000加载,如果加载位置不是这个,那么看pe头中对应的加载基址
基址的位置在pe头的image_option_header中的imagebase
5.png
可以看图中信息也可以在pe文件中按偏移一点一点找,也可以使用windbg的内存查看指令看,不做过多的解释了。
继续这个重定向话题往下聊,如果看到基址偏移与文件的pe头信息不匹配那么病毒木马就一定会修改重定位表信息,所以需要提前打个预防针,如果看到基址信息不是平常熟悉的00400000就得注意重定位段reloc中的基址偏移信息,并且自己在写马的时候也需要注意一些pe文件上的细节,在编译完成后重新修改pe机器码的前提下,如果重定向的话没有修改重定向表可能也会导致之前被编译的pe文件运行失败,这也是维护程序的健壮性的一些细节,希望能注意。
从大局往里面看,再看有没有异常的段,就是些自定义的段,并且看下有没有使用rwx三种权限或者rx权限,反正着重看下有没有执行权限,不过基本一些比较好的壳不太会把马的位置这么快就暴露。
6.png
就是看下访问这里,并且在动态是也着重关注每一步执行的访问权限变化。
然后再看每个段信息,包括地址与段含义,着重输入表。
再就是一些dll,和调用函数信息,静态文件就可以查看,使用IDA也可以看比较清晰的结构,不过可能不是真正的所有调用函数,看经验的判断吧
7.png
8.png
导入表的int信息也是在pe头查看,看静态的调用信息主要还是给自己打个预防针,看下pe文件的总体结构,像cs的原生exe马中connectnamedpipe等一些函数都暴露了出来,还是挺容易被看出来的
9.png
这些命名管道的通信在cs源码中也会体现,这篇文章中也是单独对exe马进行分析利弊,所以源码也是提一嘴
10.png
关于cs源码这里不做过多赘述

关于逆向我们大可不必直接对着汇编看,我的习惯是先在ida里反编译一下,了解下整个文件的逻辑结构,然后再进入到od汇编调试,而且这种exe马绝大多数的shellcode做了加密,需要动态中解密。
了解了文件的整体属性后,我们进入ida进入反编译(新款的ida7.7免费版仅带有64位反编译,今天我们使用的是32位)
首先进入到ida找到main函数的位置
11.png
入口点做一些c运行库初始化操作,这里不再赘述
12.png
找到main函数位置后在od中对main函数做断点处理,od中初始断点不一定停在入口点和main函数中
像这个exe马是直接停在了tls回调函数中
13.png
至于什么函数的判断在ida反编译中查看
14.png
直接进入main函数中
15.png
对于软件的逆向分析我比较喜欢先使用ida做下逻辑梳理,然后需要啥动态信息就到od中去打断点、找位置、看信息。
首先看到main函数中第一个执行函数
16.png
首先前两个for循环做了一个执行函数指针的操作
进入函数指针的位置
17.png
查看sub40210发现是一个dll的一段操作,先放下不看进入到第二个函数中
18.png
继续跟进
19.png
发现了dllonexit和onexit等系统api,对于进程退出注册函数,可以判断再main函数中的第一个函数还是做了对进程各个属性的更新操作
接下来返回到main函数,再次进入到第二个函数
20.png
首先一个获取执行时间的gettickcount可以不用管,后面往全局变量buffer中输入标识,这个用作与cs服务端通信使用,先不用管
看到一个线程函数,还有下面一个函数,再次进入线程函数
21.png
发现了一个全局变量地址和一个size,我们可以先查看全局变量内容,也可以直接进入函数中先看下,我这边是直接进入到数据段查看内容
22.png
往下还有很长的一段数据没有截图,可以看到一段非常长的8位数据数组,这个可以做下初步推断为shellcode,也就是壳里封装的马,但是不确定,先返回到函数中跟进。
23.png
可以看到是一段命名管道操作,往里面写入shellcode,因为线程的缘故所以推断下面会有一个函数接收管道中的数据,还是先返回看线程函数后面的一个函数内容
24.png
25.png
一段sleep函数可以确定这个函数与线程函数是对应的输入输出操作
进入while的第一个函数
26.png
可以看到是往函数的第一个参数读取管道操作
27.png
经过前面看,这个第一个参数是申请的一段内存空间
接下来进入while后面的第二个函数
28.png
典型的解密操作,这下就可以正式判断前面往命名管道中写入的就是加密后的shellcode,然后再主线程中读取并解密后又来一个线程执行startaddress。
总体文件逻辑看完这边直接步入调试,我们的目的是为了找到解密完的数据,可以直接在解密函数执行完设断点,这里为了方便我直接把文件执行完,然后进入到动态申请的内存地址查看
首先先找到申请的地址空间位置
29.png
找到v3这个变量的内容
30.png
找到4015b5位置,并找到v3
这段virtualalloc就是申请的位置,然后返回在eax寄存器中的内容就是动态申请到的内存地址,我们到od中在4015b5打下断点
31.png
可以看到返回在eax中的位置为00020000
继续执行完整个进程做完解密操作,再在反汇编窗口跳转到shellcode位置
32.png
这下可以看到完整的shellcode了
33.png
这里是cs生成的payload可以查看与od中的重合了,这就是对于这种比较简单的payload壳整个解密过程。
这里对于stager的分析就下次再进行分享吧,今天就先分析原生的cs exe马。

image.png
image.png

免费评分

参与人数 5威望 +1 吾爱币 +23 热心值 +4 收起 理由
Passacaglia11 + 1 + 1 热心回复!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Dtdfd + 1 用心讨论,共获提升!
duck007 + 1 热心回复!
hexiaomo + 1 + 1 热心回复!

查看全部评分

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

蓝纹鲸 发表于 2022-4-12 23:39
GalaXY403 发表于 2022-3-21 14:40
是,但是基本刚出破解的就来了。

在哪里找破解的,github还是哪里呀?
暮光之城 发表于 2022-3-21 12:47
ren619818859 发表于 2022-3-21 13:38
 楼主| GalaXY403 发表于 2022-3-21 14:40

是,但是基本刚出破解的就来了。
 楼主| GalaXY403 发表于 2022-3-21 14:42

被我删了哈哈哈
求知者 发表于 2022-3-22 17:40
大佬6666
 楼主| GalaXY403 发表于 2022-3-22 17:55
这个只是cs原始马的壳部分,后面动态解码出来的payload在系列(三)里,需要的可以继续看下
 楼主| GalaXY403 发表于 2022-4-13 10:48
蓝纹鲸 发表于 2022-4-12 23:39
在哪里找破解的,github还是哪里呀?

朋友互发资源
w759003376 发表于 2022-4-13 21:13
尽管是个小白,但是个人觉得,还是写的挺好的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-29 20:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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