乐于分享
好东西不私藏

服了!Notepad++中居然还有假插件,并且还能连接C2服务器

服了!Notepad++中居然还有假插件,并且还能连接C2服务器

将二进制空间安全设为"星标⭐️"

第一时间收到文章更新

技术原理

Notepad++默认支持插件,启动时会按常规机制加载plugins目录下的DLL,攻击者在/plugins/NppExport/路径放了一个名为NppExport.dll的恶意库,文件名蹭的是真实导出插件的知名度,但文件内容已被替换,该恶意插件被命名为:LUNCHPOKE。

有一个关键地方在于:notepad++.exe可能是正版且带有签名的,但它加载的NppExport.dll不必签名,许多企业的应用白名单策略停在进程名、发布者层,看到 Notepad++ 就放行,等EDR去查父进程时,恶意行为已经发生。插件加载本身是设计内的正常行为,不是传统意义上修一个补丁就能根除的 RCE 漏洞,防守重点应转向组件来源与加载路径,而不是指责编辑器厂商。

LUNCHPOKE运行后会做以下几件事情:

(1).创建目录,例如 %PUBLIC%\Libraries\fFthY3-Ytrevc3w-ab3\(目录名会变化)

(2).调用同目录bundled的winrar.exe,解压密码保护的updater.rar,得到 RemoteLibUpdater.exe 与 InitTest.dll

(3).将系统自带的schtasks.exe 复制到 %PUBLIC%\Wallpapers\Background.exe(文件名伪装)

(4).创建计划任务 \W1n3r-U09oTy-Ap5\Updates,每3分钟以参数 setup nodisplay 运行RemoteLibUpdater.exe。

持久化落地后,计划任务按固定间隔拉起RemoteLibUpdater.exe。它的主要功能就是用LoadLibrary一类常规手段把同目录下的InitTest.dll拉进进程。其中InitTest.dll才是真正的核心组件MATCHBOIL.V2,这是一个用C# 写的二阶段 loader,并嵌进了Notepad++插件链里。V2沿用了旧版的C2 拉取、配置热更新和后续模块投递,另外补了一手:目标机没有WinRAR时,会自己去 Dropbox下一个,保证后面下来的压缩包照样能解。

MATCHBOIL.V2跑起来之后,先用WMI读ProcessorId、BIOS 序列号、MAC拼设备标识,再向geostat.lat发HTTP信标。回连地址和后续模块Payload下载走伪装的URI,比如:/articles/images/forest.jpg,返回体里嵌入HEX/BASE64编码的blob,解码后写成 .com 或等价扩展名执行。

 攻击过程

根据公开的分析,完整感染链大致如下:

第一步:钓鱼入口。受害者收到带图片附件的邮件。点击图片后,经短链跳转到 EasySend等文件分享服务,下载ZIP。压缩包内并非PDF,而是VBS脚本,文件名刻意做成document.pdf .vbs这类形式,扩展名前大量空格,资源管理器里极易被看成PDF。

第二步:声东击西。用户双击脚本后,一边从远端拉取并打开诱饵 PDF(例如同名document.pdf),一边在后台下载第二段载荷Evernote.zip。屏幕上是正常文档,磁盘上已在解压攻击包。

第三步:落地Notepad++ bundle。Evernote.zip内含四件套:完整 Notepad++ 8.8.3、恶意NppExport.dll、密码保护updater.rar、合法 winrar.exe。VBScript将其解压到%PUBLIC%下随机路径(如 %PUBLIC%\Libs_*\Notepad\),并启动notepad++.exe。

第四步:插件触发。编辑器正常弹出,用户很难察觉异常;启动流程自动加载 LUNCHPOKE(NppExport.dll),开始解压 RAR、写目录、拷 schtasks、建计划任务。

第五步:持久化与加载。计划任务每3分钟唤醒BURNYBEAR(RemoteLibUpdater.exe),在参数正确时加载MATCHBOIL.V2(InitTest.dll)。

从受害者视角,整个流程看起来合理:一封工作邮件、一份打开的PDF、一个常用的文本编辑器。没有任何一步要求用户具备技术背景;攻击者依赖的正是用户对日常办公文件的放松警惕。

安全防护策略 

虽然更新像WinRAR、7-zip、Notepad++这类普通应用到最新版本总是没错,但并不是打完补丁就完事儿了,这次样本自带WinRAR、自带Notepad++,根本就不碰你系统里的旧版本应用,补丁通常只对通用攻击面有用,但对签名进程加载未签名DLL这种方式却无能为力。

入口防护:邮件网关和Web代理要拦"图片附件 → 短链 → 文件分享"这条链,别等EXE落地。用户侧重点识别.pdf、.vbs、文件名空格伪装;终端上用ASR或 AppLocker限制wscript.exe、cscript.exe 执行,先把VBScript dropper掐掉。

主机防护:靠行为关联,不靠文件名黑名单。利用Sysmon监控该事件:notepad++.exe从%PUBLIC% 等可写目录启动并加载未签名 NppExport.dll;同一窗口内若叠加WinRAR解压加密RAR、新建固定间隔(如 3 分钟)的计划任务,可按下载 → 便携程序 → 侧载 → schtasks → 周期执行形成告警。

策略层防护:白名单不能只认进程名或Publisher,要加安装路径和哈希;%PUBLIC%下跑的编辑器进程单独限制网络和持久化。schtasks.exe被复制改名、陌生DLL被可信进程加载、异常计划任务创建则默认拒绝或高等级告警。检测规则按行为序列写,别绑死某个DLL文件名。

总结

这次攻击再一次证明: 在Windows企业环境里,最危险的未必是0day漏洞,而是你允许运行的那个合法程序,帮攻击者完成了加载。Notepad++没有中毒,开发者也不是供应链被黑;攻击者只是利用用户对常用工具的放松警惕,把恶意DLL放进插件目录,再用计划任务把 loader 钉死在系统里。

攻击者手法通常变的是包装与入口,不变的是钓鱼驱动、可信工具滥用、侧载 +计划任务持久化这几条技术主线。对防守方而言,追新文件名只能缓解一时;真正有效的是防住侧加载、短周期计划任务、公共目录下的便携软件这类跨样本的重复行为。

(全文完)