
Ferramentas de exploit de MachineAccountQuota e DNS em PowerShell

A configuração padrão do atributo ms-DS-MachineAccountQuota do Active Directory permite que todos os usuários do domínio adicionem até 10 contas de máquina a um domínio. O Powermad inclui um conjunto de funções para explorar o ms-DS-MachineAccountQuota sem anexar um sistema real ao AD.
Esta função pode retornar valores preenchidos em um atributo de conta de máquina.
Get-MachineAccountAttribute -MachineAccount test -Attribute discriptionEsta função aproveita a propriedade ms-DS-CreatorSID em contas de máquina para retornar uma lista de nomes de usuário ou SIDs e a conta de máquina associada. A propriedade ms-DS-CreatorSID só é preenchida quando uma conta de máquina é criada por um usuário não privilegiado.
Get-MachineAccountCreatorEsta função pode desabilitar uma conta de máquina que foi adicionada através de New-MachineAccount. Esta função deve ser usada com o mesmo usuário que criou a conta de máquina.
Disable-MachineAccount -MachineAccount testEsta função pode habilitar uma conta de máquina que foi desabilitada através de Disable-MachineAccount. Esta função deve ser usada com o mesmo usuário que criou a conta de máquina.
Enable-MachineAccount -MachineAccount testEsta função pode adicionar uma nova conta de máquina diretamente através de uma solicitação de adição LDAP a um controlador de domínio, sem afetar o status de anexação do sistema host ao Active Directory.
A solicitação de adição LDAP é modelada após a solicitação de adição usada ao ingressar um sistema em um domínio. Os seguintes atributos (principalmente validados pelo DC) são definidos:
Uma nova conta de máquina pode ser usada para tarefas como aproveitar o privilégio concedido ao grupo 'Domain Computers' ou como uma conta adicional para enumeração de domínio, explorações de DNS, etc. Por padrão, contas de máquina não têm permissão de logon local. Você pode usar ferramentas/clientes que aceitam credenciais de rede diretamente ou através do uso de 'runas /netonly' ou do Invoke-UserImpersonation/Invoke-RevertToSelf de @harmj0y incluído no PowerView.
Contas de máquina criadas com usuários padrão terão o mS-DS-CreatorSID preenchido com o SID do usuário padrão.
Observe que o ms-DS-MachineAccountQuota não fornece a capacidade para usuários autenticados excluírem contas de máquina adicionadas do AD. Será necessário obter privilégios elevados para remover a conta se você quiser evitar passar a tarefa para o seu cliente.
Adicionar uma nova conta de máquina
New-MachineAccount -MachineAccount test
Usar a conta adicionada com runas /netonly
runas /netonly /user:dominio\test$ powershell
Esta função remove uma conta de máquina com uma conta privilegiada.
Remove-MachineAccount -MachineAccount test -Credential $domainadminEsta função pode preencher alguns atributos para uma conta que foi adicionada através de New-MachineAccount, se um usuário tiver acesso de gravação. Esta função deve ser usada com o mesmo usuário que criou a conta de máquina.
Aqui está uma lista de alguns dos atributos com acesso de gravação normalmente habilitado:
Remover o '$' final do atributo SamAccountName
Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test
Usar a conta modificada com runas /netonly
runas /netonly /user:dominio\test powershell
Esta função aproveita New-MachineAccount para criar recursivamente quantas contas de máquina forem possível a partir de uma única conta não privilegiada através do MachineAccountQuota. Consulte a seguinte postagem no blog para obter detalhes:
Por padrão, os usuários autenticados têm a permissão 'Create all child objects' na zona DNS Integrada ao Active Directory (ADIDNS). A maioria dos registros que não existem atualmente em uma zona AD podem ser adicionados/excluídos.
Esta função pode ser usada para adicionar/excluir registros DNS dinâmicos se a configuração padrão de atualizações dinâmicas seguras habilitadas estiver configurada em um controlador de domínio. Registros A, AAAA, CNAME, MX, PTR, SRV e TXT são atualmente suportados. Invoke-DNSUpdate é modelado após a ferramenta nsupdate do BIND ao usar as opções '-g' ou 'gsstsig'.
Adicionar um registro A
Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125
Excluir um registro A
Invoke-DNSUpdate -DNSType A -DNSName www.test.local
Adicionar um registro SRV
Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443
Esta função pode tombstone (marcar como excluído) um nó ADIDNS.
Disable-ADIDNSNode -Node *Esta função pode transformar um nó tombstoned novamente em um registro válido.
Enable-ADIDNSNode -Node *Esta função pode retornar valores preenchidos em um atributo de nó DNS.
Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecordEsta função pode retornar o proprietário de um nó ADIDNS.
Get-ADIDNSNodeOwner -Node testEsta função obtém um DACL de um nó ou zona ADIDNS.
Obter o DACL da Zona Integrada ao Active Directory padrão de um sistema conectado ao domínio.
Get-ADIDNSPermission
Obter o DACL de um nó DNS chamado test de um sistema conectado ao domínio.
Get-ADIDNSPermission -Node test
Esta função pode retornar zonas ADIDNS.
Get-ADIDNSZoneEsta função adiciona uma ACE ao DACL de um nó ou zona DNS.
Grant-ADIDNSPermission -Node * -Principal "authenticated users"Esta função adiciona um nó DNS a uma zona DNS Integrada ao Active Directory (ADIDNS) através de uma solicitação de adição LDAP criptografada.
New-ADIDNSNode -Node * -TombstoneEsta função cria um array de bytes válido para o atributo dnsRecord.
New-DNSRecordArray -Data 192.168.0.1Esta função obtém o número de série SOA atual para uma zona DNS e o incrementa pelo valor definido.
New-SOASerialNumberArrayEsta função pode renomear um nó DNS.
Rename-ADIDNSNode -Node test -NodeNew test2Esta função pode remover um nó DNS.
Remove-ADIDNSNode -Node *Esta função remove uma ACE do DACL de um nó ou zona DNS.
Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAllEsta função pode anexar, preencher ou sobrescrever valores em um atributo de nó DNS.
Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"Esta função pode definir o proprietário de um nó DNS. Observe que é necessário um token com SeRestorePrivilege.
Set-ADIDNSNodeOwner -Node test -Principal user1Esta função pode gerar chaves Kerberos AES 256 e 128 a partir de um nome de usuário e senha conhecidos. Isso pode ser usado para testar pass the hash no invoke-DNSUpdate.
Get-KerberosAESKey -Salt TEST.LOCALuser