Clink Fantasma no CMD: Diagnóstico Forense e Remoção Definitiva no Windows 10
Ambiente: Windows 10 22H2 (build 19045.5131) Sintoma: banner Clink v1.7.6 aparece ao abrir o CMD sem instalação aparente. Risco operacional: shell com comportamento não documentado, ruído em automação e suporte.
Quando um componente executa sem constar no PATH, não existe “mágica”: existe gatilho de inicialização em algum ponto da stack. O objetivo aqui é mostrar o fluxo forense que usei para sair de tentativa/erro e chegar à remoção definitiva.
---
1) Incidente e hipótese inicial
Ao abrir o Prompt de Comando:
Clink v1.7.6.d9907d
Copyright (c) 2012-2018 Martin Ridgers
Portions Copyright (c) 2020-2024 Christopher Antos
https://github.com/chrisant996/clink
Testes rápidos:
where clink
clink uninstall
Resultado:
where clinksem retorno;clink uninstallnão reconhecido.
Leitura técnica: o binário está fora do PATH e está sendo chamado por caminho absoluto, profile do terminal, policy ou mecanismo de injeção.
---
2) Vetor padrão: AutoRun do Command Processor
Primeiro suspeito em incidentes de CMD customizado:
reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun
reg query "HKLM\Software\Microsoft\Command Processor" /v AutoRun
No meu caso, as chaves não estavam presentes (erro de chave inexistente). Conclusão: vetor padrão descartado.
---
3) Vetor de injeção global: AppInit_DLLs
Segunda hipótese: injeção de DLL em escopo mais amplo:
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs
Valor vazio. Conclusão: não havia injeção global por AppInit.
---
4) Windows Terminal: o ponto cego mais comum
Em ambientes que usam Windows Terminal, a origem pode estar no profile do próprio app.
Fluxo:
- Abrir Configurações do Windows Terminal.
- Abrir o arquivo JSON de configuração.
- Revisar perfil do
cmd.exe.
Sinal de comprometimento/configuração residual:
"commandline": "cmd.exe /k %LOCALAPPDATA%\\clink\\clink_x64.exe inject"
Se esse trecho existir, o banner aparece mesmo sem PATH e sem AutoRun clássico.
---
5) Busca forense de binários e vetores corporativos
5.1 Varredura real de executáveis e DLLs
where /r C:\ clink_x64.exe
where /r C:\ clink*.dll
Recomendação de operação: rodar CMD como Administrador para não perder diretórios protegidos.
5.2 Chaves de Policy (GPO)
Em parque corporativo, AutoRun pode vir por política e ignorar fluxo “normal”:
reg query "HKLM\Software\Policies\Microsoft\Windows\Command Processor" /v AutoRun
reg query "HKCU\Software\Policies\Microsoft\Windows\Command Processor" /v AutoRun
Se aparecer comando de injeção nessas chaves, remover localmente sem alinhar GPO só cria recorrência no próximo refresh de política.
---
6) Remoção definitiva (runbook)
6.1 Remover gatilhos de execução
Limpeza de AutoRun (quando existir):
reg delete "HKCU\Software\Microsoft\Command Processor" /v AutoRun /f
reg delete "HKLM\Software\Microsoft\Command Processor" /v AutoRun /f
reg delete "HKCU\Software\Policies\Microsoft\Windows\Command Processor" /v AutoRun /f
reg delete "HKLM\Software\Policies\Microsoft\Windows\Command Processor" /v AutoRun /f
6.2 Corrigir profile do Windows Terminal
- remover qualquer
clink ... injectdo campocommandline; - manter apenas
cmd.exeno profile padrão.
6.3 Remover binários órfãos
Depois de identificar caminho real do arquivo:
del /f /q "C:\caminho\para\clink_x64.exe"
del /f /q "C:\caminho\para\clink*.dll"
6.4 Validar com Sysinternals Autoruns
Se persistir, usar Autoruns:
- aba Logon e Command Processor;
- procurar referências a
clink,inject,%LOCALAPPDATA%\clink; - desabilitar e testar antes de excluir.
---
7) Pós-correção: validação operacional
Checklist objetivo:
- abrir
cmd.exelimpo (sem banner); - validar
reg querysem AutoRun residual; - validar Windows Terminal profile sem injeção;
- reiniciar sessão e repetir teste;
- registrar mudança no runbook interno.
Comandos úteis de verificação:
reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun
reg query "HKLM\Software\Policies\Microsoft\Windows\Command Processor" /v AutoRun
where /r C:\ clink_x64.exe
---
8) Lições de infraestrutura e segurança
- Se executa, existe gatilho: PATH é só um dos vetores.
- Policy vence configuração local: sem alinhamento de GPO, problema volta.
- Padrão de shell precisa governança: customização sem documentação vira dívida técnica.
- Ferramenta forense reduz tempo de indisponibilidade: Autoruns economiza horas em incidentes de persistência.
- Sintaxe de registro importa: chaves com espaço (ex.:
"Command Processor") sem aspas geram falso negativo durante triagem.
---
9) Decisão estratégica: legado x stack moderna
Esse incidente reforça um ponto que aplico em operação: CMD deve ser tratado como compatibilidade, não como shell principal.
| Opção | Perfil | Recomendação |
|---|---|---|
| CMD + Clink | Legado híbrido | Evitar como padrão. Aumenta variabilidade de suporte e troubleshooting. |
| PowerShell 7 | Infra/DevOps moderno | Melhor baseline para automação orientada a objetos e observabilidade. |
| Windows Terminal + WSL | Full stack e engenharia de plataforma | Stack mais previsível para desenvolvimento e operação diária. |
---
Conclusão
O “Clink fantasma” não era bug do Windows, era herança técnica com persistência fora do fluxo óbvio. A correção definitiva veio de investigação por camadas: registro, policy, profile e binário real.
Ambiente previsível depende de baseline de shell documentada e auditável.
Este post está licenciado sob CC BY-NC.
Comentários
Participe da discussão abaixo.
Comentários ainda não configurados. Adicione as opções do Cusdis em /assets/json/config/blog-comments-config.json.