Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр

Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр Техника

Что такое powershell?

Расширение автоматизации с открытым исходным кодом от Microsoft называется PowerShell.

Вступление

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

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

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

1]отключить powershell в windows 10 с помощью политики безопасности

Чтобы получить рекомендуемую локальную политику безопасности для ограничения доступа к PowerShell в Windows 10, выполните следующие шаги:

  1. Нажмите «Пуск», введите «Локальная политика безопасности» и выберите результат в строке меню.
  2. Перейдите на левую панель и разверните Политики ограниченных приложений.
  3. Щелкните правой кнопкой мыши Advanced Rules и выберите New Hashing Rule Setting.
  4. Если вы не можете найти способ развернуть политики ограниченного программного обеспечения, щелкните правой кнопкой мыши политики ограниченного программного обеспечения и выберите Новая политика ограниченного программного обеспечения.

Нажмите кнопку Browse Variant в окне New Has Rule. Используя клавиши Windows E, запустите Проводник. Введите и нажмите Enter следующий путь:

%SystemRoot%system32WindowsPowerShellv1.0

Можно найти 64-разрядную версию PowerShell, используя 32-разрядную версию. Нажмите OK, чтобы применить powershell.exe после выбора его из списка.

Безопасность

Как было сказано ранее, VBScript/JSScrips чрезвычайно опасны для системы и находятся всего в одном щелчке мыши. Если пользователь входит в систему, используя учетную запись администратора, риск существует.

Сценарий с расширением «ps1» в PowerShell может быть открыт только в Блокноте и не может быть запущен в командной оболочке. Для запуска сценария необходимо ввести имя файла и нажать клавишу Enter.

В новой оболочке так же невозможна подмена команд. Суть этого приема, применяемого злоумышленниками, заключается в следующем. Обычно у пользователя, не имеющего прав администратора, есть некоторые папки с разрешениями на запись и выполнение файлов. Характерный пример — папка C:Documents and Settingsимя_пользователя. Вредоносная программа создает в такой папке исполняемый файл с именем, совпадающим с именем команды оболочки или именем исполняемой системной программы. К примеру, я создал в «своей» папке документов ipconfig.vbs, выводящий простое сообщение. Теперь, если, запустив cmd.exe, и находясь в своей папке, я попытаюсь выполнить команду Windows ipconfig, то получу вот такой результат:
Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр
Для полноты иллюстрации можно поместить в папку с документами и исполняемый файл, переименованный в нашем случае в ipconfig.exe. Тогда даже при вызове с указанием расширения будет запускаться файл из текущей папки, а не из system32. С PowerShell такой фокус не пройдет — для вызова скрипта, путь к которому не совпадает с путями, заданными в системной переменной %Path, необходимо явно указать его расположение. Даже в том случае, когда скрипт расположен в папке, являющейся для оболочки текущей, необходимо указать путь в таком виде: .имя_файла. Точка с обратным слешем указывают интерпретатору на текущую папку.

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

  • Restricted: настройка по умолчанию, сценарии не разрешены к запуску
  • AllSigned: сценарии, имеющие цифровую подпись от доверенного издателя, разрешены к запуску; созданные пользователем сценарии также должны быть сертифицированы CA
  • RemoteSigned: сценарии разрешены к запуску, если им не доверяют, но они были созданы локальным пользователем; сценарии, загруженные из Интернета и не подписанные, не запускаются
  • Unrestricted: сценарии разрешены к запуску.

Как называется текущий режим политики? Выполните команду Set-ExecutionPolicy с нужным именем политики, чтобы изменить режим.

Дополнительно:  Что происходит, когда программа не отвечает

Параметры команды «Что будет, если.» — это еще один инструмент, который я бы использовал для повышения безопасности при работе с PowerShell и ее компонентами. Они бывают двух видов: whatif и confirm. Первая позволяет указать, что будет сделано с объектом, но не будет реализовано на практике.

Вот иллюстрация, показывающая, как применять эти параметры. Если пользователь пытается выполнить команду:

Get-Process | Stop-Process

После небольшой задержки он увидит синий экран с надписью «STOP». Как указано в тексте команды, PowerShell по очереди убьет все процессы, которые в данный момент активны в системе. Когда вы выполните:

Get-Process | Stop-Process -whatif

ничего страшного не произойдет — просто PowerShell покажет, что бы он сделал, если бы команда выполнялась без ключа -whatif:
Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр

Диски powershell

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

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

Поставщики услуг, которые в настоящее время предлагают свои услуги, могут быть найдены в этой оболочке. Псевдонимы, переменные среды, физические системные (C) диски и т.д. — все это «диски» в PowerShell.

Вот пример чтения содержимого ветки реестра HKLMSoftwareMicrosoft
Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр
Как видно, использованы те же команды, что для получения сведений о файловой системе. Но структура получаемых данных, естественно, различна. Кроме названия и свойств для каждого элемента выводится номер подраздела (SKC) и номер записи (VC). С помощью PowerShell пользователь может просматривать сведения о реестре, добавлять, удалять и модифицировать ключи. Позволю привести себе что-то вроде шпаргалки по работе с элементами реестра:
Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр
Как видно, использованы те же команды, что для получения сведений о файловой системе. Но структура получаемых данных, естественно, различна. Кроме названия и свойств для каждого элемента выводится номер подраздела (SKC) и номер записи (VC). С помощью PowerShell пользователь может просматривать сведения о реестре, добавлять, удалять и модифицировать ключи. Позволю привести себе что-то вроде шпаргалки по работе с элементами реестра:
Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр

И код для примера выполнения различных манипуляций с ключами реестра и их параметрами:

Знакомство с powershell

Единственное различие между PowerShell и cmd.exe после запуска заключается в том, что цвет окна CMD по умолчанию синий. Вы также быстро узнаете, что функции копирования/вставки в PowerShell одинаково ужасны и уродливы. Однако первоначальное представление о том, что эти формы похожи, скажем так, не совсем верно.

Системный компонент PowerShell построен с использованием технологии Microsoft Framework. Весь PowerShell является объектно-ориентированным. Вывод команды PowerShell — это объект платформы. NET, а не просто «текст сам по себе». Свойства, присущие этому объекту, и представление самих данных.

Внутренние команды PowerShell для взаимодействия с объектами называются командами. Они имеют уникальное, однозначное соглашение об именовании «действие-цель». Например, «set» и «out» используются для получения данных и вывода, соответственно.

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

В состав PowerShell включена довольно обширная справочная система. Для начала работы с ней можно выполнить команду Get-Help.
Отключение PowerShell и прочие особенности борьбы с Malware. Часть I / Хабр
Для получения детальной справки по какому-либо командлету или разделу основных сведений, необходимо указать его название в качестве параметра команды.

Конвейер

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

С помощью этой функции можно манипулировать объектами, выбирая, сортируя и группируя их в соответствии с заданным фильтром. Для организации конвейера такого типа в тексте сценария используется знак вертикальной косой черты («косая черта» означает точный адрес объекта для выбора из нескольких объектов одновременно; она также обозначает метод определения координат каждого участка конвейера в заданный промежуток времени). Если такой признак найден, интерпретатор передает объекты в качестве входных параметров от одного командлета к другому.

Дополнительно:  Не работает кнопка шифт на ноутбуке windows 10

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

Кроме того, упорядочим этот список по дате его создания и выберем десять самых последних записей. Для отображения информации укажем время последнего изменения файла. Поскольку процессы «System» и «Idle» не содержат путей к файлам, они будут проигнорированы.

Как говорится, хорошо сформулированный вопрос — это половина выигранной битвы. Посмотрите, что будет дальше:

Отключить powershell 7 в windows 10

Вы можете удалить PowerShell 7 с помощью Windows 10, если он установлен на вашем компьютере. Для этого необходимо выполнить следующие действия:

  1. Щелкните правой кнопкой мыши на кнопке «Пуск».
  2. Выберите «Настройки» в расширенном меню пользователя.
  3. В приложении «Настройки» выберите категорию «Приложения».
  4. Затем выберите опцию Приложения и функции в левой панели.
  5. Теперь перейдите к правой панели, прокрутите вниз и выберите приложение PowerShell.
  6. Нажмите кнопку «Удалить».
  7. Если Windows попросит вас подтвердить, снова нажмите кнопку Удалить.

Чтобы удалить это приложение, следуйте инструкциям, отображаемым на экране. Приложение и все связанные с ним данные будут удалены. Доступ к PowerShell версии 7 может быть заблокирован.

Отключить powershellise

Установите powershel_ise.exe (вместо fortschill) из списка, чтобы отключить PowerShellISE на компьютере с Windows 10.

Щелкните правой кнопкой мыши значок Дополнительные правила в разделе Политики ограниченного ПО окна Локальная политика безопасности, а затем выберите Новое правило хэширования кнопок.

Скопируйте указанный ниже путь, а затем запустите Explorer. 64-разрядная версия PowerShell будет выбрана нажатием клавиши Enter.

%SystemRoot%SysWOW64WindowsPowerShellv1.0

Прокрутите вниз до опции powershell.exe на следующей странице, нажмите на значок кнопки «Открыть», а затем выберите ее!

Если вы хотите отключить PowerShellISE, вы должны выбрать powershell_ise.exe.

Затем выберите кнопку Ok после нажатия кнопки Отправить заявку.

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

Параметры

Согласно соглашениям PowerShell об именовании, за каждым именем параметра, передаваемым команде, должен следовать символ «-«. Для упрощения написания рекомендуется опускать некоторые имена параметров. Например, вместо того чтобы указывать команду Get-Content полностью, можно использовать команду help.

Get-Help –name Get-Content

Вы можете издать приказ.

Get-Help Get-Content

Если параметр называется GetContent, он может иметь или не иметь никакого значения. Это можно сравнить с отключением функциональности команды. Введите «help», чтобы просмотреть всю информацию о командлете Get-Content.

Get-Help Get-Content –Detailed

Политики ограничения использования программ

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

В мире Windows эти элементы управления известны как политики ограничения ПО (Software Restriction Policies — SRP); смотрите здесь, чтобы узнать больше.

Самая лучшая стратегия — объявить все вне закона, но и самая болезненная. Те, кто назвал себя ворами, попадают в «белый список».

В следующем разделе об этом будет рассказано более подробно.

В любом из этих сценариев необходимо открыть параметры Windows Local Computer Policy и запустить редактор политики gpEdit. Не запускать исполняемые файлы — это параметр безопасности по умолчанию, который можно изменить, нажав кнопку Запрещено.

Добавьте приложения, которые были одобрены, в «Расширенное расписание» после того, как они были исключены по умолчанию.

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

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

Это логично подводит нас к самой последней инновации Microsoft в области безопасности — AppLocker. Я поговорю с вами позже.

Получение сведений об объектах

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

Дополнительно:  BSOD: истории из жизни, советы, новости, юмор и картинки — Горячее | Пикабу

Для изучения возвращаемого объекта команды Get-Member. Этот командлет показывает подробную информацию о типе объекта и каждом из его компонентов. В любом случае, тексты, содержащие множество различных характеристик, и объекты с множеством различных свойств могут быть очень длинными.

Get-Process | Get-Member | Out-Host -Paging

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

Get-Process | Get-Member -MemberType Properties

Он будет определять только свойства объекта; он не будет показывать элементы объекта.

Get-Process | Get-Member -MemberType Methods

Только его методы. Вы также можете использовать клавишу Tab при именовании переменной, постановке точки и просмотре свойств объекта. PowerShell выполняет итерации и заменяет свойства объектов. Клавиша Shift Tab позволяет выполнять обратный поиск.

Профили powershell

Файл с расширением ps1 — это профиль. На самом деле оболочка создает сценарий при запуске. Пользователь должен создавать профили в оболочке, поскольку они не создаются автоматически. Если политика выполнения разрешает передачу файлов конфигурации, вновь созданные профили будут загружаться при каждом выполнении PowerShell. В качестве шаблона можно использовать до четырех различных профилей. Перед загрузкой расположите файлы в правильном порядке:

Когда в этом контексте упоминаются различные оболочки, имейте в виду, что PowerShell не всегда использует файлы профиля ps1. Эти системы можно разрабатывать и использовать с помощью нескольких интегрированных сред разработки (IDE).

Переменная $profile содержит пароль для профиля текущего пользователя. Выполните следующую команду, чтобы создать свой сайт:

New-Item -Path $profile -ItemType file -force

Вы можете создать его, а затем открыть в любом текстовом редакторе, например, в Блокноте:

notepad $profile

Это необходимо сделать еще раз. Не забудьте проверить, что политика запуска разрешает выполнение сценариев.

Псевдонимы

Система псевдонимов для команд уже встроена в оболочку. Псевдонимы, с другой стороны, используются для упрощения ввода команд. В данном случае псевдоним — это сокращенное имя команды (например, gc для Get-Content или fl).

Однако этот механизм позволяет разрабатывать интерфейсы, работающие с различными командными интерпретаторами. Например, если вы раньше использовали cmd.exe, вы привыкли использовать команду dir для удаления содержимого папки. Даже если эта команда на самом деле является командой Get-ChildItem, ее выполнение в PowerShell приведет к тому же результату.

Работа с объектами wmi

Для построения всей системы используется группа приложений, известных как WMI (Windows Management Interface). В качестве альтернативы возможно управление локальным компьютером при подключении к сети. Web-Based Enterprise Management (WBEM) включает в себя WMI.

C IM, или Общая информационная модель, была создана компанией Microsoft. Windows Vista, Windows Server 2003 и Windows 2000 поставляются с ним. Для Windows 95 и Windows 98 доступен отдельно устанавливаемый компонент. поддерживает использование языков сценариев для управления персональными компьютерами и серверами под управлением Microsoft Word, таких как VBScript или Windows Powersell.

PowerShell имеет мощную встроенную поддержку объектов WMI. Нажмите кнопку , если вы не хотите выполнять команду.

Get-WmiObject -List

Для выполнения этой задачи вы должны иметь возможность видеть в оболочке множество классов, которые предоставляют вам доступ к объектам WMI. Состав классов зависит от операционной системы и расширений WMI, установленных на удаленной машине. Вы должны указать IP-адрес или имя удаленной машины в качестве параметра, чтобы получить информацию о классах, которые там предлагаются.

Get-WmiObject -List -ComputerName Server

Для успешного подключения к удаленному компьютеру необходимо иметь под рукой интерфейс WMI.

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

Заключение

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

Помощь в подготовке этой статьи оказал Василий Гусев.

Оцените статью
Master Hi-technology
Добавить комментарий