AVISO:
Este projeto demonstra técnicas de persistência no Windows por meio de modificações no registro – uma atividade que pode comprometer a segurança e a estabilidade do sistema se utilizada de forma indevida.
Utilize este código apenas para fins educativos e em ambientes de teste.
O autor não se responsabiliza por qualquer dano decorrente do uso deste projeto.
O PersistenceGo é um projeto desenvolvido em Go que implementa 50 funções, cada uma representando uma técnica de persistência no Windows. Estas funções, em sua maioria, interagem com o registro do Windows para configurar a execução automática de um executável (por exemplo, C:\teste\teste.exe) em diferentes fases do boot, logon ou outros eventos do sistema.
Este projeto serve como uma base didática para demonstrar como diversas técnicas – inspiradas em ferramentas como o PersistenceSniper – podem ser implementadas em Go.
A seguir, uma lista detalhada das 50 funções disponíveis no projeto:
-
AddRunPersistenceHKLM
Insere uma entrada emHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runpara execução automática do programa no boot (para todos os usuários). -
AddRunPersistenceHKCU
Insere uma entrada emHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runpara execução automática no logon do usuário atual. -
AddRunOncePersistenceHKLM
Insere uma entrada emHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOncepara execução única no boot. -
AddRunOncePersistenceHKCU
Insere uma entrada emHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOncepara execução única no logon. -
AddIFEO
Utiliza a técnica de Image File Execution Options para redirecionar a execução de um programa específico (ex.:notepad.exe) para um executável customizado. -
AddNLDPDllOverride
Define o valorDLLPathOverrideemSYSTEM\CurrentControlSet\Control\ContentIndex\Language\<subkey>para carregar uma DLL customizada. -
SetAEDebugDebugger
Modifica a chaveAeDebug\DebuggeremHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebugpara definir um depurador personalizado. -
SetWerFaultHangsDebugger
Configura a chaveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\Hangs\Debuggerpara alterar o comportamento do Windows Error Reporting em caso de falha. -
AddCmdAutoRunPersistenceHKLM
Define o valorAutoRunna chaveHKEY_LOCAL_MACHINE\Software\Microsoft\Command Processorpara o Command Processor iniciar automaticamente um comando. -
AddCmdAutoRunPersistenceHKCU
Define o valorAutoRunna chaveHKEY_CURRENT_USER\Software\Microsoft\Command Processorpara o Command Processor no contexto do usuário atual. -
SetExplorerLoad
Configura o valorLoademHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windowspara forçar o Explorer a carregar um executável adicional. -
SetWinlogonUserinit
Altera o valorUserinitemHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogonpara incluir um executável no processo de logon (normalmente concatenado com o valor padrão). -
SetWinlogonShell
Modifica o valorShellemHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogonpara definir um shell customizado (em substituição ao padrão, normalmenteexplorer.exe). -
SetAppCertDlls
Insere uma entrada customizada emHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDllspara carregar uma DLL durante o boot dos processos. -
SetServiceDll
Altera a entradaServiceDllemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Nome_do_Serviço>\Parameterspara que um serviço carregue uma DLL personalizada. -
SetGPExtensionDll
Modifica o valorDllNamena chaveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\<GUID>para utilizar uma DLL customizada na Política de Grupo. -
SetWinlogonMPNotify
Configura o valormpnotifyemHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogonpara executar um programa durante o logon. -
SetCHMHelperDll
Define a localização da DLL emHKEY_LOCAL_MACHINE\Software\Microsoft\HtmlHelp Author\Location, alterando o comportamento do mecanismo de ajuda (CHM). -
SetHHCtrlHijacking
Modifica o valor(Default)emHKEY_CLASSES_ROOT\CLSID\{52A2AAAE-085D-4187-97EA-8C30DB990436}\InprocServer32para redirecionar a carga da DLLhhctrl.ocx. -
CreateStartupFolderShortcut
(Não implementada)
Representa a criação de um atalho na pasta Startup para execução automática – esta técnica é baseada em arquivos e não em registro. -
AddUserInitMprLogonScriptHKLM
Insere ou modifica o valorUserInitMprLogonScriptna chaveHKEY_LOCAL_MACHINE\Environmentpara executar um script no logon. -
AddUserInitMprLogonScriptHKCU
Insere ou modifica o valorUserInitMprLogonScriptna chaveHKEY_CURRENT_USER\Environment. -
SetAutodialDLL
Define o valorAutodialDLLemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameterspara injetar uma DLL via Winsock. -
SetLSAExtensionsDLL
Configura as extensões do LSA alterando o valorExtensionsemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LsaExtensionConfig\LsaSrv. -
SetServerLevelPluginDll
Modifica a chaveServerLevelPluginDllemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameterspara injetar uma DLL no serviço DNS. -
SetLSAPasswordFilterDLL
Altera o valorNotification PackagesemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsapara carregar um filtro de senha customizado. -
SetLSAAuthenticationPackages
Modifica o valorAuthentication PackagesemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsapara alterar os pacotes de autenticação do sistema. -
SetLSASecurityPackages
Altera o valorSecurity PackagesemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsapara modificar os pacotes de segurança. -
SetWinlogonNotificationPackages
Insere uma entrada na chaveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notifypara configurar um pacote de notificação. -
SetExplorerTools
Altera o valor(Default)em uma subchave deHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputerpara injetar um executável customizado. -
SetDotNetDebugger
Configura o depurador para aplicações .NET modificando o valorDbgManagedDebuggertanto em
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFrameworkquanto em
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework. -
AddRunExPersistence
Insere uma entrada na chave alternativaHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunEx. -
SetAppPath
Define o caminho padrão para um aplicativo emHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\<Nome_do_App>. -
SetTerminalServicesInitialProgramPolicy
Modifica o valorInitialProgramemHKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Servicespara definir um programa a ser iniciado em sessões RDP via política. -
SetTerminalServicesInitialProgramWinStations
Altera o valorInitialProgramemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. -
SetAMSIProvider
Configura um provedor AMSI falso, modificando o valor(Default)na chave
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\<GUID>\InprocServer32. -
SetPowershellProfile
(Não implementada)
Técnica que normalmente modifica arquivos de perfil do PowerShell (não baseada em registro). -
SetSilentExitMonitor
Altera o valorMonitorProcessem uma subchave de
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit. -
SetTelemetryControllerCommand
Configura o valorCommandem
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController. -
SetRDPWDSStartupPrograms
Modifica o valorStartupProgramsem
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd. -
SetDotNetStartupHooks
Define a variável de ambienteDOTNET_STARTUP_HOOKSvia registro em
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. -
SetDsrmBackdoor
Altera o valorDsrmAdminLogonBehaviorem
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsapara possibilitar acesso via DSRM. -
SetGhostTask
(Não implementada)
Técnica avançada que envolve parsing e modificação de chaves de tarefas agendadas “fantasma” no registro. -
SetBootVerificationProgramHijacking
Modifica o valorImagePathem
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BootVerificationProgrampara substituir o programa de verificação do boot. -
SetAppInitDLLs
Configura a chaveAppInit_DLLsem
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windowspara sistemas 64-bit. -
SetAppInitDLLsWow6432
Configura a chaveAppInit_DLLsem
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windowspara sistemas 32-bit em ambiente 64-bit. -
SetBootExecute
Altera o valorBootExecuteem
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Managerpara executar comandos no boot. -
SetNetshHelperDLL
Insere uma entrada personalizada em
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NetShpara que o netsh.exe carregue uma DLL customizada. -
SetSetupExecute
Modifica o valorSetupExecuteem
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Managerpara injetar comandos durante o processo de setup. -
SetPlatformExecute
Altera o valorPlatformExecuteem
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Managerpara definir comandos executados pelo Session Manager no boot.
- Go: Versão 1.16 ou superior (recomendada).
- Ambiente Windows: O projeto deve ser executado no Windows.
- Privilégios Administrativos: Necessários para modificar chaves em
HKEY_LOCAL_MACHINE. - Dependência: golang.org/x/sys/windows/registry
-
Clone o repositório:
git clone https://github.com/rafaelwdornelas/PersistenceGo.git cd PersistenceGo ```
-
Compile o projeto:
go build -o persistencego.exe main.go``` -
Execute o programa com privilégios administrativos:
Execute o persistencego.exe no Windows (como administrador). O programa tentará configurar cada uma das 50 técnicas de persistência apontando para o executável C:\Users\teste\teste.exe.
Atenção: Alterações no registro podem afetar o funcionamento do sistema. Use este projeto apenas em ambientes de teste e com extremo cuidado!