MoiClient: an invoice-themed backdoor chains an RPC-based UAC bypass with a vulnerable Lenovo PC Manager driver to kill security products and steal browser credentials
A debug-object handle borrowed from winver.exe is enough to hijack a self-elevating system binary with no prompt
Analysis
AhnLab's ASEC documents MoiClient (named for the "moimoi" string in its BYOVD component) distributed as a .vhdx
file disguised as an invoice email attachment. The archive contains Invoice.Pdf.Exe, actually the legitimate
SumatraPDF viewer, used to DLL-sideload a same-directory malicious uxtheme.dll, plus hidden support files
(AhnLab ASEC, 2026-09-01). Execution moves into a legitimate process via
classic process hollowing: MoiClient spawns explorer.exe suspended and overwrites its entry point with shellcode
from a co-located data.dat. For privilege escalation, MoiClient connects over ncalrpc to the RPC interface of
the AppInfo Service, launches winver.exe as a debug target to acquire a debug-object handle, then drives
ComputerDefaults.exe (a system binary that auto-elevates) through the same RPC path, clones its process handle,
and sets that cloned handle as the parent of subsequent sc.exe and PowerShell processes so they inherit elevated
privileges with no UAC prompt shown
(AhnLab ASEC, 2026-09-01). With elevated rights, MoiClient drops a vulnerable
Lenovo PC Manager kernel driver, version 2.5.30.11281 of BootRepair.sys, under the name moimoi.sys in the
%Public% path, registers it as a kernel service, and uses its device interface to pass process IDs of running
security products for forced termination, targeting Windows Defender, Malwarebytes, Bitdefender, Kaspersky, Avast,
AVG and McAfee by process name
(AhnLab ASEC, 2026-09-01). A separate technique specifically neutralises
Windows Defender: MoiClient downloads defendnot.dll and defendnot-loader.exe from its command-and-control
server and runs them through the elevated PowerShell session. Persistence is a Task Scheduler job named
MicrosoftWindowsUpdateTask<4-digit-number> (or the existing name with a trailing period appended on a collision)
that fires every 30 minutes, re-launching the renamed SumatraPDF binary to re-trigger the DLL-sideload chain
(AhnLab ASEC, 2026-09-01). The final payload, "MoiXD Stealer," runs in memory
and uses a ChromeElevator-style technique to steal browser-stored passwords.
Triage: the RPC-based UAC bypass, cloning a process handle obtained through winver.exe as a debug target and
attaching it as the parent of sc.exe or PowerShell, resembles a technique class Google Project Zero documented
in 2019 against the AppInfo Service; a sc.exe or PowerShell process whose parent-process chain traces back through
winver.exe or ComputerDefaults.exe rather than a normal interactive shell is not typical UAC-elevation behaviour
and is the observable signature the mechanism supports.
Cited evidence
MoiClient uses the ncalrpc protocol sequence to connect to the RPC interface of the AppInfo Service, then executes winver.Exe as a debug target and acquires the debug object handle.
version 2.5.30.11281 Of BootRepair.Sys (a vulnerable driver in Lenovo PC Manager) was exploited. MoiClient creates this driver in the %Public% Path under the name moimoi.Sys
The registered task runs every 30 minutes. At that time, SumatraPDF (named "demo.Exe") is launched, and "uxtheme.Dll," which is located in the same Path and is actually MoiClient, is reloaded.
Sources1
AI-generated · no human review · this permalink is the shareable record for the finding · verify operationally critical claims against the linked primary source.