专业的团队,一流的服务,期待与您的合作!
首页 > > 行业动态
火绒-警惕GitHub恶意病毒项目,持续活跃释放远控木马
发表时间:2024-06-03     阅读次数:     字体:【

近期,火绒安全实验室在日常威胁巡视中发现一 GitHub 仓库发布的项目存在病毒风险行为,火绒安全工程师第一时间提取样本进行分析。分析中发现样本会通过多种手段对抗杀软,并最终释放 Remcos 商业远控木马控制受害者机器,且病毒作者仍在积极开发当中。目前,火绒安全产品可对上述病毒进行拦截查杀,请广大用户及时更新病毒库以提高防御能力。

Image-0.png

火绒 6.0 查杀图

观察到的病毒样本来源于一个名为 "CodeBlock" 的 GitHub 仓库发布的项目,没有任何有关的项目描述,但已有不少受害者中招。调查分析过程中发现该程序利用多层文件进行跳转,利用层层解密进行免杀,除此之外还利用包括 “天堂之门” 在内的多种手段对抗分析。通过最终释放远控木马,攻击者能够执行各种远程操作,从而使用户机器沦为”肉鸡”。

Image-1.png

样本来源仓库

样本执行流程图如下所示:

GitHub样本分析流程图改-加边缘.png

执行流程图

在此,火绒工程师提醒大家对来历不明的文件应保持警惕,同时安装可靠的安全软件保护设备免受恶意软件和病毒的侵害。目前,火绒 6.0 已上线公测,针对用户的真实应用环境,升级反病毒引擎等核心技术,推出9大硬核功能,可有效解决无文件攻击、系统进程保护、流氓软件等诸多安全问题,为“杀、防、管、控”增强壁垒。欢迎大家前往火绒官方网站下载体验。

一、样本分析

第一阶段分析:

(由于病毒作者的积极开发,样本分析以附录中的 HASH 为准)

从恶意仓库中下载的 "CodeBlock-wallet_v1.3.1.zip" 压缩包内容如下,运行 "CodeBlock-wallet_v1.3.1.exe" 后其只加载 CodeBlock-wallet_v1.3.1-0.bin 和 CodeBlock-wallet_v1.3.1-1.bin 两个文件:

Image-3.png

解压文件

"CodeBlock-wallet_v1.3.1.exe" 由 Embarcardero Delphi 编译,是 Inno Setup 的引导程序,其会加载同目录下的 CodeBlock-wallet_v1.3.1-0.bin 进行第二阶段 Payload 文件的释放:

Image-4.png

文件信息

Image-5.png

Inno Setup 标志

CodeBlock-wallet_v1.3.1-1.bin 是 Payload 的源文件,样本分段读取并解密 CodeBlock-wallet_v1.3.1-1.bin 的内容后,在 C:\Users\Administrator\AppData\Roaming 目录下先以xxxx.tmp 的形式释放,再重命名为 bigmouth.ai、nighttime.xlsx、relay.dll、UIxMarketPlugin.dll、UniversalInstaller.exe,随后执行 UniversalInstaller.exe 开启下一阶段流程:

Image-6.png

文件重命名

Image-7.png

解密文件展示

第二阶段分析:

在前面释放的文件中 UIxMarketPlugin.dll 并没有被加载执行,UniversalInstaller.exe 直接通过 LoadLibraryW 加载同目录下 relay.dll ,调用其 DllMain 函数执行后续主要操作:

Image-8.png

加载relay.dll

部分解密逻辑梳理:

relay.dll 的 DllMain 函数会加载同目录下的 nighttime.xlsx 文件并进行解密,先是定位到固定的 D6C0 位置处,获取文件数据区的正向偏移后开始解密 D6C0 处的内容,解密方式是从第 4 位偏移开始,以 DWORD 为单位向前递加,具体细节如下所示:

Image-9.png

解密逻辑

Image-10.png

解密前后对比

解密后的内容中,前面是需要调用的字符串,relay.dll 会分别定位解密数据前面的 3 个字符串 LoadLibraryA、VirtualProtect、dbghelp.dll,获取其函数地址并进行调用,然后加载 dbghelp.dll 进内存空间准备执行后续注入操作:

Image-11.png

定位字符串并调用

解密后的字节码有很多都是用于标记位置的“偏移值”,在加载 dbghelp.dll 后,会先获取用于定位注入 dbghelp.dll 位置的偏移写入解密代码,再根据“划分数据段的”的偏移限制注入大小,以此“分段”执行——即执行代码位于 dbghelp.dll 中,但相关数据依旧存在于解密空间中:

Image-12.png

解密内容展示

Image-13.png

定位及注入逻辑

Image-14.png

注入代码展示

Image-15.png

解密关系图

dbghelp.dll 注入代码分析:

Dump 出解密代码进行分析,其先动态获取所需函数,执行相关初始化操作:

Image-16.png

动态获取函数

随后读取同目录下 bigmouth.ai 文件进行第一次解密,第一次解密后 0x8、0xC、0x10 偏移处的值是后续调用 RtlDecompressBuffer 函数解压缩的参数:

Image-17.png

一层解密代码

Image-18.png

一层解密

解压缩后得到真实的数据和代码,包含前面的数据区和后面的代码区:

Image-19.png

二层解压缩

同样的读取解密代码前面的字符串数据继续执行下一步注入,这里定位解密代码入口点并替换到加载的 pla.dll 的入口点处:

Image-20.png

定位入口点

替换后入口点代码如图所示:

Image-21.png

注入入口点

pla.dll 注入代码分析:

pla.dll 中注入的解密代码会读取前面数据区中的 ruzNode_test 字符串用于在 C:\Users\Administrator\AppData\Roaming 目录下创建备份文件夹,然后调用 CopyFileW 函数将原先释放的 bigmouth.ai、nighttime.xlsx、relay.dll、UIxMarketPlugin.dll、UniversalInstaller.exe 复制过来作为备份:

Image-22.png

复制文件

Image-23.png

备份文件目录

随后创建以 C:\Users\Administrator\AppData\Roaming\ruzNode_test 目录下的 UniversalInstaller.exe 为主体的执行进程替换 C:\Users\Administrator\AppData\Roaming 目录下的 UniversalInstaller.exe 以执行后续操作:

Image-24.png

替换 UniversalInstaller.exe

新启动的 C:\Users\Administrator\AppData\Roaming\ruzNode_test\UniversalInstaller.exe 会重复上述解密流程,随后继续以类似的逻辑将分段代码注入到 shdocvw.dll 中(这里不再细究),并在该区段内调用 CreateProcessW 函数创建 "C:\Windows\SysWOW64\cmd.exe" 进程用于注入第三阶段 shellcode:

Image-25.png

创建 cmd 进程

Image-26.png

当前进程关系

天堂之门利用:

在创建 cmd 进程后,为了隐藏 API 的调用痕迹,并干扰安全研究人员分析,还特别调用了天堂之门来 “遮掩” 其内存注入的操作:

Image-27.png

天堂之门

dump 出的 shellcode 如下,其中传参用的 rcx、rdx、r8、r9 分别由不同的 [rbp-xxh] 来赋予:

Image-28.png

64 位指令解密

通过天堂之门调用 Ntdll!NtCreateThreadEx、Ntdll!NtWriteVirtualMemory 等 API,将下一阶段 shellcode 以远程线程注入到 "C:\Windows\SysWOW64\cmd.exe" 中——先是将完整的 pla.dll 写入 cmd 的内存空间中,随后再将解密的代码注入到 pla.dll 的 .text 段入口点,最后调用 Ntdll!NtResumeThread 恢复线程:

Image-29.png

调用 Ntdll!NtWriteVirtualMemory 展示

Image-30.png

被注入的入口点

其中,与 "C:\Windows\SysWOW64\cmd.exe" 的通信是通过管道进行的,最后会通过管道向 "C:\Windows\SysWOW64\cmd.exe" 写入"\r\n" 使其执行注入的 shellcode:

Image-31.png

管道通信

第三阶段分析:

第二阶段的代码在成功注入 "C:\Windows\SysWOW64\cmd.exe" 后会在 "C:\Users\Administrator\AppData\Local\Temp" 目录下释放加密的字节码文件,被注入的 "C:\Windows\SysWOW64\cmd.exe" 在执行过程中会读取该文件的内容并进行解密:

Image-32.png

读取加密文件

Image-33.png

加密内容展示

在解密完成后,还会释放 svcultra_test 到开机启动项目录中,指向 "C:\Users\Administrator\AppData\Roaming\ruzNode_test\UniversalInstaller.exe" 执行持久化操作:

Image-34.png

查看文件属性

Image-35.png

创建链接文件

接着调用 Ntdll!NtCreateFile 在同样是 "C:\Users\Administrator\AppData\Local\Temp" 的目录下创建相应文件准备写入解密内容:

Image-36.png

创建解密文件

.

写入文件调用的函数 NtWriteFile 依旧是通过天堂之门进行调用的:

Image-37.png

天堂之门

64 位指令如下,由于混淆的原因,调用参数所对应的 [rbp-xxh] 的位置稍微有点偏移:

Image-38.png

64 位指令解密

除了 rcx、rdx、r8、r9 外的参数是通过 rdi 和参数数量结合的偏移 [rdi+rax*8-8] 来定位的,如下图所示,写入的解密代码为一个 exe 文件,用于执行后续注入:

Image-39.png

调用 Ntwrite 函数

Image-40.png

解密文件内容

最后创建 "C:\Windows\SysWOW64\explorer.exe" 进程,以同样的方式将解密的 EXE 文件以远程线程的方式注入进去:

Image-41.png

创建 explorer 进程

Image-42.png

当前进程关系

后门分析:

用于注入 "C:\Windows\SysWOW64\explorer.exe" 进程的 EXE 实际上是一个 Remcos 远控后门,属于 4.9.3 的专业版:

Image-43.png

Remcos 标识符

Remcos 是一个成熟的远控后门,目前已更新到 4.9.4,是一个商业化的木马,与 cobalt strike 相似,能完全控制受害者机器:

Image-44.png

官网页面

Image-45.png

官网宣传图

获取到的外联 IP 地址如下:195.54.170.36:22077

Image-46.png

外联 IP 获取


 
上一篇:山石-运营商5G MEC边缘云节点多租户出口安全解决方案
下一篇:山石-某互联网智能制造公司办公网和企业专网建设方案
关于我们
公司简介
荣誉资质
合作伙伴
服务客户
企业行业
零售行业
教育行业
医疗行业
客服中心
客户留言
联系我们
资料下载
联系我们
安徽伟能达信息科技有限公司
公司地址:安徽省合肥市蜀山区黄山路汇峰大厦1918室
服务热线:400-8118-176
公司传真:0551-62834402
电子邮件:ahwnd@ahwnd.com
  • Copyright © 2019- 安徽伟能达信息科技有限公司   All Rights Reserved.