家族简介
TellYouThePass勒索病毒家族最早于2019年3月出现,其热衷于高危漏洞被披露后的短时间内利用1Day漏洞修补的时间差,对暴露于网络上并存在有漏洞的机器发起攻击。
该家族在2023年下半年开始,不断对国内各类OA、财务及Web系统平台发起多轮攻击,同时针对桌面终端和服务器设备,一举成为2023年国内最流行勒索软件家族之一。
其曾经使用过的代表性漏洞有:“永恒之蓝”系列漏洞、Log4j2漏洞、某友NC漏洞、某蝶EAS漏洞、Apache ActiveMQ(CVE-2023-46604)等。
一旦获取攻击成功进入机器,便会投递勒索病毒实施加密,被加密的文件添加后缀名为“.locked”,要求受害者支付一定数量的比特币才能解密文件。
事件描述
近日,腾讯安全云鼎实验室监测到一起针对某财务管理服务的已知漏洞攻击。
经分析发现,攻击者为TellYouThePass勒索病毒,其利用漏洞获取系统命令执行权限,使用无文件攻击执行hta脚本(http://107.xx.xx.195/update.hta),再进一步投递本地提权模块、EDR致盲模块、勒索载荷。
该hta文件于3月21日首次提交,目前已无法从攻击者服务器直接下载。
通过该样本中提取的比特币钱包地址交易记录显示,截止3月27已收获5笔赎金,近9万元。
攻击流程分析
攻击者利用漏洞,获取暴露在公网Web应用服务器的命令执行权限后,通过无文件攻击执行远程恶意脚本,该脚本通过反射加载内置的Mono/.Net字节码,执行核心攻击模块。
EfsPotato.Mshta核心模块集成了一系列[.*]Potato开源提权模块,和一款名为RealBlindingEDR的开源EDR致盲模块。
整个攻击链路中,所有需要释放文件落盘的环节都有白文件、动态加解密等检测对抗行为,所有模块都通过反射加载、系统进程内存注入等方式运行,可谓对抗性十足。
样本技术分析
样本执行的过程中会不断与攻击者服务器进行通信、并报告当前所处的执行阶段,如下流量截图所示:
红框处是通信代码,含义如下:
willenc-efs:EfsPotato本地提权成功
willenc-bild1:释放EDR致盲模块echo_driver.sys
willenc-bild3:释放EDR致盲模块wnBio.sys
willenc-enc:释放加密勒索模块、勒索模块解密程序
整个攻击链起始于一个名为update.hta的恶意脚本,使用Windows内置的mshta.exe(Windows Microsoft HTML Application)执行,恶意脚本不落盘。
该脚本内嵌入一个经过base64编码并序列化的.Net字节码,通过反射加载的方式运行EfsPotato.Mshta攻击模块。
EfsPotato提权,若成功,发送路径包含willenc-efs的报文。
攻击者提权成功后,开始对终端设备上可能存在的EDR安全设备进行致盲,使用开源项目RealBlindingEDR的能力。
具体而言,该项目删除以下6大内核函数注册的回调使EDR失去相关能力:CmRegisterCallback、MiniFilter、ObRegisterCallbacks、PsSetCreateProcessNotifyRoutine(Ex)、PsSetCreateThreadNotifyRoutine(Ex)、PsSetLoadImageNotifyRoutine(Ex)。
首先恶意程序要落盘EDR致盲主程序所需要使用的2个.sys文件,这里的trick点是将PE头中的校验和字段随机化。
这能使得尚未关闭的EDR无法通过标记原项目内sys文件hash的方式,查杀掉即将落盘的sys文件,同时这个修改不影响其携带的合法数字签名,一举两得。
接下来执行loadAsmBin,这里有一个很好的伪装,假装调用合法系统程序rundll32.exe的能力执行DLL,实际上是在rundll32.exe进程的上下文中内注入了exe程序代码,随后创建线程执行代码。
相当于loadAsmBin函数实现了,通过rundll32.exe执行任意代码,规避安全软件的检测。
loadAsmBin函数的关键步骤如下:
1、创建一个新的字节数组 destinationArray,并将随机数据(buffer)和传入的恶意代码(asm)复制到这个数组中。这可能是为了混淆或者避免某些安全检测。
2、使用 CreatePipe创建一个管道,用于重定向 rundll32.exe的标准输出。
3、使用 CreateProcess启动 rundll32.exe 进程。这里传入了 commandLine 参数,它包含了rundll32.exe的路径和要执行的命令行参数(在这个例子中是 "rundll32.exe path 1 clear")。
4、使用 VirtualAllocEx在新创建的rundll32.exe进程的地址空间中分配内存,并将其权限设置为可执行、可读写。
5、使用 WriteProcessMemory将asm中的恶意代码写入到刚刚分配的内存中。
6、使用 CreateRemoteThread在 rundll32.exe进程中创建一个新线程,该线程的起始地址设置为asm代码在目标进程内存中的地址。
到这里,rundll32.exe运行后执行其线程内的EDR致盲主程序,加载已落盘的sys文件:
EDR致盲主程序如下:
EDR致盲操作结束后,攻击者为保险起见,仍然采用进程内动态执行的方式执行勒索模块。
同时将不得不落盘一次的勒索载荷进行加密落盘,用另一个不会引起安全报警的程序将勒索模块在内存中解密,然后动态加载执行。
解密器进行勒索模块解密,随后在内存中加载执行:
勒索模块内置了受害者标识、攻击者比特币钱包地址、勒索数额、勒索信文件名等:
勒索模块生成密钥对,并进行文件加密:
解决方案
官方已经发布漏洞公告(KDPSIRT-2023-00015)和最新相关补丁,受影响的用户须及时更新最新补丁:
https://vip.kingdee.com/article/388994085484889344?lang=zh-CN&productLineId=1&isKnowledge=2
安全验证规则
腾讯安全验证服务(BAS) 已支持针对该勒索家族的高危Web漏洞利用验证、无文件攻击验证、进程注入验证、多时期真实样本落盘验证、文件加密行为模拟等能力。
腾讯安全验证服务(BAS)勒索防护专项,从攻击入侵->载荷植入->行为模拟的全链路真实还原和模拟勒索攻击实施过程中的关键特征行为,有效验证安全防护设备或策略的有效性。
关于安全验证服务(BAS)
腾讯安全验证服务(BAS)提供自动化的安全防御有效性验证,是腾讯安全服务体系里的一项关键能力。
能够帮助企业持续评估安全防御体系,发现防御弱点,优化策略配置,规划安全投入,提升安全水位。
目前已服务金融、交通、制造、互联网等多个行业用户。更多内容,可点击链接了解详情:https://cloud.tencent.com/product/bas
END
更多精彩内容点击下方扫码关注哦~
云鼎实验室视频号
一分钟走进趣味科技
-扫码关注我们-
关注云鼎实验室,获取更多安全情报