Active Directory Machine Account Quota (ms-DS-MachineAccountQuota): O Básico
O Active Directory Machine Account Quota — o atributo ms-DS-MachineAccountQuota, armazenado no próprio objeto de domínio — vem, por padrão, definido como 10 em todo domínio. Isso significa que qualquer usuário de domínio autenticado, sem nenhum direito administrativo delegado, pode adicionar até dez novas contas de computador ao domínio logo de saída. Isso é verdade desde que o atributo foi introduzido com o Windows 2000 Server, e continua sendo o valor padrão em domínios criados hoje, a menos que um administrador o tenha explicitamente hardenizado.
Um engenheiro da Microsoft documentou esse padrão claramente no próprio blog TechNet da empresa, em 2005: "Most of you know the limit of 10 times authenticated users can join machines to a domain" ("A maioria de vocês conhece o limite de 10 vezes em que usuários autenticados podem adicionar máquinas a um domínio"), descrevendo ms-DS-MachineAccountQuota como a propriedade do objeto de domínio que controla isso, editável via ADSI Edit. A referência de política de segurança atual da Microsoft para o direito de usuário relacionado Add workstations to domain (SeMachineAccountPrivilege) confirma o mesmo número pelo lado do privilégio: "A user who is assigned this user right can add up to 10 workstations to the domain" ("Um usuário ao qual esse direito é atribuído pode adicionar até 10 estações de trabalho ao domínio"), e que, em controladores de domínio, esse direito é concedido por padrão ao grupo Authenticated Users.
ℹ️ Nota: a quota e o direito de usuário são dois controles diferentes que, por coincidência, compartilham o mesmo valor padrão. ms-DS-MachineAccountQuota limita quantos computadores uma conta pode criar; SeMachineAccountPrivilege controla se uma conta pode sequer usar esse caminho de join self-service baseado em quota.
Por que o padrão sozinho não conta toda a história
Há um segundo caminho, independente da quota, que vale a pena conhecer antes de "corrigir" isso: a própria documentação da Microsoft observa que "users can also join a computer to a domain if they have the Create Computer Objects permission for an organizational unit (OU) or for the Computers container" ("usuários também podem adicionar um computador a um domínio se tiverem a permissão Create Computer Objects para uma unidade organizacional (OU) ou para o container Computers"), e que usuários com essa permissão delegada "can add an unlimited number of devices to the domain regardless of whether they have the Add workstations to domain user right" ("podem adicionar um número ilimitado de dispositivos ao domínio, independentemente de terem o direito de usuário Add workstations to domain"). Zerar a quota não afeta em nada uma conta que já possui direitos delegados de Create Computer objects em uma OU — os dois mecanismos precisam ser revisados juntos, o que explica por que essa configuração continua aparecendo em revisões comuns de configurações incorretas de segurança do Active Directory anos depois de ter sido documentada pela primeira vez.
Por que uma Conta de Computador Self-Service É um Ponto de Apoio
Uma conta de computador não é um objeto qualquer. É um security principal completo, com SID própria e uma senha escolhida pelo criador (ou gerada por uma ferramenta) — por padrão, ela cai no container CN=Computers, pertencendo ao criador, não aos Domain Admins. Por si só, não carrega nenhum privilégio especial. O que ela fornece é uma identidade ingressada no domínio, totalmente controlada pelo atacante — o pré-requisito que faltava para várias técnicas de abuso de delegação já cobertas em outros artigos deste catálogo, principalmente o abuso de delegação restrita baseada em recursos (RBCD) e a superfície de ataque mais ampla de objetos de computador.
Criar essa conta não exige nada além de um usuário de domínio padrão e uma quota acima de zero. Ferramentas públicas transformam isso em uma única linha de comando, tudo documentado em referências da comunidade como a página sobre MachineAccountQuota do The Hacker Recipes:
# Impacket — criação de conta de computador via SAMR
addcomputer.py -computer-name 'PWN01$' -computer-pass 'P@ssw0rd123!' \
-dc-host dc01.corp.local corp.local/lowpriv:'Password1'
# Powermad — mesmo resultado via LDAP a partir de um host Windows ingressado no domínio
New-MachineAccount -MachineAccount PWN01 -Password (ConvertTo-SecureString 'P@ssw0rd123!' -AsPlainText -Force)
bloodyAD e Certipy account create expõem a mesma primitiva via LDAP para operadores que preferem uma ferramenta única e multiplataforma. Nenhuma delas exige privilégios elevados — apenas o ms-DS-MachineAccountQuota padrão de 10.
⚠️ Aviso: um atacante não precisa comprometer nada para chegar a essa etapa. Um único conjunto de credenciais de domínio de baixo privilégio — frequentemente obtido via phishing ou password spraying — já é suficiente.
A Cadeia de Ataque: De uma Conta de Computador Gratuita ao Abuso de Delegação
Etapa 1 — Confirmar se a Quota É Explorável
Uma consulta LDAP rápida, anônima ou autenticada, contra o objeto de domínio revela o valor atual:
ldapsearch -x -H ldap://dc01.corp.local -D 'corp\lowpriv' -w 'Password1' \
-b 'DC=corp,DC=local' -s base '(objectClass=domain)' ms-DS-MachineAccountQuota
Se o valor retornado for maior que zero, e a conta que executa a consulta não tiver nenhuma outra restrição, a criação self-service de computadores está disponível.
Etapa 2 — Criar uma Conta de Computador Controlada pelo Atacante
Usando qualquer uma das ferramentas mostradas acima, o atacante gasta uma unidade da própria quota para criar uma conta de máquina. Essa única ação produz uma SID de máquina com senha conhecida — uma identidade que não existia um instante antes e que os Domain Admins não provisionaram, revisaram nem aprovaram.
Etapa 3 — Encadear com o Abuso de Delegação
A conta de computador recém-criada não é, por si só, privilegiada — mas se torna a identidade controlada por meio da qual as cadeias de RBCD e NTLM relay pivotam. Em cenários de relay, técnicas de coerção (por exemplo, no estilo PetitPotam, com autenticação forçada) são usadas para retransmitir a autenticação NTLM de uma vítima para LDAP/LDAPS em um controlador de domínio; o ntlmrelayx.py do Impacket pode então usar a opção --delegate-access para criar uma conta de computador nessa sessão retransmitida e, no mesmo passo, configurar msDS-AllowedToActOnBehalfOfOtherIdentity no alvo retransmitido, de modo que a nova conta de computador possa se passar por usuários arbitrários perante esse alvo via S4U2Self/S4U2Proxy — transformando uma única autenticação retransmitida em acesso RBCD permanente. A mecânica completa do próprio RBCD, e o conjunto mais amplo de formas pelas quais os atributos e ACLs de um objeto de computador são abusados, estão cobertos nos dois artigos vinculados acima; o machine account quota é a configuração que fornece, em primeiro lugar, o objeto de computador controlado pelo atacante do qual essas cadeias dependem.
Detecção
| Indicador | Event ID / Atributo | Origem | O que observar |
|---|---|---|---|
| Conta de computador criada | 4741 | Log de eventos de segurança do DC | TargetUserName termina em $; SubjectUserName é um usuário padrão, não uma conta de provisionamento/serviço esperada |
| Marcador de criação self-service | mS-DS-CreatorSID | LDAP, objeto de computador | Preenchido apenas quando o objeto foi criado pelo caminho self-service baseado em quota, por uma conta não administrativa e sem delegação — um objeto de computador criado por admin ou delegação deixa esse campo vazio |
| Valor atual da quota | ms-DS-MachineAccountQuota | Objeto de domínio (LDAP) | Qualquer valor diferente de zero em um domínio onde o join self-service não é um fluxo de trabalho pretendido |
| Criação em rajada | 4741 agregado | SIEM | O mesmo SubjectUserName criando múltiplos objetos de computador em uma janela curta de tempo — um usuário legítimo raramente ingressa várias máquinas em poucos minutos |
# Valor atual da quota
Get-ADObject (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota
# Objetos de computador criados via o caminho self-service de quota (mS-DS-CreatorSID preenchido)
Get-ADComputer -Filter * -Properties ms-DS-CreatorSID |
Where-Object { $_.'ms-DS-CreatorSID' } |
Select-Object Name, DistinguishedName, ms-DS-CreatorSID
Estabelecendo uma Linha de Base para o Provisionamento Legítimo
💡 Dica: estabeleça uma linha de base para o volume "normal" de eventos 4741 do seu pipeline legítimo de provisionamento (SCCM, Intune Hybrid Join, imaging) antes de alertar sobre ele — caso contrário, o onboarding rotineiro de dispositivos vai afogar o sinal.
Ferramentas de provisionamento legítimas geralmente rodam sob contas de serviço dedicadas, ingressando máquinas em uma OU conhecida, seguindo um cronograma previsível. Qualquer evento 4741 em que o SubjectUserName seja uma conta de usuário final padrão, ou em que o objeto de computador resultante caia fora dessa OU, merece atenção independentemente do volume.
Remediation
-
Definir a quota em nível de domínio como zero. Esta é a mudança de maior impacto:
Set-ADDomain -Identity corp.local -Replace @{'ms-DS-MachineAccountQuota'='0'}Verifique com a consulta
Get-ADObjectacima. -
Reatribuir o direito de usuário "Add workstations to domain". Conforme a própria orientação de política de segurança da Microsoft, remova-o de Authenticated Users na Default Domain Controllers Policy e conceda
SeMachineAccountPrivilegeapenas a um grupo dedicado de provisionamento. A quota sozinha não fecha essa porta — o direito de usuário é o segundo portão, e a própria orientação da Microsoft classifica deixá-lo em Authenticated Users como uma "moderate vulnerability". -
Delegar
Create Computer objectsde forma restrita. Conceda apenas em uma OU dedicada de computadores, apenas à conta ou grupo que de fato provisiona máquinas (conta de serviço de imaging, SCCM, Intune Hybrid Join) — nunca a Authenticated Users ou Domain Users. Lembre-se de que essa permissão delegada ignora a quota completamente, então o escopo importa mais do que o número. -
Alertar sobre o Event ID 4741 combinado com
mS-DS-CreatorSIDpreenchido, especialmente para objetos de computador que caem fora da OU de provisionamento esperada. -
Reverificar após migrações de domínio ou novas implantações.
ms-DS-MachineAccountQuotaé definido por objeto de domínio; um domínio recém-promovido ou migrado reintroduz o padrão de 10, a menos que seja explicitamente hardenizado novamente.
Verificando a Correção
Depois de definir a quota como zero e reatribuir o direito de usuário, confirme que a mudança realmente está em vigor tentando um ingresso de domínio a partir de uma conta de teste padrão, sem delegação — deve falhar com um erro de acesso negado. Execute novamente a consulta Get-ADObject da seção de Detecção para confirmar o valor armazenado, já que o atraso de propagação de GPO pode, do contrário, fazer uma mudança parecer aplicada antes de ter alcançado todos os controladores de domínio.
🚨 Perigo: Domain Admins, e qualquer conta com
Create Computer objectsdelegado separadamente, nunca são limitados pela quota. Defini-la como 0 é necessário, mas não suficiente — combine com as mudanças de direito de usuário e delegação acima.
Essa configuração é exatamente o tipo de verificação de atributo único que pertence a uma auditoria de segurança recorrente do Active Directory, e não a uma correção pontual, já que ela reverte silenciosamente ao padrão em qualquer domínio recém-criado ou migrado.
Como a EtcSec Detecta Isso
A auditoria de Active Directory da EtcSec sinaliza um ms-DS-MachineAccountQuota deixado acima de zero como Machine Account Quota Elevated Above Default e rastreia separadamente as condições de exploração como Machine Account Quota Abuse, correlacionando o valor atual da quota com achados de delegação e de objetos de computador, como Computer RBCD e RBCD Abuse, de modo que a cadeia de "qualquer usuário pode adicionar um computador" até "qualquer usuário pode se passar por um principal privilegiado em um host alvo" seja exposta como um único caminho de ataque, em vez de quatro achados não relacionados.
ℹ️ Nota: a EtcSec verifica automaticamente essa vulnerabilidade em toda auditoria de AD. Execute uma auditoria gratuita para verificar seu ambiente.
Explore as paginas de identidade que sustentam este tema
