木马背景
MostereRAT是一款由国人使用易语言(EPL)编写的远程控制木马。它具备高级的防御绕过措施,能够拦截杀毒软件的流量以阻碍其网络通讯,并支持多种有效负载部署方法。更值得注意的是,它甚至会尝试安装流行的正规远程访问工具(如AnyDesk、TightVNC)来对受感染系统进行完全控制,从而大幅规避安全软件的查杀风险。
该木马的整体攻击流程如下图所示:

主程序分析
主程序被封装在一个ZIP压缩包中,并嵌入到了一个Word文档里。在实际的钓鱼攻击中,攻击者会设计相应的话术,诱导受害者下载并执行压缩包中的程序。如下图所示,文档中会提示用户打开一个看似无害的压缩文件。

该可执行文件基于wxWidgets GitHub仓库中的菜单示例进行修改,其主要目的是部署后续攻击阶段所需的工具集。这些工具经过加密,并捆绑在可执行文件的资源部分。有趣的是,资源中还包含了一个“彩蛋”——似乎是作者留下的个人签名(一系列BMP图片),如下图所示。

资源数据使用简单的减法(SUB)操作进行解密,密钥为“A”。解密后,与远程监控和管理(RMM)工具以及下一阶段有效负载相关的所有组件都被释放到 C:\ProgramData\Windows 目录中,如下所示:

主程序中包含了一个名为 CreateSvcRpc 的自定义RPC客户端。该客户端直接与名为 ntsvcs 的命名管道通信,从而与Windows服务控制管理器(SCM)进行交互。这种技术绕过了 OpenSCManager、CreateService、StartService 等标准API调用,使其行为更为隐蔽。通过此方法创建的服务将以SYSTEM级别权限执行。

该程序会创建两个服务以确保持久化。服务“WpnCoreSvc”被设置为自动启动类型,确保系统启动时由服务控制管理器加载,并通过一个Ruby脚本来执行下一阶段。另一个服务“WinSvc_”则被配置为按需启动,通过直接调用攻击者提供的启动器来触发后续操作。


在执行完毕后,程序会显示一条虚假的错误消息,声称系统版本不兼容,并指示用户在另一台计算机上再次尝试运行该程序。这是一种简单的社会工程学技巧,旨在进一步传播恶意软件。

在解密后的工具包中,存在一个名为 krnln.fnr 的文件。该文件是易语言(EPL)的运行时库,提供了字符串处理、文件操作、窗口管理等核心功能。易语言的一个编译选项是“编译为EPK”,它会将代码编译成 .epk 文件。这种文件需要特定的EPK启动器来调用 krnln.fnr 中的 LoadEPKFromCmdLine 函数才能执行。
这一阶段涉及一个EPK启动器、一个名为 svchost.exe 的恶意EPK文件以及一个配置文件 svchost.db。执行开始时,程序会获取命令行参数并根据参数值来决定加载哪个下一阶段的模块。

每个模块都需要使用密钥“A”进行相同的SUB操作解密。解密后,模块被加载到内存中,并调用其导出函数 getVersion 来初始化。
maindll.db模块分析
命令行参数 channel-8df91be7c24 后接字母“a”到“e”由模块 maindll.db 处理,用于确定应执行的具体任务。每个任务可以执行单个函数或由多个函数组合而成。主要功能包括:
(1) 通过重复执行恶意代码实现持久化
计划任务的XML配置从资源中加载。它会注册两个任务:Microsoft\Windows\winrshost 和 Microsoft\Windows\winresume,并创建一个名为 DnsNetwork 的服务来启动一个带有附加参数的新实例。这些实例被配置为在系统启动时以SYSTEM账户(SID: S-1-5-18)运行,或在用户登录时以内置管理员组(SID: S-1-5-32-544)运行。

(2) 以TrustedInstaller身份运行
该模块能够利用Windows中权限极高的 TrustedInstaller 账户创建一个具有完全提升权限的新进程实例。
其实现流程如下:首先启用 SeDebugPrivilege 权限,并使用提升后的权限复制自身进程令牌。接着,定位并复制SYSTEM进程的令牌。然后,启动TrustedInstaller服务并复制其令牌。最后,使用TrustedInstaller令牌创建一个拥有完全权限的新进程。这段代码的实现借鉴了GitHub上的NSudo项目。

干扰AV/EDR解决方案
该恶意软件内置了两个列表:一个是安全产品的安装路径列表,另一个是安全产品的进程名列表。它试图通过识别并干扰这些安全产品来增强自身的隐蔽性。
安全产品路径列表覆盖了以下多个国内外主流安全软件:
360:
“C:/Program Files/360/360Safe,”
“C:/Program Files/360/360sd,”
“C:/Program Files/360/360zip,”
“C:/Program Files (x86)/360/360Safe,”
“C:/Program Files (x86)/360/360sd,”
“C:/Program Files (x86)/360/360zip,”
“C:/ProgramData/360safe,”
“C:/ProgramData/360SD”
金山杀毒:
“C:/Program Files/kingsoft/kingsoft antivirus,”
“C:/Program Files (x86)/kingsoft/kingsoft antivirus,”
“C:/ProgramData/kdata,”
“C:/ProgramData/kdesk,”
“C:/ProgramData/Kingsoft,”
“C:/ProgramData/KRSHistory”
腾讯电脑管家:
“C:/Program Files/Tencent/QQPCMgr,”
“C:/Program Files (x86)/Tencent/QQPCMgr,”
“C:/ProgramData/Tencent/QQPCMgr”
火绒安全:
“C:/Program Files/Huorong/Sysdiag,”
“C:/Program Files (x86)/Huorong/Sysdiag,”
“C:/ProgramData/Huorong/Sysdiag”
Windows Defender:
“C:/Program Files/Windows Defender,”
“C:/Program Files (x86)/Windows Defender,”
“C:/ProgramData/Microsoft/Windows Defender”
ESET:
“C:/Program Files/ESET,”
“C:/ProgramData/ESET”
Avira:
“C:/Program Files/Avira,”
“C:/Program Files (x86)/Avira,”
“C:/ProgramData/Avira”
Avast:
“C:/Program Files/Avast Software,”
“C:/ProgramData/Avast Software”
Malwarebytes:
“C:/Program Files/Malwarebytes,”
“C:/ProgramData/Malwarebytes”
AVG:
“C:/Program Files/AVG,”
“C:/Program Files/Common Files/AVG,”
“C:/ProgramData/AVG”
其他:
“C:/Program Files (x86)/2345Soft/2345PCSafe,”
“C:/Program Files (x86)/Lenovo/PCManager,”
“C:/Program Files (x86)/Rising,”
“C:/Program Files/Microsoft PC Manager,”
“C:/Program Files/Common Files/AV”
安全产品名称列表则包括:
360Safe, 360sd, antivirus, QQPCMgr, Sysdiag, Defender, Kaspersky, ESET Security, Security, Avira, Avast, Malwarebytes, Antivirus, Bitdefender, Norton, Symantec, McAfee, 2345PCSafe, PCManager, Rising, and Microsoft PC Manager.
其干扰流程是:首先扫描上述路径中的可执行文件,检查是否存在对应的安全产品。然后,将这些可执行文件与系统中正在运行的进程映像路径进行比对。如果找到匹配项,并且进程路径中包含了已知的安全产品名称,恶意软件就会利用Windows过滤平台(WFP)过滤器来阻止该安全产品的网络流量。
这种流量拦截技术与知名的红队工具“EDRSilencer”类似,通过在多个网络通信栈层应用WFP过滤器,有效地阻止安全软件连接到其云服务器,从而中断检测数据、警报和事件日志等遥测信息的上报。

此外,该恶意软件还采用多种技术来禁用Windows更新和安全机制。它会终止如 SecurityHealthService.exe 和 SecurityHealthSystray.exe 等关键安全进程;停止包括 wuauserv、UsoSvc、uhssvc 和 WaaSMedicSvc 在内的系统服务;并删除 C:\Windows\System32\WaaSMedicSvc.dll 和 C:\Windows\System32\wuaueng.dll 等关键系统文件。

同时,它会执行嵌入在资源中的注册表脚本,来深度禁用Windows Defender和安全中心通知。

为了防止这些安全机制被计划任务重新启动,它还会使用 ITaskFolder::DeleteTask 和 ITaskFolder::DeleteFolder 接口从特定的系统任务文件夹中删除相关的计划任务。
恶意软件会创建两个线程,分别通过HTTP协议的9001和9002端口与C2(命令与控制)服务器进行通信。当服务器指示有新版本可用时,程序会使用RSA私钥对下载的配置文件进行解密。通信的URL格式如下:
http://{C2 Domain}:9001/9001.conf
http://{C2 Domain}:9002/9002.conf
接下来,它会解析一个INI格式的配置文件,并比较版本号以确定是否需要下载新的有效负载。在执行新版本之前,会使用SHA-256哈希值对下载的文件进行验证。其中,端口9001用于分发EXE格式的有效负载,而端口9002用于处理EPK格式的有效负载。

elsedll.db模块分析
命令行参数 channel-8df91be7c24 后接字母“f”由模块 elsedll.db 处理。该模块具备复杂的远程访问功能,它利用多个线程来处理C2命令、监控与“千牛”(阿里巴巴卖家工具)相关的前台窗口活动、记录键盘敲击并发送心跳信号。
它使用与主模块相同的C2服务器列表进行通信,通过TCP端口8000建立连接。通信过程采用双向TLS(mTLS)加密,利用嵌入的客户端密钥、客户端证书和CA证书来执行相互认证,有效防止身份冒充。
C2数据包以一个魔数 1234567890 (0x499602D2) 开头,随后是四个字节表示的数据包长度,以及一个指定要执行操作的命令ID。该模块支持多达37种功能,甚至可以在受害者系统上部署流行的远程访问工具(如AnyDesk, TightVNC),以实现对系统的完全控制,其隐蔽性类似于正常的管理操作。下表列出了部分具有特定和明显功能的命令。
| 命令ID |
详情 |
| 0x7B98A2 |
获取文件的SHA-256摘要 |
| 0x7B98A3 |
检索版本信息 |
| 0x7B98A4 |
用于发送心跳包 |
| 0x7B98A5 |
受害者详细信息收集 |
| 0x7B9905 |
使用EPK启动器发送并运行EPK文件 |
| 0x7B9907 |
使用rundll32发送并运行DLL文件 |
| 0x7B9908 |
发送并运行一个EXE文件 |
| 0x7B990B |
发送并加载一段shellcode到内存中执行 |
| 0x7B990C |
将EXE文件发送并加载到内存中执行 |
| 0x7B990D |
使用启动器下载并运行EPK文件 |
| 0x7B9910 |
使用rundll32下载并运行一个DLL文件 |
| 0x7B9911 |
下载并运行一个EXE文件 |
| 0x7B9937 |
下载并加载shellcode到内存中执行 |
| 0x7B9938 |
下载并加载一个EXE到内存中执行 |
| 0x7B9969 |
读取位于Database目录下的特定文件 |
| 0x7B996A |
将数据写入位于Database目录下的特定文件 |
| 0x7B996B |
删除位于数据库目录下的特定文件 |
| 0x7B996C |
将数据写入数据库目录下的09.db文件 |
| 0x7B997D |
从C2加载EXE有效负载,并使用Early Bird注入运行 |
| 0x7B997E |
使用Early Bird注入EXE到svchost.exe |
| 0x7B9EE1 |
终止远程监控和管理(RMM)工具,从资源加载配置并启动TightVNC、Xray |
| 0x7B9EE3 |
结束Xray和TightVNC应用程序 |
| 0x7B9EE4 |
启用多个会话登录,并将RDP Wrapper作为RDP解决方案应用 |
| 0x7B9EE5 |
恢复与RDP相关的注册表配置 |
| 0x7B9EE6 |
创建并添加用户到管理员组。组织账户”V”在Windows登录界面显示 |
| 0x7B9EE7 |
启用多会话登录 |
| 0x7B9EE8 |
禁用多个会话登录 |
| 0x7B9EE9 |
从资源加载配置文件并启动AnyDesk |
| 0x7B9EEA |
隐藏AnyDesk应用程序窗口 |
| 0x7B9EEB |
继续发送关闭显示器的消息 |
| 0x7B9EEC |
停止发送关闭显示器的消息 |
| 0x7B9EED |
以隐藏模式启动程序 |
| 0x7B9EEE |
用户枚举 |
| 0x7B9F45 |
创建屏幕截图 |
数据收集
通过特定命令,攻击者可以提取由程序生成的文件数据,包括创建的GUID、安装日期和其他相关详细信息。此外,它还能收集广泛的系统信息,例如计算机名称、Windows操作系统产品详情、系统启动时间、自上次用户输入以来的空闲时间、视频捕获驱动程序数量以及当前活动用户账户等。该模块也支持实时创建屏幕截图。
下载并执行插件
elsedll.db 模块采用多种方法下载和执行有效负载。它可以使用libcurl库从当前C2连接或攻击者指定的URL获取负载,支持ShellCode、EPK、DLL和EXE等多种格式。
对于EXE负载,它可以选择在内存中执行(例如通过“Early Bird”注入技术),或者写入磁盘后作为独立进程运行。DLL负载通常会被保存到磁盘,然后通过 rundll32.exe 来执行,并调用其 getVersion 导出函数。EPK负载则由专用的EPK启动器启动。ShellCode负载则会被写入新分配的内存空间,然后直接跳转执行。

文件操作
在文件操作方面,该恶意软件仅针对其工作目录下的 /database 子目录中的文件进行操作,支持读取、写入和删除。此外,它使用文件ID来识别文件夹内的特定文件,ID范围从1001 (0x3E9) 到 1009 (0x3F1),分别对应文件名 01.db 至 09.db。

远程访问工具部署
该程序能够利用其资源中嵌入的配置文件,直接运行远程访问和网络代理工具。在攻击过程中,它被观察到配置并使用了AnyDesk、Xray和TigerVNC(应为TightVNC),从而为攻击者提供专有的后门访问通道。该模块还支持使用第三方RDP工具“RDP Wrapper”,并能够快速修改RDP相关注册表设置,例如启用或禁用多用户同时登录。同时,它也保留了恢复原始RDP设置的能力。
利用隐藏账户实现持久化
创建新用户的命令可以将账户添加到管理员组,设置密码永不过期,并通过修改注册表路径 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList 来将该账户从Windows登录界面隐藏。具体操作是创建一个以用户名为名的REG_DWORD条目,并将其值设置为0。然而,在代码的实际实现中,条目名称被硬编码为 V,而不是动态使用实际的用户名。

总结与思考
MostereRAT展现了一个功能全面、设计精巧的远控木马。它融合了多种高级躲避技术,例如直接RPC通信绕过API监控、利用WFP过滤平台对抗安全软件、深度干扰系统安全更新机制等。其模块化设计和通过正规远程工具建立控制通道的思路,也提高了其在真实环境中的生存能力。
对这类复杂恶意软件的分析,有助于安全研究人员更深入地理解攻击者的技术演进和战术意图。对于企业防御而言,防范此类威胁需要结合端点检测与响应(EDR)、网络流量分析以及严格的应用程序白名单策略。更详细的技术讨论和样本分析,可以在专注于 安全/渗透/逆向 的技术社区中找到。
文章内容转自二进制空间安全,侵删。