Detectando Permissões Delegadas no Active Directory
Oct 27, 2016
Permissões de segurança em Active Directory podem ser um tópico complicado. Não só a Microsoft as oculta por padrão em Users and Computers, como também não existe uma ferramenta integrada para obter uma visão geral de como as permissões foram aplicadas ao AD.
In this article, I’ll take you through the basics of delegating, removing permissions, using built–in tools to find permissions that have been delegated, and finally a custom PowerShell script that scans AD.
Por que delegar?
Imagine que você é o chefe de uma grande empresa com vários departamentos: finanças, RH, vendas, alta gestão. Se cada usuário que esquecesse sua senha tivesse que ligar para o helpdesk de TI, você ficaria sobrecarregado com chamadas.
Em vez disso, você poderia delegar permissões ao chefe de cada departamento para que ele ou ela possa redefinir as próprias senhas de sua equipe.
Outro caso clássico de uso para delegação é a capacidade do pessoal enviar e-mails como se fossem uns aos outros—seja uma caixa de correio compartilhada, ou um assistente pessoal enviando e-mail em nome do seu chefe.
Dar a todos Administração de Domínio?
Você pode ter pensado—okay, vamos dar a cada chefe de departamento permissões de Domain Admin, assim eles podem redefinir as senhas quando necessário.
Embora isso seja tecnicamente verdade, eles poderiam então fazer tudo o que você pode fazer — incluindo acessar dados de usuários. Violação de dados em formação!
Como delegar permissões no AD
A maneira correta de conseguir isso, claro, é usando Delegation. Isso permitirá que você selecione individualmente as permissões que deseja conceder.
1. Abra o Active Directory Users and Computers e conecte-se ao seu domínio de teste favorito.
2. Clique com o botão direito na Unidade Organizacional do departamento à qual deseja conceder permissão para redefinir senhas.
3. Encontre a opção 'Delegate Control' (esta deve ser a primeira opção na lista). Clique nela e pressione Próximo.
4. Agora será solicitado que escolha usuários ou grupos aos quais deseja delegar controle—estas são as pessoas que você quer que possam realizar uma tarefa.
É ALTAMENTE recomendado que você crie um grupo de segurança para cada conjunto de permissões que está delegando (ou seja, um para ‘Sales – Password Reset Ability’, ‘HR – Password Reset Ability’). Isso permite que você adicione/remova usuários desses grupos muito facilmente no futuro, em vez de lidar diretamente com as permissões.
5. Prossiga e adicione um grupo. (Na figura abaixo, adicionei nossa equipe de alta gerência.)
6. Pressione próximo e depois escolha a opção ‘Redefinir senhas de usuário e forçar a alteração de senha no próximo logon’.
7. Pressione próximo e depois finalizar — e pronto!
Removendo permissões delegadas no AD
Agora que você completou o assistente, pode estar se perguntando como verificar se realmente delegou as permissões e como removê-las novamente.
1. A partir de Users and Computers, pressione o menu Visualizar e certifique-se de que 'Recursos Avançados' esteja selecionado.
2. Ao marcar esta caixa, você poderá ver a aba de segurança quando escolher Propriedades nos objetos no Active Directory.
Clique com o botão direito do mouse na mesma OU em que você acabou de delegar permissões e escolha Propriedades, em seguida a aba Segurança.
3. Choose ‘Advanced’ and then scroll up and down until you find the group to whom you just gave permissions. You should see the ‘Reset Password’ permission listed under ‘Access’.
4. If you wanted to remove this permission, you could select it and press Remove, but leave it in place for now and press Cancel.
As you can see, finding delegated permissions is quite hard—especially when you consider that you can delegate not only to OUs, but also to security groups, and even to user objects themselves.
Simplify AD Permissions Analysis
See how Netwrix Access Analyzer can uncover risks in your Active Directory environment
Permission Hunting (Using DSACLS)
So, a nightmare scenario for you to consider is someone has reset the boss’ password and you need to find out who had permission to do it. (If you had Netwrix Auditor installed, you could have a look in there, but for now we’ll assume you don’t.)
1. In Users and Computers, navigate to the user object that you want to check permissions for.
2. Right click and select Choose Properties, then ‘Attribute Editor’
3. Scroll and double click on ‘distinguishedName’. Copy this string for later.
4. Open up a command prompt and type ‘dsacls’, followed by pasting the string you just copied, enclosed in speech marks:
5.Hit enter.
6. At this point you’ll probably realise there’s too many permissions on screen—you have two options:
a. Use |more on the end of the command to display one screen fully at a time.
b. Pipe the output into a text file and read that instead by using > filename.txt.
7. I went for the 2nd option, opened the file in notepad and eventually found that the senior management group has permissions to reset the boss’ password!
Permission Hunting (Using PowerShell)
Now that you’ve discovered delegation, you might be wondering if there are any delegations that you don’t know about—either from past employees, or malicious administrators.
I’ve put together a short PowerShell script which will search each delegable object type and list the two common permission delegations—reset password and ‘send-as’ (from Exchange).
Here’s a sample run from a domain:
To use this script on your own domain:
1. Open Active Directory Users and Computers and navigate to the domain (or Organisational Unit) you’re investigating.
2. Right click it and choose Properties.
3. In the ‘Attribute Editor’ tab, look for the ‘distinguishedName’ property.
4. Select it and press View, then copy the LDAP Path. You will need this later.
5. Download a copy of the script from GitHub:
https://raw.githubusercontent.com/thephoton/activedirectory-delegation-searcher/master/search.ps1
6. Right click and edit the script using PowerShell ISE.
7. Edit line 6 ($bSearch = …), replacing DOMAINCONTROLLER with the name of one of your domain’s DCs.
8. Edit line 6, replacing LDAP with the path you copied in step 4.
9. Save the script and press run.
10. Let the script search through your Active Directory; progress is reported in the console and when it is completed you will receive a popup detailing objects that have permissions delegated to them—you might be surprised!
If you need more information about how to detect who modified permissions in Active Directory check our how-to. There’s also a free tool from Netwrix that delivers actionable insight into who has permissions to what in Active Directory and file shares.
Windows PowerShell Scripting Tutorial for Beginners
Learn moreCompartilhar em
Saiba Mais
Sobre o autor
Matt Hopton
Consultor
Gerente de Rede de TIC, Consultor de TI e empreendedor. Além de trabalhar como Gerente de Rede na Sir Thomas Rich's School, Matt desenvolve e hospeda sites para empresas locais, desenvolve software e fornece recomendações de hardware.
Saiba mais sobre este assunto
Criar usuários do AD em massa e enviar suas credenciais por e-mail usando PowerShell
Como criar, alterar e testar senhas usando PowerShell
Como adicionar e remover grupos AD e objetos nos grupos com PowerShell
Atributos do Active Directory: Último Logon
Confianças no Active Directory