Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

Event ID 4104 Windows Server, AD и Роли

Аудит обхода Script Block Logging в PowerShell: защита Event ID 4104

Обновлено: 28.08.2026 · Официальная документация ↗

Симптомы обхода логирования Script Block Logging

В журнале безопасности Microsoft-Windows-PowerShell/Operational отсутствуют записи Event ID 4104: Execute a Remote Command / Script Block, несмотря на включенные политики аудита. Злоумышленники используют манипуляции с памятью для отключения интерфейса AMSI (Antimalware Scan Interface) и обнуления флагов журналирования ScriptBlockLogging.

СимптомГде проявляетсяРиск безопасности
Отсутствие записей Event ID 4104PowerShell/OperationalСкрытое выполнение вредоносных скриптов и обфусцированного кода (Cobalt Strike/PowerSploit)
Обход AMSI в памяти процессаСессия PowerShellОтключение сканирования команд встроенным антивирусом через патчинг amsi.dll
Запуск PowerShell v2.0 (Downgrade Attack)PowerShell.exe -version 2Обход логирования за счет использования старой версии движка без поддержки ScriptBlockLogging

Пошаговая принудительная настройка Script Block Logging

  1. Включите обязательное подробное логирование сценариев через GPO: откройте gpedit.msc: Конфигурация компьютера > Административные шаблоны > Компоненты Windows > Windows PowerShell > включите «Включить ведение журнала блоков сценариев PowerShell» (Turn on PowerShell Script Block Logging) и установите флажок «Журналировать события запуска/остановки вызовов сценариев».
  2. Включите защищенное системное логирование через реестр:
    $regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"; if (-not (Test-Path $regPath)) { New-Item -Path $regPath -Force }; Set-ItemProperty -Path $regPath -Name "EnableScriptBlockLogging" -Value 1 -Type DWord -Force; Set-ItemProperty -Path $regPath -Name "EnableScriptBlockInvocationLogging" -Value 1 -Type DWord -Force
  3. Удалите устаревший компонент PowerShell v2.0 для предотвращения Downgrade атак:
    Disable-WindowsOptionalFeature -Online -FeatureName "MicrosoftWindowsPowerShellV2Root" -Remove
  4. Включите режим Constrained Language Mode для пользователей без прав администратора:
    [Environment]::SetEnvironmentVariable("__PSLockdownPolicy", "4", "Machine")

Справка: При включенном Script Block Logging ядро PowerShell автоматически деобфусцирует упакованный и зашифрованный код прямо перед выполнением и записывает его чистый исходный текст в журнал 4104.

💡 Практика специалистов: Для защиты логов PowerShell от переполнения и атак обязательно включите шифрование журналов (Protected Event Logging). Это позволяет расшифровывать содержимое логов 4104 только на сервере SIEM с помощью закрытого сертификата.

Частые вопросы (FAQ)

В чем разница между Module Logging и Script Block Logging?

Module Logging логирует выполнение отдельных командлетов конвейера. Script Block Logging перехватывает и записывает весь исполняемый блок кода/скрипта целиком в исходном виде.

Как злоумышленники пытаются отключить ScriptBlockLogging в коде?

Они модифицируют внутреннюю переменную CachedGroupPolicySettings в кластере System.Management.Automation.Utils через рефлексию .NET.

Что такое PowerShell Transcription (Транскрипция)?

Это функция полной текстовой записи всех вводимых команд и выводимых ответов консоли в защищенный сетевой каталог текстовых файлов.

Какой уровень логирования PowerShell требует SIEM для выявления угроз?

Для полноценного обнаружения атак обязательны: Script Block Logging (Event 4104), Module Logging (Event 4103) и аудит создания процессов 4688 с командной строкой.

Полезные материалы
Рекомендуем