Создание загрузочного диска WinPE с модулем DSInternals

 Модуль DSInternals поддерживает возможность работы в среде WinPE. Это дает возможность реализации ряда сценариев непосредственно над самой базой NTDS.dit когда контроллер домена Active Directory выключен. Например:

  • Модификация учетных записей
  • Сброс пароля администратора домена Active Directory
  • Дамп хешей паролей Active Directory

В данной статье будет продемонстрирован процесс создания загрузочного диска WinPE с модулем DSInternals на борту.

Создание загрузочного диска

Первым шагом необходима установка компонентов Windows ADK. Производим установку самого Windows ADK 1903

Установка Windows ADK 1903

и образов WinPE:

Установка Windows Preinstallation Environment (PE) 1903

После установки, запускаем Deployment and Imaging Tools Environment от имени администратора:

Deployment and Imaging Tools Environment

Воспользуемся утилитой copype для копирования образа WinPE в рабочий каталог:

Результат выполнения:

Отработка утилиты copype

Далее, производим монтирование 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"

Результат выполнения:

Монтируем образ Windows PE

По умолчанию, в 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 модуля DSInternals

Чтобы консоль PowerShell автоматически загрузилась после старта, в WinPE необходимо добавить файл winpeshl.ini. Создать этот файл требуется в каталоге D:\WinPE\DSInternals WinPE\mount\Windows\System32 со следующим содержимым:

Результат выполнения:

Автозагрузка Powershell в WinPE

Завершаем процесс модификации образа WinPE.

Dism /Unmount-Image /MountDir:"D:\WinPE\DSInternals WinPE\mount" /commit

Отмонтирование Windows PE

На финальном шаге создаем загрузочный ISO образ:

MakeWinPEMedia /ISO "D:\WinPE\DSInternals WinPE" "D:\WinPE\DSInternals WinPE\WinPE with PS DSInternals.iso"

Результат выполнения:

Создание ISO образа

Загрузившись с ISO образа, удостоверимся что модуль dsinternals присутствует. Для этого следует выполнить командлет Get-Command с указанием модуля dsinternals

Get-Command -Module dsinternals

Создание загрузочного диска WinPE с модулем DSInternals

Кратко подытожу все выполненные действия:

  1. Установлен Windows ADK и образы WinPE;
  2. В образ WinPE установлены необходимые компоненты — PowerShell и .NET;
  3. Добавлен модуль DSInternals и создан загрузочный носитель.

Выводы

Используя компоненты Windows ADK и PowerShell модуль DSInternals возможно создать загрузочный носитель для выполнения операций над базой данных NTDS.dit выключенного контроллера домена Active Directory. Кейсов по применению этого носителя ровно столько, сколько входящих в модуль командлетов.

Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.