Логирование PowerShell
Логирование PowerShell — это критически важный элемент мониторинга безопасности в современных средах, так как PowerShell часто используется злоумышленниками для выполнения вредоносных скриптов, обхода защиты и выполнения атак. Включение логирования PowerShell позволяет отслеживать выполняемые команды и скрипты, что помогает обнаруживать подозрительную активность.
Типы событий
Основные типы логирования:
Модуль аудита PowerShell (Module Logging) - Модуль аудита регистрирует все команды, выполняемые в PowerShell. Логи сохраняются в Журнале событий Windows в разделе Microsoft-Windows-PowerShell/Operational с Event ID 4103
Логирование блоков скриптов (Script Block Logging) - Логирование блоков скриптов регистрирует содержимое скриптов, выполняемых в PowerShell. Логи сохраняются в Журнале событий Windows в разделе Microsoft-Windows-PowerShell/Operational с Event ID 4104
Логирование транскрипций (Transcript Logging). Логирование транскрипций сохраняет все действия, выполненные в сессии PowerShell, в текстовый файл.
Настройка логирования Powershell
Чтобы настроить аудит событий PowerShell с помощью групповых политик и включить модуль Script Block Logging, выполните
Откройте Редактор групповых политик
Перейдите в раздел: Конфигурация компьютера → Политики → Административные шаблоны → Компоненты Windows → Windows PowerShell.
Выберите "Включить ведение журнала модулей", "Включить ведение журнала блоков скриптов" и "Включить ведение журнала транскрипций" Для последнего укажите путь для сохранения транскрипций (например,
C:\PSLogs
).
Примеры подозрительных команд и скриптов
Загрузка и выполнение скриптов из интернета: Ищите команды, связанные с обходом защиты, запуском скриптов или взаимодействием с внешними ресурсами (например,
Invoke-Expression
,DownloadString
,Net.WebClient
)Обход защиты:
Создание скрытых процессов:
Использование утилит для взлома:
Сравнение событий PowerShell Event ID 4103 и Event ID 4104
Оба события связаны с логированием активности PowerShell, но они регистрируют разные аспекты выполнения команд и скриптов.
Event ID 4103: Логирование модулей (Module Logging)
Что регистрируется:
Отдельные команды, выполняемые в PowerShell.
Регистрируется каждая команда, введенная в консоли или выполненная в скрипте.
Когда регистрируется:
При выполнении любой команды в PowerShell, если включено логирование модулей.
Как выглядит cmdlet alias:
Если используется алиас (например,
gci
вместоGet-ChildItem
), в логах будет записан алиас.
Пользователь выполняет команду:
В логах будет зарегистрировано:
Event ID 4104: Логирование блоков скриптов (Script Block Logging)
Что регистрируется:
Полное содержимое скриптов, выполняемых в PowerShell.
Регистрируется весь блок кода, включая команды, циклы, условия и функции.
Когда регистрируется:
При выполнении скриптов или многострочных команд в PowerShell.
Также регистрируется, если команда выполняется в контексте скрипта (например, через
Invoke-Expression
).
Как выглядит cmdlet alias:
Если используется алиас, в логах будет записан алиас, но также будет виден полный блок скрипта.
Пользователь выполняет скрипт:
В логах будет зарегистрировано:
Известные Powershell инструменты
Last updated