Список флагов свойств
Эти атрибуты можно просмотреть и изменить с помощью средства Ldp.exe или оснастки Adsiedit.msc.
В следующей таблице перечислены возможные флаги, которые можно назначить. Вы не можете задать некоторые значения для объекта пользователя или компьютера, так как эти значения могут быть заданы или сброшены только службой каталогов. Значения Ldp.exe отображаются в шестнадцатеричном формате. Значения Adsiedit.msc отображает в десятичном формате. Флаги являются накопительными. Чтобы отключить учетную запись пользователя, задайте для атрибута UserAccountControl значение 0x0202 (0x002 + 0x0200). В десятичном формате это 514 (2 + 512).
Примечание.
Active Directory можно редактировать непосредственно в Ldp.exe и Adsiedit.msc. Только опытные администраторы должны использовать эти средства для изменения Active Directory. Оба средства доступны после установки средств поддержки с исходного установщика Windows.
Флаг свойства | Значение в шестнадцатеричном формате | Значение в десятичном формате |
---|---|---|
SCRIPT | 0x0001 | 1 |
ACCOUNTDISABLE | 0x0002 | 2 |
HOMEDIR_REQUIRED | 0x0008 | 8 |
LOCKOUT | 0x0010 | 16 |
PASSWD_NOTREQD | 0x0020 | 32 |
PASSWD_CANT_CHANGEЭто разрешение нельзя назначить путем непосредственного изменения атрибута UserAccountControl. Сведения о том, как задать разрешение программным способом, см. в разделе . | 0x0040 | 64 |
ENCRYPTED_TEXT_PWD_ALLOWED | 0x0080 | 128 |
TEMP_DUPLICATE_ACCOUNT | 0x0100 | 256 |
NORMAL_ACCOUNT. | 0x0200 | 512 |
INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
SERVER_TRUST_ACCOUNT | 0x2000 | 8192 |
DONT_EXPIRE_PASSWORD | 0x10000 | 65536 |
MNS_LOGON_ACCOUNT | 0x20000 | 131072 |
SMARTCARD_REQUIRED | 0x40000 | 262144 |
TRUSTED_FOR_DELEGATION | 0x80000 | 524288 |
NOT_DELEGATED | 0x100000 | 1048576 |
USE_DES_KEY_ONLY | 0x200000 | 2097152 |
DONT_REQ_PREAUTH | 0x400000 | 4194304 |
PASSWORD_EXPIRED | 0x800000 | 8388608 |
TRUSTED_TO_AUTH_FOR_DELEGATION | 0x1000000 | 16777216 |
PARTIAL_SECRETS_ACCOUNT | 0x04000000 | 67108864 |
Примечание.
В домене под управлением Windows Server 2003 LOCK_OUT и PASSWORD_EXPIRED были заменены новым атрибутом ms-DS-User-Account-Control-Computed. Дополнительные сведения об этом новом атрибуте см. в описании атрибута ms-DS-User-Account-Control-Computed.
LastLogon
LastLogon is nothing but the latest time of a user logged on into AD based system, which is non replicable attribute. It means the value of this attribute is specific to Domain Controller. So we can’t say the user’s True LastLogon time by simply querying only one DC. To get an accurate value for the user’s last logon in the domain, the LastLogon attribute for the user must be retrieved from every domain controller in the domain. The largest value that is retrieved is the True LastLogon time for that user.
Example
Consider the user User1and domain controllers DC1 and DC2.
- User1 logs in to DC1 on the time T1
- User1 logs in to DC2 on the time T2
UserAccountControl 66048 – Enabled and Don’t Expire User Password
To set user password never expires on the enabled user account, we require user normal account flag and password don’t expired flag.
Refer to the above UserAccountControl flag table.
NORMAL_ACCOUNT property flag has hexadecimal value = 0x0200 and decimal = 512
DONT_EXPIRE_PASSWORD property flag has hexadecimal value = 0x10000 and decimal value = 65536
Property flag | Value in hexadecimal | Value in decimal |
---|---|---|
NORMAL_ACCOUNT | 0x0200 | 512 |
DONT_EXPIRE_PASSWORD | 0x10000 | 65536 |
Enabled, Don’t Expire Password | 0x10200 | 66048 |
UserAccountControl 66048 – Enabled,don’t expire password
Let’s sum up flag values to get cumulative value.
Hexadecimal value = 0x200 + 0x10000 = 0x10200
Decimal value = 512 + 65536 = 66048
Assign Active Directory UserAccountControl attribute to 66048 to set user password never expired.
UserAccountControl 66048 – Enabled User Account with Password never expires.
Cool Tip: How to remove a user from the group in PowerShell!
UserAccountControl 2080 – InterDomain Trust Account, Password not required
To set up a workstation trust account with a password not required, we need the WORKSTATION_TRUST_ACCOUNT flag and PASSWD_NOTREQD flag.
Property flag | Value in hexadecimal | Value in decimal |
---|---|---|
INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
PASSWD_NOTREQD | 0x0020 | 32 |
InterDomain trust account with a password not required | 0x0820 | 2080 |
UserAccountControl 2080- InterDomain Trust Account with password not required
In the above table, we have summed up all the property flags to get cumulative value for a disabled user account for password not required.
Modify the value of the UserAccountControl attribute to 2080 in adsiedit.msc tool.
UserAccountControl 2080 – InterDomain Trust Account with Password not required.
Find accounts with a certain flag
With this script, it is quite easy to output all active flags for single accounts. However, in practice, you often want to find all accounts that have a certain flag set.
In some cases, you don’t need to drill down into the value of UserAccountControl, because PowerShell provides simpler methods for querying certain flags. For example, this is true for:
- Password never expires: Get-ADUser -Filter ‘PasswordNeverExpires -eq $TRUE’
- Password not required: Get-ADUser -Filter ‘PasswordNotRequired -eq $TRUE’
- Find disabled accounts in Active Directory: Search-ADAccount -AccountDisabled
- Show locked accounts with PowerShell: Search-ADAccount -LockedOut
But if you want to find out which accounts allow passwords to be stored in a decryptable format, you could use the following query:
Get-ADUser -Filter * -Properties UserAccountControl | Where { $_.UserAccountControl -band 128} | Select name
This call uses a bitwise and to determine if the ENCRYPTED_TEXT_PWD_ALLOWED flag is set.
As you can see from the table above, it represents the eighth digit of the binary number (2 ^ 7 = 128; counting starts at bit 0). If you apply to it a -band- operation with the value 128 and the result is $true, then you know that the flag is set.
Following the same pattern, you can use the values for the other flags in this query:
Get-ADComputer -Filter * -Properties UserAccountControl | Where { $_.UserAccountControl -band 524288 } | Select name
This example would identify computer accounts that are trusted with Kerberos delegation.
UserAccountControl 4128 – WorkStation Trust Account, Password not required
To set up a workstation trust account with a password not required, we need the WORKSTATION_TRUST_ACCOUNT flag and PASSWD_NOTREQD flag.
Property flag | Value in hexadecimal | Value in decimal |
---|---|---|
WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
PASSWD_NOTREQD | 0x0020 | 32 |
Workstation trust account with a password not required | 0x1020 | 4128 |
UserAccountControl 4128- WorkStation Trust Account with password not required
In the above table, we have summed up all the property flags to get cumulative value for a disabled user account for password not required.
Modify the value of the UserAccountControl attribute to 4128 in adsiedit.msc tool.
UserAccountControl 4128 – Workstation Trust Account with Password not required.
UserAccountControl Flags or Attribute Values
All UserAccountrol flag values are shown in the table.
Property flag | Value in hexadecimal | Value in decimal |
---|---|---|
SCRIPT | 0x0001 | 1 |
ACCOUNTDISABLE | 0x0002 | 2 |
HOMEDIR_REQUIRED | 0x0008 | 8 |
LOCKOUT | 0x0010 | 16 |
PASSWD_NOTREQD | 0x0020 | 32 |
PASSWD_CANT_CHANGE | 0x0040 | 64 |
ENCRYPTED_TEXT_PWD_ALLOWED | 0x0080 | 128 |
TEMP_DUPLICATE_ACCOUNT | 0x0100 | 256 |
NORMAL_ACCOUNT | 0x0200 | 512 |
INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
SERVER_TRUST_ACCOUNT | 0x2000 | 8192 |
DONT_EXPIRE_PASSWORD | 0x10000 | 65536 |
MNS_LOGON_ACCOUNT | 0x20000 | 131072 |
SMARTCARD_REQUIRED | 0x40000 | 262144 |
TRUSTED_FOR_DELEGATION | 0x80000 | 524288 |
NOT_DELEGATED | 0x100000 | 1048576 |
USE_DES_KEY_ONLY | 0x200000 | 2097152 |
DONT_REQ_PREAUTH | 0x400000 | 4194304 |
PASSWORD_EXPIRED | 0x800000 | 8388608 |
TRUSTED_TO_AUTH_FOR_DELEGATION | 0x1000000 | 16777216 |
PARTIAL_SECRETS_ACCOUNT | 0x04000000 | 67108864 |
UserAccountControl Attribute Table
UserAccountControl 514 – Disable User Account
To disable a user account, we require a user’s normal account flag value and the Disabled account flag value.
Refer to the above UserAccountControl table,
NORMAL_ACCOUNT property flag has hexadecimal value = 0x0200 and decimal = 512
ACCOUNTDISABLE property flag has hexadecimal value = 0x0002 and decimal = 2
Property flag | Value in hexadecimal | Value in decimal |
---|---|---|
NORMAL_ACCOUNT | 0x0200 | 512 |
ACCOUNTDISABLE | 0x0002 | 2 |
Disabled, Don’t Expire Password | 0x0202 | 514 |
UserAccountControl 514 – Disabled User Account
UserAccountControl flags are cumulative. Sum up the hexadecimal value ( 0x0200 + 0x0002 = 0x0202) and decimal value ( 512+2 = 514)
ldp.exe tool shows the value in hexadecimal hence set UserAccountControl 0x0202 value to disable user account.
adsiedit.msc snap-in tool shows the value in decimal, hence setting UserAccountControl 514 value to disable a user account.
UserAccountControl 514 – Disabled User Account.
Cool Tip: How to get aduser samaccountname in PowerShell!
Get-ADComputer — синтаксис использования командлета
Чтобы получать информацию из AD с помощью командлетов из модуля AD для PowerShell, вам не нужны права администратора домена. Достаточно, чтобы учётная запись, под которой запускается командлет, была членом группы «Domain Users / Authenticated Users».
Чтобы получить информацию о конкретной учётной записи компьютера в домене, укажите её имя в качестве аргумента параметра -Identity:
Get-ADComputer -Identity hackware-server
Пример вывода:
DistinguishedName : CN=HACKWARE-SERVER,OU=Domain Controllers,DC=ds,DC=hackware,DC=ru DNSHostName : HackWare-Server-2022.ds.hackware.ru Enabled : True Name : HACKWARE-SERVER ObjectClass : computer ObjectGUID : 77e65141-ebec-4728-a1cc-563199d86bf8 SamAccountName : HACKWARE-SERVER$ SID : S-1-5-21-670420343-3848213752-1643348011-1000
Get-ADComputer -Identity hackware-server -Properties *
Используя Get-Member, вы можете получить список всех свойств объекта ADComputer:
Get-ADComputer -Filter * -Properties * | Get-Member
Дата последнего входа компьютеров в сеть указана в атрибуте LastLogonDate.
Командлет Get-ADComputer позволяет отображать любые свойства компьютера в результатах выполнения команды. Удалите всю ненужную информацию, оставив только значения атрибутов Name и LastLogonDate.
Get-ADComputer -identity hackware-win -Properties * | Format-Table Name,LastLogonDate -Autosize
Итак, мы получили данные о последней регистрации в домене для отдельного компьютера. Затем вам нужно изменить команду, чтобы она отображала информацию о времени последней сетевой регистрации для всех компьютеров в домене. Для этого замените -Identity на -Filter *:
Get-ADComputer -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize
У нас получилась простая таблица, которая содержит всего 2 поля: имя компьютера и дата LastLogonData. Вы можете добавить в эту таблицу другие поля объекта ADComputer.
Чтобы отобразить информацию об объектах компьютеров в определённом OU (организационном подразделении), используйте параметр -SearchBase:
Get-ADComputer -SearchBase 'OU=Paris,DC=woshub,DC=loc' -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize
Отсортируйте результаты запроса по дате последнего входа в систему с помощью командлета Sort-Object:
Get-ADComputer -Filter * -Properties * | Sort-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize
Итак, у нас есть список компьютеров и дата их последнего входа в домен Active Directory. Теперь мы хотим отключить учётные записи компьютеров, которые не использовались в течение 120 или более дней.
Используя Get-Date, мы можем получить значение текущей даты в переменной и уменьшить его до 120 дней:
$date_with_offset = (Get-Date).AddDays(-120)
Полученную переменную даты можно использовать как фильтр запроса Get-ADComputer в поле LastLogonDate:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize
Итак, мы создали список неактивных учётных записей компьютеров, которые не регистрировались в сети более 120 дней. Используйте команду Disable-ADAccount или Set-ADComputer, чтобы отключить их.
Совет. В первый раз лучше проверить результаты выполнения команды с помощью переключателя -WhatIf, который позволяет увидеть, что произойдёт, если бы команда была запущена, но при этом в системе ничего изменено не будет.
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -WhatIf
Теперь вы можете отключить все неактивные учётные записи компьютеров:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false
Примечание. Также вы можете получить список заблокированных, отключённых и неактивных компьютеров и пользователей домена с помощью отдельного командлета Search-ADAccount.
Breaking down the attribute value
As a result, you get the decimal value of the attribute, which you then have to interpret yourself. One way to do this is to convert it to a binary number, and then rattle through each of its digits to see if it is set to 1. If it is, then print the corresponding flag.
$UACFlags = @("SCRIPT", "ACCOUNTDISABLE", "RESERVED", "HOMEDIR_REQUIRED", "LOCKOUT", "PASSWD_NOTREQD", "PASSWD_CANT_CHANGE", "ENCRYPTED_TEXT_PWD_ALLOWED", "TEMP_DUPLICATE_ACCOUNT", "NORMAL_ACCOUNT", "RESERVED", "INTERDOMAIN_TRUST_ACCOUNT", "WORKSTATION_TRUST_ACCOUNT", "SERVER_TRUST_ACCOUNT", "RESERVED", "RESERVED", "DONT_EXPIRE_PASSWORD", "MNS_LOGON_ACCOUNT", "SMARTCARD_REQUIRED", "TRUSTED_FOR_DELEGATION", "NOT_DELEGATED", "USE_DES_KEY_ONLY", "DONT_REQ_PREAUTH", "PASSWORD_EXPIRED", "TRUSTED_TO_AUTH_FOR_DELEGATION", "RESERVED", "PARTIAL_SECRETS_ACCOUNT", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED" ) #read the attribute value of UserAccountControl $UAC = Get-ADUser <username> -properties UserAccountControl | select UserAccountControl #convert it to a binary representation and reverse the array $a = (::ToString($UAC.UserAccountControl,2)).ToCharArray() ::Reverse($a) #iterate though the array to see which flag is set 0 .. $a.Length | foreach { if( $a -eq "1" ) { $UACFlags } }
The above script converts the binary representation of the attribute value into a character array and reverses its order because the check must start with the lowest digit, i.e., from the back.
Идентификатор события блокировки учётной записи 4740
Прежде всего, администратор должен выяснить, с какого компьютера или сервера происходят попытки ввода неверного пароля, и продолжить блокировку учётных записей компьютеров.
Если ближайший к пользователю контроллер домена определяет, что пользователь пытается войти в систему с недопустимыми учётными данными, он перенаправляет запрос проверки подлинности на контроллер домена с эмулятора основного контроллера домена (этот конкретный контроллер домена отвечает за обработку блокировок учётных записей). Если аутентификация на PDC завершается неудачно, он отвечает на первый DC, что аутентификация невозможна. Если количество неудачных проверок подлинности превышает значение, установленное для домена в политике Account Lockout Threshold (Пороговое значение блокировки), учётная запись пользователя временно блокируется.
В этом случае событие с EventID 4740 записывается в журнал безопасности обоих контроллеров домена. Событие содержит DNS-имя (IP-адрес) компьютера, с которого пришел первоначальный запрос на авторизацию пользователя. Чтобы не анализировать журналы на всех контроллерах домена, проще всего искать события блокировки в журнале безопасности на PDC контроллера домена. Вы можете найти PDC в своём домене следующим образом:
(Get-AdDomain).PDCEmulator
События блокировки учётной записи домена можно найти в журнале безопасности на контроллере домена. Чтобы его увидеть, запустите Event Viewer («Просмотр событий»), его можно открыть в командной строке:
eventvwr.msc
В окне Event Viewer («Просмотр событий») перейдите по пути Event Viewer (Local) → Windows Logs → Security (в русскоязычной версии это Просмотр событий (локальный) → Журналы Windows → Безопасность).
В Event Viewer («Просмотр событий») отфильтруйте журнал безопасности по Event ID («Код события») указав значение 4740, для этого нажмите Filter Current Log («Фильтр текущего журнала») и введите в поле <All Event Ids> («Все коды событий») значение 4740.
Вы должны увидеть список последних событий блокировки учётной записи. Найдите событие с нужной вам учётной записью пользователя (имя пользователя указано в значении поля Account Name («Имя учётной записи»). В описании события вы увидите строку A user account was locked out («Учетная запись пользователя была заблокирована»).
Подсказка: в большой среде AD в журнал безопасности на контроллерах домена записывается большое количество событий, которые постепенно перезаписываются новыми. Поэтому рекомендуется увеличить максимальный размер журнала на контроллерах домена и как можно скорее приступить к поиску источника блокировки.
Откройте найденное событие. Имя компьютера (сервера), с которого была произведена блокировка, указывается в поле Caller Computer Name. В моём случае имя компьютера — HACKWARE-WIN.
Устранение неполадок определенных сценариев
Перепроцес для неправильного сопоставления между хост и IP, из-за этого контроллер домена назначения будет извлекаться из неправильного источника.
Продвижение \ \ dc1 + \ \ DC2 + \ \ DC3 в домене. End-to-end replication occurs without errors.
Остановите KDC на DC1 и DC2 для принудительного трафика Kerberos, который можно наблюдать в \ \ \ \ сетевом следе. End-to-end replication occurs without errors.
Создайте запись файла Host для DC2, которая указывает на \ \ IP-адрес dc в удаленном лесу. Это имитация ненадежного сопоставления между хост-ip в записи A/AAAA или, возможно, устаревший объект Параметры NTDS в копии каталога Active Directory контроллера домена назначения.
Запустите сайты и службы Active Directory на консоли \ \ DC1
Щелкните правой кнопкой \ \ мыши входящий объект подключения DC1 из DC2 и обратите внимание, что целевое имя учетной записи является \ \ неправильной ошибкой репликации. Перепроцес для несоответствия пароля контроллера исходных доменов между KDC и контроллером исходных доменов
Перепроцес для несоответствия пароля контроллера исходных доменов между KDC и контроллером исходных доменов.
Продвижение \ \ dc1 + \ \ DC2 + \ \ DC3 в домене. Репликация с концами происходит без ошибок.
Остановите KDC на DC1 и DC2 для принудительного трафика Kerberos, который можно наблюдать \ \ \ \ в сетевом следе
Репликация с концами происходит без ошибок.
Отключение входящие репликации на KDC DC3 для имитации сбоя \ \ репликации на KDC.
Сброс пароля учетной записи компьютера на DC2 три или более раз, чтобы у DC1 и DC2 был текущий пароль \ \ \ \ \ \ для \ \ DC2.
Запустите сайты и службы Active Directory на консоли \ \ DC1
Щелкните правой кнопкой мыши на входящий объект подключения DC1 из DC2 и обратите внимание, что целевое имя учетной записи является \ \ \ \ неправильной ошибкой репликации
Ведение журнала клиента DS RPC
Установите NTDS\Diagnostics Loggings\DS RPC Client = 3. Репликация триггера. Найди событие категории задач 1962 + 1963
Обратите внимание на полностью квалифицированные кадры, указанные в поле службы каталогов. Контроллер домена назначения должен иметь возможность фиксировать эту запись и иметь возвращенную адресную карту на текущий IP-адрес источника dc
Рабочий процесс Kerberos
Рабочий процесс Kerberos включает следующие действия:
Клиентский компьютер вызывает функцию IntializeSecurityContext и указывает поставщика поддержки безопасности Negotiate (SSP).
Клиент обращается к KDC с TGT и запрашивает TGS-билет для целевого контроллера домена.
KDC ищет глобальный каталог для источника (e351 или имени хост-кодов) в области контроллера домена назначения.
Если контроллер целевого домена находится в области контроллера домена назначения, KDC предоставляет клиенту билет на обслуживание.
Если целевой контроллер домена находится в другой области, KDC предоставляет клиенту билет на направление.
Клиент контактов KDC в домене целевого контроллера домена и запрашивает билет на обслуживание.
Если SPN контроллера домена источника не существует в области, вы получите KDC_ERR_S_PRINCIPAL_UNKNOWN ошибку.
Контроллер домена назначения связался с объектом и представил свой билет.
Если целевой контроллер домена владеет именем в билете и может расшифровать его, проверка подлинности работает.
Если в целевом контроллере домена размещен UUID-службы сервера RPC, ошибка Kerberos KRB_AP_ERR_NOT_US или KRB_AP_ERR_MODIFIED перенаправляется в следующее:
Отключить срок действия пароля для учетной записи
Если вам нужно сделать срок действия пароля определенной учетной записи неограниченным, нужно включить опцию Password Never Expires в свойствах пользователя в AD (это одно из битовых значений атрибута UserAccountControl).
Либо вы можете включить эту опцию через PowerShell:
Можно установить флаг Password Never Expires сразу для нескольких пользователей, список которых содержится в текстовом файле:РЕКЛАМА•MEDIASNIPERhttps://yastatic.net/safeframe-bundles/0.83/1-1-0/render.html
Можно вывести список всех пользователей, для которых отключено требование регулярной смены пароля:
0x02 пользователь машины
По умолчанию машина, присоединяющаяся к домену, по умолчанию находится в контейнере CN = Computer, а контроллер домена по умолчанию находится в Контроллерах домена OU. Некоторые домены будут изменены через redircmp
1. Отношения между пользователями машины и пользователями системы
Рассматривая такой сценарий, если вы получаете машину с доменом, вы обнаруживаете, что пользователей домена нет. В то время многие люди использовали mimikatz, чтобы поймать его, но они были беспомощны, если не поймали пользователя домена.
Мы просто нажимаем на компьютер домена, здесь мы берем WIN7 в качестве теста.
Смотрим на его объектный класс.
Выяснилось, что он является представителем компьютерного класса.
А компьютерный класс является подклассом пользовательского класса. Пользователи домена являются экземплярами класса пользователей. Ранее мы говорили, что класс — это набор атрибутов. Подкласс наследует все атрибуты родительского класса, поэтому атрибуты, которые должен иметь пользователь домена, есть у пользователя вычислений, даже мы можем сказать, что пользователь машины является своего рода пользователем домена.
Возвращаясь к предыдущему вопросу, если вы получаете машину в домене, вы обнаруживаете, что в домене нет пользователя. Как мы уже говорили выше, пользователь машины на самом деле является пользователем домена, так как же нам использовать этого пользователя машины? Фактически, локальный пользователь SYSTEM соответствует пользователю машины в домене. Имя пользователя в домене — это имя машины + $. Например, для win7 его имя машины — WIN7, затем его имя для входа в домен — win7 $. О sAMAccountName мы находимся в предыдущем Раздел уже пройден.
Таким образом, мы можем направить текущего пользователя в систему (неадминистраторам необходимо взаимодействовать с уязвимостью повышения привилегий, неадминистраторам в группе администраторов требуется bypassuac, а администраторы обращаются к системе. В Интернете существует множество методов, таких как psexec, mimikatz и т. Д.). Вы можете действовать как пользователь компьютера в домене.
Или возьмите хеш напрямую.
2. Найдите все машины в домене
Вы можете найти все машины в домене через objectclass = Computer или objectcategory = Computer
adfind предоставляет несколько быстрых клавиш для запросов к компьютерам.
Все контроллеры домена в домене находятся в подразделении контроллера домена. Вы можете найти все контроллеры домена в домене, проверив машины в этом подразделении.
adfind также предоставляет несколько быстрых клавиш для запроса управления доменом.
Изменение пароля пользователя Windows Active Directory и LDS с помощью LDAP
В этой статье описывается изменение пароля пользователя active Directory Windows LDS с помощью LDAP.
Применяется к: Windows Active Directory Исходный номер КБ: 269190
Сводка
Вы можете установить Windows Active Directory и пароль пользователя LDS с помощью протокола доступа к облегченным каталогам (LDAP) с учетом определенных ограничений. В этой статье описывается настройка или изменение атрибута пароля.
Эти действия также применяются к пользователям ADAM и LDS и объектам userProxy так же, как это делается с пользователями AD.
Эта статья применяется к Windows 2000. Поддержка Windows 2000 заканчивается 13 июля 2010 г. Центр Windows 2000 года является отправной точкой для планирования стратегии миграции с 2000 г. Windows 2000 г. Дополнительные сведения см. в политике жизненного цикла поддержки Майкрософт.
Дополнительные сведения
Пароль хранится в базе данных AD и LDS на объекте пользователя в атрибуте unicodePwd. Этот атрибут можно написать в ограниченных условиях, но его невозможно прочитать. Атрибут можно изменить только; она не может быть добавлена при создании объекта или запрашивается поиском.
Чтобы изменить этот атрибут, клиент должен иметь 128-битную связь с безопасностью транспортного слоя (TLS)/Secure Socket Layer (SSL) на сервере. Зашифрованный сеанс с помощью созданных SSP-ключей сеанса с использованием NTLM или Kerberos также приемлем до тех пор, пока не будет удовлетворены минимальные длины ключей.
Чтобы это подключение было возможным с помощью TLS/SSL:
- Сервер должен обладать сертификатом сервера для 128-битного подключения RSA.
- Клиент должен доверять органу сертификации (CA), сгенерированию сертификата сервера.
- Клиент и сервер должны быть способны к 128-битной шифрованию.
Синтаксис атрибута unicodePwd — octet-string; однако служба каталогов ожидает, что в строке octet-string будет содержаться строка UNICODE (как указывает имя атрибута). Это означает, что любые значения для этого атрибута, переданные в LDAP, должны быть строками UNICODE, кодируемыми BER (Основные правила кодирования) в качестве октета-строки. Кроме того, строка UNICODE должна начинаться и заканчивается кавычками, которые не являются частью нужного пароля.
Существует два возможных способа изменения атрибута unicodePwd. Первый похож на обычную операцию по смене пароля пользователя. В этом случае запрос на изменение должен содержать как операцию удаления, так и операцию добавления. Операция удаления должна содержать текущий пароль с кавычками вокруг него. Операция добавления должна содержать нужный новый пароль с кавычками вокруг него.
Второй способ изменения этого атрибута аналогичен администратору, сбросив пароль для пользователя. Для этого клиент должен связаться как пользователь с достаточными разрешениями, чтобы изменить пароль другого пользователя. Этот запрос на изменение должен содержать одну операцию замены новым нужным паролем, окруженным кавычками. Если у клиента достаточно разрешений, этот пароль становится новым паролем независимо от старого пароля.
Управление политикой
В этом разделе описываются функции и средства, доступные для управления этой политикой.
Необходимость перезапуска
Нет. Изменения в этой политике становятся эффективными без перезапуска устройства при локальном сбережении или распространении через групповую политику.
Групповая политика
Этот параметр политики можно настроить с помощью консоли управления групповой политикой (GPMC), которая будет распространяться через объекты групповой политики (GPOs). Если эта политика не содержится в распределенной GPO, эту политику можно настроить на локальном компьютере с помощью привязки к локальной политике безопасности.
Исключение намеренных нарушений или сбоев оборудования
Иногда ошибки репликации возникают из-за преднамеренных нарушений. Например, при устранении неполадок, связанных с репликацией Active Directory, необходимо сначала поочередно отменять подключения и сбои оборудования или обновления.
Намеренные отключения
Если контроллер домена, который попытается выполнить репликацию с помощью контроллера домена, который был создан на промежуточном сайте и в настоящее время ожидает развертывания на окончательном рабочем сайте (удаленном сайте, таком как филиал), сообщает об ошибках репликации, можно учитывать эти ошибки репликации. Чтобы не разделять контроллер домена от топологии репликации для расширенных периодов, что вызывает непрерывные ошибки до повторного подключения контроллера домена, рассмотрите возможность добавления таких компьютеров изначально в качестве рядовых серверов и использования метода установки с носителя для установки служб домен Active Directory Services (AD DS). Программу командной строки Ntdsutil можно использовать для создания установочного носителя, который можно хранить на съемных носителях (компакт-диск, DVD-диск или другой носитель) и поставлять на конечный сайт. Затем можно использовать установочный носитель для установки AD DS на контроллерах домена на сайте без использования репликации.
Сбои оборудования или обновления
Если проблемы с репликацией возникают в результате сбоя оборудования (например, из-за сбоя материнской платы, дисковой подсистемы или жесткого диска), сообщите владельцу сервера о том, что проблему с оборудованием можно устранить.
Периодическое обновление оборудования также может привести к невозможности обслуживания контроллеров домена. Убедитесь, что владельцы сервера имеют хорошую систему связи с такими простоями заранее.
Настройка брандмауэра
По умолчанию Active Directory репликация удаленных вызовов процедур (RPC) выполняется динамически через доступный порт через сопоставитель конечных точек RPC (RPCSS) через порт 135. убедитесь, что Windows брандмауэр с расширенной безопасностью и другими брандмауэрами настроены правильно, чтобы разрешить репликацию. Сведения об указании порта для параметров репликации Active Directory и портов см. в статье 224196 базы знаний Майкрософт.
сведения о портах, которые Active Directory репликации, см. в разделе Active Directory средства репликации и Параметры.
Сведения об управлении репликацией Active Directory через брандмауэры см. в разделе Active Directory репликация через брандмауэры.
Свойства и методы интерфейса IADsPropertyList:
PropertyCount | Это свойство интерфейса IADsPropertyList возвращает информацию о количестве свойств, предусмотренных для данного объекта. |
GetPropertyItem() | Этот метод позволяет вернуть свойство по его имени. В качестве параметров этот метод принимает имя свойства и его тип в виде значения перечисления ADSTYPEENUM (в нём предусмотрено 28 значений). Если тип свойства вам не известен, можно передать специальное значение ADSTYPE_UNKNOWN (26). Этот метод возвращает информацию в виде ссылки на объект IADsPropertyEntry, который можно использовать для получения информации о значении свойства. |
Item() | Этот метод отличается от метода GetPropertyItem() тем, что позволяет получить свойство (то есть объект IADsPropertyEntry) по имени или номеру. Тип свойства передавать при этом не надо. |
Next() | Этот метод позволяет вернуть следующее свойство в виде объекта IADsPropertyEntry. Обычно он используется для перебора всех свойств какого-либо объекта. |
PurgePropertyList() | Этот метод можно считать обратным методу IADs.GetInfo() — он очищает кэш свойств, удаляя из него информацию для всех свойств данного объекта. При этом сам объект Active Directory никак не затрагивается — этот метод работает только с представлением данного объекта в памяти. Обычно он используется, чтобы высвободить память на компьютере, на котором производятся операции с объектами Active Directory средствами ADSI. |
PutPropertyItem() | Этот метод позволяет присвоить новое значение свойству объекта Active Directory. По своим возможностям этот метод очень похож на метод Put() интерфейса IADs, и после его вызова необходимо вызвать метод IADs.SetInfo(). В качестве параметра метод PutPropertyInfo() принимает объект PropertyEntry, в котором должно быть задано новое значение для свойства. |
Reset() | Этот метод позволяет вернутся на начало списка свойств после вызова метода Next(), чтобы вернуться к исходному состоянию. |
ResetPropertyItem() | Этот метод позволяет удалить указанное свойство из кэша свойств. Этому методу можно передать как имя свойства, так и его номер. Этот метод используется только для экономии оперативной памяти, на сам объект Active Directory он никак не влияет. |
Skip() | Этот метод позволяет переместить курсор для списка свойств на указанное количество позиций. В качестве параметра этот метод принимает количество позиций, на которое следует переместиться. Обычно этот метод используется вместо метода Next() или вместе с ним для сокращения количества выполняемых операций. |
Интерфейс IADsPropertyEntry предназначен для работы со значением (или значениями) свойства объекта Active Directory. Он может использоваться как для получения информации о значении свойства, так и для назначения свойству нового значения или значений. Свойства и методы:
Name | Имя свойства, которое всегда соответствует наименованию соответствующего атрибута для объекта Active Directory согласно схеме. |
ADsType | Тип свойства в соответствии со значением перечисления ADSTYPEENUM. |
ControlCode | Позволяет определить тип операции, выполняемой со свойством. Возможные значения (перечисление ADS_PROPERTY_OPERATION_ENUM):
|
Values | Определяет значения для свойства. Свойство Values работает с массивом объектов типа Variant. Любой из объектов типа Variant, который находится в данном массиве, должен обязательно реализовывать интерфейс IADsPropertyValue. |
Интерфейсы IADsPropertyValue и IADsPropertyValue2 используются непосредственно для работы со значениями свойств. Каждому объекту IADsPropertyValue соответствует конкретное значение свойства. Массив значений (то есть массив объектов IADsPropertyValue) передаётся при помощи свойства Values объекта IADsPropertyEntry.