Hunting Fileless Malware & Powershell Activities:
-
Event ID 4103 – Module logging – Attackers uses several obfuscated commands and calls self-defined variables and system commands. Hunting these EventIDs provide SOC operations to record all the obfuscated commands as pipeline execution details under EventID 4103. It should be enabled to process and get the malicious commands.
-
Event ID 4104 – Powershell Script Block Logging – Captures the entire scripts that are executed by remote machines. For example, obfuscated scripts that are decoded and executed at run time.
-
If an event exceeds the maximum event log message size, script block logging will split the logged events into multiple events and suspicious commands can be observed at the logging level of “warning”.
Above figure shows script block ID is generated for the remote command execution from the computer “MSEDGEWIN10” and the security user ID S-1-5-21-3461203602-4096304019-2269080069-1000 and commands are fully encoded.
Enabling the Event ID 4104 as an added benefit as run time obfuscated commands will be processed to decode and all decoded scripts will be logged into this event ID 4104.
Above figure shows encoded commands are decoded at run time and above malicious code is trying to get the user’s network credentials.
Event ID 4688 – Audit Process Creation with Command Line Process Auditing – Enabling this Event ID provides the source process names which is executing the malicious commands that is processed in audit mode and logged. Command line arguments are commonly leveraged in fileless based attacks.
This provides insights on Parent and child process names which is initiating the Powershell commands or command line arguments.
Configuring PowerShell Event ID 4103/4104:
Group Policy for logging configuration:
-
Computer Configuration > Policies > Administrative Templates > Windows Components > Windows PowerShell.
-
Select: Turn on Module Logging, and Select: Enabled, Select: OK
-
Select: Turn on PowerShell Script Block Logging, and Select: Enabled, Select: Log script block invocation start /stop events:
Configuring Event ID 4688:
Group Policy for logging configuration:
-
Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Configuration > Detailed Tracking
-
Select: Audit Process Creation, Select: Success + Failure, Select: OK
-
Computer Configuration > Policies > Administrative Templates > System > Audit Process Creation
-
Select: Include command line in process creation events, Select: Enabled, Select: OK
What is Event ID 4104 & How to Quickly Fix It
In today’s digital landscape, maintaining the integrity of your computing environment is more crucial than ever. One common issue that can surface for users and administrators of Windows systems is Event ID 4104. This event relates to issues within the Microsoft Windows system, particularly regarding Windows Management Instrumentation (WMI) and can cause significant disruptions if not addressed promptly. In this detailed article, we will explore what Event ID 4104 signifies, the possible underlying causes, and effective strategies to troubleshoot and resolve this event.
Understanding Event ID 4104
Event ID 4104 is generated by Windows WMI and typically appears in the Windows event viewer. WMI is an infrastructure for management data and operations on desktop and server systems, offering a standardized way for systems to expose management information. The event itself usually carries a message indicating that a WMI provider has failed to execute a scheduled task, which could stem from several issues.
When Event ID 4104 appears, you may see a description indicating that it was unable to process a request, often indicating the failure of a specific WMI provider. This can result in an inconsistent state for applications or services relying on WMI for their operations.
Common Symptoms of Event ID 4104
When you encounter Event ID 4104 in the Event Viewer, you may notice several related symptoms, such as:
- Poor system performance: Applications relying on WMI may become unresponsive or sluggish.
- Software failures: Some applications may fail to run as intended due to WMI provider errors.
- Monitoring Tools Ineffectiveness: System monitoring tools and reports that depend on WMI could return incorrect results or stop working entirely.
System administrators should take these symptoms seriously, as they can signal deeper issues within the operating system or applications that demand immediate attention.
Causes of Event ID 4104
Several factors can trigger Event ID 4104 in a Windows environment. Here are some of the most common causes:
-
WMI Service Issues: The WMI service,
Winmgmt
, may be malfunctioning or have corrupted files. This can happen due to incomplete software installations, malware infections, or accidental deletions. -
Corrupted WMI Repository: The WMI repository can become corrupt, leading to miscommunication and errors within the system.
-
Permissions Problems: In some cases, the account under which WMI scripts or applications try to run might lack the necessary permissions, leading to failures.
-
Faulty WMI Providers: Providers that fail during their operation can contribute to the appearance of Event ID 4104. Some third-party applications may also install their WMI providers that can misbehave.
-
Resource Limits: If the system resources are strained, WMI calls can time out or fail to complete successfully.
-
Changes in System Configuration: Updates or changes in system configurations, particularly those related to the operating system or critical components, might affect WMI’s functionality.
How to Quickly Fix Event ID 4104
Given the potential business impact of Event ID 4104 errors, finding a swift resolution is critical. Here’s a practical step-by-step guide to troubleshoot and resolve the issue:
Step 1: Identify the Specific Error
-
Open Event Viewer:
- Press
Windows + R
, typeeventvwr
, and hit Enter. - Navigate to
Windows Logs
>Application
orSystem
to locate Event ID 4104.
- Press
-
Analyze the Event Details: Examine the event description in the details pane to identify the specific provider responsible for the error. This can sometimes provide clues for resolving the issues.
Step 2: Restart the WMI Service
- Restart Windows Management Instrumentation:
- Open
Command Prompt
as an administrator. - Type
net stop winmgmt
and press Enter. - Then, type
net start winmgmt
and press Enter.
- Open
This step may resolve temporary service errors preventing WMI from functioning properly.
Step 3: Repair the WMI Repository
If simply restarting WMI does not resolve the issue, you might need to repair the WMI repository:
- Open Command Prompt as Administrator.
- Enter the following commands:
winmgmt /salvagerepository
– It attempts to repair the corrupted WMI repository.winmgmt /resetrepository
– It will reset the WMI repository to its default state. Note that this may lead to the loss of WMI data, so use this as a last resort.
Step 4: Check Permissions
Ensure that the appropriate permissions are set for the account running the WMI provider. Follow these steps:
1. Open WMI Control:
- Press
Windows + R
, typewmimgmt.msc
, and hit Enter. - Right-click
WMI Control (Local)
and selectProperties
.
- Go to the Security Tab: Verify that the appropriate users or groups have been granted necessary permissions, such as Enable Account and Remote Enable.
Step 5: Re-register WMI Components
If errors persist, it may be necessary to re-register the WMI components:
- Open Command Prompt as Administrator.
- Execute the following commands:
cd /d %windir%system32wbem
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
This command sequence will facilitate the re-registration of all WMI-related DLLs in the system.
Step 6: Look for Third-Party Provider Issues
If the error is related to a third-party application or provider, it may be necessary to uninstall or update the application:
- Uninstall Unnecessary Software: If you suspect a third-party application is the cause, try uninstalling it through
Programs and Features
. - Check for Software Updates: Ensure that any installed software is up to date, as developers often release patches addressing known issues.
Step 7: Use System File Checker
Corrupted system files can create significant problems, including triggering Event ID 4104. Use the System File Checker to repair them:
- Open Command Prompt as Administrator.
- Run the command
sfc /scannow
. This process may take some time. Upon completion, examine the results to determine if there are issues that require further action.
Step 8: Check Hardware Resources
Evaluate your hardware resources to ensure that your system isn’t running low on memory or CPU resources:
- Task Manager: Press
Ctrl + Shift + Esc
to open Task Manager and check performance. - Check for Resource-intensive Processes: Identify and end any unnecessary high-resource processes that may impair the performance of WMI.
Step 9: Review Recent Changes
If this error appeared after a recent change, software installation, or Windows update:
- Uninstall Recent Updates: Sometimes, a problematic update can lead to issues. Go to
Settings
>Update & Security
>Windows Update
, then selectView update history
and uninstall any troublesome patches. - System Restore: If necessary, you can revert your system to a previous state using system restore points if they are enabled.
Conclusion
Event ID 4104 is a critical error that can disrupt system and application functionality by indicating problems within the WMI infrastructure. By familiarizing yourself with the causes and implementing the outlined troubleshooting steps, you can effectively address Event ID 4104 and restore system integrity.
Dealing with WMI errors can seem daunting, but with systematic diagnosis and resolution, you can keep your Windows environment running smoothly. Always ensure to back up important data before making significant changes to your systems and keep your software and systems up to date to avoid potential issues. Consistent monitoring and proactive management are key to maintaining a healthy computing environment that minimizes disruptions caused by errors like Event ID 4104.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Readers help support Windows Report. We may get a commission if you buy through our links.
Read our disclosure page to find out how can you help Windows Report sustain the editorial team. Read more
The Event id 4104 is typically represented by the symbolic name TLS_E_RPC_LISTEN and addresses the communication issues because the remote procedure call (RPC) port is not listening.
In this troubleshooting guide, we have listed the different methods to fix the communication issues with the terminal services licensing server, which ultimately resolves the event id 4104.
What does event id 4104 mean?
The event id 4104 signifies the issue when the remote procedure call (RPC) port is not listening. The event id directly points to the communication error between the RPC client and the terminal services license server connected via a network.
The Terminal Services license server uses the Microsoft Windows Terminal Services Licensing to install, issue, and track the availability of Terminal Services client access licenses (TS CALs).
The event id 4104 is logged in the event viewer for several underlying reasons. Some of them are:
- Disabled Terminal Services Licensing service – The event id 4104 can is logged when the terminal services licensing service and other essential ones are restricted from running in the background.
- Restrictions by Firewall – It will not be possible to reach out to the remote procedure call if the Windows firewall or other security feature restricts the traffic from the terminal server.
- Name resolution problems – If the RPC server resolves the wrong IP address, the client will contact the wrong server or one that does not exist at all.
- Network issues – An issue with the network connectivity is also a reason why the client is unable to communicate with the Windows terminal server.
Now that you know the causes of the event id, below are the solutions that can fix the event id 4104.
What can I do to fix the event id 4104?
1. Start the Terminal Services Licensing service
NOTE
You can only implement these steps if you are a member of the Local Administrators group or have the required permissions.
- Press the Windows key on the taskbar, go to Administrative tools from the flyout menu, and then select Services.
- Click Continue on the User Account Control dialog box to allow the applications to make changes to the computer.
- Scroll down the Services pane and look for the Terminal Services Licensing service.
- Right-click the service and choose Properties from the context menu.
- Switch to the General tab of the Properties window and choose Automatic in the Startup type drop-down menu.
- Next, press the Start button under the Service status to start the service if not already.
- Finally, press the OK button to exit the Terminal Services Licensing Properties dialog box.
Starting the Terminal Services Licensing service helps verify that the Terminal Services license server is currently available.
Change the Firewall settings
- Use the Windows key to launch the Start menu, type control panel in the search bar and choose the relevant search result.
- Set View by drop-down to Large icons and click the Windows Defender Firewall option.
- Click the Allow an app or feature through Windows Defender Firewall located on the left sidebar.
- Press the Change Settings button.
- Scroll down and look for Remote Assistance under the Allowed apps and features list and ensure that both the checkboxes next to it are enabled.
There have been instances when the Firewall blocks the traffic to the RPC port and results in the RPC server having unavailable problems or not listening issues.
Hence, reconfiguring the Windows Firewall such that it unblocks the network connections for RPC.
That’s pretty much it! We hope you now have a thorough idea of the event id 4104 and what steps you should take when the event is logged in.
Before you leave, you should go through the comprehensive guide about the event viewer and how can it help you identify the problems.
And lastly, find out what to do when Check Disk reads Failed to transfer logged messages.
If you need further assistance, please contact us in the comments below.
Taiba Hasan
A postgraduate in Computer Applications, she is an avid technical writer who loves to craft content revolving around Windows, Android, and emerging technologies like SaaS. With How-To and troubleshooting guides, she aims to provide the best solutions for the problem and make technology less complicated for novice users.
Besides writing, she also loves to cook delicacies and spent time in her garden. In her free time, you will find her binge-watching web series or gazing the night sky.
Время на прочтение17 мин
Количество просмотров100K
Уважаемые друзья, в предыдущих публикациях мы говорили об основах информационной безопасности, законодательстве по защите персональных данных и критической информационной инфраструктуры, безопасности в кредитно-финансовой сфере, а также провели анализ основных стандартов по управлению рисками информационной безопасности и обсудили системы класса IRP, предназначенные для автоматизации реагирования на инциденты ИБ. Как мы знаем, при обработке инцидентов детальный анализ событий безопасности с устройств является одним из ключевых этапов. В данной публикации мы рассмотрим настройку подсистемы аудита ОС Windows, принципы анализа и централизованного сбора журналов аудита с Windows-устройств и их пересылку в SIEM-систему IBM QRadar, а также покажем, как можно с помощью штатных средств Windows и утилиты Sysmon настроить простейшую систему реагирования на инциденты ИБ. Вперед!
Для решения задачи обработки инцидентов ИБ логично рассуждать, что чем больше данных (логов, событий безопасности) мы собираем, храним и анализируем, тем проще нам будет в дальнейшем не только оперативно среагировать на инцидент, но и расследовать обстоятельства произошедших атак для поиска причин их возникновения. При этом большое количество данных для обработки имеет и очевидный минус: нас может просто «засыпать» сообщениями, алертами, уведомлениями, поэтому необходимо выбрать самые значимые с точки зрения ИБ события и настроить соответствующие политики аудита. Microsoft предлагает использовать бесплатный набор утилит и рекомендаций (Baselines) в своем наборе Microsoft Security Compliance Toolkit, в котором в том числе приведены и рекомендуемые настройки аудита для контроллеров домена, рядовых серверов и рабочих станций. Кроме рекомендаций вендора можно обратиться еще к документам CIS Microsoft Windows Server Benchmark и CIS Microsoft Windows Desktop Benchmark, в которых, в числе прочего, указаны рекомендуемые экспертами политики аудита для, соответственно, серверных и десктопных версий ОС Windows. Однако зачастую выполнение абсолютно всех рекомендаций неэффективно именно по причине потенциального появления большого количества «шумящих», малозначительных с точки зрения ИБ событий, поэтому в настоящей статье мы сначала приведем список наиболее полезных и эффективных (с нашей точки зрения) политик аудита безопасности и соответствующих типов событий безопасности ОС Windows.
Напомню, что в ОС Microsoft Windows, начиная с Microsoft Windows Server 2008 и Vista, используется достаточно продвинутая система аудита, настраиваемая при помощи конфигурирования расширенных политик аудита (Advanced Audit Policy Configuration). Не стоит забывать о том, что как только на устройствах будут включены политики расширенного аудита, по умолчанию старые «классические» политики аудита перестанут быть эффективными, хотя данное поведение может быть переопределено в групповой политике «Аудит: принудительно переопределяет параметры категории политики аудита параметрами подкатегории политики аудита (Windows Vista или следующие версии))» (Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings).
Политики аудита Windows
Пройдем последовательно по настройкам, эффективным для решения задач аудита ИБ и выработки целостной политики аудита безопасности.
Категория аудита |
Подкатегория аудита |
События аудита |
EventID |
Комментарии |
Вход учетной записи |
Аудит проверки учетных данных |
Успех, Отказ |
4776 |
Целесообразно контролировать на домен-контроллерах при использовании NTLM-аутентификации. |
Аудит службы проверки подлинности Kerberos |
Успех, Отказ |
4771 |
Неуспешная аутентификация учетной записи на контроллере домена с использованием Kerberos-аутентификации. |
|
4768 |
Запрос билета Kerberos, при этом следует анализировать коды ответа сервера. |
|||
Примечание: Данный тип аудита следует включать на контроллерах домена, при этом для детального изучения попыток подключения и получения IP-адреса подключающегося устройства на контроллере домена следует выполнить команду nltest /dbflag:2080ffff и проводить аудит текстового лог-файла %windir%\debug\netlogon.log |
||||
Управление учетными записями |
Аудит управления учетными записями компьютеров |
Успех |
4741 |
Заведение устройства в домен Active Directory; может использоваться злоумышленниками, поскольку любой пользователь домена по умолчанию может завести в домен 10 устройств, на которых может быть установлено неконтролируемое компанией ПО, в том числе вредоносное. |
Аудит управления группами безопасности |
Успех, Отказ |
4728 |
Добавление члена глобальной группы. |
|
4732 |
Добавление члена локальной группы. |
|||
4756 |
Добавление члена универсальной группы. |
|||
Аудит управления учетными записями пользователей |
Успех, Отказ |
4720 |
Создание учетной записи. |
|
4725 |
Отключение учетной записи. |
|||
4740 |
Блокировка учетной записи. |
|||
4723 |
Смена пароля. |
|||
4724 |
Сброс пароля. |
|||
Подробное отслеживание |
Аудит создания процессов |
Успех |
4688 |
При создании процесса. |
4689 |
При завершении процесса. |
|||
Примечание: Чтобы для командного интерпретатора велась запись введенных команд, следует включить политику «Конфигурация компьютера — Конфигурация Windows — Административные шаблоны — Система — Аудит создания процессов -> Включать командную строку в события создания процессов». Примечание: Чтобы велась запись выполняемых PowerShell-команд и загруженных PowerShell-модулей, следует включить в каталоге «Конфигурация компьютера — Конфигурация Windows — Административные шаблоны — Компоненты Windows — Windows PowerShell» политики «Включить ведение журнала модулей» (в настройках политики указать все модули символом «*») и «Включить регистрацию блоков сценариев PowerShell» (в настройках политики отметить check-box «Регистрация начала или остановки вызова блоков сценариев»). Работа PowerShell-скриптов регистрируется с EventID=4104,4105,4106 в журнале Microsoft-Windows-PowerShell/Operational, а загрузка PowerShell-модулей регистрируется с EventID=800 в журнале Windows PowerShell. |
||||
Вход/выход |
Аудит выхода из системы |
Успех |
4634 |
Для неинтерактивных сессий. |
4647 |
Для интерактивных сессий и RDP-подключений. |
|||
Примечание: При этом следует обращать внимание на код Logon Type, который показывает тип подключения (интерактивное, сетевое, с закэшированными учетными данными, с предоставлением учетных данных в открытом виде и т.д.). |
||||
Аудит входа в систему |
Успех, Отказ |
4624 |
При успешной попытке аутентификации, создается на локальном ПК и на домен-контроллере при использовании NTLM и Kerberos-аутентификации. |
|
4625 |
При неуспешной попытке аутентификации, создается на локальном ПК и на домен-контроллере при использовании NTLM аутентификации; при Kerberos-аутентификации на контроллере домена создается EventID=4771. |
|||
4648 |
При попытке входа с явным указанием учетных данных, например, при выполнении команды runas, а также при работе «хакерской» утилиты Mimikatz. |
|||
Примечание: При этом следует обращать внимание на код входа (Logon Type), который показывает тип подключения (интерактивное, сетевое, с закэшированными учетными данными, с предоставлением учетных данных в открытом виде и т.д.). Целесообразно также обращать внимание на код ошибки (Status/SubStatus), который также сохраняется в событии аудита и характеризует причину неуспешного входа — несуществующее имя учетной записи, недействительный пароль, попытка входа с заблокированной учетной записью и т.д. |
||||
Аудит других событий входа и выхода |
Успех, Отказ |
4778 |
RDP-подключение было установлено. |
|
4779 |
RDP-подключение было разорвано. |
|||
Аудит специального входа |
Успех |
4672 |
При входе с административными полномочиями. |
|
Доступ к объектам |
Аудит сведений об общем файловом ресурсе |
Успех, Отказ |
5145 |
При доступе к системных сетевым ресурсам, таким как \\C$\ . Данное событие будет создаваться при работе ransomware, нацеленного на горизонтальное перемещение по сети. |
Аудит других событий доступа к объектам |
Успех, Отказ |
4698 |
При создании задания в «Планировщике задач», что часто используется злоумышленниками как метод закрепления и скрытия активности в атакованной системе. |
|
Изменение политики |
Аудит изменения политики аудита |
Успех |
4719 |
Изменение политики аудита. |
4906 |
Изменение настройки CrashOnAuditFail. |
|||
Примечание: Изменить реакцию ОС на невозможность вести журнал аудита безопасности (настройка CrashOnAuditFail) можно в каталоге «Конфигурация компьютера — Конфигурация Windows — Параметры безопасности — Локальные политики — Параметры безопасности» в политике «Аудит: немедленное отключение системы, если невозможно внести в журнал записи об аудите безопасности». |
||||
Система |
Аудит расширения системы безопасности |
Успех |
4610 4614 4622 |
При появлении в системе новых пакетов аутентификации, что не должно происходить несанкционированно. |
4697 |
При создании нового сервиса, что часто используется злоумышленниками как метод закрепления и скрытия активности в атакованной системе. |
Кроме описанных выше настроек, имеет смысл также контролировать появление в журнале безопасности события с EventID=1102, которое формируется сразу после очистки журнала безопасности, что может говорить о вредоносной активности. Более того, разумно будет включить в каталоге «Конфигурация компьютера — Конфигурация Windows — Параметры безопасности — Локальные политики — Параметры безопасности» политику «Сетевая безопасность: ограничения NTLM: исходящий трафик NTLM к удаленным серверам» в значение «Аудит всего». После этого EventID=8001 в журнале Microsoft-Windows-NTLM/Operational будет содержать информацию об автоматической аутентификации на веб-ресурсах с учетной записью пользователя. Следующим шагом станет allow list с перечнем веб-ресурсов, которые легитимно могут запрашивать учетные записи, а указанную политику можно будет перевести в режим блокировки. Это не позволит вредоносным ресурсам получать NTLM-хэши пользователей, которые кликнули на ссылку из фишингового письма.
Обратим внимание и на то, что подсистема журналирования Windows весьма гибка и позволяет настроить аудит произвольных папок и веток реестра — следует лишь выбрать критичные для ИТ-инфраструктуры объекты аудита и включить данные опции.
Настройка Windows Event Forwarding, интеграция с IBM QRadar
Настроив необходимые параметры аудита, перейдем к решению вопроса автоматизации сбора журналов аудита и их централизованного хранения и анализа. Штатный механизм Windows Event Forwarding, который работает из коробки с Microsoft Windows Server 2008 / Vista и старше, позволяет осуществлять централизованный сбор журналов аудита на устройстве-коллекторе (не ниже Windows Server 2008 и Vista, но все же рекомендуется использовать выделенный Windows Server 2012R2 и старше) с устройств-источников с применением функционала WinRM (Windows Remote Management, использует протокол WS-Management) и использованием т.н. «подписок» на определенные события (набор XPath-выражений, о которых мы поговорим далее, для выбора интересующих журналов и событий на источнике). События с удаленных устройств могут быть как запрошены коллектором (режим Pull/Collector initiated), так и отправлены самим источником (режим Push/Source computer initiated). Мы рекомендуем использовать последний режим, поскольку в режиме Push служба WinRM слушает входящие соединения только на коллекторе, а на клиентах-источниках WinRM не находится в режиме прослушивания и лишь периодически обращается к коллектору за инструкциями, что уменьшает поверхность потенциальной атаки на конечные устройства. По умолчанию для шифрования трафика от источников к коллектору, принадлежащих одному Windows-домену, используется Керберос-шифрование SOAP-данных, передаваемых через WinRM (режим HTTP-Kerberos-session-encrypted), при этом HTTP-заголовки и соответствующие метаданные передаются в открытом виде. Другой опцией является использование HTTPS с установкой SSL-сертификатов на приемнике и источнике, при этом они могут не принадлежать одному домену. При дальнейшем изложении будем считать, что мы работаем в одном домене и используем настройку по умолчанию.
Рассмотрев концепцию пересылки логов с Windows-устройств, перейдем непосредственно к настройке нашей связки: источник событий -> сервер-коллектор -> утилита IBM WinCollect -> SIEM-система IBM QRadar.
Для включения сервиса сбора логов следует выполнить нижеописанные шаги:
1. На сервере-коллекторе выполнить команду winrm qc, ответить согласием на оба последующих вопроса (включение службы WinRM и прослушивание порта TCP:5985 для входящих соединений от источников). Следует учесть, что выполнение команды winrm qc одновременно включает Windows Remote Shell (WinRS) и разрешает принимать входящие соединения для удаленного управления через функционал WinRS. Отключить WinRS можно либо через политику «Конфигурация компьютера / Административные шаблоны / Компоненты Windows / Удаленная оболочка Windows / Разрешить доступ к удаленной оболочке -> Запретить» (Computer Configuration / Administrative Templates / Windows Components / Windows Remote Shell / Allow Remote Shell Access -> Disabled), либо командой winrm set winrm/config/winrs @{AllowRemoteShellAccess=»false»}
2. На сервере-коллекторе выполнить команду wecutil qc, согласиться на включение службы «Сборщик событий Windows» (Windows Event Collector). При этом в Windows Firewall создается разрешающее правило для входящих соединений на коллектор по TCP:5985.
3. На источниках событий следует включить службу WinRM: установить «Тип запуска» в значение «Автостарт» и запустить «Службу удаленного управления Windows» (Windows Remote Management (WS-Management)).
4. Проверить состояние службы WinRM на сервере-колекторе можно командой winrm enumerate winrm/config/listener, в результате выполнения которой отобразятся настройки порта и список локальных IP-адресов, на которых прослушиваются соединения по TCP:5985. Команда winrm get winrm/config покажет подробные настройки службы WinRM. Переконфигурировать настройки можно либо непосредственно через утилиту winrm, либо через групповые политики по пути «Конфигурация компьютера / Административные шаблоны / Компоненты Windows / Удаленное управление Windows» (Computer Configuration / Administrative Templates / Windows Components / Windows Remote Management).
5. На источниках событий требуется предоставить доступ к журналам аудита службе WinRM путем включения встроенной учетной записи NT AUTHORITY\NETWORK SERVICE (SID S-1-5-20) в локальную группу BUILTIN\Event Log Readers («Читатели журнала событий»). После этого необходимо перезапустить «Службу удаленного управления Windows» (WinRM) и службу «Журнал событий Windows» (EventLog).
6. Затем следует создать и применить конфигурацию групповой политики для источников, в которой будет указана конфигурация и адрес сервера-коллектора. Требуется включить политику «Конфигурация компьютера / Административные шаблоны / Компоненты Windows / Пересылка событий / Настроить адрес сервера…» (Computer Configuration / Administrative Templates / Windows Components / Event Forwarding / Configure the server address…) и указать адрес сервера-коллектора в следующем формате:
Server=http://servername.domain.local:5985/wsman/SubscriptionManager/WEC,Refresh=60
где 60 – частота обращения (в секундах) клиентов к серверу за новыми инструкциями по пересылке журналов. После применения данной настройки на устройствах-источниках следует сделать перезапуск службы WinRM.
7. Далее создаем и применяем конфигурацию подписки на сервере-коллекторе: открываем оснастку управления журналами аудита (eventvwr.msc) и находим внизу раздел «Подписки» (Subscriptions). Нажимаем правой кнопкой мыши и выбираем «Создать подписку», задаем имя подписки. Далее выбираем опцию «Инициировано исходным компьютером» (Source Computer Initiated, это означает предпочтительный режим Push). Нажимаем на кнопку «Выбрать группы компьютеров» (Select Computer Groups), выбираем из Active Directory те устройства или их группы, которые должны будут присылать логи на коллектор. Далее, нажимаем «Выбрать события» (Select Events) и вводим XPath-запрос (пример для сбора журналов Security):
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*</Select>
</Query>
</QueryList>
8. В итоге, клиенты должны иметь активные сетевые соединения по TCP:5985 с сервером-коллектором. На сервере-коллекторе в eventvwr.msc в свойствах «Подписки» можно будет увидеть список клиентов-источников, а пересланные события будут находиться в разделе «Журналы Windows – Перенаправленные события» (Windows Logs – Forwarded Events) на сервере-коллекторе.
9. Далее решаем задачу пересылки собранных на сервере-коллекторе логов с источников в SIEM систему IBM QRadar. Для этого нам потребуется установить на сервере-коллекторе утилиту IBM WinCollect.
Рекомендуем использовать управляемый (Managed) режим работы WinCollect для упрощения его администрирования. Для того, чтобы отправляемые через WinCollect агрегированные события корректно обрабатывались в IBM QRadar, нам следует воспользоваться рекомендациями IBM и на сервере-коллекторе с установленной утилитой WinCollect перевести формат пересылаемых событий в RenderedText, а также сменить их локаль на EN-US командой wecutil ss SubscriptionName /cf:RenderedText /l:en-US (где SubscriptionName — имя подписки, заданное в п.7 выше). Кроме того, необходимо обеспечить сетевую доступность между сервером-коллектором с установленным WinCollect и нодами IBM QRadar по TCP:8413 и TCP/UDP:514.
10. После установки утилиты WinCollect на сервер-коллектор, в самой SIEM-системе IBM QRadar нужно будет добавить этот сервер в список источников (тип источника Microsoft Security Event Log, в поле Target Destination в выпадающем списке лучше выбрать вариант с TCP-syslog-подключением, отметить check-box Forwarded Events).
После применения указанных настроек новые события и устройства-источники, пересылающие Windows-логи на сервер-коллектор, появятся в консоли IBM QRadar автоматически. В итоге, после внедрения SIEM-системы данные в ней и регистрацию событий информационной безопасности можно будет легко обогатить журналами аудита Windows, собранными описанным способом с различных устройств в инфраструктуре компании.
Утилита Sysmon
Кроме задействования штатного функционала подсистемы журналирования, можно воспользоваться и официальной бесплатной утилитой Sysmon из пакета Microsoft Windows Sysinternals, которая существенно расширяет и дополняет возможности мониторинга ОС. Данная утилита дает возможность проводить аудит создания файлов, ключей реестра, процессов и потоков, а также осуществлять мониторинг загрузки драйверов и библиотек, сетевых подключений, WMI-событий и именованных каналов. Из особо полезных функций отметим возможность утилиты показывать родительский процесс и командную строку процесса, отображать значение хэш-сумм при событиях создания процесса и загрузки драйверов и библиотек с указанием наличия и действительности цифровой подписи. Несложным путем можно автоматизировать сравнение полученных хэш-сумм с индикаторами компрометации (IoCs, Indicator of Compromise) из данных фидов CyberThreat Intelligence, а также использовать приложение QVTI для IBM QRadar, с помощью которого хэши запускаемых файлов автоматически проверяются через сервис VirusTotal. Еще одной приятной опцией является возможность создания XML-конфигураций, в которых можно предельно четко указать объекты контроля и настройки работы Sysmon. Одними из наиболее продвинутых и детальных вариантов XML-конфигураций, с нашей точки зрения, являются конфиги https://github.com/ion-storm/sysmon-config и https://github.com/SwiftOnSecurity/sysmon-config .
Установка Sysmon предельно проста и также может быть легко автоматизирована:
1. Дистрибутив скачивается с https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
Все исполняемые файлы подписаны.
2. Создается или скачивается по приведенным выше ссылкам xml-файл с конфигурацией Sysmon.
3. Установка sysmon для x64 производится командой:
C:\folder\sysmon64.exe -accepteula -i C:\folder\sysmonconfig-export.xml , где sysmonconfig-export.xml – файл конфигурации, sysmon64.exe – файл-установщик.
Поддерживается запуск установки из сетевой папки.
4. После установки создается журнал Microsoft-Windows-Sysmon/Operational , размер которого мы сразу рекомендуем увеличить как минимум до 100 Мб.
Перезапуск устройства не требуется, Sysmon работает в виде сервиса, его исполняемый файл находится в C:\Windows\sysmon64.exe . По нашим подсчетам, footprint на конечной системе даже при использовании максимально детального конфига Sysmon не превышает 5-10% ЦПУ и около 100 Мб ОЗУ.
XPath-запросы
Наконец, выполнив необходимые настройки файлов журналов Windows, перейдем непосредственно к поиску интересующей информации. Заметим, что в случае включения всех рекомендованных политик аудита ИБ сами журналы событий становятся достаточно объемными, поэтому поиск по их содержимому может быть медленным (этих недостатков лишены специализированные решения, предназначенные в том числе для быстрого поиска информации — Log Management и SIEM-системы). Отметим также, что по умолчанию не все журналы Windows отображаются к графической оснастке (eventvwr.msc), поэтому в данной оснастке следует перейти в меню «Вид» и отметить check-box «Отобразить аналитический и отладочный журналы».
Итак, поиск по журналам аудита будем осуществлять с помощью встроенного редактора запросов XPath (XPath queries). Открыв интересующий нас журнал, например, журнал безопасности Windows (вкладка «Журналы Windows» -> «Безопасность» / Security), нажатием правой кнопки мыши на имени журнала выберем пункт «Фильтр текущего журнала». Нам откроется графический редактор поисковых запросов, при этом для наиболее продуктивной работы следует открыть вторую вкладку открывшегося окна с названием XML, отметив внизу check-box «Изменить запрос вручную». Нам будет предложено изменить XML-текст (по сути, XPath запрос) в соответствии с нашими критериями поиска.
Результат запроса будет также представляться в различных формах, но для лучшего понимания и получения детального контента в конкретном событии рекомендуем переключиться на вкладку «Подробности», а там выбрать radio-button «Режим XML», в котором в формате «ключ-значение» будут представлены данные события безопасности.
Приведем несколько полезных XPath запросов с комментариями.
1. Поиск по имени учетной записи в журнале Security — возьмем для примера имя Username:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[EventData[Data[@Name='TargetUserName']='Username']]
</Select>
</Query>
</QueryList>
2. Поиск по значению конкретного свойства события в журнале Sysmon — возьмем для примера поиск событий, в которых фигурировал целевой порт 443:
<QueryList>
<Query Id="0" Path="Microsoft-Windows-Sysmon/Operational">
<Select Path="Microsoft-Windows-Sysmon/Operational">*[EventData[Data[@Name='DestinationPort'] = '443']]</Select>
</Query>
</QueryList>
3. Произведем поиск сразу по двум условиям — возьмем для примера событие входа с EventID=4624 и имя пользователя Username:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='TargetUserName']='Username']]
</Select>
</Query>
</QueryList>
4. Поиск по трем условиям — дополнительно укажем Logon Type = 2, что соответствует интерактивному входу в ОС:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='TargetUserName']='Username']]
and
*[EventData[Data[@Name='LogonType']='2']]
</Select>
</Query>
</QueryList>
5. Рассмотрим функционал исключения из выборки данных по определенным критериям — это осуществляется указанием оператора Suppress с условиями исключения. В данном примере мы исключим из результатов поиска по фактам успешного входа (EventID=4624) все события, которые имеют отношения к системным учетным записям (SID S-1-5-18/19/20) с нерелевантным для нас типам входа (Logon Type = 4/5), а также применим функционал задания условий поиска с логическим оператором «ИЛИ», указав не интересующие нас имя процесса входа (Advapi) и методы аутентификации (Negotiate и NTLM):
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[(EventID=4624)]]</Select>
<Suppress Path="Security">*[EventData[(Data[@Name='TargetUserSid'] and (Data='S-1-5-18' or Data='S-1-5-19' or Data='S-1-5-20') and Data[@Name='LogonType'] and (Data='4' or Data='5'))]]
or
*[EventData[(Data[@Name='LogonProcessName'] and (Data='Advapi') and Data[@Name='AuthenticationPackageName'] and (Data='Negotiate' or Data='NTLM'))]]
</Suppress>
</Query>
</QueryList>
IRP-система штатными средствами Windows
Как мы увидели, встроенный функционал подсистемы журналирования Windows позволяет весьма гибко осуществлять поиск по зафиксированным событиям аудита ИБ, комбинируя различные условия поиска. Однако, у Windows есть еще одна интересная «фишка», которая позволяет использовать сформированные описанным выше образом правила поиска событий — мы говорим про создание задач с определенным триггером в «Планировщике заданий» Windows, что также является штатным функционалом ОС.
Как мы знаем, задачи в ОС Windows могут выполнять совершенно разные функции, от запуска диагностических и системных утилит до обновления компонент прикладного ПО. В задаче можно не только указать исполняемый файл, который будет запущен при наступлении определенных условий и триггеров, но и задать пользовательский PowerShell/VBS/Batch-скрипт, который также будет передан на обработку. В контексте применения подсистемы журналирования интерес для нас представляет функционал гибкой настройки триггеров выполнения задач. Открыв «Планировщик заданий» (taskschd.msc), мы можем создать новую задачу, в свойствах которой на вкладке «Триггеры» мы увидим возможность создать свой триггер. При нажатии на кнопку «Создать» откроется новое окно, в котором в drop-down списке следует выбрать вариант «При событии», а в открывшейся форме отображения установить radio-button «Настраиваемое». После этих действий появится кнопка «Создать фильтр события», нажав на которую, мы увидим знакомое меню фильтрации событий, на вкладке XML в котором мы сможем задать произвольное поисковое условие в синтаксисе XPath-запроса.
Например, если мы хотим выполнять некоторую команду или скрипт при каждом интерактивном входе в систему пользователя Username, мы можем задать в качестве триггера задачи следующее поисковое выражение, уже знакомое нам по примеру выше:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='TargetUserName']='Username']]
and
*[EventData[Data[@Name='LogonType']='2']]
</Select>
</Query>
</QueryList>
Другой пример: оповещение администратора при подозрительном обращении к системному процессу lsass.exe, который хранит в своей памяти NTLM-хэши и Керберос-билеты пользователей Windows, что может говорить об использовании утилиты Mimikatz или аналогичных ей:
<QueryList>
<Query Id="0" Path="Microsoft-Windows-Sysmon/Operational">
<Select Path="Microsoft-Windows-Sysmon/Operational">
*[System[(EventID=10)]]
and
*[EventData[Data[@Name='TargetImage']='C:\Windows\System32\lsass.exe']]
and
*[EventData[(Data[@Name='GrantedAccess'] and (Data='0x1010' or Data='0x1038'))]]
</Select>
</Query>
</QueryList>
Таким образом, при условии работоспособности системы журналирования событий Windows можно не только детально и глубоко анализировать все произошедшее на устройстве, но и выполнять произвольные действия при появлении в журнале ОС событий, отвечающих условиям XPath-запроса, что позволяет выстроить целостную систему аудита ИБ и мониторинга событий безопасности штатными средствами ОС. Кроме того, объединив рекомендованные политики аудита информационной безопасности, утилиту Sysmon с детально проработанными конфигами, запрос данных из TI-фидов, функционал XPath-запросов, пересылку и централизацию событий с помощью Windows Event Forwarding, а также настраиваемые задачи с гибкими условиями выполнения скриптов, можно получить фактически бесплатную (по цене лицензии на ОС) систему защиты конечных точек и реагирования на киберинциденты, используя лишь штатный функционал Windows.