Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Powermad — Инструменты эксплуатации PowerShell MachineAccountQuota и DNS | Kitploit
Инструменты/GitHubGitHub/kevin-robertson/powermad
Повышение привилегийРазведкаУправление идентификациейЛатеральное перемещениеТестирование на ПроникновениеАутентификацияRed Teaming
GitHubkevin-robertson/powermad

Powermad

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

Репозиторий
1.5k1883 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Powermad_logo

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

Вики

  • https://github.com/Kevin-Robertson/Powermad/wiki

Запись в блоге

  • Beyond LLMNR/NBNS Spoofing - Exploiting Active Directory-Integrated DNS

Функции

  • Функции MachineAccountQuota
  • Функции DNS
  • Функции динамических обновлений
  • Функции ADIDNS
  • Прочие функции

Функции MachineAccountQuota

Атрибут ms-DS-MachineAccountQuota по умолчанию в Active Directory позволяет всем пользователям домена добавлять до 10 учётных записей компьютеров в домен. Powermad включает набор функций для эксплуатации ms-DS-MachineAccountQuota без фактического присоединения системы к AD.

Get-MachineAccountAttribute

Эта функция может возвращать значения, заполненные в атрибуте учётной записи компьютера.

Пример:
  • Получить значение атрибута 'description' для учётной записи компьютера с именем 'test'.
    Get-MachineAccountAttribute -MachineAccount test -Attribute discription

Get-MachineAccountCreator

Эта функция использует свойство ms-DS-CreatorSID учётных записей компьютеров для возврата списка имён пользователей или SID и связанной с ними учётной записи компьютера. Свойство ms-DS-CreatorSID заполняется только в том случае, если учётная запись компьютера была создана непривилегированным пользователем.

Пример:
  • Получить список всех заполненных атрибутов ms-DS-CreatorSID.
    Get-MachineAccountCreator

Disable-MachineAccount

Эта функция может отключить учётную запись компьютера, добавленную с помощью New-MachineAccount. Эту функцию следует использовать с тем же пользователем, который создал учётную запись компьютера.

Пример:
  • Отключить учётную запись компьютера с именем test.
    Disable-MachineAccount -MachineAccount test

Enable-MachineAccount

Эта функция может включить учётную запись компьютера, которая была отключена с помощью Disable-MachineAccount. Эту функцию следует использовать с тем же пользователем, который создал учётную запись компьютера.

Пример:
  • Включить учётную запись компьютера с именем test.
    Enable-MachineAccount -MachineAccount test

New-MachineAccount

Эта функция может добавить новую учётную запись компьютера напрямую через LDAP-запрос добавления к контроллеру домена, не влияя на статус присоединения хост-системы к Active Directory.

LDAP-запрос добавления моделируется по образцу запроса добавления, используемого при присоединении системы к домену. Устанавливаются следующие атрибуты (в основном проверяемые контроллером домена):

  • objectClass = Computer
  • SamAccountName = Имя учётной записи компьютера с завершающим $
  • userAccountControl = 4096
  • DnsHostName = FQDN
  • ServicePrincipalName = 2 SPN HOST и 2 SPN RestrictedKrbHost, использующие как FQDN, так и имя учётной записи
  • unicodePwd = указанный пароль

Новая учётная запись компьютера может использоваться для таких задач, как использование привилегий, предоставленных группе «Компьютеры домена», или в качестве дополнительной учётной записи для перечисления домена, эксплуатации DNS и т. д. По умолчанию учётные записи компьютеров не имеют разрешения на локальный вход. Вы можете использовать инструменты/клиенты, которые принимают сетевые учётные данные напрямую, или через использование 'runas /netonly', или с помощью Invoke-UserImpersonation/Invoke-RevertToSelf от @harmj0y, входящих в PowerView.

  • https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon

Учётные записи компьютеров, созданные стандартными пользователями, будут иметь атрибут mS-DS-CreatorSID, заполненный SID стандартного пользователя.

Обратите внимание, что ms-DS-MachineAccountQuota не даёт аутентифицированным пользователям возможности удалять добавленные учётные записи компьютеров из AD. Для удаления учётной записи потребуется получить повышенные привилегии, если вы хотите избежать передачи этой задачи вашему клиенту.

Примеры:
  • Добавить новую учётную запись компьютера.
    New-MachineAccount -MachineAccount test

  • Использовать добавленную учётную запись с runas /netonly.
    runas /netonly /user:domain\test$ powershell

Remove-MachineAccount

Эта функция удаляет учётную запись компьютера с привилегированной учётной записью.

Пример:
  • Удалить учётную запись компьютера с именем test, используя учётные данные администратора домена.
    Remove-MachineAccount -MachineAccount test -Credential $domainadmin

Set-MachineAccountAttribute

Эта функция может заполнять некоторые атрибуты для учётной записи, добавленной через New-MachineAccount, если у пользователя есть права на запись. Эту функцию следует использовать с тем же пользователем, который создал учётную запись компьютера.

Вот список некоторых атрибутов, для которых обычно включён доступ на запись:

  • AccountDisabled
  • description
  • displayName
  • DnsHostName
  • ServicePrincipalName
  • userParameters
  • userAccountControl
  • msDS-AdditionalDnsHostName
  • msDS-AllowedToActOnBehalfOfOtherIdentity
  • SamAccountName
Примеры:
  • Удалить завершающий символ '$' из атрибута SamAccountName.
    Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test

  • Использовать изменённую учётную запись с runas /netonly.
    runas /netonly /user:domain\test powershell

Invoke-AgentSmith

Эта функция использует New-MachineAccount для рекурсивного создания как можно большего числа учётных записей компьютеров из одной непривилегированной учётной записи через MachineAccountQuota. Подробности см. в следующей записи блога:

  • https://blog.netspi.com/machineaccountquota-transitive-quota

Функции DNS

По умолчанию аутентифицированные пользователи имеют разрешение «Создание всех дочерних объектов» в зоне DNS, интегрированной в Active Directory (ADIDNS). Большинство записей, которые в данный момент не существуют в зоне AD, могут быть добавлены/удалены.

Функции динамических обновлений

Invoke-DNSUpdate

Эту функцию можно использовать для добавления/удаления динамических 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

Disable-ADIDNSNode

Эта функция может поместить узел ADIDNS в состояние «надгробия» (tombstone).

Пример:
  • Поместить запись-шаблон (wildcard) в состояние «надгробия».
    `Disable-ADIDNSNode -Node *

Enable-ADIDNSNode

Эта функция может превратить узел, находящийся в состоянии «надгробия», обратно в действительную запись.

Пример:
  • Включить запись-шаблон.
    Enable-ADIDNSNode -Node *

Get-ADIDNSNodeAttribute

Эта функция может возвращать значения, заполненные в атрибуте узла DNS.

Пример:
  • Получить значение атрибута dnsRecord для узла с именем test.
    Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecord

Get-ADIDNSNodeOwner

Эта функция может возвращать владельца узла ADIDNS.

Пример:
  • Получить владельца узла с именем test. Get-ADIDNSNodeOwner -Node test

Get-ADIDNSPermission

Эта функция получает DACL узла или зоны ADIDNS.

Примеры:
  • Получить DACL для зоны по умолчанию, интегрированной в Active Directory, с системы, присоединённой к домену.
    Get-ADIDNSPermission

  • Получить DACL для узла DNS с именем test с системы, присоединённой к домену.
    Get-ADIDNSPermission -Node test

Get-ADIDNSZone

Эта функция может возвращать зоны ADIDNS.

Примеры:
  • Получить все зоны ADIDNS.
    Get-ADIDNSZone

Grant-ADIDNSPermission

Эта функция добавляет ACE в DACL узла или зоны DNS.

Пример:
  • Добавить полный доступ к записи-шаблону для «Authenticated Users».
  • Добавить полный доступ к записи-шаблону для «Authenticated Users».
    Grant-ADIDNSPermission -Node * -Principal "authenticated users"

New-ADIDNSNode

Эта функция добавляет узел DNS в зону DNS, интегрированную в Active Directory (ADIDNS), через зашифрованный LDAP-запрос добавления.

Пример:
  • Добавить запись-шаблон в зону ADIDNS и поместить узел в состояние «надгробия».
    New-ADIDNSNode -Node * -Tombstone

New-DNSRecordArray

Эта функция создаёт правильный массив байтов для атрибута dnsRecord.

Пример:
  • Создать массив dnsRecord для A-записи, указывающей на 192.168.0.1.
    New-DNSRecordArray -Data 192.168.0.1

New-SOASerialNumberArray

Эта функция получает текущий серийный номер SOA для зоны DNS и увеличивает его на заданную величину.

Пример:
  • Сгенерировать массив байтов из текущего серийного номера SOA, увеличенного на единицу.
    New-SOASerialNumberArray

Rename-ADIDNSNode

Эта функция может переименовать узел DNS.

Пример:
  • Переименовать узел DNS с именем test в test2.
    Rename-ADIDNSNode -Node test -NodeNew test2

Remove-ADIDNSNode

Эта функция может удалить узел DNS.

Пример:
  • Удалить узел-шаблон.
    Remove-ADIDNSNode -Node *

Revoke-ADIDNSPermission

Эта функция удаляет ACE из DACL узла или зоны DNS.

Пример:
  • Удалить ACE с правом GenericAll, связанную с учётной записью user1.
    Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAll

Set-ADIDNSNodeAttribute

Эта функция может добавлять, заполнять или перезаписывать значения в атрибуте узла DNS.

Пример:
  • Установить доступный для записи атрибут description для узла с именем test.
    Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "не удалять"

Set-ADIDNSNodeOwner

Эта функция может установить владельца узла DNS. Обратите внимание, что требуется маркер с привилегией SeRestorePrivilege.

Пример:
  • Установить владельца узла с именем test как user1.
    Set-ADIDNSNodeOwner -Node test -Principal user1

Прочие функции

Get-KerberosAESKey

Эта функция может генерировать ключи Kerberos AES 256 и 128 из известного имени пользователя и пароля. Это можно использовать для тестирования атаки pass-the-hash в Invoke-DNSUpdate.

Пример:
  • Сгенерировать ключи для действительного пользователя AD с именем [email protected].
    Get-KerberosAESKey -Salt TEST.LOCALuser
Скачать инструмент