
Инструменты эксплуатации PowerShell MachineAccountQuota и DNS

Атрибут ms-DS-MachineAccountQuota по умолчанию в Active Directory позволяет всем пользователям домена добавлять до 10 учётных записей компьютеров в домен. Powermad включает набор функций для эксплуатации ms-DS-MachineAccountQuota без фактического присоединения системы к AD.
Эта функция может возвращать значения, заполненные в атрибуте учётной записи компьютера.
Get-MachineAccountAttribute -MachineAccount test -Attribute discriptionЭта функция использует свойство ms-DS-CreatorSID учётных записей компьютеров для возврата списка имён пользователей или SID и связанной с ними учётной записи компьютера. Свойство ms-DS-CreatorSID заполняется только в том случае, если учётная запись компьютера была создана непривилегированным пользователем.
Get-MachineAccountCreatorЭта функция может отключить учётную запись компьютера, добавленную с помощью New-MachineAccount. Эту функцию следует использовать с тем же пользователем, который создал учётную запись компьютера.
Disable-MachineAccount -MachineAccount testЭта функция может включить учётную запись компьютера, которая была отключена с помощью Disable-MachineAccount. Эту функцию следует использовать с тем же пользователем, который создал учётную запись компьютера.
Enable-MachineAccount -MachineAccount testЭта функция может добавить новую учётную запись компьютера напрямую через LDAP-запрос добавления к контроллеру домена, не влияя на статус присоединения хост-системы к Active Directory.
LDAP-запрос добавления моделируется по образцу запроса добавления, используемого при присоединении системы к домену. Устанавливаются следующие атрибуты (в основном проверяемые контроллером домена):
Новая учётная запись компьютера может использоваться для таких задач, как использование привилегий, предоставленных группе «Компьютеры домена», или в качестве дополнительной учётной записи для перечисления домена, эксплуатации DNS и т. д. По умолчанию учётные записи компьютеров не имеют разрешения на локальный вход. Вы можете использовать инструменты/клиенты, которые принимают сетевые учётные данные напрямую, или через использование 'runas /netonly', или с помощью Invoke-UserImpersonation/Invoke-RevertToSelf от @harmj0y, входящих в PowerView.
Учётные записи компьютеров, созданные стандартными пользователями, будут иметь атрибут mS-DS-CreatorSID, заполненный SID стандартного пользователя.
Обратите внимание, что ms-DS-MachineAccountQuota не даёт аутентифицированным пользователям возможности удалять добавленные учётные записи компьютеров из AD. Для удаления учётной записи потребуется получить повышенные привилегии, если вы хотите избежать передачи этой задачи вашему клиенту.
Добавить новую учётную запись компьютера.
New-MachineAccount -MachineAccount test
Использовать добавленную учётную запись с runas /netonly.
runas /netonly /user:domain\test$ powershell
Эта функция удаляет учётную запись компьютера с привилегированной учётной записью.
Remove-MachineAccount -MachineAccount test -Credential $domainadminЭта функция может заполнять некоторые атрибуты для учётной записи, добавленной через New-MachineAccount, если у пользователя есть права на запись. Эту функцию следует использовать с тем же пользователем, который создал учётную запись компьютера.
Вот список некоторых атрибутов, для которых обычно включён доступ на запись:
Удалить завершающий символ '$' из атрибута SamAccountName.
Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test
Использовать изменённую учётную запись с runas /netonly.
runas /netonly /user:domain\test powershell
Эта функция использует New-MachineAccount для рекурсивного создания как можно большего числа учётных записей компьютеров из одной непривилегированной учётной записи через MachineAccountQuota. Подробности см. в следующей записи блога:
По умолчанию аутентифицированные пользователи имеют разрешение «Создание всех дочерних объектов» в зоне DNS, интегрированной в Active Directory (ADIDNS). Большинство записей, которые в данный момент не существуют в зоне AD, могут быть добавлены/удалены.
Эту функцию можно использовать для добавления/удаления динамических DNS-записей, если на контроллере домена настроен параметр безопасных динамических обновлений (включён по умолчанию). В настоящее время поддерживаются записи A, AAAA, CNAME, MX, PTR, SRV и TXT. Invoke-DNSUpdate моделируется по образцу инструмента nsupdate от BIND при использовании опций '-g' или 'gsstsig'.
Добавить A-запись.
Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125
Удалить A-запись.
Invoke-DNSUpdate -DNSType A -DNSName www.test.local
Добавить SRV-запись.
Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443
Эта функция может поместить узел ADIDNS в состояние «надгробия» (tombstone).
Эта функция может превратить узел, находящийся в состоянии «надгробия», обратно в действительную запись.
Enable-ADIDNSNode -Node *Эта функция может возвращать значения, заполненные в атрибуте узла DNS.
Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecordЭта функция может возвращать владельца узла ADIDNS.
Get-ADIDNSNodeOwner -Node testЭта функция получает DACL узла или зоны ADIDNS.
Получить DACL для зоны по умолчанию, интегрированной в Active Directory, с системы, присоединённой к домену.
Get-ADIDNSPermission
Получить DACL для узла DNS с именем test с системы, присоединённой к домену.
Get-ADIDNSPermission -Node test
Эта функция может возвращать зоны ADIDNS.
Get-ADIDNSZoneЭта функция добавляет ACE в DACL узла или зоны DNS.
Grant-ADIDNSPermission -Node * -Principal "authenticated users"Эта функция добавляет узел DNS в зону DNS, интегрированную в Active Directory (ADIDNS), через зашифрованный LDAP-запрос добавления.
New-ADIDNSNode -Node * -TombstoneЭта функция создаёт правильный массив байтов для атрибута dnsRecord.
New-DNSRecordArray -Data 192.168.0.1Эта функция получает текущий серийный номер SOA для зоны DNS и увеличивает его на заданную величину.
New-SOASerialNumberArrayЭта функция может переименовать узел DNS.
Rename-ADIDNSNode -Node test -NodeNew test2Эта функция может удалить узел DNS.
Remove-ADIDNSNode -Node *Эта функция удаляет ACE из DACL узла или зоны DNS.
Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAllЭта функция может добавлять, заполнять или перезаписывать значения в атрибуте узла DNS.
Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "не удалять"Эта функция может установить владельца узла DNS. Обратите внимание, что требуется маркер с привилегией SeRestorePrivilege.
Set-ADIDNSNodeOwner -Node test -Principal user1Эта функция может генерировать ключи Kerberos AES 256 и 128 из известного имени пользователя и пароля. Это можно использовать для тестирования атаки pass-the-hash в Invoke-DNSUpdate.
Get-KerberosAESKey -Salt TEST.LOCALuser