1.前言
这次的两个样本来自朋友的分享,本来这两个是去年四五月份就分析完了,正好护网的时候,但是因为涉及一些原因没有发出来。
虽然当时这样本被送来才过了两三天,但是当时分析的时候插件的加载也被关了,没获取到也是一个遗憾吧。
当初分析的时候以为这两个样本是brc4的,因为实在有些功能点还有隐匿的点很像,但是当时应该是呆在qax的,那会儿内网终端部门发了个文章讲的也是这个样本貌似是cs的变种,但是这些个内容实在和cs不太能扯上关系,勉强算作cs的loader加载器吧,整体的逻辑还是正常C2的插件化功能,还是当作C2分析就好。
小米su7 ultra很帅~~祝卖爆,哈哈哈哈哈哈。
2.一些过程的记录
后面拿到的样本像是一个brc4 1.8+,这一篇是不知道几版本的那个,看了下brc4官网的BLOGS,比对一下更新的内容,按功能点来看应该不是最新或者1.6+。
1.6版本加入了curl命令
中文如下
这个样本的加载阶段是没做什么反调试操作的
前置是win c msvc的运行时,但是整体crt的结构改了不少,去掉了一些没用的加了一些初始化内容及反调内容
正常的运行时:
样本的运行时:(部分函数重命名了)
第一个函数做了初始化url释放的操作,释放的内容如下,其中做了反ida pro操作
反调试的点在进入的第二层函数中
只看f5 ida无法识别对于rsp替换成通用寄存器
后续操作使用rsp与rbp进行数据释放地址的操作
释放内容如下
000000ADF87BF9E400 00 00 00 00 00 00 00 00 00 00 00 55 73 65 72............User
000000ADF87BF9F433 32 2E 64 6C 6C 00 00 00 00 00 00 57 69 6E 6932.dll......Wini
000000ADF87BFA046E 65 74 2E 64 6C 6C 00 00 00 00 00 68 00 74 00net.dll.....h.t.
000000ADF87BFA1474 00 70 00 73 00 3A 00 2F 00 2F 00 6C 00 6F 00t.p.s.:././.l.o.
000000ADF87BFA2467 00 2D 00 31 00 33 00 30 00 37 00 36 00 32 00g.-.1.3.0.7.6.2.
000000ADF87BFA3433 00 ** 00 30 00 35 00 2E 00 63 00 6F 00 ** 003.*.0.5...c.o.*.
000000ADF87BFA442E 00 61 00 70 00 2D 00 73 00 68 00 61 00 ** 00..a.p.-.s.h.a.*.
000000ADF87BFA5467 00 68 00 61 00 69 00 2E 00 6D 00 79 00 71 00g.h.a.i...m.y.q.
000000ADF87BFA6463 00 6C 00 6F 00 75 00 64 00 2E 00 63 00 6F 00c.l.o.u.d...c.o.
000000ADF87BFA746D 00 2F 00 65 00 72 00 72 00 6F 00 72 00 2F 00m./.e.r.r.o.r./.
000000ADF87BFA8464 00 75 00 6D 00 70 00 68 00 61 00 73 00 68 00d.u.m.p.h.a.s.h.
用的是腾讯云的存储桶做数据交换
初始化url后和下面的操作执行都会触发对抗反调
这边的反调策略用到了一个int 0x29
这里触发异常
触发异常的前置点
释放一个ff210200不知道干啥的
Enter
进入这四个函数,如果返回true或 rbx==rdi则ret
Rbx为这四个函数位置,上面的是rdi的值,也就是执行完这四个函数
初始化loadlibrary调用load两个dll
再寻找函数
上面初始化的几个函数分别在rbx、rsi、rdi、r14、rax
19a8为通过hash获取指定函数并放入rbx、rbp。同上
Enumwindows回调结束后对比所有窗口上中的getwindowtexta获取的内容,比对如果有内容就inc自加在栈中,代码如下,灰色部分是自加操作,前面是之前提过的调用
遍历完所有窗口后得到的值为6
这里-7与2a做比较
这里是当前样本中的明文virtualalloc
做了一个是反沙箱的操作,如果小于就不进入virtualalloc与net连接
Openurl:https://log-**********************************.com/error/dumphash
(加些星号去下敏感数据)
这个函数先进入 0000020CCC8FC78F
首先说下这个反射加载的是一个混淆过的pe文件,pe头如下
通过明文的PE判断可能是一个pe文件,但是这里并不能被识别,做了下pe格式的校验对齐
去掉了前三个字节,并且查看后面的代码,也可以看到对前三个字节做了pass
Syscall调用顺序
申请内存 释放payload 修改内存页状态
这里内存布局中显示当前页没有可执行权限,但是执行不会报异常
释放的第二个内存块没有pe头,反射入口在第一次样本中的loaderflags中存储
代码如下
service-8du**xl5-**********.sh.tencentapigw.com (做了敏感数据处理)
可惜是个云函数
原文始发于微信公众号(CrackME安全):BRC4?or CS新加载器?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论