Учебное пособие по powershell для начинающих

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

Что такое политика выполнения PowerShell?

Политика выполнения PowerShell (PowerShell Execution Policy) — это параметр, определяющий, какие типы сценариев PowerShell можно запускать в системе. По умолчанию для параметра установлено значение «Restricted». Когда этот режим активирован, PowerShell предоставляет только базовые команды интерактивной сессии командной строки, не позволяя загрузку и выполнение пользовательских сценариев. Параметр обеспечивает защиту от случайного или злонамеренного выполнения вредоносного кода.

Отметим, что режим «Restricted» может ограничить возможности PowerShell и повлиять на его функциональность. Поэтому существует несколько вариантов обхода этого параметра.

Почему администраторы хотят обойти политику выполнения?

Основная и самая частая причина – автоматизация процессов. Также есть несколько других причин, по которым PowerShell стал популярным среди администраторов, пентестеров и хакеров:

  • Встроен в Windows;
  • Предоставляет возможность вызова API Windows;
  • Предоставляет возможность запускать команды без записи на диск;
  • Предоставляет возможность избежать обнаружения антивирусом;
  • Позволяет создавать наборы инструментов для пентеста с открытым исходным кодом.

Как просмотреть настройки политики выполнения

Перед использованием всех функций PowerShell злоумышленникам, возможно, придется обойти политику выполнения «Restricted». Мы можем посмотреть текущую конфигурацию с помощью команды PowerShell «Get-ExectionPolicy». Параметр по умолчанию имеет значение «Restricted».

Учебное пособие по powershell для начинающих

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

Учебное пособие по powershell для начинающих

Настройка тестовой среды

В приведенных примерах используется сценарий с именем «runme.ps1», который содержит следующую команду PowerShell для вывода сообщения на консоль:

Write-Host “My voice is my passport, verify me.”

Когда пользователь пытается выполнить команду в системе, настроенной с политикой выполнения по умолчанию, отображается следующая ошибка:

Учебное пособие по powershell для начинающих

Если ваша текущая политика разрешает запуск скриптов, и вы хотите установить запрет в целях тестирования приведенных методов, запустите команду «Set-ExecutionPolicy Restricted» из консоли администратора PowerShell.

:/>  Установка русского языка при загрузке windows 7

Обход политики выполнения PowerShell

1. Скопируйте сценарий в интерактивную консоль PowerShell.

Скопируйте и вставьте сценарий PowerShell в интерактивную консоль. Имейте в виду, что вы будете ограничены привилегиями вашего текущего пользователя. Это самый распространённый метод для запуска простых сценариев в интерактивной консоли. Кроме того, метод не приводит к изменению конфигурации и не требует записи на диск.

Учебное пособие по powershell для начинающих

2. Отправьте сценарий в стандартный поток ввода PowerShell

Просто введите ваш скрипт в стандартный ввод PowerShell. Такой метод не приводит к изменению конфигурации и не требует записи на диск.

Учебное пособие по powershell для начинающих


3. Прочитайте сценарий из файла и перенаправьте его в стандартный поток ввода PowerShell

Используйте команду Windows «type» или команду PowerShell «Get-Content», чтобы прочитать сценарий с диска и перенаправить его в стандартный ввод PowerShell. Этот метод не приводит к изменению конфигурации, но требует записи сценария на диск. Однако вы можете прочитать его из общего сетевого ресурса, если пытаетесь избежать записи на диск.

Пример 1: команда Get-Content PowerShell

Учебное пособие по powershell для начинающих

Пример 2: Введите команду

Учебное пособие по powershell для начинающих

4. Загрузите скрипт по URL-адресу и выполните его с помощью Invoke Expression.

Такой метод можно использовать для загрузки сценария PowerShell из Интернета и его выполнения без записи на диск. Способ также не приводит к каким-либо изменениям конфигурации.

Учебное пособие по powershell для начинающих

5. Используйте переключатель функций PowerShell (Command Switch)

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

Пример 1: Полная команда

Учебное пособие по powershell для начинающих

Пример 2: Укороченная команда

Powershell -c “Write-Host ‘My voice is my passport, verify me.'”

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

:/>  Команда Msg (примеры, переключатели и многое другое) - КАК 2022

6. Используйте переключатель EncodeCommand Switch

EncodeCommand Switch очень похож на Command Switch, но отображает все скрипты в кодировке Unicode/base64. Кодирование скрипта таким образом помогает избежать ошибок синтаксического анализа, с которыми вы сталкиваетесь при использовании Command Switch.

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

Пример 1: Полная команда

Учебное пособие по powershell для начинающих

Пример 2: Сокращённая команда с использованием закодированной строки

powershell.exe -Enc VwByAGkAdABlAC0ASABvAHMAdAAgACcATQB5ACAAdgBvAGkAYwBlACAAaQBzACAAbQB5ACAAcABhAHMAcwBwAG8AcgB0ACwAIAB2AGUAcgBpAGYAeQAgAG0AZQAuACcA

7. Используйте команду Invoke-Command

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

Учебное пособие по powershell для начинающих

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

8. Используйте команду Invoke-Expression

Команда не требует изменения конфигурации и записи на диск.

Пример 1: Полная команда с использованием Get-Content

Учебное пособие по powershell для начинающих

Пример 2: сокращенная команда с использованием Get-Content

9. Используйте флаг Bypass

Флаг будет обходить политику выполнения, когда вы выполняете скрипты из файла. Microsoft заявляет, что при использовании флага «ничего не блокируется и не выводится никаких предупреждений или сообщений». Техника не влечет за собой изменения настроек и не требует записи на диск.

Учебное пособие по powershell для начинающих

10. Используйте флаг Unrestricted

Флаг похож на Bypass, но при его использовании, как заявляет Microsoft, «загружаются все файлы конфигурации и запускаются все сценарии. Если вы запускаете неподписанный скрипт, загруженный из Интернета, перед его запуском у вас запрашивается разрешение». Такой метод не приводит к изменению конфигурации и не требует записи на диск.

:/>  Как повернуть видеоролик на 90 градусов? 7 способов как перевернуть видео в компьютере и телефонах

Учебное пособие по powershell для начинающих

11. Используйте флаг Remote-Signed

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

PowerShell.exe -ExecutionPolicy Remote-signed -File .runme.ps1

12. Отключите ExecutionPolicy, заменив AuthorizationManager

Функцию можно выполнить через интерактивную консоль PowerShell или в сочетании с параметром «Command». После вызова функция заменит «AuthorizationManager» на null. В результате политика выполнения устанавливается на unrestricted до конца сессии.

Метод не приводит к постоянному изменению конфигурации и не требует записи на диск. Однако изменение будет применяться на протяжении всей сессии.

Учебное пособие по powershell для начинающих

13. Установите Excution Policy для уровня Process

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

Учебное пособие по powershell для начинающих

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

Учебное пособие по powershell для начинающих

Здесь показано, как постоянно менять политику выполнения для среды текущего пользователя, напрямую изменяя раздел реестра.

Учебное пособие по powershell для начинающих

Подведение итогов

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

Оставьте комментарий