# Захват домена: NTDS.dit, DCSync, DCShadow

Файл **ntds.dit** — это один из ключевых компонентов Active Directory (AD), который играет критически важную роль в функционировании домена. Он представляет собой базу данных, в которой хранится вся информация о домене, включая учетные записи пользователей, группы, пароли, политики безопасности и другие объекты AD. По сути, **ntds.dit** — это сердце Active Directory, и его компрометация может привести к полному захвату домена.

Файл **ntds.dit** располагается на всех контроллерах домена (Domain Controllers, DC) по пути:

```
C:\Windows\NTDS\ntds.dit
```

Файл **NTDS.DIT** содержит широкий спектр данных, связанных с инфраструктурой Active Directory. Основные категории данных включают:

* **Информация о пользователях**: Сведения об учетных записях пользователей, включая имена пользователей, пароли (в виде хешей), атрибуты и настройки безопасности.
* **Информация о группах**: Данные о группах, членстве в группах и соответствующих разрешениях.
* **Информация о компьютерах**: Сведения о компьютерах в домене, включая их имена, IP-адреса и настройки безопасности.
* **Групповые политики**: Настройки групповых политик, которые применяются к пользователям и компьютерам в домене.
* **Права доступа и разрешения**: Данные о правах доступа и разрешениях для различных объектов в домене.
* **Репликационная информация**: Метаданные о репликации, которые используются для синхронизации данных между контроллерами домена.
* **Хеши паролей**: Хеши паролей пользователей

Файл **ntds.dit** является лакомым кусочком для злоумышленников именно из-за последнего пункта.\
В файле содержатся хэши паролей всех пользователей домена, включая администраторов. Это позволяет атакующим использовать такие методы, как Pass-the-Hash и свободно перемещаться по всей доменной инфраструктуре.\
Скомпрометировав **ntds.dit**, злоумышленник также получает доступ к хешу сервисной учетной записи krbtgt и может создать "золотой" билет Kerberos, что даст ему неограниченный доступ ко всем ресурсам домена.\
Про Kerberos и атаки на него: [Kerberos](/blue-team-cookbook/a-d/kerberos.md)

**Как защищается ntds.dit?**

По умолчанию файл **ntds.dit** защищен несколькими механизмами:

1. **Доступ только для системных процессов**:
   * Файл доступен только для процессов, работающих с правами SYSTEM.
2. **Шифрование**:
   * Данные в **ntds.dit** частично зашифрованы, хотя хэши паролей хранятся в открытом виде.

Однако, несмотря на эти меры, атакующие находят способы получить доступ к **ntds.dit**, используя различные методы, такие как кража файла через теневые копии (Volume Shadow Copy), эксплуатация уязвимостей или злоупотребление правами администратора.

## **ntdsutil, vssadmin**

1. **Использование утилиты vssadmin для создания теневых копий**
   * **vssadmin** — это встроенная утилита Windows, которая позволяет управлять теневыми копиями томов (Volume Shadow Copy). Атакующие используют её для создания копии тома, на котором находится файл **ntds.dit**, чтобы затем скопировать его без блокировки со стороны системы.
   * Пример команды для создания теневой копии:

     ```
     vssadmin create shadow /for=C:
     ```
   * После создания теневой копии атакующий может скопировать файл **ntds.dit** и связанные с ним файлы (например, **SYSTEM**) для дальнейшего анализа. Пример команды для копирования:

     ```
     copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\temp\ntds.dit
     copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\SYSTEM
     ```
2. **Использование утилиты ntdsutil для экспорта данных**
   * **ntdsutil** — это встроенная утилита Windows, предназначенная для управления Active Directory. Атакующие могут использовать её для создания резервной копии **ntds.dit**.
   * Пример команд для экспорта данных:

     ```
     ntdsutil
     activate instance ntds
     ifm
     create full C:\temp\ntds_backup
     quit
     quit
     ```

После кражи файла **ntds.dit** атакующий использует различные инструменты для извлечения полезной информации, такой как хэши паролей, учетные записи и другие данные. Для этого атакующему еще нужен файл SYSTEM.\
Набор инструментов Impacket включает скрипт **secretsdump.py**, который может извлекать данные из **ntds.dit**.\
Это уже можно делать оффлайн, на машине атакующего.

```
secretsdump.py -ntds ntds.dit -system SYSTEM local
```

<details>

<summary>Учетные записи DSRM (Directory Services Restore Mode)</summary>

На контроллерах домена нет встроенной учетной записи локального администратора. Её роль выполняет учетная запись DSRM.

**DSRM (Directory Services Restore Mode)** — это специальный режим загрузки контроллера домена, который используется для восстановления Active Directory в случае серьезных сбоев. В этом режиме контроллер домена не загружает Active Directory, что позволяет администраторам выполнять восстановление данных.

* Учетная запись DSRM имеет права локального администратора на контроллере домена.
* В режиме DSRM можно выполнять команды, которые недоступны в обычном режиме, такие как восстановление базы данных **ntds.dit**.

Учетная запись DSRM создается при установке контроллера домена. По умолчанию пароль учетной записи DSRM задается во время установки контроллера домена.

</details>

## DCSync

Атака **DCSync** — это один из самых популярных методов компрометации Active Directory, который позволяет злоумышленнику получить данные из Active Directory без необходимости прямого доступа к файлу **ntds.dit**.

1. **Как это работает?**
   * Атакующий использует учетную запись с правами на репликацию данных в домене.
   * С помощью специальных инструментов (например, Mimikatz) атакующий отправляет запросы на контроллер домена, имитируя поведение легитимного контроллера домена.
   * Контроллер домена, считая запрос легитимным, отправляет атакующему запрошенные данные, включая хэши паролей.
2. **Пример использования Mimikatz для DCSync**:
   * Атакующий использует команду в Mimikatz для получения хэша пароля учетной записи **krbtgt**:

     ```
     lsadump::dcsync /domain:example.com /user:krbtgt
     ```
   * Эта команда позволяет атакующему получить хэш пароля, который можно использовать для создания **Golden Ticket**.

### **Какие права нужны для выполнения DCSync**

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

1. **Группа "Domain Admins"**:
   * Члены этой группы имеют полный доступ ко всем ресурсам домена, включая права на репликацию.
2. **Группа "Enterprise Admins"**:
   * Члены этой группы имеют права на репликацию во всех доменах леса.
3. **Учетные записи с делегированными правами**:
   * Если атакующий получает доступ к учетной записи, которой делегированы права на репликацию, он может выполнить DCSync.
   * Это может быть учетная запись самого контроллера домена (которая с $ на конце).

### **Обнаружение атаки DCSync**

**Как часто встречается:** ТОП-1, обязательно иметь правило обнаружения

Атака **DCSync** оставляет следы в журналах событий Windows, которые можно использовать для её обнаружения. Вот основные методы обнаружения:

1. **Мониторинг событий репликации (Event ID 4662)**:
   * Событие **4662** фиксирует запросы на доступ к объектам Active Directory, включая запросы на репликацию.
   * В поле **Object Type** будет указано значение **DS-Replication-Get-Changes** или **DS-Replication-Get-Changes-All**, что указывает на запросы, связанные с репликацией.

{% hint style="info" %}
Тут надо учитывать, что если контроллеров домена несколько, то репликация между ними - нормальное и регулярное явление. И при этом тоже регистрируется событие 4662.\
Поэтому надо фильтровать легитимную активность.
{% endhint %}

2. **Мониторинг выдачи прав на репликацию новым объектам домена (Event ID 5136):**
   * Событие 5136 регистрируется при изменении объектов Active Directory, в том числе при выдаче им прав на репликацию **DS-Replication-Get-Changes** или **DS-Replication-Get-Changes-All**.

## DCShadow

Атака **DCShadow** — это сложный и скрытный метод компрометации Active Directory, который позволяет злоумышленнику внедрить поддельный контроллер домена и внести изменения в базу данных Active Directory. Эти изменения могут включать добавление пользователей в группы, изменение паролей или создание новых объектов.

**Как это работает?**

* Атакующий использует инструменты (например, Mimikatz) для регистрации поддельного контроллера домена.
* Поддельный контроллер домена имитирует поведение легитимного контроллера и отправляет изменения в базу данных AD.
* Эти изменения реплицируются на другие контроллеры домена, что делает их легитимными.

**Пример использования Mimikatz для DCShadow**:

* Атакующий использует Mimikatz для регистрации поддельного контроллера домена и внесения изменений:

  ```
  mimikatz # dcshadow /object:CN=User,DC=example,DC=com /attribute:memberOf /value:"CN=Domain Admins,DC=example,DC=com"
  ```

### **Какие права нужны для выполнения DCShadow**

Для выполнения атаки **DCShadow** атакующему необходимо иметь следующие права:

1. **Права на регистрацию контроллера домена**:
   * Атакующий должен иметь возможность зарегистрировать новый контроллер домена в Active Directory. Это обычно требует прав администратора домена.
2. **Права на внесение изменений в AD**:
   * Атакующий должен иметь права на изменение объектов в Active Directory, таких как учетные записи и группы.

### **Обнаружение атаки DCShadow**

{% embed url="<https://blog.netwrix.com/2022/09/28/dcshadow_attack/>" %}

**Как часто встречается:** Реже, чем DCSync, но довольно популярна, потому что более скрытая.

Атака **DCShadow** является сложной для обнаружения, так как она не оставляет явных следов в журналах событий. Однако есть несколько методов, которые могут помочь выявить эту атаку:

1. **Мониторинг событий регистрации контроллеров домена (Event ID 4742, поле Service Principal Name)**:

   Когда доменная машина регистрируется как контроллер домена, она получает два SPN:

   * **Global Catalog** — имеет следующий формат *GC/\<DNS hostname>/\<DNS forest name>.*
   * **Directory Replication Service (DRS)** — формат *\<DRS interface GUID>/\<DSA GUID>/\<DNS domain name>*, где *\<DRS interface GUID>* всегда имеет значение *E3514235–4B06–11D1-AB04–00C04FC2DCD2***.**
2. **Мониторинг событий репликации (Event ID 4929):**
   * В поле Source Address указывается имя контроллера, откуда произошла репликация, необходимо отслеживать репликации с неизвестных узлов.
3. **Анализ подозрительных изменений в AD**:
   * Мониторинг изменений в Active Directory, таких как добавление пользователей в группы.\
     Если пользователь внезапно добавляется в группу **Domain Admins**, это может быть признаком атаки.\
     Эти изменения не отобразятся в событиях!

## Skeleton Key

Атака **Skeleton Key** — это метод компрометации Active Directory, при котором злоумышленник внедряет "мастер-ключ" в память процесса аутентификации контроллера домена, что позволяет обойти проверку паролей для всех учетных записей. Этот метод был впервые представлен в 2015 году и до сих пор представляет угрозу для доменов.

* **Как это работает?**
  * Атакующий получает доступ к контроллеру домена (например, через компрометацию учетной записи администратора).
  * Используя инструменты, такие как **Mimikatz**, атакующий внедряет вредоносный код в процесс **LSASS** (Local Security Authority Subsystem Service).
  * Этот код модифицирует процесс аутентификации, добавляя возможность использования "мастер-пароля" для входа в любую учетную запись.
* **Пример использования Skeleton Key**:
  * Атакующий использует Mimikatz для внедрения Skeleton Key:

    ```
    mimikatz # misc::skeleton
    ```
  * После внедрения атакующий может использовать "мастер-пароль" для входа в любую учетную запись домена.

### **Какие права нужны для выполнения Skeleton Key**

Для выполнения атаки **Skeleton Key** атакующему необходимо иметь права администратора на контроллере домена. Это позволяет ему внедрить вредоносный код в процесс **LSASS**.

***

## Получение привилегий администратора домена

Для всех перечисленных выше действий необходимо обладать высокими привилегиями в домене. Есть несколько известных способов, которые можно попробовать:\
Выписать сертификат через уязвимые шаблоны AD CS\
PrinterBug + Неограниченное делегирование

### Zerologon (CVE-2020-1472)

Атака **Zerologon** — это критическая уязвимость в протоколе Netlogon, которая позволяет злоумышленнику получить полный контроль над контроллером домена. Уязвимость, получившая идентификатор **CVE-2020-1472**, была обнаружена в 2020 году и вызвала широкий резонанс из-за своей опасности и простоты эксплуатации.

Атака **Zerologon** эксплуатирует уязвимость в протоколе Netlogon, который используется для аутентификации между клиентами и контроллерами домена. Уязвимость позволяет атакующему сбросить пароль учетной записи компьютера контроллера домена и получить контроль над ним.

**Как это работает?**

* Атакующий отправляет специально сформированные запросы к контроллеру домена, используя протокол Netlogon.
* Эти запросы позволяют атакующему сбросить пароль учетной записи компьютера контроллера домена на пустую строку.
* После сброса пароля атакующий может использовать инструменты, такие как **secretsdump.py**, для извлечения данных из Active Directory на контроллере домена и получить полный контроль над ним.

#### **Какие права нужны для выполнения Zerologon**

Для выполнения атаки **Zerologon** атакующему не требуется никаких специальных прав. Уязвимость может быть эксплуатирована с любого устройства, имеющего доступ к контроллеру домена по протоколу Netlogon.

#### **Обнаружение атаки Zerologon**

Обнаружить Zerologon можно по событию изменения пароля учетной записи контроллера домена (Event ID 4742, поле Password Last Set), особенно если изменение происходит от имени анонимной УЗ (без авторизации).

{% embed url="<https://habr.com/ru/companies/bizone/articles/526168/>" %}

### Атака DNS Admin Abuse

Атака **DNS Admin Abuse** — это метод компрометации Active Directory, при котором злоумышленник использует привилегии группы **DNS Admins** для выполнения кода на контроллере домена. (Группа **DNS Admins** имеет привилегии для управления DNS-сервером, который часто работает на контроллере домена). Эта атака позволяет атакующему получить полный контроль над доменом, если ему удается добавить вредоносную DLL через группу DNS Admins.

* **Как это работает?**
  * Атакующий получает доступ к учетной записи, которая является членом группы **DNS Admins**.
  * Используя эти права, атакующий загружает вредоносную DLL на DNS-сервер.
  * DNS-сервер, работающий на контроллере домена, загружает и выполняет вредоносную DLL, что позволяет атакующему получить контроль над контроллером домена.
* **Пример использования DNS Admin Abuse**:
  * Атакующий использует учетную запись, которая является членом группы **DNS Admins**, для загрузки вредоносной DLL:

    ```
    dnscmd <имя_контроллера_домена> /config /serverlevelplugindll \\<путь_к_DLL>
    ```
  * После загрузки DLL атакующий может выполнить код с правами SYSTEM на контроллере домена.


---

# 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/a-d/domain-takeover.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.
