# Event ID 4697, 7045. Службы Windows

Событие **4697** в журнале **Security** связано с созданием новой службы в Windows.\
Событие **7045** в журнале **System** связано с изменением конфигурации службы в Windows.

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

{% embed url="<https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4697>" %}
Подробное описание события 4697
{% endembed %}

***

### **Какие права необходимы**

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

Однако если необходимо предоставить доступ обычным пользователям для управления конкретными службами, можно настроить специальные разрешения. Для этого можно использовать утилиты, такие как `sc.exe` или PowerShell, чтобы изменить права на службу.

Второе атакующие часто называют "мисконфигом" и используют для повышения привилегий.

## **Информация для анализа**

* **Имя службы (Service name)**: Название службы, которая была изменена/установлена.\
  В 4697 поле имя сервиса (Service Name) содержит имя службы, в 7045 содержится Display Name этой службы.
* **Тип запуска (Service Start Type)**: Указывает, как служба будет запускаться (например, автоматически, вручную или отключена).

<table><thead><tr><th width="248.19921875">Тип запуска</th><th>EventID 7045*</th><th>EventID 4697</th></tr></thead><tbody><tr><td>SERVICE_BOOT_START</td><td>boot start, при загрузке ОС</td><td>0</td></tr><tr><td>SERVICE_SYSTEM_START</td><td>system start, при запуске системы</td><td>1</td></tr><tr><td>SERVICE_AUTO_START</td><td>auto start, автоматически</td><td>2</td></tr><tr><td>SERVICE_DEMAND_START</td><td>demand start, вручную</td><td>3</td></tr><tr><td>SERVICE_DISABLED</td><td>disabled, отключена</td><td>4</td></tr></tbody></table>

{% hint style="info" %}
Значение в событии 7045 будет зависеть от локализации операционной системы. Например, тип запуска SERVICE\_DEMAND\_START может принимать значения "вручную", "demand start", "iniciar demanda" или любое другое значение, соответствующее языку ОС.

Это также относится к полю "тип службы".
{% endhint %}

* **Путь к исполняемому файлу**: Путь к файлу, который запускается службой.
* **Тип службы (Service Type):**

| Тип службы                     | EventID 7045                                  | EventID 4697 |                                                                                                                                  |
| ------------------------------ | --------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| SERVICE\_KERNEL\_DRIVER        | kernel mode driver, драйвер режима ядра       | 0x1          | Служба является драйвером файловой системы                                                                                       |
| SERVICE\_FILE\_SYSTEM\_DRIVER  | file system driver                            | 0x2          | Служба является драйвером устройства                                                                                             |
| SERVICE\_ADAPTER               |                                               | 0x4          |                                                                                                                                  |
| SERVICE\_RECOGNIZER\_DRIVER    |                                               | 0x8          |                                                                                                                                  |
| SERVICE\_WIN32\_OWN\_PROCESS   | user mode service, служба режима пользователя | 0x10         | Служба выполняется в собственном процессе                                                                                        |
| SERVICE\_WIN32\_SHARE\_PROCESS | win32 share process                           | 0x20         | Служба работает в одном процессе с другими службами                                                                              |
| SERVICE\_USER\_OWN\_PROCESS    |                                               | 0x50         | Служба выполняется в собственном процессе под учётной записью вошедшего пользователя                                             |
| SERVICE\_USER\_SHARE\_PROCESS  |                                               | 0x60         | Служба работает в одном процессе с другими службами под учётной записью пользователя                                             |
| SERVICE\_INTERACTIVE\_PROCESS  |                                               | 0x100        | Служба способна отображать пользовательский интерфейс или взаимодействовать с рабочим столом (например, выводить окна сообщений) |
| SERVICE\_PKG\_SERVICE          |                                               | 0x200        |                                                                                                                                  |

Типы сервисов в EventID 4697 работают как битовые флаги, то есть чаще можно встретить процессы суммы типов `0x110` и `0x120`, а не чистое `0x100`.

{% hint style="info" %}
Также в реальной жизни в EventID 4697 можно встретить типы сервисов 0xe0, 0xd0.\
Это особые типы [Per-user сервисов](https://learn.microsoft.com/en-us/windows/application-management/per-user-services-in-windows). Это системные сервисы, которые запускаются системой от имени пользователя, когда тот входит в систему и удаляются после выхода.

Такие сервисы:

* Имеют рандомную часть в своем имени, например BluetoothUserService\_b6846da.
* Создаются из шаблонов. Они могут иметь типы 0x50 (SERVICE\_USER\_OWN\_PROCESS) или 0x60 (SERVICE\_USER\_SHARE\_PROCESS).
* Сами сервисы имеют типы\
  0xd0 (`SERVICE_USER_OWN_PROCESS` + `SERVICE_USERSERVICE_INSTANCE` + `0x10`)\
  0xe0 (`SERVICE_USER_SHARE_PROCESS` + `SERVICE_USERSERVICE_INSTANCE` + `0x10`).
* Почитать: <https://helgeklein.com/blog/per-user-services-in-windows-info-and-configuration/>
  {% endhint %}

{% hint style="info" %}
С точки зрения обнаружения атак, наиболее интересными являются службы с типами 0x10 и 0x110.
{% endhint %}

* **Учетные данные службы (Service Account)**: Учетная запись, от имени которой запускается служба (например, LocalSystem, NetworkService или пользовательская учетная запись). Для запуска службы от имени конкретной учетной записи, она должна обладать правами на вход в качестве службы (logon\_type 5).\
  В событии 4697 также есть поле **Account Name**. Оно указывает имя учетной записи, от имени которой службы была создана. То есть **Account Name** создал службу **X**, которая исполнится с правами **Service Account.**
* **Описание службы**: Текстовое описание службы.
* **Создавший процесс** (только 4697): PID и PPID процесса, с помощью которого была создана служба. Если эти поля содержат 0 и 0 - то службы была создана через [RPC](/blue-team-cookbook/windows/smb.md).

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

При изменении/создании службы обычными средствами, также изменяются ключи реестра, связанные со службами. Процессом, изменяющим эти ключи, является services.exe

***

## Для чего атакующие используют службы

1. **Сохранение доступа**:
   * Изменение служб может использоваться для создания "бэкдоров" (backdoors), чтобы сохранить доступ к системе. Например, изменение пути к исполняемому файлу на вредоносный в системной службе.
   * Если изменить тип старта службы на автозапуск, то вредоносный файл будет выполняться каждый раз при старте системы.
2. **Эскалация привилегий**:
   * Если служба запускается от имени учетной записи с высокими привилегиями (например, LocalSystem), это может быть использовано для повышения прав и запуска вредоносных исполняемых файлов с повышенными привилегиями.
   * Для манипуляции со службами (создание новой или изменение существующей) нужно обладать правами локального администратора.

#### **Пример сценария атаки**

1. Злоумышленник получает доступ к системе.
2. Создает новую службу или изменяет существующую, указывая путь к вредоносному файлу.
3. Устанавливает тип запуска "Автоматически", чтобы вредоносный файл запускался при каждой загрузке системы.
4. Служба запускается от имени LocalSystem, что дает злоумышленнику высокие привилегии.

***

## **На что обращать внимание при анализе событий 4697/7045**

1. **Подозрительные изменения пути к исполняемому файлу**:

   Если путь к исполняемому файлу нестандартный или подозрительный (например, файл во временной папке или с необычным именем).\
   Создание служб из недавно созданных файлов - может быть как признаком нелегитимной активности, так и признаком установки легитимного ПО.
2. **Изменение типа запуска**:

   Если служба, которая ранее была отключена, внезапно переведена в автоматический режим запуска.\
   Или службы антивируса, брандмауэра или других средств безопасности останавливаются.
3. **Подозрительные имена служб**:\
   Есть известные инструменты, которые используют известные имена, например, BTOBTO явно говорит об использовании impacket-smbexec\
   Обращайте внимание на случайно сгенерированные значения в именах служб (особенно, из 8 символов) - так делает msf psexec

{% hint style="info" %}
**Создайте Baseline**:

Создайте список известных служб и путей их исполняемых файлов. Такой список нелегко поддерживать, но он позволит легче выявлять аномалии.
{% endhint %}

***

## Как еще могут атаковать службы

### **Unquoted Service Path (Незакавыченный путь к службе)**

Уязвимость, когда путь к исполняемому файлу службы в Windows не заключён в кавычки (например, `C:\Program Files\My Service\server.exe` вместо `"C:\Program Files\My Service\server.exe"`).

Windows ищет исполняемый файл, разбивая путь по пробелам. Например:\
`C:\Program.exe` → `C:\Program Files\My.exe` → `C:\Program Files\My Service\server.exe`\
Если злоумышленник поместит вредоносный файл в одну из этих папок (например, `C:\Program.exe`), служба запустит его вместо нужного.

Заключить путь в кавычки в реестре (`ImagePath` службы).

Такую атаку довольно сложно обнаружить по классическим логам операционной системы. Тут нужна связка EDR + SIEM:\
Информация с конфигурации службы + событие запуска процесса из службы

### **Подмена исполняемого файла службы**

Атака, при которой злоумышленник заменяет (или модифицирует) файл, который запускает служба, а не саму службу.\
Бывает при неправильно настроенных правах на системные директории. Или в системе есть служба, запущенная не из системной директории.

Так как в этом случае не будет никаких манипуляций в самой службой, то не зарегистрируется ни Event ID 7045, ни 4697.

Попробовать поймать такую атаку можно с помощью Sysmon 11 (создание файла) и его последующий запуск от services.exe.\
Но без связки с EDR такое обнаружение сильно будет зависеть от временного интервала между этими двумя событиями.

***

## Что еще надо знать про службы Windows

В Windows процессы служб могут запускаться либо напрямую через **services.exe**, либо через **svchost.exe**, и это связано с архитектурой управления службами в операционной системе.

**`services.exe`** - исполняемый файл является **основным процессом**, отвечающим за управление службами Windows. Он:

* Запускается на раннем этапе загрузки системы (как часть `wininit.exe`).
* Отвечает за **запуск, остановку и взаимодействие со службами**.
* **Непосредственно запускает некоторые службы**, если они не используют общий хост-процесс (`svchost.exe`).

Обычно это **критически важные системные службы**, которые должны работать изолированно или требуют особых условий.

`svchost.exe` **– общий хост-процесс для служб**

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

**Почему одни службы запускаются через `svchost.exe`, а другие – нет?**

* **Службы, написанные как DLL**, а не EXE, **должны** загружаться в `svchost.exe`.
* **Группировка по типу службы**: Windows объединяет схожие службы (например, сетевые или системные) в один процесс для экономии памяти.
* **Изоляция**: Некоторые службы (особенно связанные с безопасностью) могут работать в отдельных процессах `svchost.exe`.

**Начиная с Windows 10** Microsoft постепенно переходит на **универсальные процессы хоста (`svchost.exe` → `ServiceHost.exe` и `BackgroundTaskHost.exe`)**.

Если видите много `svchost.exe` – это нормально. Однажды я напишу про этот замечательный процесс, но пока вот неплохой материал:

{% embed url="<https://nasbench.medium.com/demystifying-the-svchost-exe-process-and-its-command-line-options-508e9114e747>" %}

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vasilisa-l.gitbook.io/blue-team-cookbook/windows/top-events-to-monitor/eventid-4697-7045.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
