8 Sep 2013 9:53 AM
Take a look at the feature offered in SYNERGIX AD Client Extensions
http://www.synergix.com
The built-in administrator account password management has following options
— System generated passwords with min 8 characters
— Password changed frequently ( every 7 days )
— Unique password across domain computers
— Password validation ( every day )
— No backend SQL , IIS server required.
— Manage backup administrator account, account name can be system generated
— No scripting required
— Only designated administrators can retrieve built-in administrator account password
Found one link …
support.synergix.com/…/23775318-Test-Scenario-Managing-Built-In-Administrator-Account-Password
23 Jan 2015 9:45 AM
This doesn’t work anymore. Check this article
support.microsoft.com/…/2962486
22 Apr 2015 12:20 PM
gthegreat1 .. precisely. Microsoft’s implementation doesn’t work anymore. SYNERGIX AD Client Extensions works well and meet the DSS compliance requirement in Payment Card Industry, Banking Sector et al.
http://www.synergix.com … look for AD Client Extensions software.
22 Jun 2015 6:33 AM
I think MS have really made a mess of things here.
I was using group policy to set a local admin account password for a number of customers, the intention was for technical computer users to be able to log in as as administrator when needed but not to have administrator rights with their standard user account (reduce likelihood of infection etc… etc…..).
I have not found a viable workaround following MS changing this functionality and although I appreciate the need to mitigate risks such as this, I think that such a major change in functionality warrants re-development by MS to ensure that customers are not adversely affected.
Ok so rant over, but I am still struggling with this a year on;
If we create an AD group and through the below suggestion add it to the local administrators group, we can then use the nominated AD user accounts to log in to the computer, this leaves two issues:
1. You must log in to a domain joined computer using the administrator AD account, you can not simply use the account at a UAC prompt.
2. Once you have logged into a computer using the administrator AD account, you can use this account at a UAC prompt, however this uses cached credentials until you next login to the computer using the administrator AD account; we now have no control over synchronisation of the admin password.
In a scenario where we have mobile workers with laptops this is impossible to manage, the MS solution of using a script to randomly generate passwords is also of no use; every use of the admin account means a call to IT Services to get the password.
Has anyone found a solution to this that does not require investment in a third party product?
13 Feb 2016 8:08 AM
Hello DGreenway
You asked …
>> Has anyone found a solution to this that does not require investment in a third party product?
For Microsoft LAPS alternative, check out ADCE by Synergix ..
SYNERGIX offers first feature free in their product AD Client Extensions. You can opt for the «Local Account Password Management» feature only and not have to pay for the license to use that feature. You can get unlimited licenses.
Promo code is F3OFFER ( for First Feature Free offer )
www.synergix.com/…/microsoft-laps-compared
Обновлено 21.05.2021
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В минувшей статье я вам подробно осветил методы «как разархивировать файл» в операционных системах Windows или Linux. Сегодня я вам хочу показать очень удобный скрипт на PowerShell. который позволит вам изменить пароль локальной учетной записи на компьютерах в домене Active Directory. Уверен, что данная задача. хоть раз в год у вас и появляется. а по правильному лучше это проделывать хотя бы раз в пол года, в целях повышения безопасности.
Задача по смене пароля локального администратора в домене
Представим простую ситуацию. У вас есть домен Active Directory в котором 50 и более компьютеров. На каждом из них есть локальная учетная запись администратора, используется она чаще всего для второй линии, чтобы производить обслуживание рабочих станций. Вам потребовалось сменить пароль для учетной записи «Администратор», как быть, вы же не будите бегать и ручками все менять.
Ранее во времена Windows Server 2008R2, можно было легко обновить пароль локального администратора с помощью групповых политик, я об этом рассказывал, но в следующих версиях Windows Server 2012 R2 и выше, уже данная опция не доступна, кнопки просто неактивны.
Не знаю, с какой целью Microsoft убрала данную возможность, очень странный ход, поэтому пойдем другим путем. Мы напишем простой скрипт на PowerShell, который возьмет список DNS-имен серверов и на каждом из них он поменяет пароль для нужной нам локальной учетной записи.
Скрипт PowerShell по изменению пароля локальной учетной записи на удаленном компьютере
Для того, чтобы наш скрипт нормально отработал нам нужно выполнить некоторые требования:
- Иметь права администратора на том компьютере, где будет изменяться пароль для локальной учетной записи, я уверен, что вы все доменные администраторы
- Выяснить версию PowerShell, так как я приведу два варианта скрипта по изменению пароля, и тут нужно понимать, какой командлет поддерживает ваша версия.
- Подготовить список с именами серверов и сформировать текстовый файл, по идее все.
Подготовка файла со списком серверов
Давайте я покажу формат и структуру файла, в котором будет содержаться список наших серверов. Создайте обычный txt файл и задайте ему имя. у меня пусть будет comps.txt. Далее скопируйте в него список ваших FQDN имен серверов, ОДНА СТРОКА — ОДНО имя.
Скрипт для массовой смены пароля у локального администратора для PowerShell 5.1 и ниже
Я уверен, что на серверах из списка вы администратор. Я для примера буду производить смену пароля у локальной учетной записи «Администратор«, хотя по хорошему вы ее должны переименовать или отключить вообще, создав другую. Откройте PowerShell ISE и скопируйте скрипт.
# Задаем месторасположение нашего файла со списком серверов
$computer = «C:Tempcomps.txt»
foreach($computerName in (Get-Content $computer)) {
#Устанавливаем новый пароль
$adminPassword = «123456A@»
#задаем какую учетную запись мы будим изменять
$adminUser = [ADSI] «WinNT://$computerName/Администратор»
$adminUser.SetPassword($adminPassword)
}
Можно использовать еще вот такой вариант для списка:
$computer = «C:Tempcomps.txt»
foreach ($computerName in (Get-Content $computer))
{
Write-Host «Tryimg to process computer $computerName»
If (Test-Connection -ComputerName $computerName -Count 2 -Quiet)
{
Write-Host «Компьютер отвечает на Ping»;
$credential = Get-Credential -UserName «Администратор» -Message «Вводим новый пароль»;
If ($credential -eq $null)
{
Write-Warning «The username and/or the password is empty! I quit.»;
Exit;
}
$user = [adsi]»WinNT://$computer/$($credential.GetNetworkCredential().Username),user»;
$user.SetPassword($credential.GetNetworkCredential().Password);
$user.SetInfo();
}
Else
{
Write-Warning «Компьютер не отвечает.»;
}
}
Или вариант для одного компьютера
$computer = Read-Host -Prompt «Введите имя компьютера»;
If (Test-Connection -ComputerName $computer -Count 2 -Quiet) {
Write-Host «The computer responded to our ping request. Connecting…»;
$credential = Get-Credential -UserName «Администратор» -Message «Вводим новый пароль»;
If ($credential -eq $null) {
Write-Warning «The username and/or the password is empty! I quit.»;
Exit;
}
$user = [adsi]»WinNT://$computer/$($credential.GetNetworkCredential().Username),user»;
$user.SetPassword($credential.GetNetworkCredential().Password);
$user.SetInfo();
} Else {
Write-Warning «Компьютер не отвечает.»;
}
Скрипт для массовой смены пароля у локального администратора для PowerShell 5.1 и выше
В Windows 10 build 1607 и выше, новый Powershell 5.1 представил Set-LocalUserкомандлет. Вы можете использовать его для этой задачи вместо адаптера ADSI, но для этого требуется, чтобы на удаленных компьютерах была включена служба удаленного взаимодействия Powershell (которая по умолчанию отключена). Чтобы разрешить прием удаленных команд, вам необходимо запустить run Enable-PSRemotingв терминале Powershell с повышенными привилегиями на удаленном компьютере.
Если удаленное взаимодействие PS включено, измененный сценарий будет выглядеть следующим образом:
- Для одного компьютера
$computer = Read-Host -Prompt «Введите имя компьютера»;
If (Test-Connection -ComputerName $computer -Count 2 -Quiet) {
Write-Host «Пытаюсь проверить компьютер на пакеты ping»;
Invoke-Command -ComputerName $computer -ScriptBlock {
$credential = Get-Credential -UserName «Администратор» -Message «Введите новый пароль»;
If ($credential -eq $null) {
Write-Warning «The username and/or the password is empty! I quit.»;
Exit;
}
Set-LocalUser -Name $credential.UserName -Password $credential.Password;
}
} Else {
Write-Warning «Компьютер не отвечает на Ping.»;
}
- Для списка компьютеров
$computer = «C:Tempcomps.txt»
foreach ($computerName in (Get-Content $computer))
{
If (Test-Connection -ComputerName $computerName -Count 2 -Quiet)
{
Write-Host «Пытаюсь проверить компьютер на пакеты ping»;
Invoke-Command -ComputerName $computerName -ScriptBlock {
$credential = Get-Credential -UserName «Администратор» -Message «Введите новый пароль»;
If ($credential -eq $null)
{
Write-Warning «The username and/or the password is empty! I quit.»;
Exit;
}
Set-LocalUser -Name $credential.UserName -Password $credential.Password;
}
} Else
{
Write-Warning «Компьютер не отвечает на Ping.»;
}
}
На этом у меня все, как говорится нет пределу совершенства. и вы можете написать куда лучше и поделиться со мной и читателями. С вами был Иван Семин. автор и создатель IT портала Pyatilistnik.org.
После того, как на сервер установлена роль контроллера домена, войти на него под локальной учетной записью становится невозможно, т.к. локальная база учетных записей (SAM) сервера перестает быть доступной. Однако в этом правиле есть одно исключение.
На котроллерах домена имеется специальный режим загрузки — режим восстановления служб каталогов (DSRM). Этот режим используется для выполнения различных операций обслуживания и восстановления Active Directory в следующих случаях: когда база данных Active Directory повреждена и нуждается в исправлении ошибок, различных задачах обслуживания базы данных AD (сжатие базы данных, ее анализе на наличие ошибок и т. д.), восстановлению AD из резервной копии / снимка, восстановление отдельных объектов или сброс пароля администратора домена.
Для доступа к DC в этом режиме используется специальная учетная запись администратора DSRM, которая является единственной локальной учетной записью на контроллере домена.
- Как установить пароль DSRM
- Можно ли войти на контроллер домена под администратора DSRM в обычном режиме?
Содержание:
Как установить пароль DSRM
Пароль для режима DSRM задается в процессе развертывания контроллера домена.
Однако острой необходимости запоминать и хранить пароли DSRM для всех контроллеров домена нет. В случае необходимости вы можете легко сбросить этот пароль с помощью утилиты ntdsutil. Чтобы сбросить пароль DSRM, вы должны войти на контроллер домена (естественно с правами администратор домена) и выполнить команды:
ntdsutil
set dsrm password
reset password on server NULL
[новый_пароль_dsrm]
[подтверждение_нового_пароля]
quit
quit
Если вам необходимо изменить пароль DSRM на удаленном DC, можно указать имя сервера следующим образом:
reset password on server msk-dc3
В Windows Server 2008 SP 2 (и выше) есть еще один способ задать пароль администратора DSRM — путем копирования (синхронизации) пароля с определённого доменного аккаунта. Для синхронизации вы можете выбрать любого существующего пользователя или создать нового.
Например, я создал нового доменного пользователя с именем DSRMsync.
Чтобы синхронизировать пароль DSRM текущего DC с данной учетной записью, выполните команды:
ntdsutil
set dsrm password
sync from domain account DSRMsync
q
q
Или, та же команда, но в одну строку.
ntdsutil ″set dsrm password″ ″sync from domain account DSRMsync″ q q
Теперь пароль администратора DSRM соответствует паролю учетной записи DSRMsync. Имейте в виду, что синхронизация пароля выполняется разово, и изменения пароля учетной записи DSRMsync никем не отслеживает. Поэтому для регулярной синхронизации пароля, желательно создать задание планировщика, выполняющего данную команды с определенной периодичностью.
Можно ли войти на контроллер домена под администратора DSRM в обычном режиме?
В предыдущих версиях Windows Server войти на контроллер домена под администратором DSRM можно только при загрузке его в режиме DSRM. Начиная с Windows Server 2008 появилась возможность остановки служб Active Directory Domain Services прямо из консоли управления службами (services.msc) без необходимости перезагрузки сервера. Соответственно, у администратора DSRM теперь есть возможность подключиться к контроллеру домена и в обычном (не DSRM) режиме.
Для этого на контроллере домена необходимо в ветке HKLMSystemCurrentControlSetControlLsa создать параметр типа DWORD с именем DsrmAdminLogonBehavior. Значение параметра может быть следующим:
- 0 – администратор DSRM может авторизоваться в системе только при загрузке в режиме DSRM
- 1 — администратор DSRM может войти в систему при остановленных службах ADDS
- 2 — администратор DSRM может авторизоваться на контроллере домена в любое время
Параметр DsrmAdminLogonBehavior можно установить через графический редактор реестра или командой:
REG ADD ″HKLMSystemCurrentControlSetControlLsa″ /v DsrmAdminLogonBehavior /t REG_DWORD /d 2 /F
Или с помощью PowerShell:
New-ItemProperty -Name DsrmAdminLogonBehavior -Path HKLM:SystemCurrentControlSetControlLsa -PropertyType Dword -Value 1 -Force
Ну и в заключении, напомню, что, если вы разрешили локальный вход на контроллере домена, это снижает его безопасность.
Вчера от одного из читателей своего блога, получил вот такое письмо:
Пытаюсь разобраться, как на всех локальных компьютерах изменить пароль для учётной записи администратора или у локального админа сменить пароль .
я пробую написано тут сделать
http://gamelton.com/2010/12/13/group-policy-preferences-1/
но не выходит ( не новая не создаётся не обновляется пароль (
Может быть у вас есть в силу опыта какой то готовый способ ?
Вариантов решения этого вопроса несколько, по этому попытаюсь с консолидировать их воедино.
Конечно перед запуском выбранного варианта в продакшн среду, рекомендую оттестить выбранный вариант на виртуалках.
С точки зрения безопасности пароль локального администратора должен соответствовать следующим требованиям:
· быть известным только ограниченному кругу лиц;
· обладать достаточной сложностью;
· регулярно изменяться.
В связи с этим периодически возникает задача централизованной передачи учетных данных на рабочие станции пользователей. Решать данную задачу в домене Active Directory можно как минимум несколькими способами:
1) при помощи стартап-скриптов;
2) используя предпочтения групповых политик;
3) запуском скрипта на выделенном компьютере.
Наиболее традиционным способом автоматизации решений подобного рода является использование скриптов. Однако, хранение пароля в открытом виде не очень хорошо с точки зрения безопасности. В этом случае одним из вариантов защиты является кодирование скрипта. К сожалению, этот способ нельзя назвать на 100% безопасным, т.к. закодированные скрипты достаточно легко декодируются в исходное состояние. Об этом и пойдет речь в первом разделе статьи. Во второй части описаны альтернативные способы централизованной смены пароля локального администратора.
СТАРТАП-СКРИПТЫ
Стартап-скрипты зачастую используется для автоматизированного выполнения задач, требующих административных привилегий, на компьютерах пользователей. Допустим, что перед нами стоит задача привести к единому стандарту пароль локального администратора на части компьютеров домена.
Для решения применим скрипт, позаимствованный с блога«Hey, Scripting Guy!», и немного отредактируем его. В итоге получится что-то вроде:
strComputer = «.»
Set objUser = GetObject(«WinNT://» & strComputer & «/Administrator,user»)
objUser.SetPassword «12345-as» ‘
objUser.SetInfo
Сам скрипт не идеален. Например, в него можно добавить:
1) привязку к SID встроенного администратора (это необходимо, если учётная запись была переименована);
2) логирование в журнале событий системы;
3) отправку оповещений об ошибках выполнения по электронной почте.
Однако скрипт нужен нам лишь в качестве примера, поэтому нет смысла усложнять его структуру.
Теперь для автоматического изменения пароля администратора нам необходимо:
1) создать групповую политику;
2) добавить туда наш скрипт в качестве стартап-скрипта (более подробно об этом написано в KB198642);
3) прикрепить групповую политику к контейнеру с компьютерами, на которых должен изменяться пароль.
При этом следует учитывать, что доступ к этому скрипту будет у любого аутентифицированного пользователя. Как следствие, любой пользователь домена при желании и минимуме технических знаний сможет узнать пароль локального администратора. Причем не только для своей рабочей станции, но и для всех остальных. Это не очень хорошо с точки зрения безопасности.
Кодирование
Для решения данной проблемы мы можем воспользоваться утилитой Script Encoder от компании Microsoft. Эта утилита позволяет преобразовать vbs-скрипт в формат vbe. В результате, тело скрипта хранится в закодированном виде и это никак не сказывается на возможности его исполнения. Рассмотрим это более подробно на нашем примере:
1) Скачиваем установочный файл с сайта Microsoft.
2) Распаковываем его.
3) В результате получаем несколько файлов. Один из них — нужная нам утилита screnc.exe. Синтаксис использования следующий:
SRCENC [switches] inputfile outputfile.
Здесь inputfile – исходный vbs-скрипт, outputfile – его зашифрованный аналог, [switches] – необязательные параметры, которые нам не понадобятся.
4) В итоге тело скрипта будет иметь вид:
«#@~^mQAAAA==dDD/K:aEYD,xPrRE@#@&?nO,W4Ni/DP{~!+Dr(LnmOcrrxgP)JzE~LP/O.;Whw!OD~LPrzb9:bUkkY.lDW.S!/+ME#@#@&W(%i/Dc?nYKCk/AWM[PrF+fW*OCdrPv@#@&G(Lik+MR?Y&U0K@#@&Ly4AAA==^#~@»
Полученный vbe-файл можно использовать в качестве стартап-скрипта и он, также как и исходный скрипт, будет менять пароль локального администратора.
Декодирование
Казалось бы теперь учетные данные защищены и системный администратора может спать спокойно. Однако существуют vbs-скрипты, с помощью которых можно легко раскодировать зашифрованный вариант. Пример такого скрипта можно получить по следующему адресу: http://www.interclasse.com/scripts/decovbe.php.
Для его использования, скопируем код в файл decode.vbs и запустим его из командной строки. В качестве аргумента будет путь и имя закодированного vbe-файла:
decode.vbs output.vbe
В результате выполнения должно появиться окно, содержащее текст исходного vbs-скрипта. Как следствие учетные данные администратора опять могут стать известны потенциальному злоумышленнику.
Здесь приведен всего лишь один вариант скрипта, добавлю другие варианты решения проблемы:
pass = «пароль»
Set WshNetwork = CreateObject(«WScript.Network»)
Set oUserAccounts = GetObject(«winmgmts:{impersonationLevel=impersonate}!//» & WshNetwork.ComputerName & «/root/cimv2»).ExecQuery(«Select Name, SID from Win32_UserAccount WHERE Domain = ‘» & WshNetwork.ComputerName & «‘»)
For Each oUserAccount In oUserAccounts
If Left(oUserAccount.SID, 9) = «S-1-5-21-» And Right(oUserAccount.SID, 4) = «-500» Then
GetAdministratorName = oUserAccount.Name
End if
Set oUser = GetObject(«WinNT://» & WshNetwork.ComputerName & «/» & GetAdministratorName & «,user»)
oUser.SetPassword pass
oUser.SetInfo
Next
Или еще вариант:
Создайте файл LocalAdm.vbs, укажите необходимый вам пароль вместо «NewP@ssW0rd» и добавьте этот скрипт в GPO Startup Scripts:
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery ("Select * from Win32_UserAccount Where LocalAccount = True")
For Each objItem in colItems
If Left (objItem.SID, 6) = "S-1-5-" and Right(objItem.SID, 4) = "-500" Then
Set objUser = GetObject("WinNT://" & strComputer & "/" & objItem.name & ",user")
objUser.SetPassword "NewP@ssW0rd"
objUser.SetInfo
End If
Next
АЛЬТЕРНАТИВНЫЕ ВАРИАНТЫ
Рассмотрим альтернативные способы решения задачи передачи учетных данных на рабочие станции. К таковым можно отнести:
1) Group Policy Preferences;
2) централизованное изменение пароля со стороны сервера;
3) усложнение структуры скрипта и ограничение доступа к нему.
Group Policy Preferences (GPP)
Предпочтения групповых политик это своего рода замена скриптам в групповых политиках. Данная технология активно рекламируется Microsoft и действительно значительно упрощает работу системного администратора. Изменение пароля локального администратора при помощи GPP довольно подробно описано в статье: «Change local administrator passwords with Group Policy Preferences». Ключевая мысль этой статьи: «Не рекомендуется изменять пароли локального администратора и сервисных учетных записей при помощи GPP». Связано это с тем, что ни смотря на то, что пароль администратора хранится в зашифрованном виде, для его получения достаточно 256bit AES ключа находящегося на рабочей станции. Таким образом, этот способ также не является безопасным.
Централизованное изменение пароля
Еще одним вариантом изменения пароля является выполнение скрипта не на рабочей станции, а непосредственно на сервере. Пример скрипта для осуществления этого можно найти в статье:
«How Can I Change a User’s Password?». Предложенный там скрипт:
Set objOU = GetObject(«LDAP://OU=Finance, DC=comp, DC=loc»)
objOU.Filter = Array(«Computer»)
For Each objItem in objOU
strComputer = objItem.CN
Set objUser = GetObject(«WinNT://» & strComputer & «/Administrator»)
objUser.SetPassword(«i5A2sj*!»)
Next
берет информацию о компьютерах из контейнера Active Directory и поочередно подключаясь к каждому из них меняет пароль администратора. Из минусов такого варианта можно отметить:
· необходимость удаленного подключения к компьютерам (а они не всегда могут быть доступны);
· организацию автоматического запуска скрипта по расписанию.
Этот вариант наиболее предпочтителен для меня, так как я не силен в vb программировании и не очень люблю скрипты.
Усложнение структуры скрипта
Достаточно много вариантов с применением скриптов изложено в обсуждение «Смена пароля локального администратора» на форумах Microsoft Technet. Особенно интересен вариант с веб-сервером. При его использовании компьютер во время загрузке обращается к серверу, на котором выполняется скрипт по изменению пароля локального администратора. Таким образом этот способ удачно сочетает в себе двух других вариантов, основанных на использовании startup-скриптов и централизованной смены пароля.
Альтернативный вариант
Создаём OU в неё добавляем либо пользователей, либо компьютеры (как сделал я) к ней прикрепляем политику и правим её.
1.Тут меняем имя учётки Администратора.
Конфигурация компьютера
Политики
Конфигурация Windows
Параметры безопасности
Локальные политики/Параметры безопасности
Учетные записи: переименование учетной записи администратора
2.Когда доменная политика применится на всех компьютерах, тогда в ход идёт утилитка от майкрософтка входящая в состав PsTools, pspasswd.
Скачать можно тут:
http://technet.microsoft.com/en-us/sysinternals/bb897543
собственно нам нужен сам файл
pspasswd.exe
запихиваем его в C:WindowsSystem32
Можно на серванте, можно на своей тачке, только если на своей, то cmd открывать надо от имени администратора.
Далее читаем хелп по этой софтине.
либо смотрим сюда:
В cmd запускаем команду:
pspasswd @C:office.txt admin 123456 >C:log_admin.txt
pspasswd — запускает саму утилиту pspasswd.exe
@C:office.txt — значёк @ указывает, что нужно читать данные из файла. Ну и далее путь к самому txt-шнику где у вас указаны имена компьютеров на которых надо менять пасс.
Что очень удобно т.к. меняться пасс будет только на тех машинах которые указаны в этом файле. На серверах например менять не надо, значит мы их туда не записываем.
admin — это учётная запись администратора, переименованная в пункте 1.
123456 — это сам пароль
>C:log_admin.txt — а это вывод отработанной информации в лог файл.
Так же можно сделать батник или файл с расширением *.cmd и поставить на исполнение планировщик заданий, хоть каждый час.
На случай если не все тачки подключены в данный момент к сетке. Ведь пасс поменяется только на включённой машине.
Вариант решения вопроса с помощью Power Shell
ЗАКЛЮЧЕНИЕ
В статье предложены различные способы централизованной автоматической смены пароля локального администратора на рабочих станциях домена Active Directory. Для каждого рассмотрена возможность получения учетных данных потенциальным злоумышленником. В конце статье предложен наиболее безопасный, с точки зрения автора, алгоритм.
ССЫЛКИ:
· Script Encoder;
· Passwords in Group Policy Preferences;
· Change local administrator passwords with Group Policy Preferences;
· How Can I Change a User’s Password? ;
· Форумы Technet: Смена пароля локального администратора.
Всем удачной работы!!!
29.05.2012 —
Posted by |
scripts&GPO
Sorry, the comment form is closed at this time.
В этой статье мы рассмотрим сценарий сброса пароля администратора домена Active Directory. Эта возможность может понадобиться в случаях утраты прав доменного администратора вследствие, например, «забывчивости» или намеренного саботажа увольняющегося админа, атаки злоумышленников и т.д. Для успешного сброса пароля администратора домена необходимо иметь физический или удаленный доступ к консоли сервера (ILO, iDRAC или консоль VMware vSphere/Hyper-V/Proxmox, в случае использования виртуального DC).
В данном примере мы будем сбрасывать пароль администратора на контроллере домене с Windows Server 2019. Если в сети несколько контроллеров домена, рекомендуется выполнять процедуру на сервере с FSMO ролью PDC (Primary Domain Controller).
Содержание:
- Сброс пароля администратора домена, если вы не знаете пароль DSRM
- Сброс пароля администратора на виртуальном контроллере домена
- Как сбросить пароль администратора домена через DSRM?
Для сброса пароля администратора домена вам нужно попасть в режим восстановления службы каталогов – DSRM (Directory Services Restore Mode) с паролем администратора DSRM (он задается при повышении уровня сервера до контроллера домена). По сути это учетная запись локального администратора, хранящаяся в локальной базе SAM на контроллере домена. Если вы не знаете этот пароль, перейдите к способу 1 или 2.
Сброс пароля администратора домена, если вы не знаете пароль DSRM
Загрузите ваш сервер с любого установочного диска Windows (это может быть установочная USB флешка с Windows, или ISO образ).
- На экране выбора параметров установки Windows нажмите сочетание клавиш
Shift+F10
чтобы открыть командную строку; - Теперь нужно понять, какая буква назначена разделу, на которои хранится ваш Windows Server. Выполните команду:
wmic logicaldisk get volumename,name
В данном примере видно, что ваш офлайн образ Windows Server находится на диске C:. Именно это букву диска мы будем использовать в следующих командах;Если этот способ не помог вам однозначно определить диск в Windows, последовательно выполните:
diskpart
->
list disk
->
list vol
- Создадим резервную копию оригинального файла utilman.exe:
copy C:windowssystem32utilman.exe C:windowssystem32utilman.exebak - Теперь нужно заменить файл utilman.exe файлом cmd.exe:
copy c:windowssystem32cmd.exe c:windowssystem32utilman.exe /y
- Извлеките загрузочный образ (USB/ISO) и перезагрузите хост:
wpeutil reboot - После загрузки контроллера домена нажмите на экране входа кнопку «Специальные возможности» (Easy of access) чтобы открыть окно командной строки;
- Выполните команду
whoami
, чтобы уведитесь что командная строка запущена от имени NT AuthoritySYSTEM; - Выведите информацию о пользователе administrator:
Net user administrator
- В этом примере видно, что этот пользователь входит в группу Domain admins, и сейчас он отключен:
Account active: No
- Включите аккаунт администратора домена:
net user administrator /active:yes - Теперь вы можете сбросить пароль администратора домена или любого другого аккаунта:
net user administrator *
Задайте новый пароль администратора (обратите внимание, что новый пароль должен соответствовать доменной политике паролей); - Еще раз загрузите сервер с установочного диска и замените файл utilman.exe исходным файлом (чтобы не оставлять лазейку в безопасности сервера):
copy c:windowssystem32utilman.exebak c:windowssystem32utilman.exe /y - Перезагрузите контроллер домена в обычном режиме и проверьте, что теперь вы можете войти на DC с новым паролем администратора домена.
Этот способ сброса пароля в Windows описан в этой статье.
Сброс пароля администратора на виртуальном контроллере домена
Если у вас используются виртуальный контроллер домена, запущенный на любом из гипервизоров (ESXi, Hyper-V, Proxmox), можно сбросить пароль администратора с помощью PowerShell модуля DSInternals.
Для этого:
- Отключите ВМ с DC и подключите ее диск (vhdx,vmdk, и т.п.) к любой другой ВМ с Windows. Назначьте букву диска, например E:;
- Установите модуль DSInternals из галереи PowerShell:
Install-Module DSInternals –Force
- Получите загрузочный ключ (boot key) с помощью которого шифруются хэши паролей в базе AD (ntds.dit):
$bootkey= Get-BootKey -SystemHiveFilePath "E:WindowsSystem32configSYSTEM" - Теперь можно получить информацию о любом аккаунте в базе данных AD:
Get-ADDBAccount -SamAccountName 'Administrator' -DBPath "E:WindowsNTDSntds.dit" -BootKey $bootkey - Если учетная запись администратора домена отключена, включите ее и задайте новый пароль:
Enable-ADDBAccount -SamAccountName 'Administrator' -DBPath "E:WindowsNTDSntds.dit"
Set-ADDBAccountPassword -SamAccountName 'administrator' -DBPath "E:WindowsNTDSntds.dit" -BootKey $bootkey
- Отключите виртуальный диск от ВМ и включите контроллер домена;
- После его включения новый пароль администратора домена будет реплицирован на все DC.
Как сбросить пароль администратора домена через DSRM?
Если вы знаете пароль администратора DSRM, нужно загрузить ваш DC в режиме DSRM (сервер загружается с отключенными службами AD), выбрав соответствующую опцию в меню расширенных параметров загрузки.
На экране входа в систему ведите имя локального пользователя (administrator) и его пароль (пароль DSRM режима).
В данном примере имя контроллера домена – DC01.
Проверим, под каким пользователем выполнен вход в системе, для этого выполним команду:
whoami /user
USER INFORMATION ---------------- User Name SID ================== ============================================ dc01administrator S-1-5-21-3244332244-383844547-2464936909-500
Как вы видите, мы работаем под локальным админом.
Следующий шаг – смена пароля учетной записи администратора Active Directory (по умолчанию это учетная тоже называется Administrator). Чтобы сбросить пароль администратора домена мы создим отдельную службу, которая при запуске из-под SYSTEM сбрасывает в Active Directory пароль учетной записи Administrator:
sc create ResetADPass binPath= "%ComSpec% /k net user administrator [email protected]" start= auto
Примечание. Обратите внимание, при задании пути в переменной binPath, между знаком ‘=’ и ее значением необходим пробел. Кроме того, новый пароль должен обязательно отвечать доменным требованиям на длину и сложность пароля.
Проверьте, что служба создана:
sc qc ResetADPass
[SC] QueryServiceConfig SUCCESS SERVICE_NAME: ResetADPass TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:Windowssystem32cmd.exe /k net user administrator [email protected] LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : ResetADPass DEPENDENCIES : SERVICE_START_NAME : LocalSystem
Перезагрузите контроллер домена в нормальном режиме:
shutdown -r -t 0
Во время загрузки созданная нами служба изменит пароль учетной записи админа домена на [email protected] Теперь вы можете войти на DC под этой учетной записью и паролем.
whoami /user
USER INFORMATION ---------------- User Name SID ===================== ============================================ corpadministrator S-1-5-21-1737425439-783543262-1234318981-500
Осталось удалить созданную наму службу Windows:
sc delete ResetADPass
[SC] DeleteService SUCCESS
Итак, в этой статье мы разобрались, как можно сбросить пароль администратора домена AD. Еще раз отметим о важности обеспечения физической безопасности вашей IT инфраструктуры. Если кто-то кроме известного круга лиц имеет доступ к физическим серверам контроллеров домена, он может легко сбросить пароль любого пользователя или администратора. Если вам нужно разместить DC в менее доверенных локациях, рекомендуем использовать RODC (read-only domain controller).
Прочитано:
7 484
Заходим на домен контроллер dc1.polygon.local под учетной записью ekzorchik (входит в группу Domain Admins), далее открываем оснастку Group Policy Management:
Start – Control Panel – Administrative Tools — Group Policy Management
Известно, что все рабочие станции у нас располагаются в контейнере IT, вот на него и создадим групповую политику и назовём ее GPO_Change_Administrator_Password:
И так перед нами шаблон политики, применяемый на контейнер IT и распространяющийся на Authenticated Users (Пользователи прошедшие проверку).
Открываем политику на редактирование:
“Computer Configuration” – “Preferences” – “Control Panel Settings” – “Local User and Groups”
через меню «Action» выбираем «New» -> «Local User».
Перед вами появится окно «New Local User Properties» в нём и будем настраивать пароль и другие опции.
Выставляем следующие параметры, как указано у меня на скриншоте ниже:
Action – выставляем Update
User name – выбираем Administrator (built-in), это выберет локального администратора, даже если он был переименован.
Password — <новый_пароль_который_нужно_назначить> (В качестве примера это будет Qq1234567).
Confirm Password – подтверждаем новый пароль еще раз (Qq1234567).
User cannot change password – Запрещаем учетной записи Administrator менять самому себе пароль.
Password newer expires – Пароль никогда не истекает.
Account never expires – Аккаунт никогда не истекает.
Политика настроена, нажимаем Apply и Ok, после закрываем оснастку управления «Group Policy Management”.
Теперь необходимо дождаться когда рабочие станции входящие в контейнер IT произведут перезагрузку либо на рабочих станция сделать gpupdate /force для форсированного применения политики и также перезагрузить компьютер.
В качестве эксперимента будет выступать рабочая станция под управлением Windows 7: W7X64.gksm.local.
Смотрим какие политики применялись на эту рабочую станцию:
C:Usersekzorchik>gpresult /scope computer /R
Конфигурация компьютера
————————
CN=W7X64,OU=IT,DC=polygon,DC=local
Последнее применение групповой политики: 01.10.2012 в 15:50:16
Групповая политика была применена с: dc1.polygon.local
Порог медленного канала для групповой политики: 500 kbps
Имя домена: POLYGON
Тип домена: Windows 2000
Примененные объекты групповой политики
—————————————
GPO_Change_Administrator_Password
Default Domain Policy
Local Group Policy
Также скриншот:
Заходим на рабочую станцию локально:
В поле Пользователь: вводим .Администратора
, чтобы зайти на доменную рабочую станцию локально, нужно поставить точку, а потом символ слеша, пример «.<login>”.
Пароль: Qq1234567 (данный пароль указывали в политике)
С перенастроенным паролем попадаем в локальную станцию:
Проверяем под кем мы сейчас залогинены в системе:
whoami
События отражающие изменение пароля на локальную учётную запись:
Пуск — Панель управления — Администрирование — Просмотр событий — Журналы Windows – Безопасность и применив фильтр текущего журнала по Event ID = 4738
ниже лог события отвечающего за изменение пароля локальной учётной записи в системе
Имя журнала: Security
Источник: Microsoft-Windows-Security-Auditing
Дата: 01.10.2012 15:50:20
Код события: 4738 — обратите внимание на коды, в последствии по ним можете осуществлять поиск при расследывании.
Категория задачи:Управление учетными записями
Уровень: Сведения
Ключевые слова:Аудит успеха
Пользователь: Н/Д
Компьютер: W7x64.polygon.local
Описание:
Изменена учетная запись пользователя.
Субъект:
Идентификатор безопасности: система
Имя учетной записи: W7X64$
Домен учетной записи: POLYGON
Идентификатор входа: 0x3e7
Целевая учетная запись:
Идентификатор безопасности: W7x64Администратор
Имя учетной записи: Администратор
Домен учетной записи: W7x64
Измененные атрибуты:
Имя учетной записи SAM: Администратор
Отображаемое имя: <значение не задано>
Основное имя пользователя: —
Домашний каталог: <значение не задано>
Домашний диск: <значение не задано>
Путь к сценарию: <значение не задано>
Путь к профилю: <значение не задано>
Рабочие станции пользователя: <значение не задано>
Последний пароль задан: 01.10.2012 15:50:20
Срок действия учетной записи истекает: <никогда>
Идентификатор основной группы: 513
Разрешено делегировать: —
Старое значение UAC: 0x210
Новое значение UAC: 0x210
Управление учетной записью пользователя: —
Параметры пользователя: —
Журнал SID: —
Часы входа: Все
По сравнению с групповыми политиками на базе домене под управлением Windows Server 2003 нет больше нужды писать скрипты, а это существенный плюс при администировании сетевой инфраструктуры в компании. Всё работает так как и должно быть. На этом собственно всё, результат достигнут, удачи!!!
Можно ли сбросить пароль доменного администратора? Если не брать в расчет морально-этический аспект этой процедуры, то чисто технически очень даже можно. Для этого существует довольно много различных способов, и сегодня я опишу два из них. Способы 100% рабочие, однако имейте в виду, что для их реализации необходим физический доступ к контролеру домена, или как вариант — система удаленного управления типа iLO (Integrated Lights-Out) от HP.
Способ 1
Для сброса пароля доменного админа нам понадобится установочный диск с Windows Server 2008. Вставляем диск в дисковод, загружаемся с него и выбраем пункт «Восстановление системы».
Выбираем раздел, на который установлена система и жмем кнопку «Далее».
В следующем окне выбираем запуск командной строки.
Теперь нам надо файл utilman.exe, находящийся в папке windowssystem32, заменить на cmd.exe. Вводим в командной строке:
move D:windowssystem32utilman.exe D:windowssystem32utilman.bak
copy D:windowssystem32cmd.exe D:windowssystem32utilman.exe
Обратите внимание, что буква диска может отличаться, в зависимости от конфигурации системы. В нашем случае это диск D.
Затем жмем на кнопку «Перезагрузка».
Загружаем Windows и дожидаемся окна приветствия. В окне кликаем мышкой на значке специальных возможностей или нажимаем Win+U.
Поскольку файл utilman.exe, который запускает апплет панели управления «Центр специальных возможностей» мы заменили на интерпретатор командной строки cmd.exe, то нам откроется командная консоль. В ней задаем новый пароль администратора командой:
net user administrator P@$$w0rd
Задавать P@$$w0rd не обязательно, можно придумать свой пароль, главное — он должен соответствовать политике безопасности домена (мин. длина, сложность и т.п), иначе будет выдана ошибка.
Закрываем командную строку и вводим учетную запись доменного админа с новым паролем.
Дело сделано, пароль сброшен. Можно заходить в систему и делать все что захотим.
Остается только вернуть на место utilman.exe. Для этого придется еще раз загрузиться с установочного диска, и в командной строке ввести:
delete D:windowssystem32utilman.exe
move D:windowssystem32utilman.bak D:windowssystem32utilman.exe
Плюсами данного способа являются скорость и простота использования. Но есть и минус — способ работает только на контролерах домена с Windows Server 2008 и 2008R2.
Способ 2
При использовании этого способа нам потребуется локальная учетная запись администратора. Не смотря на то, что на контроллере домена она отключена, информация о ней продолжает хранится в базе данных SAM. При загрузке в режиме восстановления службы каталогов для входа в систему используется именно учетная запись локального админа.
Для сброса локальной учетки воспользуемся утилитой для сброса паролей — Offline NT Password and Registry editor. Утилита бесплатная, можно скачать образ CD или сделать загрузочную флешку.
Сама процедура сброса достаточно проста. Сначала загружаемся с диска. Затем выбираем диск, на который установлена система. Если системный диск не виден, то можно загрузить необходимые драйвера с флешки или дискеты.
Выбрав диск, указываем путь к файлам реестра (обычно windowssystem32config).
Выбираем, какие разделы реестра загружать для редактирования. За учетные записи отвечают разделы SAM, System и Security.
Далее указываем, что собираемся редактировать учетные данные пользователей.
И выбираем из списка пользователя, которого будем редактировать. Предупрежу сразу, русские буквы программа не понимает, и если вместо Administrator мы видим непонятный набор символов, то следует указать RID пользователя, как в примере.
Выбрав пользователя, сбрасываем его пароль на пустой или изменяем его.
Выходим из программы, не забыв сохранить сделанные изменения, и перезагружаем сервер.
При перезагрузке жмем клавишу F8, выбираем загрузку в режиме восстановления службы каталогов и входим в систему с учетной записью локального администратора и новым (или пустым, если был выбран сброс) паролем.
Теперь у нас есть полный доступ к локальной системе, но с Active Directory мы пока ничего сделать не можем. Исправить это нам поможет утилита SRVANY. Она примечательна тем, что может запустить любую программу как службу, причем программа эта будет запущена с правами системы (NT AUTHORITYSYSTEM).
Взять ее можно здесь. Копируем утилиты INSTSRV и SRVANY в какую-нибудь папку, например в C:temp. Туда же кладем cmd.exe, который и будет запускаться с правами системы. Теперь запускаем командную строку и вводим:
cd c:temp
instsrv PassRecovery c:tempsrvany.exe
Таким образом INSTSRV устанавливает SRVANY как службу с названием PassRecovery.
Служба установлена, теперь нужно ее настроить. Открываем редактор реестра и идем в раздел HKEY_LOCAL_MACHINESystemCurrentControlSetServicesPassRecovery. Как видно из названия, этот раздел был создан при установке службы PassRecovery.
Создаем подраздел с именем Parameters и добавляем в него два ключа реестра типа REG_SZ (строка): Application со значением с:tempcmd.exe и AppParameters со значением /k net user administrator P@$$w0rd .
Application указывает, что запускать, AppParameters — с какими параметрами. В нашем случае будет запущена командная строка, в которой будет выполнена команда net user, которая сменит пароль администратора на P@$$w0rd. Можно задать свой вариант, главное чтобы он соответствовал требованиям доменной политике безопасности.
Теперь осталось настроить параметры запуска службы. Открываем оснастку Службы (Services) и находим в ней службу PassRecovery.
В свойствах службы в свойствах меняем тип запуска на Авто, далее выбираем вкладку Вход в систему (Log on), и там включаем опцию Взаимодействие с рабочим столом (Interact with the desktop).
Перезагружаем сервер и заходим в систему с учетной записью администратора и новым паролем.
Убедившись что пароль сброшен, запускаем командную строку, останавливаем созданную нами службу и удаляем ее:
net stop PassRecovery
sc delete PassRecovery
И удаляем все из папки C:temp.
Пароль сброшен, и домен в нашем полном распоряжении. И хотя по сравнению с первым способ этот достаточно громоздкий, опять же требуется дополнительный софт, но зато работает на всех операционных системах.
На этом все, и надеюсь что вам не придется взламывать пароль на своих (и тем более чужих) серверах.
Смена пароля AD
Это руководство описывает процедуру изменения пароля для сервера со службой домена Active Directory
Для этого откройте «Пуск» -> «Администрирование» -> «Пользователи и компьютеры Active Directory»
В новом окне, откройте раздел c именем Вашего домена, на скриншоте это «neo.adminad.ru» и нажмите на папку «Users»
Слева появится список пользователей, выберите одного из пользователей по имени и правой кнопкой мыши откройте пункт «Смена пароля…»
В окне смена пароля,
1. Введите новый пароль (пароль должен быть не меньше 8 символов)
2. Установите галочку на пункте «Требовать смену пароля при следующем входе в систему» — если требуется.
3. Разблокировать учетную запись пользователя — если пользователь был заблокирован системой.
Нажмите «ОК»
Если все данные ввели правильно то появится окно об удачной смене пароля
Готово
Теперь мы рассмотрим процедуру изменения срока пароля для сервера со службой домена Active Directory
Срок истечения пароля AD
Откройте «Пуск» -> «Администрирование» -> «Управление групповой политикой»
Далее откроется окно «Управление групповой политикой», в блоке слева откройте дерево
«Лес: Имя Вашего домена»
-> «Домены»
-> «Имя Вашего домена»
-> «Default Domain Policy»
затем в блоке справа выберите вкладку «Параметры».
Во вкладке «Параметры» откройте вкладки «Политики» -> «Конфигурация Windows» -> «Параметры безопасности» -> «Политика учетных записей / Политика паролей»
В списке «Политика учетных записей / Политика паролей» нажмите правой кнопкой мыши на «Максимальный срок действия пароля 42 дня» и в контекстном меню выберите «Изменить»
Перед Вами откроется «Редактор управления групповыми политиками»
В этом редакторе, в блоке слева откройте дерево:
«Конфигурация компьютера» -> «Политики» -> «Конфигурация Windows» -> «Параметры безопасности» -> «Политики учетных записей» -> «Политика паролей»
В блоке справа откройте «Максимальный срок действия пароля 42 дня»
В открывшемся окне в значении «Срок истечения действия пароля» введите 0 или нужное Вам значение
Значение «0» — говорит системе о том что — функция «Срок истечения действия пароля» — отключена.
В таком режиме срок действия пароля — бесконечный.
И нажмите кнопку «Применить» , готово.






























































