NAS媒体自动化堆栈遭恶意exe伪装剧集入侵

一位 NAS 用户近日发现,其媒体自动化堆栈(*arr stack)中混入了伪装成《南方公园》最新剧集的可执行文件。该文件名为 South Park S29E03 1080p WEB H264-MeGusta.exe,在公共追踪器上拥有 2,392 个种子节点。Sonarr 自动抓取了该文件并尝试导入,导致每 90 秒出现一次“路径不存在或不可访问”的错误日志。

118KB核心代码藏于886MB垃圾数据

恶意样本分析:基于垃圾数据的隐蔽载荷

qBittorrent 标记该下载为“完成”,但实际写入磁盘的数据量为零。经手动重新下载并分析,该 PE 文件架构为 x64 GUI,核心程序大小仅为 118 KB,其余约 886 MB 均为随机填充数据。这种设计旨在规避部分对大文件处理效率较低的扫描器。

版本信息显示公司名称为 "Freeware Developers",原始文件名为 SetupHelper.exe。逆向工程揭示,代码中存在大量无意义的 XOR 全局变量操作(如 dword_14000C020 ^= 0xF2C2EAC0;),纯粹用于混淆反编译器输出。

剥离混淆逻辑后,恶意行为仅包含六个步骤:

  1. 打开自身文件。
  2. 读取最后 64 字节作为配置。
  3. 利用配置解密隐藏在垃圾数据中的有效载荷。
  4. 在内存中手工构建 PE 结构。
  5. 指向 PEB-> ImageBaseAddress。
  6. 跳转执行。

整个过程中无任何文件落地磁盘。文件末尾的 64 字节配置结构如下:

偏移量大小描述
0x0032 字节.data 段中的 32 字节 XOR 密钥
0x2012 字节国家检查列表(共 20 个国家)
0x2C4 字节有效载荷大小 ^ fnv1a
0x304 字节(标志位:填充 > 8) ^ fnv1a(掩码)
0x348 字节有效载荷大小 ^ fnv1a
0x3C4 字节掩码

加密算法采用 ChaCha20,尽管攻击者通过全局变量隐藏常量,但仍可识别出标准字符串 expand 32-byte k。flags = 3 启用了反调试检查(包括 PEB->BeingDebugged 和调试端口查询)及反沙箱评分机制。若触发任一条件,程序将静默退出。

由于密钥直接嵌入文件中,无需运行即可通过 Python 脚本解密:

mask = bytes.fromhex("56951de331cd7f254bf1931533dd82bc3c8bf542f0d1ed5736a40f394c51d0a1")
h = fnv1a(mask)
size = u64(footer, 0x34) ^ (h | h << 32)
fl = h ^ u32(footer, 0x30)

key = xor(mask, footer[:32])
nonce = footer[32:44]
payload = chacha20(key, nonce, data[-64 - pad - size : -64 - pad])

解密后的第二层 PE 文件大小为 929 KB,由 MSVC 编译,使用 C++20 标准,并捆绑了 zlib 库。

功能模块与数据窃取目标

内层恶意软件加密了所有字符串,剥离了导入表,仅在运行时解析 API。然而,WinMain 函数以明文形式枚举了所有加载模块,揭示了其主要功能:

osinfo
browsers
telegram
wallets
discord
steam
clipboard
remoteaccess
credentialmanager
authy
notes
obs
ssh
email
games
filegrabber

其他字符串通过 AES-128-CTR 模式加密,每个字符串使用独立密钥,共有 672 处调用点。通过 Unicorn 引擎模拟指令提取密钥、IV 和密文,成功解密了其中 601 个字符串。具体窃取目标包括:

  • 浏览器:Chrome, Edge, Brave, Opera, Opera GX, Vivaldi, Firefox(包含针对 Chrome 新应用程序加密绕过代码)。
  • 加密货币钱包:Exodus, Electrum, Atomic, Guarda, Coinomi, Ledger Live, Trezor Suite, Wasabi, .sub, Monero, Zcash, Armory 以及扩展钱包。
  • 密码管理器:KeePass, KeePassXC, Bitwarden, 1Password, NordPass, RoboForm, Windows 凭证管理器。
  • 账户令牌:Telegram, Discord Token, Steam Cookies, Roblox Cookies, Minecraft 账户, Authy。
  • 开发者工具:SSH, AWS, Azure, GCloud, Kube, Docker。
  • 远程访问工具:AnyDesk, TeamViewer, WinSCP, FileZilla, mRemoteNG, RDCMan。
  • 其他应用:Outlook, Thunderbird, VPN 配置, OBS 设置, 粘贴笔记(Sticky Notes)以及桌面文档。

收集到的数据通过捆绑的 zlib 压缩后发送。

C2 基础设施与域名注册

该恶意软件未硬编码服务器地址,而是从以下资源解密获取:

www.youtube.com/channel/UC18vFC1xgebddr_7NsvgBYA
gist.githubusercontent.com/jasonterra69/48d9e264c05843f0cdc302143b4400c8/raw
[[
]]
ZhxchsdfhSGdfgsgdfAJsakdaksdk2364236AH

上述内容包含一个 YouTube 频道、一个 GitHub Gist、两个括号字符以及一个看似键盘乱打的密钥。YouTube 频道名为 "bubblegym",创建于 2026 年 9 月 14 日。通过对 Base64 解码后的数据与该密钥进行异或运算,可还原出实际的 C2 地址:

b = base64.b64decode("OA0dDQ0HFBQHJyIHEkkQCAlJLS0JTgwAAB8S")
k = b"ZhxchsdfhSGdfgsgdfAJsakdaksdk2364236AH"
bytes(x ^ k[i % len(k)] for i, x in enumerate(b))

值得注意的是,该地址同时也硬编码在二进制文件中作为备用方案,这与通过外部源动态获取地址以增强隐蔽性的初衷相悖。

相关域名 BEENETPROTECT.COM 于 2026 年 9 月 14 日注册,注册商为 Cloudflare, Inc.,名称服务器为 DONALD.NS.CLOUDFLARE.COM 和 JULISSA.NS.CLOUDFLARE.COM。恶意软件构建日期为 10 月 6 日,并于 10 月 8 日上传至 Torrent。

防护建议

对于使用 Sonarr 或 Radarr 等媒体自动化工具的用户,虽然这些服务本身无法执行 EXE 文件,但风险在于用户可能在下载文件夹中误双击运行该文件。建议在自动化流程中采取以下措施:

  • 在排除文件名规则中添加 *.exe, *.scr, *.lnk, *.bat, *.cmd。
  • 遇到此类文件时,使用屏蔽列表功能并从客户端删除。
  • 若特定追踪器持续提供此类恶意文件,考虑降级或放弃使用该追踪器。

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读