Повторное использование логина и пароля в powershell с get-credential и их шифрование

PowerShell в сравнении с bat

Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепeнно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.

Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:

На PowerShell это будет выглядеть вот так:

Вот так через bat можно перезагрузить службу dnscache (или любую другую):

В PowerShell это будет так:

Мап диска в bat:

И в PowerShell:

Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.

Написание сценария

Теперь пришло время автоматизировать процесс. Этот скрипт будет шифровать файлы в каталоге. Переместите расшифрованные файлы в новый каталог. Скрипт удалит исходный файл.

Вы начинаете свой сценарий с некоторой подготовки. Сначала импортируйте модуль, используя Импорт-Модуль GnuPG. Вам нужно настроить пару переменных. Первая переменная $ EncryptionTarget ваша целевая папка. (В этом примере переменная окружения используется для указания на папку документа текущего пользователя.) Установите вторую переменную в качестве ключевой фразы. Этот шаг облегчает его изменение позже.

Эти переменные идут в Надстройка Шифрование в качестве параметров. Вы используете Start-Sleep дать время шифрования файла для завершения. Пример использует три минуты. Вы можете изменить его в зависимости от размера и количества файлов, с которыми вы работаете.

Вы получаете файлы .GPG, комбинируя Get-ChildItem с Where-Object. Используя Для каждого цикл, каждый из этих файлов копируется в новый каталог. Мы повторяем эти шаги, но переключаем -лайк для -не нравится. второй Для каждого цикл очищает исходные файлы.

Выполнение конфигурации

На этом этапе можно запустить конфигурацию, в результате чего вы получите два выходных файла:

  • Файл , который настраивает в локальном диспетчере конфигураций расшифровку учетных данных с помощью сертификата, размещаемого в локальном хранилище компьютера и определяемого своим отпечатком.
    Set-DscLocalConfigurationManager применяет файл .
  • MOF-файл, который фактически применяет конфигурацию. Командлет Start-DscConfiguration применяет конфигурацию.

Эти команды выполнят следующие действия:

В этом примере конфигурация DSC будет принудительно отправляться на целевой узел. Конфигурацию DSC также можно применить с помощью опрашивающего сервера DSC, если он доступен.

Дополнительные сведения о применении конфигурации DSC с помощью опрашивающего сервера DSC см. в статье Setting up a DSC pull client (Настройка опрашивающего клиента DSC).

Как запустить скрипт PowerShell?

Есть несколько различных способов запуска скрипта, ниже приведены основные:

  1. Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой .\test.ps1)Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
  2. Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
  3. Запустить стандартную коммандную строку и в ней написать:powershell -file <имя_скрипта> (пример: powershell -file myscript.ps1)

Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл <имя_скрипта>, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.

Написание сценария

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

Чтобы написать сценарий, откройте новый файл в текстовом редакторе, введите команды и сохраните их в файле с допустимым именем файла с расширением.

Следующий пример представляет собой простой сценарий, который получает службы, работающие в текущей системе, и сохраняет их в файл журнала. Имя файла журнала создается с текущей даты.

Чтобы создать этот скрипт, откройте текстовый редактор или редактор скриптов, введите следующие команды, а затем сохраните их в файле с именем .

Параметры в скриптах

Чтобы определить параметры в скрипте, используйте инструкцию param. Инструкция должна быть первой инструкцией в скрипте, за исключением комментариев и любых инструкций.

Параметры сценария работают как параметры функции. Значения параметров доступны для всех команд в скрипте. Все функции параметров функций, включая атрибут Parameter и его именованные аргументы, также допустимы в скриптах.

При выполнении скрипта пользователи заменяют параметры после имени скрипта.

В следующем примере показан скрипт с параметром ComputerName . Обе функции сценария могут обращаться к значению параметра ComputerName .

Чтобы выполнить этот скрипт, введите имя параметра после имени скрипта. Пример:

Дополнительные сведения о инструкции Param и параметрах функции см. в разделе about_Functions и about_Functions_Advanced_Parameters.

Написание справки для сценариев

Раздел справки для скрипта можно написать с помощью любого из двух следующих методов.

  • Comment-Based справки по сценариям

  • XML-Based справки по сценариям

    Создайте раздел справки на основе XML, например тип, который обычно создается для командлетов. При преобразовании разделов справки на несколько языков требуется справка на основе XML.

Чтобы связать скрипт с разделом справки на основе XML, используйте. Ключевое слово комментария справки Екстерналхелп. Дополнительные сведения о ключевом слове Екстерналхелп см. в разделе about_Comment_Based_Help. Дополнительные сведения о справке на основе XML см. в разделе как написать справку по командлетам.

Возврат значения выхода

По умолчанию скрипты не возвращают состояние выхода при завершении сценария. Для возврата кода выхода из скрипта необходимо использовать инструкцию. По умолчанию инструкция возвращает . Можно указать числовое значение, чтобы вернуть другое состояние выхода. Ненулевое значение кода выхода обычно сигнализирует об ошибке.

в Windows допускается любое число между и .

В UNIX разрешены только положительные числа в диапазоне от (0) до (255). Отрицательное число в диапазоне от до автоматически преобразуется в положительное число путем добавления
256. Например, преобразуется в .

В PowerShell инструкция задает значение переменной. в Windows командной оболочке (cmd.exe) оператор exit задает значение переменной среды.

Любой аргумент, который не является числовым или вне диапазона, зависящего от платформы, преобразуется в значение .

Как можно определить, какой контроллер домена обладает ролью FSMO

Определение обладателей ролей мастеров операций средствами GUI

  1. Выполните вход на контроллер домена под учётной записью, обладающей правами администратора;
  2. Откройте диалоговое окно «Выполнить» и зарегистрируйте динамическую библиотеку оснастки «Схема Active Directory» при помощи команды regsvr32.exe schmmgmt;
  3. Затем откройте окно консоли управления MMC и вызовите диалог добавления новой оснастки. В списке оснасток выберите «Схема Active Directory», как показано на следующей иллюстрации:Рис. 1. Добавление оснастки «Схема Active Directory»
  4. В открытой оснастке «Схема Active Directory» нажмите правой кнопкой мыши на корневом узле оснастки и из контекстного меню выберите команду «Хозяин операций», как показано ниже:Рис. 2. Мастер операций схемы
  1. Открыть окно оснастки «Active Directory – домены и доверие»;
  2. Щёлкнуть правой кнопкой мыши на корневом узле оснастки и из контекстного меню выбрать команду «Хозяин операций», как изображено на следующей иллюстрации:Рис. 3. Мастер операций именования доменов

«Active Directory – пользователи и компьютеры»«Хозяева операций»«Хозяева операций»Рис. 4. Хозяева операций для уровня домена

Определение обладателей ролей мастеров операций средствами командной строки

Ntdsutil

  1. Откройте окно командной строки;
  2. Выполните команду Ntdsutil;
  3. Перейдите к маркерам владельца управления ролью NTDS при помощи ввода команды roles;
  4. На этом шаге вам нужно подключить определённый контроллер домена Active Dirctory. Для этого выполните команду connections;
  5. В строке «server connections» введите connect to server, укажите в этой же строке имя сервера и нажмите на клавишу «Enter»;
  6. Перейдите обратно к fsmo management, используя команду quit;
  7. Выполните команду «Select operation target», предназначенную для выбора сайтов, серверов, доменов, ролей или контекстов именования;
  8. Теперь вы можете просмотреть список ролей, известных подключённому серверу при помощи команды List roles for connected server, как показано на следующей иллюстрации:Рис. 5. Определение мастеров операций средствами командной строки

Dcdiag/test:Knowsofroleholders /vРис. 6. Определение FSMO-ролей средствами утилиты Dcdiag

Вопросы безопасности

Командлет Set-SqlColumnEncryption , используемый для настройки шифрования столбцов базы данных, обрабатывает ключи постоянного шифрования и данные, хранящиеся в столбцах базы данных. Поэтому командлет нужно запускать на защищенном компьютере. Если база данных размещена на сервере SQL Server, командлет нужно запускать на компьютере, отличном от компьютера с экземпляром SQL Server. Поскольку основной задачей функции постоянного шифрования является обеспечение целостности зашифрованных конфиденциальных данных даже в случае нарушения безопасности системы базы данных, выполнение скрипта PowerShell, обрабатывающего ключи или конфиденциальные данные на сервере SQL Server, может снизить или вообще отменить эффект действия функции.

Задача Статья Доступ к ключам с открытым текстом или хранилищу ключей Доступ к базе данных
Шаг 1. Запуск среды PowerShell и импорт модуля SqlServer. Нет Нет
Шаг 2. Соединение с сервером и базой данных Нет Да
Шаг 3. Проверка подлинности в Azure, если главный ключ столбца (для смены, защищающий ключ шифрования) хранится в хранилище ключей Azure Add-SqlAzureAuthenticationContext Да Нет
Шаг 4. Создание массива объектов SqlColumnEncryptionSettings — по одному для каждого столбца базы данных, который требуется зашифровать, повторно зашифровать или расшифровать. SqlColumnMasterKeySettings — это объект, который существует в памяти (PowerShell). Он определяет целевую схему шифрования столбца. New-SqlColumnEncryptionSettings нет Нет
Шаг 5. Задание нужной конфигурации шифрования, указанной в массиве объектов SqlColumnMasterKeySettings, созданном на предыдущем шаге. В зависимости от заданных целевых параметров и текущей конфигурации шифрования столбец может быть зашифрован, повторно зашифрован или расшифрован. Set-SqlColumnEncryptionПримечание. Выполнение этого шага может занять длительное время. Приложения не будут иметь доступ к таблицам во время выполнения операции или ее части в зависимости от выбранного режима (в сети или вне сети). Да Да

Создание сертификата

Существует два способа создания и использования обязательного сертификата шифрования (пары открытого и закрытого ключей).

  1. Создание сертификата на целевом узле и экспорт только открытого ключа на узел разработки
  2. Создание сертификата на узле разработки и экспорт всей пары ключей на целевой узел

Рекомендуется первый способ, поскольку закрытый ключ, используемый для расшифровки учетных данных в MOF-файле, не покидает целевой узел.

Создание сертификата на целевом узле

Закрытый ключ следует хранить в тайне, так как он используется для расшифровки MOF-файла на целевом узле. Проще всего это сделать, создав сертификат закрытого ключа на целевом узле и скопировав сертификат открытого ключа на компьютер, используемый для разработки конфигурации DSC в MOF-файле. Следующий пример:

  1. сертификат создается на целевом узле;
  2. сертификат открытого ключа экспортируется на целевой узел;
  3. сертификат открытого ключа импортируется в хранилище сертификатов my на узле разработки.

На узле разработки: импорт открытого ключа сертификата

Создание сертификата на узле разработки

Кроме того, сертификат шифрования можно создать на узле разработки, экспортировать его с закрытым ключом в виде PFX-файла, а затем импортировать на целевой узел. Это текущий метод реализации шифрования учетных данных DSC в системе Nano Server. Несмотря на то что PFX-файл защищен паролем, необходимо обеспечить его безопасность во время передачи. Следующий пример:

  1. Сертификат создается на узле разработки.
  2. Сертификат, включая закрытый ключ, экспортируется на узле разработки.
  3. Закрытый ключ удаляется с узла разработки, однако сертификат открытого ключа сохраняется в хранилище my.
  4. Сертификат закрытого ключа импортируется в хранилище сертификатов My(Personal) на целевом узле

    Его необходимо добавить в корневое хранилище, чтобы целевой узел считал его надежным.

    .

Работа с ntds.dit

Файл представляет собой базу данных, в которой хранится информация Active Directory, такая как сведения о пользователях, группах и членстве в группах. База также включает хеши паролей для всех пользователей в домене.

Первым делом следует получить копию файла . Он расположен на контроллере домена в директории . Но просто скопировать его не получится, так как этот файл постоянно используется EFS в Active Directory, и оператор (пентестер, редтимер, злоумышленник или исследователь) рискует получить следующее сообщение об ошибке.

Ошибка копирования файла ntds.dit

Я расскажу о двух способах скопировать данный файл. Первый способ использует скрипт PowerShell, а второй — копирование с помощью встроенных средств Windows.

Скрипт Invoke-NinjaCopy позволяет копировать любые используемые службами Windows файлы, в том числе и . При этом скрипт не запускает посторонних служб и не внедряется в процессы или контекст System. Этот инструмент получает дескриптор диска, что дает ему право на чтение необработанного массива байтов всего тома. Затем скрипт анализирует структуру NTFS и ищет определенную сигнатуру. Таким образом определяет, где находится файл, и побайтово его копирует. Так можно читать даже файлы, которые блокирует LSASS.

Копирование файла с помощью Invoke-NinjaCopy

Плюс ко всему данный скрипт написан на PowerShell, поэтому запускается из памяти, что позволяет избежать его сохранения на диск.

Второй способ — теневое копирование. Для этого используется установленный в Windows инструмент vssadmin. Сначала следует создать теневую копию с помощью следующей команды:

Создание теневой копии с помощью vssadmin

А теперь можно копировать оттуда никем не используемый файл .

Копирование ntds.dit

Таким образом, файл можно скопировать двумя разными способами. Но он зашифрован, и, чтобы его прочитать, необходим файл , получить который можно также несколькими способами. К примеру, из той же теневой копии или из реестра.

Копирование файла system из теневой копииПолучение файла system из реестра

Теперь у оператора есть необходимые файлы, и он может перенести их к себе на машину для дальнейших работ, точнее для извлечения информации и взлома хешей паролей. Но сначала следует удалить теневую копию.

Удаление теневой копии

Извлечь хеши можно с помощью скрипта , входящего в пакет impacket.

Использование secretsdump для извлечения хешей

Для взлома NTLM-хешей можно использовать . Сохраним их в файл и отправим на перебор.

Файл с хешамиРезультат работы hashcat

Так мы получим некоторые пароли в открытом виде.

Параметры удаления и предупреждения AD DS

Чтобы получить справку об использовании страницы «Просмотреть параметры», см. главу «Просмотр параметров»

Если на контроллере домена размещены дополнительные роли, такие как роль DNS-сервера или сервера глобального каталога, появляется следующая страница с предупреждением:

Чтобы подтвердить, что дополнительные роли более не будут доступны, сперва нужно нажать кнопку Продолжить удаление, а затем Далее.

При принудительном удалении контроллера домена все изменения объектов Active Directory, которые не были реплицированы на другие контроллеры в домене, будут утеряны. Помимо этого, если на контроллере домена размещены роли хозяина операций, глобального каталога или роль DNS-сервера, критические операции в домене и лесе могут быть изменены следующим образом. Перед удалением контроллера домена, на котором размещена роль хозяина операций, необходимо попытаться переместить роль на другой контроллер домена. Если передать эту роль невозможно, сначала удалите AD DS с этого компьютера, а затем воспользуйтесь служебной программой Ntdsutil.exe для захвата роли. Используйте программу Ntdsutil на контроллере домена, для которого планируется захватить роль; по возможности используйте последний партнер репликации на том же сайте, что и данный контроллер домена. Дополнительные сведения о переносе и захвате ролей хозяина операций см. в статье 255504 базы знаний Майкрософт. Если мастер не может определить, размещена ли на контроллере домена роль хозяина операций, необходимо запустить команду run netdom.exe, чтобы проверить, выполняет ли данный контроллер домена роли хозяина операций.

  • Глобальный каталог: пользователи могут испытывать проблемы со входом в домены леса. Перед удалением сервера глобального каталога необходимо убедиться, что в этом лесу и на сайте достаточно серверов глобального каталога для обслуживания входа пользователей в систему. При необходимости следует назначить другой сервер глобального каталога и обновить информацию клиентов и приложений.

  • DNS-сервер: все данные DNS, хранящиеся в интегрированных зонах Active Directory, будут утеряны. После удаления AD DS этот DNS-сервер не сможет выполнять разрешение имен для зон DNS, которые были интегрированы в Active Directory. Следовательно, рекомендуется обновить DNS-конфигурацию всех компьютеров, которые в настоящий момент обращаются к IP-адресу этого DNS-сервера для разрешения имен с IP-адресом нового DNS-сервера.

  • Хозяин инфраструктуры: клиенты в домене могут испытывать трудности с определением местоположения объектов в других доменах. Перед продолжением перенесите роль хозяина инфраструктуры на контроллер домена, не являющийся сервером глобального каталога.

  • Хозяин RID: возможны проблемы при создании новых учетных записей пользователей, компьютеров и групп безопасности. Перед продолжением перенесите роль хозяина RID на другой контроллер домена в том же домене.

  • Эмулятор основного контроллера домена (PDC): операции эмулятора PDC, например обновление групповых политик и смена пароля для учетных записей, отличных от учетных записей AD DS, будут осуществляться неправильно. Перед продолжением перенесите роль хозяина эмулятора PDC на другой контроллер домена в том же домене.

  • Хозяин схемы больше не сможет изменять схему этого леса. Перед продолжением перенесите роль хозяина схемы на контроллер домена в корневом домене леса.

  • Хозяин именования доменов: добавлять или удалять домены в этом лесу будет уже невозможно. Перед продолжением перенесите роль хозяина именования доменов на контроллер домена в корневом домене леса.

  • Все разделы каталога приложений на этом контроллере домена Active Directory будут удалены. Если контроллер домена содержит последний репликат одного или нескольких разделов каталога приложений, по завершении операции удаления эти разделы перестанут существовать.

Обратите внимание, что домен прекратит существование после удаления доменных служб Active Directory с последнего контроллера домена в домене. Если контроллер домена является DNS-сервером, которому делегированы права на размещение зоны DNS, на следующей странице можно будет удалить DNS-сервер из делегирования зоны DNS

Если контроллер домена является DNS-сервером, которому делегированы права на размещение зоны DNS, на следующей странице можно будет удалить DNS-сервер из делегирования зоны DNS.

Дополнительные сведения об удалении доменных служб Active Directory см. в разделах Удаление доменных служб Active Directory (уровень 100) и Понижение уровня контроллеров домена и доменов (уровень 200).

Разрешение скачанного изображения

PowerShell скрипт скачивает изображение из Интернета и отображает ее разрешение

Function Get-Image{
   begin{::LoadWithPartialName("System.Drawing") |Out-Null}
   process{
      $fi=$_
      if( $fi.Exists){
         $img = ::FromFile($_)
         $img.Clone()
         $img.Dispose()
      }else{Write-Host "File not found: $_" -fore yellow }
   }
   end{}
}

#Скачиваем файл
$webclient = New-Object System.Net.WebClient
$url = "http://cs418720.userapi.com/v418720852/20d0/DiSlb-_mVBg.jpg"
$file = "D:\ImageSize.jpg"
$webclient.DownloadFile($url,$file)

#Получаем ширину и высоту изображения
$image = $file | Get-Image
$Width = $image.Width
$Height = $image.Height
#Вывод на экран
write-output “Width:$Width, Height:$Height"

Подписать сценарий

После создания самозаверяющего сертификата можно подписывать сценарии. Если вы используете политику выполнения AllSigned , подписывание сценария позволяет запустить сценарий на компьютере.

Следующий пример скрипта подписывает скрипт. Однако при использовании политики выполнения AllSigned необходимо подписать сценарий перед запуском.

Важно!

Скрипт должен быть сохранен с использованием кодировки ASCII или UTF8NoBOM. Вы можете подписать файл сценария, который использует другую кодировку. Но сценарий не запускается, или модуль, содержащий скрипт, не удается импортировать.

Чтобы использовать этот сценарий, скопируйте следующий текст в текстовый файл и присвойте ему имя .

Чтобы подписать файл скрипта, введите в командной строке PowerShell следующие команды:

После подписания скрипта его можно запустить на локальном компьютере. Однако сценарий не будет выполняться на компьютерах, на которых политика выполнения PowerShell требует наличия цифровой подписи от доверенного центра сертификации. При попытке PowerShell отобразится следующее сообщение об ошибке:

Если PowerShell отображает это сообщение при выполнении скрипта, который не был написан, обработайте файл так, как если бы вы ни использовали любой неподписанный сценарий. Проверьте код, чтобы определить, можно ли доверять сценарию.

Вопросы безопасности при использовании PowerShell для настройки Always Encrypted

Так как основной задачей функции постоянного шифрования является обеспечение целостности зашифрованных конфиденциальных данных даже в случае нарушения безопасности системы базы данных, выполнение скрипта PowerShell, обрабатывающего ключи или конфиденциальные данные на сервере SQL Server, может снизить или вообще отменить эффект действия функции. Дополнительные рекомендации по безопасности см. в разделе (Вопросы безопасности для управления ключами).

PowerShell можно использовать для управления ключами Always Encrypted с разделением ролей и без разделения ролей, чтобы контролировать пользователей, имеющих доступ к фактическим ключам шифрования в хранилище ключей и доступ к базе данных.

Дополнительные рекомендации по безопасности см. в разделе (Вопросы безопасности для управления ключами).

Другие функции сценариев

В PowerShell есть много полезных функций, которые можно использовать в скриптах.

  • — Можно использовать инструкцию, чтобы предотвратить выполнение скрипта без указанных модулей или оснасток и заданную версию PowerShell. Дополнительные сведения см. в разделе about_Requires.

  • — Содержит полный путь и имя выполняемого скрипта. Этот параметр допустим во всех скриптах. Эта автоматическая переменная появилась в PowerShell 3,0.

  • — Содержит каталог, из которого выполняется скрипт. В PowerShell 2,0 эта переменная допустима только в модулях скриптов ( ).
    Начиная с PowerShell 3,0, он действителен во всех скриптах.

  • — Автоматическая переменная содержит сведения о текущем скрипте, включая сведения о том, как он был запущен или вызван. Эту переменную и ее свойства можно использовать для получения сведений о скрипте во время его выполнения. Например, . Переменная Микомманд. path содержит путь и имя файла скрипта. . Строка содержит команду, которая запустила скрипт, включая все параметры и значения.

    Начиная с PowerShell 3,0, имеет два новых свойства, которые предоставляют сведения о скрипте, который вызывал или вызывает текущий скрипт. Значения этих свойств заполняются только в том случае, если вызывающий элемент или вызвавший объект является сценарием.

    • Пскоммандпас содержит полный путь и имя скрипта, который вызывал или вызывает текущий скрипт.

    • PSScriptRoot содержит каталог скрипта, вызвавшего или вызвавшего текущий скрипт.

    В отличие от и автоматических переменных, содержащих сведения о текущем скрипте, свойства пскоммандпас и PSScriptRoot этой переменной содержат сведения о скрипте, вызвавшем текущий скрипт.

  • Разделы данных. Вы можете использовать ключевое слово для разделения данных из логики в скриптах. Разделы данных также могут упростить локализацию. Дополнительные сведения см. в разделе about_Data_Sections и about_Script_Internationalization.

  • Подпись скрипта. Вы можете добавить цифровую подпись к сценарию. В зависимости от политики выполнения можно использовать цифровые подписи для ограничения выполнения скриптов, которые могут включать ненадежные команды. Дополнительные сведения см. в разделе about_Execution_Policies и about_Signing.

Использование Credential Manager (Диспетчер учетных данных)

Многие знают, что пароли от сетевых дисков (и многие другие) хранятся в специальном месте под названием Credential Manager. В панели управления он выглядит так:

Мы можем получить доступ к этим объектам использовав модуль CredentialManager. Этот модуль не относится к стандартным и устанавливается отдельно:

У вас могут появится два уведомления говорящие об установке репозитория NuGet и о том, что он является не доверенным.

У нас станут доступны 4 команды:

  • Get-StoredCredential — получает учетные данные из хранилища;
  • Get-StrongPassword — генерирует случайный пароль;
  • New-StoredCredential — создает учетные данные;
  • Remove-StoredCredential — удаляет учетные данные.

Далее мы сможем получить все учетные данные указав нужный тип в атрибуте Type или  Target (источник) которому эти данные принадлежат:

Мы получаем объект типа PSCredential, который мы можем использовать в командах. Создавать новые учетные данные и добавлять их в хранилище CredentialManager мы тоже можем:

Кроме логина и пароля мы указываем:

  • Target — кому принадлежит учетная запись. Проще говоря имя компьютера;
  • Type — тип учетной записи;
  • Persist — тип хранения. Может быть session (временной), localmachine (сохраненной) и enterprise(как я понимаю это тип перемещаемый, например с MS Passport).

Первые два пункта особого значения не имеют. Они предназначены для программ, которые получают пароли по определенным идентификаторам. В ваших скриптах вы выбираете идентификаторы для себя.

Так же у меня была ошибка ‘New-StoredCredential : CredWrite failed with the error code 1312’. Эта ошибка проявляет себя только в удаленных сессиях PSSession. Если вы работаете локально — то она не проявляется. Причина ошибки и ее решение — пока не ясно (нет ответа на github).

Активация BitLocker на диске

После того, как средства защиты шифрования были добавлены на диск (для безопасности используются минимум пароль и ключ восстановления), мы используем командлет «Enable-BitLocker», этот командлет активирует BitLocker на указанном диске с предварительно настроенными средствами защиты. Как и утилита manage-bde, командлет позволяет нам добавлять средства защиты одновременно с активацией.

Эта команда начинает шифрование диска и показывает нам окно с ходом выполнения задачи. Мы можем принудительно отобразить диалоговое окно, выполнив «fvenotify.exe» из консоли PowerShell.

Работа с командлетами

Пропустите первый командлет, который используется для установки GPG4Win

, Вы должны были уже выполнить этот шаг. Если нет, вы можете использовать этот командлет для установки и настройки программы. Командлет загружает его в выбранную вами папку и запускает установщик. Два других дополняют друг друга: Надстройка Шифрование а также Remove-шифрование. Оба они принимают три параметра.

Первый каталог, переданный как -Путь к папке. Модуль будет проходить через каждый файл в каталоге, чтобы применить или удалить шифрование файла. Вы бы не хотели указывать его в папке «Документы». Вы хотели бы создать пару подпапок для работы с этим сценарием. Если вы посмотрите на исходный код для модуля, он использует Get-ChildItem чтобы получить все в каталоге. Функция дешифрования ограничивает поиск файлами, заканчивающимися на .GPG.

Следующим параметром является фраза-пароль, используемая для шифрования файла: -пароль. Убедитесь, что это сложно, так как это защита вашего файла. Функция просматривает каждый из файлов с помощью цикла ForEach. Файл и пароль объединяются в качестве аргументов в Запуск процесса для GPG4Win.

Конечный параметр, -GPGPath не является обязательным Он установлен по умолчанию для установки GPG4Win. Если он установлен на другом диске, вы можете обновить его с помощью этого параметра. Это меняет цель для Запуск процесса.

Общий процесс

  1. Настройте сертификаты, ключи и отпечатки, убедившись, что на каждом целевом узле есть копия сертификата и на компьютере конфигурации есть открытый ключ и отпечаток.
  2. Создайте блок данных конфигурации, содержащий путь и отпечаток для открытого ключа.
  3. Создайте сценарий конфигурации, который определяет нужную конфигурацию целевого узла и настраивает шифрование на целевых узлах, заставляя локальный диспетчер конфигураций расшифровывать данные конфигурации с помощью сертификата и его отпечатка.
  4. Запустите конфигурацию, которая задает параметры локального диспетчера конфигураций и запускает конфигурацию DSC.

Утилиты export_keys.ps1 и import_keys.ps1¶

Две утилиты, используеющиеся совместно.

  • автоматически определяет разрядность системы;
  • автоматически определяет SID пользователя;
  • экспортирует ветку в папку со скриптом.
  • автоматически определяет разрядность системы;
  • автоматически определяет SID пользователя;
  • изменяет ветку реестра в экспортированном файле;
  • импортирует файл с контейнерами;
  • автоматически устанавливает сертификаты, перенесенных контейнеров.

Примечание

Утилиты целесообразно использовать в случае, когда требуется перенести большое количество контейнеров из реестра одного компьютера, в реестр другого.

Алгоритм работы

  1. Перенесети папку с утилитами на первый компьютер абонента, с которого надо скопировать контейнеры;
  2. Запустите скрипт и дождитесь его успешного выполнения. При этом в папке со скриптами появится экспортированная ветка реестра;
  3. Перенесите папку со скрипом и экспортированным файлом на второй компьютер;
  4. Запустите скрипт и дождитесь его успешного выполнения;
  5. Просмотрите вывод скрипта, на наличе проблем и проверьте вход в сервисы СКБ Контур.

Примечание

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

Внимание

Скрипт сохраняет ветку в файле на рабочем столе. Скрипт подхватывает файл также
с рабочего стола и резудьтат обработки сохраняет в файле .

Файл не будет подхвачен скриптом из других папок.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: