# Реестр 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`\

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. Атакующий может использовать хэши для аутентификации на других системах без необходимости знать пароль в чистом тексте\


