事件概述:
近期毒霸安全团队再次检测到“银狐”变种大范围传播,主要途径来自于搜索引擎的广告页投放,页面仿冒其他公司的推广下载站,另一方面通过感染后的用户微信群发病毒文件,实现裂变传播。其中一个仿冒投放页如下。
经过深入分析,这是“银狐”家族的又一个新变种,与之前披露的攻击手法不同,本次感染链在复杂和对抗度上进一步提升,加入UAC绕过,线程池注入结束安全软件进程,并利用python驻留系统,BoxedAppSDK加载加密压缩的恶意dll等。最终执行winos远控木马,操控用户电脑。winos是基于Gh0st的远控变种在黑产圈大量传播使用。整个攻击流程如下。
详细分析:
母体样本大部分命名为:“安装包_Setup.exe,软件包安装程序.exe,安装包5.2.3-doc-uninsta.exe等”。
母体样本为增强免杀能力,使用了多个开源库:ZeroMQ,Curl,Openssl等,其中执行逻辑使用ZeroMQ异步消息库框架封装了起来,通过注册事件回调异步执行,使得恶意代码隐藏在了庞大的库代码之中。
如上图所述的执行流程,共注册了4个有效的异步回调功能,“A”功能用于隐藏控制台窗口。“CHK”用于检测沙箱和虚拟机,通过枚举系统ACPI固件表识别。检测通过后执行“DLS”和“EC”,这两个步骤组合执行,先通过“DLS”下载payload解密后再传入“EC”执行shellcode。
第一个阶段Payload有两个,其中带gif格式的利用了语雀云文档存储。另一个利用了aliyun存储。解密方式为AES256 CFB模式,前16字节为IV,后32字节为KEY,如果有gif头的需要移除gif头部。
Payload1解出后是一段经过两次自解密处理的shellcode,该shellcode主要功能是内存加载内嵌的pe模块PoolParty,此模块利用了blackhat2023大会上公布的线程池隐蔽注入技术(详见文末参考),注入系统关键进程“lsass.exe”,并在lsass.exe进程中结束安全软件进程,相关进程名单有136个,涵盖了国内外多个安全软件。
Payload2内部名称“Stage2Code.dll”,加载后首先patch ETW,再检测是否管理员权限,如果没有则下载BypassUAC模块重新启动自身。BypassUAC方式来自开源项目UACME。有管理员权限则继续下载后续4个payload文件。各功能名称对应关系如下:
Adobe.zip中打包了python运行环境,解压释放到用户如下目录:“C:\Program Files (x86)\Common Files\随机名\1\”或“C:\Users\username\AppData\Local\Programs\Python\”其中“officehelper.py” 和 “scriptforge.py”是编译成python字节码的pyc脚本。
SchTask.x64.dll模块通过直接RPC调用注册pythoncopy.exe到计划任务,命令行为“officehelper.py”。后续任务由计划任务执行。
“officehelper.py”与“scriptforge.py”会互相启动形成守护, officehelper利用BoxeAppSdk的虚拟文件系统加载加密压缩的hello.dll(密码“nsvbdfrga”)并执行导出函数startRun。BoxeAppSdk原理是hook系统Api实现的虚拟文件系统,使得在LoadDll时无须触摸磁盘文件。这样避开了要加载的文件被安全软件扫描。
“hello.dll”是最终加载器,负责解密加载前面下载的“s.dat”和“a.dat”。“s.dat”解密后的shellcode执行后会从c2拉取最终远控“上线模块.dll”,shellcode尾部存储的是winos远控配置,使用双上线配置模式,上线分组"666888",C2:8.218.198.10:7001和8.218.198.10:7002。“a.dat”解开后与前面的PoolParty工具一致,用于结束安全软件进程。
IOC:
1e9ccf31bb24a3514171c3dcb19078ef
31eedd8d089ede700293719349f05d19
2b740ac0d2410d5f0bab45a3b3abbaf8
8870064f7582692e18fab0f400a1712a
78d8676c7142848aadfbd83a79284408
7b5798ffeb106b976f5afbd2c9fd774c