terça-feira, 21 de março de 2023

Security: Entendendo o "AdminSDHolder", o processo "SDProp" e o atributo "AdminCount"


Introdução

            O gerenciamento de segurança no Active Directory é uma tarefa essencial para garantirmos a integridade dos dados e protegermos o ambiente contra ameaças, sejam elas internas ou externas. 

            Para isso, existem diversos recursos e mecanismos que permitem aos administradores definir e aplicar políticas de segurança, bem como monitorar e auditar as ações realizadas por usuários e grupos.

            Neste artigo, falarei sobre três elementos chave do gerenciamento de segurança no Active Directory: AdminSDHolder, SDPROP e o atributo AdminCount.

            Abordarei o que cada um desses elementos faz, e como eles se relacionam entre si para garantir a segurança do ambiente.


AdminSDHolder

            AdminSDHolder é um objeto interno do Active Directory que é responsável por garantir que as contas privilegiadas mantenham um conjunto de permissões pré-definidas.

            O AdminSDHolder funciona definindo um conjunto de permissões padrão que são aplicadas a todas as contas que possuem o atributo AdminCount definido como "1".

            Isso significa que qualquer conta que receba privilégios administrativos tenha suas permissões restritas ao que foi definido pelo AdminSDHolder.

            O AdminSDHolder é criado automaticamente durante o processo de instalação e configuração do Active Directory em um controlador de domínio.

            Especificamente, o AdminSDHolder é criado como um objeto de segurança em um contêiner chamado "System" na raiz do domínio.

            A imagem abaixo ilustra a localização do objeto no Active Directory.



            O objetivo do AdminSDHolder é garantir que determinados objetos do Active Directory que possuem privilégios elevados, como por exemplo, membros do grupo "Domain Admins", "Enterprise Admins" e "Schema Admins", mantenham as permissões de segurança adequadas.

            Para determinarmos com exatidão os usuários e grupos protegidos por padrão, considerem a tabela abaixo.


            O AdminSDHolder é um recurso crítico para a segurança do Active Directory e ajuda a garantir que os objetos privilegiados sejam protegidos contra alterações não autorizadas nas permissões de segurança.

            Para garantir que as permissões de segurança desses objetos privilegiados não sejam alteradas, o AdminSDHolder reaplica periodicamente as configurações de segurança nele contidas, garantindo assim que as permissões de segurança permaneçam consistentes em todo o ambiente do Active Directory.

            É importante termos ciência de que, embora o AdminSDHolder seja automaticamente criado no nível do domínio, ele tem implicações de segurança para toda a floresta.

            Isso ocorre porque, se as permissões de segurança de objetos privilegiados forem comprometidas em um domínio, de alguma forma isso pode afetar a segurança de toda a floresta.

            Portanto, é importante garantir que o AdminSDHolder esteja configurado corretamente em todos os domínios de uma floresta, para garantir a segurança adequada do ambiente do Active Directory.


SDPROP

O que é o SDProp?

            SDPROP (Security Descriptor Propagation) é um processo que é executado automaticamente no DC que hospeda a função de PDC Emulator a cada 60 minutos (por padrão) e que garante que as permissões definidas pelo AdminSDHolder sejam aplicadas a todas as contas que possuem o atributo AdminCount definido como "1".

            Isso inclui contas de usuário, grupos e computadores que possam ter recebido privilégios elevados no domínio.

            Ele garante que as permissões sejam aplicadas mesmo que tais objetos tenham sido movidos ou renomeados dentro do Active Directory.

            O SDProp aplica as definições de segurança do AdminSDHolder a todos os objetos que são membros dos grupos privilegiados.

            O SDProp é uma parte importante da estrutura de segurança do Active Directory e ajuda a garantir que as permissões de segurança sejam consistentes em toda a árvore do Active Directory, o que ajuda a proteger os recursos do sistema contra acesso não autorizado.

            Ele compara as permissões no objeto AdminSDHolder do domínio com as permissões definidas nas contas e grupos protegidos no domínio.

            Se as permissões em qualquer uma das contas e / ou grupos protegidos não corresponderem às permissões definidas no objeto AdminSDHolder, as permissões nas contas e grupos protegidos serão redefinidas para corresponder às do objeto AdminSDHolder do domínio.

            Além disso, a herança de permissões é desabilitada em grupos e contas protegidas, o que significa que, mesmo que as contas e grupos sejam movidos para locais diferentes no Active Directory, eles não herdam permissões de seus novos objetos pai.

            A herança está desabilitada no objeto AdminSDHolder para que as alterações de permissão nos objetos pai não alterem as permissões do AdminSDHolder.

            Normalmente, não alteramos o intervalo no qual o SDProp é executado, exceto para fins de teste.

            Se precisarmos alterar o intervalo de execução do SDProp, no PDC Emulator do domínio,devemos alterar ou modificar o valor DWORD denominado  "AdminSDProtectFrequency" em "HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters".

            O intervalo de valores deve ser informado em segundos, variando entre 60 a 7200 (um minuto a duas horas).

            Para reverter as alterações, exclua a chave AdminSDProtectFrequency. 

            Isso fará com que o intervalo de execução do SDProp seja revertido para o intervalo padrão de 60 minutos.

            Um ponto importante é saber que, a redução desse intervalo pode aumentar a sobrecarga de processamento consumido pelo LSASS.exe no controlador de domínio.

            O impacto desse aumento, depende do número de objetos protegidos no domínio.

Executando o SDProp manualmente

            Uma abordagem interessante para testarmos as alterações do AdminSDHolder é executar o SDProp manualmente, o que faz com que a tarefa seja executada imediatamente, sem afetar a execução agendada.

            O procedimento para execução manual do SDProp é feito de forma diferente nos controladores de domínio que executam sistemas operacionais anteriores ao Windows Server 2008, se comparado aos controladores de domínio que executam o Windows Server 2008 R2 ou posteriores.

            Aqui, focarei em versões suportadas do sistema operacional.

            Para isso, utilizamos o utilitário ldp.exe no PDC Emulator para alterar o atributo denominado "RunProtectAdminGroupsTask" para 1.

            Também é possível forçar a execução via LDIFDE ou scripts em powershell.


Atributo AdminCount

            Outro elemento importante para controle é o atributo "AdminCount".            

            O atributo AdminCount é um atributo interno do Active Directory que é definido automaticamente para todas as contas de usuário ou grupos que recebem privilégios elevados.

            Quando esse atributo é definido como "1", a conta é considerada uma conta privilegiada e terá suas permissões gerenciadas pelo AdminSDHolder e pelo processo SDPROP.

            A imagem abaixo ilustra essa situação.


            O atributo AdminCount é utilizado pelo sistema operacional Windows Server para determinar se um usuário deve receber privilégios adicionais.

            Quando uma conta de usuário ou grupo é adicionado a um grupo altamente privilegiado,  como os mencionados na tabela acima, o Windows verifica se o valor do atributo "AdminCount" é igual a 0 ou 1.

            Se o valor for 0, o atributo é alterado para "1" e o usuário recebe privilégios elevados.

            Se o valor for 1, o Windows manterá esse valor.

            Um detalhe importante é saber que, quando um usuário que possui o atributo "AdminCount" definido como "1" é removido de um grupo privilegiado, o valor do atributo não é alterado.

            Isso significa que o usuário ainda possui permissões elevadas, mas não tem privilégios adicionais.

            No entanto, ele pode se inserir em grupos privilegiados.

            Portanto, o impacto é que o usuário ainda possui permissões elevadas, mas não pode realizar tarefas que exigem privilégios adicionais.

            Existem algumas maneiras de consultarmos o atributo "AdminCount" no ambiente do Active Directory. Entre elas temos:

1- Usando o console "Usuários e Computadores do Active Directory":

            Abra o console "Usuários e Computadores do Active Directory", selecione o usuário que deseja verificar e abra suas propriedades. Na guia "Attribute Editor", role para baixo até encontrar o atributo "AdminCount" e verifique seu valor.

2- Através do comando: Get-ADUser -Identity <nome_do_usuário> -Properties AdminCount

            Se o usuário possuir o atributo definido como "1", esse comando retornará o valor do atributo "AdminCount" do usuário especificado.

3- Usando o ADSI Edit: O ADSI Edit é uma ferramenta de gerenciamento do Active Directory disponível na instalação padrão do Windows.

            Com o ADSI Edit, podemos navegar até a entrada do usuário que desejamos verificar e consultar o valor do atributo "AdminCount".

            No entanto, é importante notar que nem todos os usuários terão o atributo "AdminCount" definido em seu objeto.

            O atributo "AdminCount" é definido automaticamente pelo Active Directory quando um usuário é adicionado a um grupo privilegiado.

            Portanto, se um usuário nunca foi adicionado a nenhum desses grupos, o valor do atributo "AdminCount" será zero.


Conclusão

            Em suma, o objeto AdminSDHolder, o processo SDProp e o atributo AdminCount são elementos fundamentais na administração e segurança de objetos do Active Directory.

            O AdminSDHolder define as permissões padrão para usuários com privilégios elevados, enquanto o SDProp garante que essas permissões sejam aplicadas a todos os objetos do diretório.

            O AdminCount, por sua vez, é um atributo que controla a elevação de privilégios.

            É importante entendermos como esses conceitos funcionam para garantirmos a segurança e a integridade do Active Directory.

            Além disso, é crucial implementarmos práticas de segurança adequadas, como a limitação do número de usuários com privilégios elevados e a monitoração constante do uso desses privilégios.

            Com essas medidas, é possível minimizar os riscos de violações de segurança e mantermos a estabilidade do ambiente de rede.

Até a próxima!!!