Usando o Powershell para forçar o bloqueio de um usuário no Active Directory

Guido OliveiraActive Directory, PowershellLeave a Comment

Olá Pessoal,

Semana passada recebi uma pergunta a respeito do atributo badpwdcount do Active Ditectory usando Powershell. O objetivo era incrementar esse número afim de bloquear a conta de usuário para fins de teste. Por vias “comuns” não é possível alterar esse atributo como faríamos com outros:

Esse atributo só é incrementado pelo Domain Controller que o usuário está autenticando e não se replica para outros Domain Controllers, portanto precisaríamos simular uma autenticação do usuário com uma senha incorreta com o número de vezes que você deseja incrementar o valor do atributo.

Para simularmos essa autenticação precisamos da Classe System.DirectoryServices.AccountManagement.PrincipalContext, que contém o método ValidateCredentials. Nesse método devemos utilizar 2 argumentos, a SamAccountName do usuário e uma senha incorreta, ao executar esse método, o atributo badpasswd é incrementado, ou seja, precisamos executar esse método as X vezes desejadas em cada Domain Controller do domínio.

Isso pode ser alcançado com o código abaixo, que armazena na variável Domain as informações de cada Domain Controller do domínio, em seguida criamos um laço foreach para percorrer cada um dos Domain Controllers da lista e criamos um PrincipalContext informando o tipo de contexto e o nome do Domain Controller, a partir daí podemos invocar o método ValidateCredentials:

Para facilitar a execução, fiz uma função que encapsula isso de uma forma simplificada:

Lembre-se, não me responsabilizo por uso indevido do código, ele foi criado para fins de aprendizado apenas.

Dúvidas? Sugestões? Comente!

Até a próxima!