Модуль DSInternals поддерживает возможность работы в среде WinPE. Это дает возможность реализации ряда сценариев непосредственно над самой базой NTDS.dit когда контроллер домена Active Directory выключен. Например:
- Модификация учетных записей
- Сброс пароля администратора домена Active Directory
- Дамп хешей паролей Active Directory
В данной статье будет продемонстрирован процесс создания загрузочного диска WinPE с модулем DSInternals на борту.
Создание загрузочного диска
Первым шагом необходима установка компонентов Windows ADK. Производим установку самого Windows ADK 1903
После установки, запускаем Deployment and Imaging Tools Environment от имени администратора:
Воспользуемся утилитой copype для копирования образа WinPE в рабочий каталог:
Результат выполнения:
Далее, производим монтирование wim образа в каталог mount. Он доступен по пути «D:\WinPE\DSInternals WinPE\mount».
Dism /Mount-Image /ImageFile:"D:\WinPE\DSInternals WinPE\media\sources\boot.wim" /index:1 /MountDir:"D:\WinPE\DSInternals WinPE\mount"
Результат выполнения:
По умолчанию, в WinPE отсутствует поддержка PowerShell и .NET. Эти компоненты необходимы для создания образа WinPE с модулем DSInternals. Для их установки воспользуемся следующими командами:
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFX.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFX_en-us.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"
Dism /Add-Package /Image:"D:\WinPE\DSInternals WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"
Следующим шагом будет добавление модуля DSInternals в WinPE. Для этого скачиваем последнею версию модуля с Git репозитория разработчика.
Обязательно производим разблокировку скачанного архива командлетом Unblock-File. Если этого не сделать, модуль в DSInternals в WinPE не будет загружен. Будет ошибка 0x80131515 при попытке его ручного импорта.
Копируем каталог DSInternals из скачанного архива в каталог Modules, в моем случае это D:\WinPE\DSInternals WinPE\mount\Windows\System32\WindowsPowerShell\v1.0\Modules
Чтобы консоль PowerShell автоматически загрузилась после старта, в WinPE необходимо добавить файл winpeshl.ini. Создать этот файл требуется в каталоге D:\WinPE\DSInternals WinPE\mount\Windows\System32 со следующим содержимым:
Результат выполнения:
Завершаем процесс модификации образа WinPE.
Dism /Unmount-Image /MountDir:"D:\WinPE\DSInternals WinPE\mount" /commit
На финальном шаге создаем загрузочный ISO образ:
MakeWinPEMedia /ISO "D:\WinPE\DSInternals WinPE" "D:\WinPE\DSInternals WinPE\WinPE with PS DSInternals.iso"
Результат выполнения:
Загрузившись с ISO образа, удостоверимся что модуль dsinternals присутствует. Для этого следует выполнить командлет Get-Command с указанием модуля dsinternals
Get-Command -Module dsinternals
Кратко подытожу все выполненные действия:
- Установлен Windows ADK и образы WinPE;
- В образ WinPE установлены необходимые компоненты — PowerShell и .NET;
- Добавлен модуль DSInternals и создан загрузочный носитель.
Выводы
Используя компоненты Windows ADK и PowerShell модуль DSInternals возможно создать загрузочный носитель для выполнения операций над базой данных NTDS.dit выключенного контроллера домена Active Directory. Кейсов по применению этого носителя ровно столько, сколько входящих в модуль командлетов.
Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.