# Реестр Windows: ключ к системе

## Введение в реестр Windows

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

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

Реестр играет критически важную роль в функционировании Windows. Он используется для:

* Хранения конфигурации системы и пользовательских настроек.
* Управления установленным программным обеспечением.
* Контроля за работой оборудования и драйверов.
* Реализации политик безопасности
* Автозагрузки приложений и служб.

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

### **Почему реестр является критически важным компонентом Windows**

Реестр Windows — это не просто хранилище настроек, а механизм, который напрямую влияет на поведение системы. Изменения в реестре могут:

* Включать или отключать функции системы.
* Менять параметры безопасности.
* Управлять работой сетевых служб.
* Контролировать доступ пользователей к ресурсам.

Из-за своей важности реестр часто становится целью злоумышленников. Доступ к реестру позволяет атакующему:

* Получить конфиденциальную информацию.
* Изменить настройки системы для обхода защиты.
* Установить вредоносное ПО или создать бэкдор.

<details>

<summary><strong>Краткая история реестра</strong></summary>

Реестр Windows появился в начале 1990-х годов как замена INI-файлам, которые использовались для хранения настроек приложений. С ростом сложности операционных систем и приложений INI-файлы стали неэффективными, и Microsoft разработала реестр как централизованное и структурированное решение для хранения конфигураций.

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

</details>

**Почему аналитикам SOC важно понимать реестр?**

Для аналитиков SOC понимание реестра Windows — это ключевой навык, так как:

* Реестр часто используется злоумышленниками для внедрения вредоносного кода и сохранения доступа к системе.
* Анализ реестра позволяет обнаружить следы взлома или подозрительной активности.
* Знание структуры реестра помогает быстро находить и устранять уязвимости.

## Структура реестра

Реестр Windows имеет иерархическую структуру, организованную в виде дерева. Он состоит из **кустов (hives)**, **ключей (keys)**, **подразделов (subkeys)** и **значений (values)**. Каждый элемент реестра играет свою роль в хранении и управлении настройками системы.

### **Основные разделы (кусты) реестра**

Реестр разделён на несколько корневых кустов, каждый из которых отвечает за определённый аспект системы:

1. **HKEY\_CLASSES\_ROOT (HKCR)**
   * Содержит информацию о зарегистрированных типах файлов и их ассоциациях с программами.
   * Используется для управления COM-объектами и ActiveX.
2. **HKEY\_CURRENT\_USER (HKCU)**
   * Хранит настройки текущего пользователя, такие как персонализация, параметры рабочего стола и установленного ПО.
   * Уникален для каждого пользователя.
   * Единственное, что доступно для редактирования без прав локального администратора.&#x20;
3. **HKEY\_LOCAL\_MACHINE (HKLM)**
   * Содержит глобальные настройки системы, общие для всех пользователей.
   * Включает данные о железе, драйверах, установленных программах и системных конфигурациях.
4. **HKEY\_USERS (HKU)**
   * Хранит настройки всех пользователей, зарегистрированных в системе.
   * Каждый пользователь представлен своим уникальным идентификатором (SID).
5. **HKEY\_CURRENT\_CONFIG (HKCC)**
   * Содержит информацию о текущей конфигурации оборудования, используемой при загрузке системы.

### **Ключи, подразделы и значения**

* **Ключи (keys)** — это контейнеры, которые могут содержать подразделы и значения. Например, `HKEY_LOCAL_MACHINE\Software`.
* **Подразделы (subkeys)** — вложенные элементы внутри ключей. Например, `HKEY_LOCAL_MACHINE\Software\Microsoft`.
* **Значения (values)** — конкретные данные, хранящиеся в ключах или подразделах. Например, строка, число или двоичные данные.

### **Типы данных в реестре**

Реестр поддерживает несколько типов данных для значений:

* **REG\_SZ** — строка текста.
* **REG\_DWORD** — 32-битное число.
* **REG\_BINARY** — двоичные данные.
* **REG\_MULTI\_SZ** — массив строк.
* **REG\_EXPAND\_SZ** — строка с переменными окружения.

### **Пример структуры**

Пример пути в реестре:\
`HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run`

* Здесь `Run` — это ключ, который содержит значения для автозагрузки программ.

## Реестр как цель атакующего

Реестр Windows — это не только важный компонент системы, но и привлекательная цель для злоумышленников.&#x20;

1. **Хранение конфиденциальной информации**
   * В реестре могут храниться пароли, хэши, ключи шифрования и другие чувствительные данные.\
     `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets`
   * Например, данные для автозаполнения в браузерах или кэшированные учётные данные.\
     `HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2`
2. **Управление поведением системы**
   * Изменение реестра позволяет злоумышленникам:
     * Настроить автозапуск вредоносного ПО.\
       `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run`
     * Отключать защитные механизмы (антивирусы, брандмауэры). Или добавлять исключения, например, определенный директории или вообще все исполняемый файлы:\
       `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Exclusions\Extensions`
     * Модифицировать системные параметры для обхода безопасности. Например, этот параметр позволит включить WDigest, после чего все пароли будут в памяти в открытом виде\
       `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest`
3. **Закрепление (Persistence)**
   * Реестр часто используется для создания механизмов автозапуска, которые позволяют вредоносному ПО оставаться в системе даже после перезагрузки. Например, через задачи планировщика, созданные через реестр:\
     `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks`<br>
4. **Сокрытие следов**
   * Атакующие могут изменять реестр для маскировки своего присутствия, например, скрывая процессы или файлы.

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

#### **SAM, SYSTEM и Security**

Одним из популярных методов, который используют злоумышленники с доступом на чтение к реестру, является **дамп (экспорт) веток SAM, SYSTEM и Security**. Эти ветки содержат критически важную информацию, связанную с учётными записями пользователей, хэшами паролей и настройками безопасности системы.&#x20;

1. Если атакующий получил удалённый доступ с правами администратора, он может использовать встроенные инструменты (например, `reg.exe`) или сторонние утилиты для экспорта веток реестра:

```
reg save HKLM\SAM C:\sam.save
reg save HKLM\SYSTEM C:\system.save
reg save HKLM\SECURITY C:\security.save
```

2. Атакующие часто используют специализированные инструменты, такие как **Mimikatz**, **secretsdump** (из Impacket) или **pwdump**, чтобы извлечь данные из этих веток.&#x20;
   * Используя данные из SAM и SYSTEM, атакующий может извлечь хэши паролей (NTLM или LM).
   * Пример команды в Mimikatz:

     ```
     lsadump::sam /sam:sam.save /system:system.save
     ```
3. Атакующий может использовать хэши для аутентификации на других системах без необходимости знать пароль в чистом тексте<br>


---

# 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/registry.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.
