百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

样本分析|非官方火绒剑存在后门风险,谨慎下载使用

nanshan 2025-01-21 20:22 92 浏览 0 评论

近期,火绒安全实验室在某论坛中发现一名用户发帖上传了被篡改过的火绒剑程序,该事件详细经过可参考《情况说明 | 非官方火绒剑存在后门风险,请用户谨慎下载使用》,在此不做赘述,本文为该样本的内容分析。经火绒工程师确认,该“盗版火绒剑”中的 uactmon.dll 文件被篡改,在其 DLL 加载时会解密出恶意 DLL 数据并加载执行,最后实现后门操作。目前,火绒安全产品可对上述被篡改的病毒样本进行拦截查杀,请广大用户及时更新病毒库以提高防御能力。同时我们也希望广大用户在官方渠道下载软件,避免企业或个人信息及财产存在被泄露的风险。

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

从下图可以看出被篡改文件没有数字签名。

一、样本分析

样本中被篡改的 uactmon.dll 会解密出加载器,随后加载器再解密加载后门模块并执行后门逻辑。

后门功能具体如下:

  • 进程管理:进程遍历、进程终止、模块遍历、权限获取、安全标识符获取等。
  • 文件管理:创建文件、删除文件、移动文件、写入文件、执行程序、获取文件信息等。
  • 鼠标键盘模拟:实现远程控制鼠标和键盘。
  • 管道后门:创建管道、写入管道执行远程命令。
  • 插件管理:客户端通过下载插件执行恶意代码。
  • 其他功能:设置配置以及下载 DLL 利用 rundll32.exe 执行。
  • 系统信息获取:获取主机名、系统版本、杀毒软件列表、进程名、安装软件列表等。

本文将以加载阶段、通信阶段、后门功能、发送系统信息四个环节为主进行详细分析。

1.1 加载阶段

该 uactmon.dll 动态链接库入口函数 dllmain_dispatch 中的 _SEH_prolog4 函数被恶意重定向,作为病毒入口执行病毒代码。

随后利用 fs:34h 获取上一个错误号 2 ,并基于此错误号进行计算,最后计算出解密函数的地址并调用解密函数,解密函数会解密出加载器代码。

在加载器中解密恶意 DLL 数据,获取到 DLL 并调用 DLL 入口点函数。

1.2 通信阶段

检查互斥体 Global\{950DD698-EB8C-469E-A50B-F76D0283392E} 是否存在,如存在则循环至不存在为止。

随后读取 C:\ProgramData\Microsoft OneDrive\index.dat 文件并解析成字典格式,如不存在则会初始化字典并创建该文件,同时在创建之后修改该文件的时间戳。

初始化时:
mc 值是固定头 9X3eR2p 加上 21 位随机数组成的,后续请求远程服务器时将会附带该值,用来识别客户端;
ts 值是 Sleep 的秒数,初始化时赋予值为 28。

之后读取字典中的 disable 值,如果为 true 则不会继续执行。

检测 disable 值后通过异或 0x1F 解密出远程服务器地址 20.2.66.39,并设置为 ICMP 协议。

睡眠 {ts} 秒后利用 ICMP 协议发送数据包,数据包中包含 mc 值,其前后分别填充了 0xC681 和 0x1101。之后利用 recvfrom 函数接收回复的数据,通过回复的数据部分偏移为 2 的字节并减掉 0x65 为标准来判断要执行哪个函数。其中管道后门和插件管理都可以远程执行恶意代码。

其中进程管理函数会主动连接远程服务器 443 端口,随后获取指令,通过指令分别执行特定的恶意操作,同时会发送系统信息。

下图是进程管理接收指令的代码,其他后门功能运行机制与此相同。

1.3 后门功能

执行后门功能后会回复 log 或者打包数据发送至远程服务器中。

1.3.1 进程管理

进程管理有以下功能:

遍历进程:遍历进程时获取进程名、进程 ID、父进程 ID、进程路径等,最后加密压缩发送至远程服务器。

终止进程:通过进程 ID 终止指定进程。

遍历模块:遍历指定 PID 进程获取模块信息,并压缩发送。

获取进程权限:

1.3.2 文件管理

文件管理有以下功能:

其中部分函数截图:通过指定路径删除文件、移动文件,还可以通过传递过来的时间参数设置文件时间。

1.3.3 模拟键鼠

模拟鼠标:利用 SendInput 函数实现鼠标转轮、右键点击、左键双击、左键单击、鼠标移动功能。

模拟键盘:利用 SendInput 函数实现键盘按下后弹起的操作。

1.3.4 管道后门

创建管道:创建管道以及创建无界面 cmd.exe 或者 powershell.exe 等。

写入管道:用于远程执行指令。

1.3.5 插件管理

插件管理有以下功能:

加载插件代码图:

1.3.6 其他功能

除上述功能以外还有以下功能号相对应的功能:主要是用于更新配置相关。

设置禁用:可以通过将 disable 设置为 true 来使该客户端不再与远程服务器交互。

下载 DLL 执行导出函数 Entry:先下载 iscsiexe.dll ,同时下载 npf.dll 或 npfs.dll,随后利用 rundll32.dll 程序执行 iscsiexe.dll 导出函数 Entry。

1.4 发送系统信息

每次执行后门功能函数时都会发送一次系统信息。发送的信息包含主机名、系统版本、杀毒软件列表、指定注册表、当前进程 ID 和进程名、检查互斥体 Global\\{54902E83-9AA7-4DB5-977C-A1EBC760CAAE}、遍历安装包注册表。

获取主机名和系统版本:

杀毒软件列表:通过遍历进程获取进程信息,并比对进程名确认进程是否存在,如果存在则将杀软名添加到列表中。如果没有杀软存在则回复“无”字符串。

下图是杀软名和进程名对照表:

安装包列表:遍历 Uninstall 注册表并提取其中的 DisplayName 值添加到列表中,从而获取安装包列表。

获取指定注册表路径的值:

  • Directory\shellex\CopyHookHandlers\Files
  • SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\DarkTheme
  • Directory\shellex\ContextMenuHandlers\Files

二、附录

C&C:

HASH:

讲点大白话:有的小伙伴表示没有学过计算机知识,看不太懂这篇文章,那么你可以参考如下说明。

假如你有一个动物园,动物园里有很多你喜欢并珍藏的动物,但也有坏猴子偷偷翻进动物园住下干扰动物们生活(没有说所有猴子都坏的意思),偶尔也有小偷光顾你的动物园偷走用来喂动物的苹果。你很生气,决定为你的动物园安装一个监控。但是出于种种原因,比如找不到卖监控的店家、喜欢的那一款过于昂贵等等,你最终找了一个二手贩子。二手贩子交给你的监控看起来十分好用,你认为可以对动物园放心了,但其实你不知道,监控被注入了隐藏的程序,可以偷偷转移你的信息,也告诉了幕后黑手动物园几点没人,甚至他还知道住着珍贵动物的房间密码是多少,他借着病毒,操控着动物园的一切。或许有一天,你发现你进不去自己的动物园了。

而动物园就是你的电脑,二手贩子的监控是被注入后门的非官方火绒剑,希望你永远有给动物园开门的自由[震惊]。

目前火绒安全产品已支持对该“非官方火绒剑”进行查杀,在这里也再次提醒广大用户,认准官方渠道,非官方渠道软件安全性无法保证,各平台下载需谨慎!

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: