O filtro de senhas registradas no Windows 2008 nunca é disparado

4

Eu escrevi um filtro de senhas personalizado para controladores de domínio do Windows (um passfilt.dll) e registrou-o de acordo com as instruções (coloque-a na pasta system32 e atualize a chave de registro)

Mas não há sinais de que a DLL seja chamada. Nenhum.

Configurei a auditoria de eventos do sistema e estou obtendo 4614 events (" Um pacote de notificação foi carregado pelo Security Account Manager. ") Para scecli e rassfm , ambos listados em" HKEY_LOCAL_MACHINE.SYSTEM.CurrentControlSet.Control.Lsa.Notification Packages ". Se eu removê-los de "Pacotes de Notificação", eles não serão lidos. Como esperado. Mas a DLL que eu coloquei em "Pacotes de Notificação" não está carregada. Também não está registrada uma auditoria com falha. Ou qualquer outro evento. A DLL não está carregada, pois posso excluí-la sem bloqueio.

O sistema operacional é o Windows 2008 R2 x64 e estou usando uma versão de 64 bits da minha DLL.

Alguém tem uma ideia de como devo proceder para resolver este problema? Pelo menos encontre uma mensagem de erro ou algo assim ...

    
por henriksen 30.11.2011 / 15:56

3 respostas

3

Você não pode carregar ou descarregar dinamicamente a DLL. Coloque a DLL no system32. Adicione o nome à lista de pacotes de notificação. Você precisa apenas do nome (não da parte .DLL). Você precisará reiniciar. Na inicialização, o SO lê o valor Pacotes de Notificação e carrega todas as DLLs lá. Quando você faz logon, execute winmsd ou msinfo32 para ter certeza de que sua DLL está carregada. Veja Configuração do Computador + Ambiente de Software + Módulos Carregados. A DLL é chamada apenas durante uma alteração pw e somente se o pw atender aos requisitos do Windows (min comprimento, sem problema de idade mínima, não no buffer de histórico). O LSA primeiro verifica os requisitos do Windows (em 2K3 e 2K8) e, em seguida, chama a função PasswordFilter () para cada DLL listada nos pacotes de notificação na ordem listada. Se sua DLL diz que o pw está OK e nenhum outro filtro o rejeita, o pw está comprometido com o AD / SAM e, em seguida, o LSA percorre todas as DLLs listadas lá novamente para chamar PasswordChangeNotify () para que uma DLL possa fazer sincronização pw (ou seja, sincronização está OK desde pw foi confirmado no AD, nunca tente sincronizar a chamada PasswordFilter (). Se você precisar modificar a atualização da DLL, remova a entrada dos Pacotes de Notificação, reinicie, copie a nova para system32, atualize os Pacotes de Notificação novamente e reinicie. Economize tempo, escreva um script e use 2 nomes de DLL assim quando você reinicializa isto você carrega o 2º e então troca atrás ao primeiro em próxima reinicialização, etc. Kernel debugging está lento / doloroso. Portanto, se você depurar, provavelmente será mais fácil gravá-lo em um arquivo.

    
por 03.12.2011 / 06:35
2

Eu resolvi esse problema instalando o pacote redistribuível do C ++ visual studio em cada CD.

Você DEVE instalar a mesma versão do pacote redistribuable do VS C ++ de acordo com a versão do Visual Studio usada para compilar sua dll.

    
por 18.04.2012 / 14:47
0

Você provavelmente precisará executar o regsvr32 para garantir que ele seja registrado corretamente. O link explica a sintaxe adequada (geralmente apenas regsvr32 dllname.dll)

    
por 30.11.2011 / 16:21