Qt免杀样本分析

admin 2025年4月6日23:49:12评论1 views字数 2752阅读9分10秒阅读模式

初步研判

SHA256:9090807bfc569bc8dd42941841e296745e8eb18b208942b3c826b42b97ea67ff

我们可以看到引擎0检出,是个免杀样本,不过通过微步云沙箱的行为分析,已经被判为恶意

Qt免杀样本分析

行为分析

进程行为

可以看到demo显示调用了winver获取了主机的基本信息,然后调起taskmgr,以其身份再次调用自己,可能是一个提权行为

Qt免杀样本分析

文件行为

没有文件被写入,但是原文件运行完就没了

Qt免杀样本分析

注册表行为

发现多了一个正常的文件的计划任务,启动权限还是SYSTEM,启动时间每两小时一次

Qt免杀样本分析

文件还带dll,一看就是白加黑

Qt免杀样本分析

网络行为

未检出

详细分析

主程序逻辑

主文件是一个pe文件

直接对这个qt样本进行动态调试十分困难,不仅仅是因为采用了Qt框架,还有就是采用PoolParty timer模块,利用内置计时器线程池任务执行shellcode,所以想要一步一步走到shellcode是非常困难的,后续我们使用api断点的方式进行分析

poolparty项目地址

Qt免杀样本分析

我们在virtualalloc下断就可以发现程序在内存中载入了一个pe文件

Qt免杀样本分析

这个时候查看调用堆栈就会发现被破坏了,不知道主文件的逻辑哪里调用的shellcode,但是我么可以发现shellcode段的调用还是能看到的,这个时候我们就需要回溯一下了,第一次进入shellcode是什么时候,大概率也是第一个使用virtuallalloc的位置

Qt免杀样本分析

我们回溯一下,可以发现,第一次载入了一段shellcode,我们把它单独拿出来

Qt免杀样本分析

直接运行shellcode会连接如下ip,不过根据X情报社区的情报,不像是恶意的c2,暂时保留

Qt免杀样本分析
Qt免杀样本分析

apihash的味道扑面而来

Qt免杀样本分析

我们在主程序动调查看堆栈可以看到调用堆栈

Qt免杀样本分析

shellcode逻辑如图所示

Qt免杀样本分析

第一段shellcode中创建内存对一段数据的魔改RC4解密,key为数字12345

Qt免杀样本分析
Qt免杀样本分析

这里出来的就是上方的dll了

后续shellcode中进行内存对齐并跳转入口段做初始化

然后进入第二个函数

后续找到run函数

Qt免杀样本分析最后调用执行dll中的run函数

Qt免杀样本分析

dll逻辑

逻辑如图所示,获取了主程序的名称,如果不是winlogon就进进入if内,winlogon是用于登录相关的操作的,如果文件名包含winlogon.exe就进入sub_18003c10,这里猜测内部应该是用于常规的权限维持,如果不包含就相当于是初始化,如果是管理员权限就进入sub_180004240不是就进入sub_180001000。

Qt免杀样本分析

非管理员下运行

因为sub_180001000比较短,所以直接跳转看看这个

首先是拼接出了如下路径

C:windowssystem32winver.exe

然后凑出了类似UUID的值,貌似是利用RPC通信去做提权操作

Qt免杀样本分析

用RPCview可以看到是这样一个进程

Qt免杀样本分析

后续又调用taskmgr.exe

Qt免杀样本分析利用taskmgr.exe身份使用CreateProcessAsUserW创建创建子线程,猜测是用于提权的Qt免杀样本分析这样就会有一个是管理员权限的程序,这时候我们回到dll调用位置,以admin身份进入

管理员下运行

首先是赋值了两端code,一段是当前这段shellcode,另一段是RC4未解密的dll数据

Qt免杀样本分析

紧接着有复制了一段数据,看着有点像之前RC4解密前的dll

Qt免杀样本分析

然后遍历进程查看是否有winlogon.exe,去获取他的进程号

Qt免杀样本分析

然后把shellcode写入进程

Qt免杀样本分析

利用ALPC完成权限维持

Qt免杀样本分析

这个时候我们就能判断出该进程把shellcode和加密的dll全部写入了winlogon.exe中,然后让shellcode在winlogon中执行,实现行为隐藏。

这个时候我们再回到最初的位置

winlogon.exe内运行

进入后又是一段魔改RC4的解密,解密出的内容居然是一个IP?

Qt免杀样本分析非常可疑,这个ip曾经被用于银狐

Qt免杀样本分析之后打算创建如下exe并写入数据

C:Program FilesCommon FilesSystemOverwolf.exeQt免杀样本分析

貌似是个白文件,可能是白加黑把,我们继续往下看看

Qt免杀样本分析

然后在同目录下创建"teamspeak_control.dll"和teamspeak_control.bin文件

Qt免杀样本分析

然后起了一个线程执行shellcode

Qt免杀样本分析

我们dump出来单独看看,发现就和上面一样的shellcode,执行dll中的run函数,这个放放

Qt免杀样本分析

流程之后解密获取了计划任务的COM组件CLSID和riid并初始化

Qt免杀样本分析
Qt免杀样本分析

然后就是利用COM执行命令了

连接并获取MicrosoftWindows目录

?Connect@?QITaskService@@TaskServiceImpl@@UEAAJUtagVARIANT@@000@Z

?GetFolder@?QITaskService@@TaskServiceImpl@@UEAAJPEAGPEAPEAUITaskFolder@@@Z

...

结果就是给白加黑创建了计划任务

Qt免杀样本分析
Qt免杀样本分析

最后删除自己

Qt免杀样本分析

至此,关于Qt部分的逻辑就结束了

白加黑分析

经过简单diff,发现他把dll中所有的导出函数内容都设置为了同一个,所以只要随便调用一个就会触发黑行为。。

但是直接在函数下断点无法定位到,我们发现在运行代码后文件被删除了,所以我们可以对文件删除也就是DeleteFileW进行下断,然后回溯找源头

Qt免杀样本分析

好像有点似曾相识,和我们之前调用dll一样

我们像之前一样在virtualAlloc位置下断,发现堆栈上的并非是导出函数,而是dllentry中创建的线程,不过这都不重要

Qt免杀样本分析

把同目录下的同名bin文件读取进来了

Qt免杀样本分析

然后又是解密shellcode并执行dll中的逻辑了,这里就不过多赘述了

Qt免杀样本分析

至此,逻辑基本成型

逻辑概述

主程序(Qt)利用poolparty timer创建并调用shellcode,shellcode调用dll run函数,run函数给dll提权重新加载,提权后把shellcode注入winlogon.exe,在winlogon.exe中生成白加黑文件并为其创建计划任务(每两小时执行一次),白加黑文件重复前面所有,不过在run时就不需要提权了,因为计划任务是以SYSTEM身份运行的

Qt免杀样本分析

C2

18.166.104.207

在x情报社区中查询c2可以找到很多同源的样本,而且非常新鲜

木马的类型也被检出,能够帮助我们在初步研判时建立起一个基本框架

转自:https://xz.aliyun.com/news/17498?time__1311=eqUxn7DQG%3DDtGQq0QD%2Fbn%2Brz9qVDAKQx&u_atoken=5f730e0d06c4da61567c562755a9e3ff&u_asig=0a472f5217437437106261706e0033

原文始发于微信公众号(船山信安):Qt免杀样本分析

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

发表评论

匿名网友 填写信息