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

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

nanshan 2025-01-21 20:22 89 浏览 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:

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

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

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

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

相关推荐

Linux 的磁盘系统,和你了解的Windows差别很大

我的C盘去哪了?一个系统,如果没有存储,那么也就不能称之为系统。存储性是一个完整系统的重要组成部分。例如AWS最开始的服务就是S3(用来存储数据的云服务),足以见得存储对于一个应用平台是多么的重要。...

一文读懂 Linux 硬盘挂载:从问题到解决方案

各位互联网大厂的后端开发伙伴们!在咱们日常工作中,操作Linux系统是常有的事儿吧。你们有没有遇到过这样的场景:新添加了一块硬盘,满心欢喜准备用来存储重要数据或者部署新的应用服务,却突然发现不知道...

硬盘分区(硬盘分区格式)

 磁盘(硬盘)分区,可以分C、D、E等分区,大家可能都会用,会根据自已的需要确定所需的空间,但分区是如何工作的呢,内容如下。Windows中有3类:MBR分区:MasterBootRecord,也...

parted命令工具分区介绍(particle命令)

linux系统磁盘分区通常可以使用fdisk和parted命令,当分区大小小于2TB的时候,两种皆可以使用,当分区大于2TB的话,就需要用parted分区。以下介绍parted命令相关使用,以sdb为...

Linux 服务器上查看磁盘类型的方法

方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。NAME列显示设备名称(如sda、nvme0n1)。TR...

Linux分区命令fdisk和parted使用介绍

摘要:一般情况下,Linux分区都是选择fdisk工具,要求硬盘格式为MBR格式,能支持的最大分区空间为2T。但是目前在实际生产环境中使用的磁盘空间越来越大,呈TB级别增长;而常用的fdisk这个工具...

linux 分区原理与名词解释(linux操作系统中的分区类型)

分区的意义将磁盘分成几份,每份挂在到文件系统的那个目录在linux里的文件系统Ext2:早期的格式,不支持日志功能Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了Ext4:针对e...

linux 分区合并(linux合理分区)

查看虚拟机当前磁盘挂载情况fdisk-l选择磁盘fdisk/dev/sda查看磁盘分区情况p重新选择分区n选择主分区p保存w创建物理卷pvcreate/dev/sda3查看物理卷信息pvdi...

如何在 Linux 系统中永久禁用交换分区 ?

Linux操作系统中的交换分区或交换文件充当硬盘上的临时存储区域,当物理内存(RAM)满时,系统使用该存储区域。它用于交换较少使用的内存页,这样系统就不会因为运行应用程序而耗尽物理内存。随着技术的发...

Linux 如何知道硬盘已用多少空间、未用多少空间

刚出社会时,去了一家公司上班,老板为了省钱,买的服务器是低配的,硬盘大小只有40G,有一次网站突然不能访问了,排查半天才知道原来服务器的硬盘空间已用完,已无可用空间。第一步是查看硬盘的使用情况,第二步...

用Linux系统管理磁盘空间 就该这么来

要想充分有效的管理使用Linux系统中的存储空间,用户必须要做的就是双管齐下,一边扩充空间一边限制空间。不得不说的就是很多时候磁盘空间就像水资源,需节制水流。说到要如何实现限制空间就离不开使用LVM技...

Windows 11 磁盘怎么分区?(windows11磁盘怎么分区)

Windows11磁盘分区技术解析与操作指南:构建高效存储体系一、磁盘分区的技术本质与系统价值磁盘分区作为存储系统的基础架构,通过逻辑划分实现数据隔离与管理优化。Windows11采用NTF...

linux上创建多个文件分区,格式化为 ext2、ext3、ext4、XFS 文件

以下是在Linux系统上创建多个20GB文件分区并格式化为不同文件系统的分步指南:步骤1:创建基础文件(4个20GB文件)bash#创建4个20GB稀疏文件(实际占用空间随写入量增长)ddif=/...

救命的U盘低格哪家最强?(低格优盘)

周二时有位童鞋留言说U盘之前做过引导盘,现在格式化不了,用各种工具都不行,而且因为U盘厂商的关系,查不到U盘主控,无法量产恢复,特来求助。小编花了点时间特意弄坏一个U盘分区,终于试出方法了,特来分享一...

Linux 查看硬件磁盘存储大小和磁盘阵列(RAID)的组合方式

一、查看硬件磁盘存储大小查看所有磁盘信息:#lsblk该命令会列出所有磁盘(如/dev/sda、/dev/nvme0n1)及其分区和挂载点。查看磁盘总容量:fdisk-l#或parted-...

取消回复欢迎 发表评论: