• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Жизнь за счет чужой земли. Часть 2/3. Настройка атакующей виртуальной машины Windows

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Введение

В первой части этой статьи виртуальная машина Linux была настроена для маршрутизации SOCKS. В этой части будет обсуждаться настройка виртуальной машины Offensive Windows. Более того, после настройки атакующей виртуальной машины Windows будут обсуждаться различные способы сбора различных типов учетных данных из системы-жертвы и их использования из атакующей виртуальной машины Windows.

Наступательная установка: наступательная виртуальная машина Windows

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

Клиент против Сервера Windows

Windows предоставляет два типа операционных систем: клиентскую и серверную. Для целей LOFL в большинстве случаев клиентская операционная система Windows, такая как Windows 10 или Windows 11, без настроенного домена работает отлично. Однако в некоторых случаях определенные инструменты доступны только на Windows Server или требуют, чтобы текущая система была частью домена, который может быть любым доменом. В таких случаях может быть полезно иметь так называемый наступательный DC; Windows Server, на котором выполняется роль доменных служб Active Directory, и настроенный домен.

Веб-сайт Windows Server to Workstation , который я основал в 2008 году и в 2017 году передал Полу Роуланду (@pauljrowland), содержит инструкции по настройке ОС Windows Server таким образом, чтобы она ощущалась как обычная рабочая станция. В моей личной настройке я использую виртуальную машину Windows 10, а в тех немногих случаях, когда мне нужен наступательный контроллер домена, у меня есть виртуальная машина Windows Server 2019.

Получение виртуальной машины Windows

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

ISO-образы и виртуальные машины Windows 10/11 и Windows Server 2019/2022, предоставленные Microsoft, можно получить по следующим ссылкам.

1694507106934.png


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


NameOSLinkNotes
Commando VMWindowshttps://github.com/mandiant/commando-vmСписок установленных инструментов доступен по адресу https://github.com/mandiant/commando-vm/blob/master/packages.csv
FLARE VMWindowshttps://github.com/mandiant/flare-vmЭтот репозиторий в первую очередь ориентирован на реверс-инжиниринг, но также содержит различные инструменты, подходящие для наступательного использования.

Сеть

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

Отключение Защитника Windows

Важным шагом перед установкой дополнительного программного обеспечения на атакующую виртуальную машину Windows является избавление от антивируса «Защитник Windows», поскольку он будет мешать хакерским инструментам, таким как Mimikatz, которые будут установлены на атакующую виртуальную машину Windows. Очень четкие пошаговые инструкции по отключению Защитника Windows можно найти в README.md репозитории Commando-VM 2. Для упрощения выполнения в репозитории LOFL 3 можно найти простой сценарий PowerShell, который автоматизирует большинство этих шагов : DisableWindowsDefender.ps1.

Установка инструментов

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

Прежде всего, средства удаленного администрирования сервера Windows (RSAT) содержат различные полезные модули PowerShell, двоичные файлы и оснастки MMC. Этот набор инструментов можно установить из командной строки PowerShell с повышенными привилегиями, используя следующую командную строку, которая различается в зависимости от клиентской и серверной версий ОС.


OSCommand-line
ClientGet-WindowsCapability -Online -Name Rsat.* | Add-WindowsCapability -Online
ServerInstall-WindowsFeature RSAT -IncludeAllSubFeature

Далее, чтобы подготовить учетные данные для использования в туннеле SOCKS, необходимы отличные инструменты Mimikatz и Rubeus , созданные соответственно Бенджамином Дельпи (@gentilkiwi) и Уиллом Шредером (@harmj0y). Их можно получить по следующим URL-адресам.


Mimikatzhttps://github.com/gentilkiwi/mimikatzБинарные файлы доступны на странице «Релизы».
Rubeushttps://github.com/GhostPack/RubeusДвоичные файлы недоступны, поэтому их необходимо скомпилировать из исходного кода.

Наконец, должны быть установлены инструменты Sysinternals, которые должны присутствовать в каждой системе Windows и включают в себя несколько LOFLBins. Пакет Sysinternals Suite, содержащий все двоичные файлы Sysinternals, можно получить по адресу https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite .

В моей настройке я поместил двоичные файлы Mimikatz и Rubeus в C:\Tools папку, а инструменты Sysinternals — в подпапку C:\Tools. Более того, я добавил папки C:\Tools и C:\Tools\Sysinternals в общесистемную PATH переменную среды, поэтому для вызова этих инструментов не требуется явный путь.

Конфигурация

Конфигурация Offensive Windows VM состоит из двух частей. Первая часть — это общая конфигурация, которая делает Windows более готовой и способной использовать аутентификацию Kerberos для иностранных доменов. Вторая часть — это конфигурация, необходимая для каждого целевого домена, которая будет обсуждаться в следующем разделе.

Профиль подключения

В PowerShell с повышенными правами установите частный профиль подключения сетевого интерфейса, который подключен к виртуальной машине маршрутизации Linux.

1694507211716.png


WinRM

Настройте WinRM так, чтобы он доверял всем удаленным хостам, что позволит WinRM использовать проверку подлинности Kerberos в удаленных системах.

1694507225823.png


Альтернативно, вместо использования звездочки ( ) также можно указать *определенные домены ( *.ad.bitsadmin.com) или конкретные хосты ( ), однако, поскольку это система злоумышленника, проще всего просто разрешить использование Kerberos против любого хоста W10.ad.bitsadmin.com,W11.ad.bitsadmin.com

Браузеры

Поскольку Internet Explorer устарел, Microsoft активно подталкивает пользователей перейти на Microsoft Edge. Однако в некоторых случаях все же полезно иметь возможность использовать Internet Explorer, поэтому его необходимо настроить. В зависимости от того, какой браузер используется в целевой организации, по соображениям OPSEC следует установить такой браузер, как Google Chrome. Браузеры на базе Chromium, такие как Microsoft Edge и Google Chrome, не запускают свои процессы в процессе, запустившем браузер, в результате чего данные учетных данных не наследуются (подробнее об этом в следующем разделе). По этой причине необходимо изменить некоторые настройки.


BrowserCommand-lineNotes
Internet Explorer"C:\Program Files\Internet Explorer\iexplore.exe"В настоящее время, поскольку Microsoft Edge продвигается, необходимо отключить вспомогательный объект браузера IEToEdge (BHO). Это можно сделать с помощью следующей командной строки: reg.exe добавить HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Ext\CLSID /T REG_SZ /V {1FD49718-1D00-4B19-AF5F-070AF6D5D54C} /D 0 / F. Если по какой-либо причине Internet Explorer по-прежнему не запускается, эффективный способ разрешить его запуск — удалить файлы ie_to_edge_bho\*.dll с диска. Чтобы просмотреть эти и другие параметры, проверьте https://www.winhelponline.com/blog/disable-auto-redirect-unsupported-sites-ie-to-edge/
Microsoft Edge"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"Перейдите в «Настройки» -> «Система и производительность» -> и отключите «Ускорение запуска» и «Продолжить запуск фоновых расширений и приложений при закрытии Microsoft Edge».
Google Chrome"C:\Program Files\Google\Chrome\Application\chrome.exe" --no-sandboxПри использовании chrome.exe необходимо запускать с параметром --no-sandbox.

Отключение перехода на NTLM

Это необязательный параметр, который может препятствовать доступу к некоторым ресурсам в целевом домене, однако в целях OPSEC рекомендуется отключать переход к аутентификации NTLM в случае сбоя аутентификации Kerberos. Этот параметр можно настроить через графический интерфейс или путем установки ключа реестра, и после изменения он становится активным сразу же. По этой причине ее также легко отключить по умолчанию, но когда сознательно решено, что аутентификация NTLM может использоваться для определенной деятельности, ее можно временно включить.

Чтобы настроить этот параметр через графический интерфейс, запустите gpedit.msc и перейдите в «Конфигурация компьютера» -> «Настройки Windows» -> «Настройки безопасности» -> «Локальные политики» -> «Параметры безопасности». Откройте параметр «Сетевая безопасность: Ограничить NTLM: исходящий трафик NTLM на удаленные серверы» и установите для него значение «Запретить все».

Кроме того, этот параметр также можно настроить в реестре с помощью PowerShell. Возможные значения этого параметра: 0- Разрешить все; 1- Аудит всего; 2- Отрицать все.

1694507307681.png


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

Виртуальная машина маршрутизации Linux: конфигурация для каждого домена

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

DNS

Добавьте в файл все обнаруженные домены /etc/dnsmasq.conf следующим образом. После обновления конфигурации обязательно перезапустите службу dnsmasq и dns_over_tcp.py скрипт.

1694507320526.png


Маршруты

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

1694507328873.png


CLDAP

Одна утилита, которую необходимо запустить для каждого домена cldaproxy.sh, также доступна в репозитории LOFL. CLDAP означает LDAP без установления соединения, то есть связь LDAP389/UDP через порт (в отличие 389/TCP от LDAP ). Несмотря на то, что можно сократить использование Windows CLDAP, что будет обсуждаться в следующем разделе, в некоторых случаях Windows все равно его использует. Поскольку протокол CLDAP (UDP) точно такой же, как протокол LDAP (TCP), с помощью iptables легко перехватить любой CLDAP трафик, поступающий от хоста Windows, используя socat, преобразуя его в трафик LDAP, и для любых ответов выполните обратный процесс. Параметры командной строки следующие.

1694507338982.png


Наступательная виртуальная машина Windows: конфигурация для каждого домена

Вторая часть конфигурации атакующей виртуальной машины Windows состоит из изменений, позволяющих сделать атакующую виртуальную машину Windows, находящуюся за пределами целевого домена, гармонирующей с хостами в домене. Частью интеграции является обеспечение того, чтобы, как и все хосты, входящие в домен, использовалась аутентификация Kerberos, а не аутентификация NTLM. Для этого виртуальная машина Windows должна доверять целевому домену и поэтому готова использовать его учетные данные (Kerberos).

Хост

В журналах систем, с которыми будет взаимодействовать наступательная виртуальная машина Windows, обычно указывается имя компьютера, а в некоторых случаях даже внутренний (!) IP-адрес наступательной виртуальной машины Windows, то есть IP-адрес, используемый между маршрутизирующей виртуальной машиной Linux и наступательной виртуальной машиной Windows. Чтобы сохранить максимальный OPSEC, атакующей виртуальной машине Windows полезно сливаться с именами хостов и, возможно, даже с IP-адресами, используемыми в целевой организации. Имя компьютера Offensive Windows VM можно просто изменить в настройках компьютера, что впоследствии потребует перезагрузки. Чтобы обновить конфигурацию IP, необходимо обновить IP-адрес виртуальной машины маршрутизации Linux, а в случае использования DHCP-сервера необходимо обновить эти диапазоны. Подробные инструкции см. Наступательная настройка: раздел виртуальной машины маршрутизации Linux в части 1. После обновления конфигурации обязательно перезапустите службу dnsmasq и обновите конфигурацию IP в Windows.

CLDAP

Как упоминалось ранее, помимо запуска утилиты cldaproxy.sh, можно настроить Windows, чтобы уменьшить использование LDAP без установления соединения ( CLDAP ). ksetup.exe Это можно сделать с помощью утилиты командной строки Windows. Для каждого доступного домена можно выполнить следующую командную строку, где AD.BITSADMIN.COM(ksetup предпочитает верхний регистр) — целевой домен.

1694507354973.png


Сертификаты

Доверие к Active Directory во многом зависит от того, доверяют ли представленным сертификатам локальная система. Другими словами, атакующая виртуальная машина Windows должна иметь центры сертификации целевого домена в своем локальном списке доверенных корневых центров сертификации. Существует множество способов получить сертификаты ( .crt) целевого домена, которые обсуждаются в следующих параграфах. Возможно, этот раздел вызывает некоторую проблему с куриным яйцом, поскольку виртуальная машина Offensive Windows уже должна использоваться для этих сценариев, хотя в настоящее время она все еще находится в стадии настройки. В этом случае лучше всего просто проработать оставшуюся часть статьи до раздела «Жизнь за счет чужой земли», а затем вернуться сюда для настройки сертификатов.

Вариант 1. Корпоративное хранилище NTAuth через LDAP.

Один из вариантов — получить корневые сертификаты через LDAP, что можно сделать как с помощью PowerShell, так и с помощью Sysinternals ADExplorer. Чтобы собрать корневые сертификаты с помощью PowerShell, можно использовать следующий код, в котором переменную $domainи $dc необходимо обновить, чтобы она соответствовала целевому домену и контроллеру домена. Файлы .crt будут записаны в текущий каталог PowerShell.

1694507367955.png


Альтернативой использованию PowerShell для получения сертификатов является использование Sysinternals ADExplorer или другого клиента LDAP. Перейдите по следующему пути, где компоненты домена ( DC=) соответствуют целевой среде.

1694507377102.png


Затем сохраните значение атрибута cACertificateв текстовом файле ( certs.txt). В случае ADExplorer это строки с целыми числами, разделенными пробелами, представляющими байты, где каждый сертификат отделяется новой строкой. Следующий фрагмент Python3 можно использовать для преобразования certs.txt файла в .crtфайлы.

1694507385897.png


Вариант 2. Корпоративное хранилище NTAuth в системе-жертве.

Хранилище Enterprise NTAuth также хранится в системах домена, например, в системе-жертве, находящейся под нашим контролем. Следующий фрагмент PowerShell показывает, как извлечь корневые сертификаты из реестра и сохранить их в виде .crt файлов в рабочем каталоге.

1694507398087.png


Вариант №3: Цепочка сертификатов порта TLS.

Всякий раз, когда служба, работающая на порту TLS в домене, использует правильно подписанные сертификаты, можно извлечь сертификаты из подтверждения TLS, например, с помощью PowerShell. Примером порта TLS, подходящего для этой цели, является порт LDAPS одного из контроллеров домена. Сценарий CollectCerts.ps1 в репозитории LOFL 3 может помочь подключиться к такому порту TLS и извлечь сертификаты. Сценарий требует имя хоста для подключения (например, DC1.ad.bitsadmin.com) и, при необходимости, порт (по умолчанию — 636/TCP). Сертификаты будут сохранены в текущем рабочем каталоге.

Когда веб-сервер, работающий на порту TLS, идентифицирован, можно просто посетить веб-страницу в браузере, просмотреть сведения о сертификате и использовать функции браузера для хранения сертификатов на диске. Последний вариант — подключиться к порту TLS с помощью любого работающего инструмента (например, клиента openssl), пока Wireshark прослушивает сетевой интерфейс, а затем извлечь сертификат(ы) из сообщения Server Hello.

Вариант 4. Регистрация сертификата

На контроллерах домена \\ad.bitsadmin.com\CertEnroll или других серверах центров сертификации существует общий ресурс под названием CertEnroll. Помимо других файлов, в этом общем ресурсе размещается сертификат ( .crt) с цепочкой сертификатов.

Импорт

После получения корневых сертификатов с помощью любого из вышеперечисленных способов следующим шагом будет открытие сертификатов локального компьютера ( certlm.msc), перейдите к пункту «Доверенные корневые центры сертификации», щелкните правой кнопкой мыши «Сертификаты» и в меню «Все задачи» выберите «Импорт» . В мастере выберите .crt файл, полученный с помощью одного из обсуждавшихся ранее вариантов, и повторите это для всех .crt полученных файлов.

Зоны локальной интрасети

Чтобы разрешить автоматическую аутентификацию (Kerberos) на веб-сайтах (включая WebDAV) в целевом домене, виртуальная машина Offensive Windows должна доверять имени хоста, чтобы отправлять ей свою аутентификационную информацию. Для этого откройте апплет панели управления «Свойства обозревателя» ( inetcpl.cpl) и перейдите на вкладку «Безопасность» (также доступную напрямую через inetcpl.cpl). Затем выберите зону «Местная интрасеть» , нажмите «Сайты » и во всплывающем окне «Местная интрасеть» выберите «Дополнительно» . Наконец, добавьте целевые домены в список сайтов в зоне по одному, например *.ad.bitsadmin.com, *.corp.intи *.research.dev.

WebDAV

Еще одна настройка, необходимая для плавной аутентификации в WebDAV, — это AuthForwardServerListнастройка параметров службы WebClient. Это актуально для настройки, если для общих ресурсов WebDAV требуется проверка подлинности Kerberos. Следующие строки PowerShell показывают, как можно добавлять разные домены. Чтобы конфигурация стала активной, службу WebClient необходимо перезапустить.
1694507424282.png


Краткое содержание

Теперь виртуальная машина Offensive Windows настроена на взаимодействие с целевым доменом и аутентификацию в нем.

Теперь виртуальная машина маршрутизатора Linux и виртуальная машина Offensive Windows настроены. Это наглядное представление того, как выглядит и работает установка. Предполагая, что учетные данные имеются (которые будут обсуждаться в следующих разделах), на схеме показаны три различных потока подключения:

1. С сервера запрашивается листинг BAK1.ad.bitsadmin.com:
- DNS-запрос (UDP) выполняется для получения IP-адреса сервера BAK1, этот DNS-запрос преобразуется в TCP и отправляется через туннель SOCKS, который DC1 затем возвращает IP-адрес ( 10.0.10.62);
Утилита командной строки net.exe подключается к порту 445/TCP сервера BAK1 и получает список общих ресурсов;
2. Запускается приложение Burp: пример инструмента, который часто используется в наступательных целях и чей DNS-запрос к домену portswigger.net и подключение к нему должны по причинам OPSEC не проходить через целевую среду;
3. Выполняется запрос CLDAP : Пример соединения CLDAP, которое с помощью cldaproxy.sh утилиты преобразуется в обычное соединение LDAP .

1694507448410.png


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

Получение кредов

Недостатком атаки на целевую сеть через SOCKS по сравнению с использованием программного имплантата является аутентификация. Аутентификация при выполнении кода в программном имплантате в большинстве случаев происходит прозрачно, а в случае, если наступательная виртуальная машина Windows запрашивается для аутентификации, у нее нет доступных учетных данных. В этом разделе будут обсуждаться различные способы получения учетных данных через программный имплантат, причем, если не указано иное, их можно выполнить от имени пользователя с низким уровнем привилегий. Типы учетных данных, которые будут обсуждаться, — это открытый текст, Kerberos TGT/TGS, сертификат и хэш. Все упомянутые инструменты представляют собой сборки .NET, которые поддерживаются большинством платформ C2 и выполняются в памяти программного имплантата.

Простой текст

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

Социальная инженерия

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

Еще один инструмент — SharpLoginPrompt от Шантану Хандельвал (@shantanukhande), который выдает пользователю фальшивый запрос аутентификации Windows, запрашивая пользователя ввести свои учетные данные. И снова учетные данные, введенные пользователем, отображаются на консоли имплантата.

Создание учетной записи компьютера

Учетная запись домена, которая будет использоваться на атакующей виртуальной машине Windows, не обязательно должна быть учетной записью пользователя, запускающего программный имплантат, и даже не обязательно должна быть учетной записью пользователя. По умолчанию Active Directory позволяет любому пользователю домена создавать 10 учетных записей компьютеров (это количество задается в ms-DS-MachineAccountQuotaатрибуте Active Directory). Поскольку имплант работает под сеансом пользователя, он, вероятно, сможет создать новую учетную запись компьютера, в которой злоумышленник может указать как имя компьютера, так и пароль. Примером инструмента, который предоставляет функции создания новой учетной записи компьютера, является StandIn Рубена Боонена (@FuzzySec). Следующая команда создаст новую учетную запись компьютера и отобразит пароль, который автоматически генерируется инструментом в выходных данных. В качестве альтернативы пароль можно указать с помощью --pass параметра.

1694507477848.png


Внутренний монолог

Внутренний монолог — атака, обнаруженная Эладом Шамиром (@elad_shamir). В этой атаке осуществляется взаимодействие с поставщиком поддержки безопасности NTLM (SSP) Windows для расчета ответа NetNTLM в контексте текущего пользователя. Ответ NetNTLM впоследствии может быть взломан злоумышленником в автономном режиме, и в зависимости от надежности пароля пароль в виде открытого текста может быть восстановлен. Чтобы увеличить шансы на успех, протокол NetNTLMv2 также можно понизить до NetNTLMv1, изменив некоторые значения в реестре. Однако для этого требуется, чтобы программный имплантат запускался от имени пользователя, имеющего права локального администратора, и, кроме того, это может привести к появлению предупреждений защитного программного обеспечения, работающего в системе.

Инструментом, способным выполнить эту атаку, является Internal-Monologue , который просто запускается без параметров: InternalMonologue. При желании можно принудительно перейти на более легко взломанную версию NetNTLMv1, добавив этот -Downgrade True параметр.

Мастер-ключи DPAPI

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

Инструмент, который может получить взламываемые хеши из этого файла мастер-ключа, — это DPAPISnoop 11 от Lefteris Panos (@lefterispan). Этот инструмент можно просто запустить без параметров ( DPAPISnoop), а затем он отобразит взломанный хеш в консоли импланта.

Kerberoasting

Kerberoasting — это метод, использующий слабые места протокола аутентификации Kerberos. Злоумышленники запрашивают билет службы предоставления билетов (TGS) для конкретной учетной записи, с которой связано имя участника службы (SPN). Поскольку TGS зашифрован паролем учетной записи и билет можно извлечь, злоумышленник может попытаться взломать TGS в автономном режиме, чтобы восстановить открытый текстовый пароль учетной записи. Более того, злоумышленник может попытаться запросить TGS, зашифрованный с использованием более слабого шифрования (RC4), а не более сильного шифрования (AES), чтобы ускорить взлом. Однако это может произойти за счет ухудшения OPSEC .

Инструмент, способный выполнять kerberoast, — Rubeus . Такое Kerberoast может выполняться либо целенаправленно, либо в более крупном масштабе, причем в последнем случае одновременно подвергаются атаке несколько учетных записей. Целевое kerberoast с использованием Rubeus можно выполнить с помощью Rubeus kerberoast /user:targetUser.

AS-REP роастинг

Помимо kerberoasting, существует еще один метод, называемый AS-REP. Этот особый тип обжарки специально предназначен для учетных записей Active Directory, у которых установлен флаг «Не требовать предварительной аутентификации Kerberos». Это позволяет злоумышленнику без аутентификации запросить сообщение AS-REP, зашифрованное паролем пользователя. Затем злоумышленник может попытаться взломать это сообщение AS-REP в автономном режиме и в случае успеха восстановить текстовый пароль пользователя.

Rubeus может выполнить AS-REP в командной строке Rubeus asreproast /user:targetUser.

TGT/TGS

Другой способ аутентификации в Active Directory — билет на получение билета (TGT). В Active Directory после аутентификации на контроллере домена контроллер домена предоставляет пользователю TGT. Всякий раз, когда пользователь впоследствии пытается пройти аутентификацию на машине или службе в домене, TGT используется для запроса службы выдачи билетов (TGS) к DC, которая после получения может использоваться для аутентификации на машине или службе.

Делегация TGT

Этот метод манипулирует Windows для создания AS-REQ для имени участника-службы, настроенного для неограниченного делегирования. После подделки TGT выделяется из API общих служб безопасности (GSS-API), получая TGT для текущего пользователя. Например, Rubeus может выполнить это действие, используя следующую командную строку:Rubeus.exe tgtdeleg /nowrap

Добыча TGS

Любые TGS, запрошенные в сеансе пользователя, можно извлечь из системы и повторно использовать для аутентификации в этой конкретной службе. Rubeus можно использовать для того, чтобы сначала составить список TGS, доступных текущему пользователю, с помощью сортировки Rubeus, а затем эти билеты можно извлечь с помощью Rubeus dump /nowrap /service:targetService.

Сертификат

Альтернативным типом аутентификации, который можно использовать в Active Directory, являются сертификаты. Использование и злоупотребление сертификатами и службами сертификации Active Directory (ADCS) стало очень популярным вектором эскалации с того момента, как в 2021 году Уилл Шредер (@harmj0y) и Ли Кристенсен (@tifkin_) опубликовали свое обширное исследование по ADCS со связанными с ним Сертифицировать инструментом Certify1 .

Сертификационные услуги

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

Теневые учетные данные

Одним из примеров использования сертификатов в Active Directory является использование Windows Hello для бизнеса для конечной точки. Включение этой функции прозрачно генерирует пару сертификатов и сохраняет ее открытый ключ в объекте пользователя в Active Directory. Злоумышленник также может сгенерировать пару ключей и добавить открытый ключ к учетной записи. В мире наступательной безопасности это обычно называют теневым мандатом.

Примером инструмента, который может добавлять теневые учетные данные к учетной записи, является Whisker , где командная строка — Whisker add /target:targetUser. Однако имейте в виду, что обычно пользователь с низким уровнем привилегий может не иметь достаточных полномочий для записи открытого ключа в атрибут msDS-KeyCredentialLink своего объекта пользователя в Active Directory. Если предварительные условия верны, альтернативой может быть принудительное перенаправление службы в системе-жертве через обратный порт для аутентификации злоумышленнику, а затем ретрансляция аутентификации для добавления теневых учетных данных к учетной записи компьютера в Active Directory. Это имеет высокую вероятность успеха, поскольку учетная запись компьютера обычно может добавлять себе теневые учетные данные. Однако подробное описание этой атаки выходит за рамки данной статьи.

Теневые учетные данные №2

Альтернатива добавлению теневых учетных данных к msDS-KeyCredentialLink атрибуту объекта пользователя и использованию altSecurityIdentities вместо этого атрибута. Инструмент, который может добавлять такие теневые учетные данные, — это SharpAltSecIds от Йонаса Вестберга (@bugch3ck), командная строка которого выглядит следующим образом:

1694507523880.png


Хэш

Последний тип учетных данных, который можно использовать в Active Directory, — это хеш. Сюда входит хеш NTLM (RC4), а также типы хэшей AES128 и AES256. Такие хэши можно получить, например, путем эскалации на узле первоначального доступа, а затем с помощью такого инструмента, как Mimikatz, для получения учетной информации из памяти. Другой способ получить хэш NTLM — использовать функцию PKINIT Kerberos для использования аутентификации сертификата (см. предыдущий подраздел) для получения хэша NTLM. Этот хэш можно получить с помощью PKINITtools 16 Дирка Яна (@dirkjanm) .

Заключение

Существуют различные методы получения различных типов учетных материалов, и рано или поздно в ходе задания такие материалы будут обнаружены. Как только такие учетные данные станут доступны, можно будет покинуть систему-жертву и использовать их только в качестве трамплина для входа в сеть на сетевом уровне. Обзор различных учетных данных и инструментов для их получения см. в приложении B.

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

Подготовка материала

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

Сеансы входа в систему и не только

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

Как можно прочитать в документации к dwLogonFlags параметру функции CreateProcessWithLogonW, есть два варианта входа в систему. Из этих опций LOGON_NETCREDENTIALS_ONLY опция (netonly) широко используется в LOFL . Поскольку используемые учетные данные не относятся к локальному (злоумышленнику) компьютеру, невозможно запускать процессы как локальные. Опция netonly, однако, позволяет процессу запускаться в рамках текущего сеанса пользователя, однако в фоновом режиме создается новый сеанс входа в систему. Затем этот сеанс входа в систему содержит предоставленные ему учетные данные, и всякий раз, когда сетевой ресурс запрашивает аутентификацию, пакет аутентификации прозрачно позаботится об этом.

Существуют различные пакеты аутентификации, из которых к LOFL относятся NTLM, Kerberos и Negotiate. Первые два пакета аутентификации говорят сами за себя, тогда как последний пытается использовать аутентификацию Kerberos, однако, если это не удается, он возвращается к аутентификации NTLM. Как упоминалось в конце раздела «Наступательная настройка: атакованная виртуальная машина Windows» , по причинам OPSEC это поведение можно изменить, чтобы Windows не переключалась на NTLM, а вместо этого просто терпела неудачу. Поставщик Negotiate — это поставщик аутентификации, который используется различными инструментами, обсуждаемыми в этом разделе.

Различные сеансы входа в систему, активные в системе, можно отобразить с помощью утилиты командной строки Sysinternals logonsessions , где при необходимости также можно перечислить процессы, связанные с различными сеансами входа в систему, указав параметр. Кроме того, идентификатор входа в систему, с которым связано текущее окно, можно просмотреть с помощью klist.exe.

Загрузка учетных данных

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

Для начала рекомендуется запустить cmd.exe командную строку с повышенными правами. Более того, чтобы различать окна консоли, появляющиеся с определенными учетными данными, по моему опыту, лучше всегда помечать «базовое» cmd.exe окно другим цветом, например ярко-синим фоном с белым текстом: color 1f. Всякий раз, когда это необходимо, из этого окна можно завершить все остальные процессы, работающие с другими учетными данными, и при этом можно очистить все сеансы входа в систему с альтернативными учетными данными.

1694507545453.png


В Windows следует учитывать, что процессы, работающие с высокой степенью целостности (запускаемые от имени администратора), имеют другой сеанс входа в систему по сравнению с процессами, работающими со средней целостностью. Для LOFL рекомендуется запустить cmd.exe командную строку с высокой степенью целостности. Рекомендуется использовать эту командную строку, в отличие от командной строки средней целостности, поскольку для выполнения некоторых LOFLCAB требуется локальный контекст с высоким уровнем привилегий, что вполне возможно, поскольку это атакующая виртуальная машина Windows злоумышленника, на которой выполняются процессы.

Для всех типов учетных данных крайне важно, чтобы для любого типа взаимодействия использовалось полное доменное имя ( FQDNad.bitsadmin.com ) , а не просто устаревшее доменное имя (например, AD), также известное как доменное имя NetBIOS или домен с одной меткой (SLD). Полное доменное имя требуется для DNS, где DNS-сервер, настроенный на виртуальной машине маршрутизатора Linux, может направлять DNS-запросы на соответствующие узлы. Кроме того, Kerberos в атакующей виртуальной машине Windows требует использования полного доменного имени , чтобы он мог разрешить соответствующие записи DNS и выполнить запрос к порту Kerberos (88/TCP) контроллера домена (DC), на котором размещен центр распространения ключей (KDC). .

В качестве альтернативы постоянному использованию полного доменного имени для DNS также можно настроить целевой домен ( ad.bitsadmin.com) в качестве DNS-суффикса по умолчанию. Это означает, что всякий раз, когда, например, имя хоста BAK1(не полное доменное имя) используется в качестве целевого объекта команды, Windows автоматически добавляет ad.bitsadmin.com к нему имя, в результате чего получается полное доменное BAK1.ad.bitsadmin.com имя хоста, которое затем разрешается на DNS-сервере целевой сети. По соображениям OPSEC имейте в виду, что любое неполное доменное имя будет дополнено DNS-суффиксом, что может привести к непреднамеренному разрешению DNS-сервера в целевой среде. Этот параметр можно настроить с помощью графического интерфейса или PowerShell. Графический интерфейс:ncpa.cpl-> Свойства сетевого адаптера -> Свойства интернет-протокола версии 4 (TCP/IPv4) -> Дополнительно -> DNS -> Добавить эти DNS-суффиксы -> Добавить: ad.bitsadmin.com. PowerShell: Set-DnsClientGlobalSetting -SuffixSearchList 'ad.bitsadmin.com' и подтвердите с помощью Get-DnsClientGlobalSetting.

В этом разделе обсуждаются два разных подхода к загрузке учетных данных для каждого типа учетных данных:

1. Создание нового файла powershell.exe.

Из этого окна можно выполнить любой другой LOFLCAB, требующий этих учетных данных. Например, из powershell.exe окна, которое связано с сеансом входа в систему и содержит определенные учетные данные, можно использовать его командлеты, которые затем прозрачно используют поставщика аутентификации, который содержит соответствующие учетные данные. Кроме того, другие LFLCAB, такие как консоль управления Microsoft ( mmc.exe) или Sysinternals Active Directory Explorer (ADExplorer.exe) может быть запущен, что при обмене данными с удаленной системой, запрашивающей аутентификацию, прозрачно обрабатывается пакетами аутентификации. На диаграмме ниже показаны различные сеансы входа в систему, включая идентификатор входа, уровень целостности и пользователя, который используется для сетевой аутентификации. Более того, это показывает, что можно открыть несколько разных окон PowerShell, подключенных к различным сеансам входа в систему, в которых есть учетные данные для разных пользователей.

1694507563060.png


2. Возрождение explorer.exe

Поскольку explorer.exe графический интерфейс операционной системы и многие процессы запускаются под explorer.exe, в некоторых случаях может быть полезно повторно запустить explorer.exe с учетными данными, подготовленными для сеанса входа в систему.

Примером может служить случай, когда вы хотите просмотреть папку SharePoint с помощью проводника Windows. После перезапуска с новыми учетными данными iexplore.exe можно запустить Internet Explorer и посетить сайт SharePoint (который проходит прозрачную аутентификацию с использованием Kerberos). В SharePoint можно перейти к папке, переключиться на классический интерфейс и выбрать « Открыть с помощью проводника» на вкладке «Библиотека» . Затем откроется Проводник Windows, отображающий содержимое папки, что возможно, поскольку Проводник Windows связан с сеансом входа в систему, который содержит соответствующие учетные данные.
1694507574016.png


Для этого подхода важно, чтобы «база» была cmd.exe отмечена другим цветом, как описано ранее, поскольку в противном случае будет трудно вернуться к чистому сеансу входа в систему, в котором не хранятся не только учетные данные. В этой ситуации, чтобы вернуться к чистому сеансу входа в систему, все окна приложений на рабочем столе можно закрыть, а затем выполнить следующую командную строку для повторного запуска из сеанса входа в систему, в котором нет только учетных данных explorer.exe.

1694507580953.png


Валидация

Как обсуждалось в разделе «Наступательная настройка: виртуальная машина маршрутизации Linux» в части 1, хорошей практикой является запуск сетевого захвата всех взаимодействий с целевой сетью. Такой захват также можно использовать для проверки того, что аутентификация выполняется должным образом и другие протоколы также работают должным образом. В следующих подразделах после создания окна PowerShell или повторного запуска проводника Windows полезно проверить, правильно ли работает настройка. Пример безобидного действия, которое можно выполнить, — составить список общих сетевых ресурсов контроллера домена:

1694507591003.png


За исключением случая с учетными данными в виде открытого текста, которые запускают аутентификацию только после доступа к сетевому ресурсу, выполняющему запрос, на этом этапе аутентификация уже сработала, и любой вывод должен быть виден в «базе», отображающей выходные данные инструментов Rubeus и Mimikatz . Если общие сетевые ресурсы успешно перечислены, можно проверить список билетов Kerberos, чтобы убедиться, что Kerberos использовался. Это можно выполнить с помощью klist.exe и помимо указания TGT (SPN: krbtgt/ad.bitsadmin.com) также необходимо указать SPN CIFS (Common Internet Filesystem), например, cifs/BAK1.ad.bitsadmin.com.

Простой текст

Самый простой тип учетных данных — это имя пользователя и пароль в виде открытого текста. Встроенная runas.exe утилита Windows может использовать эти учетные данные. Поскольку доступен пароль в виде открытого текста, этот метод поддерживает аутентификацию как через Kerberos, так и через NTLM.

PowerShell

Командная строка runas выглядит следующим образом, где /netonly используется параметр, а имя пользователя имеет префикс полного доменного имени ( FQDN ) целевого домена. В этом случае полное доменное имя — ad.bitsadmin.com, за которым следует обратная косая черта и имя пользователя ( User1), для которого у нас есть пароль. После нажатия клавиши «Ввод» появится интерактивный запрос пароля, после чего powershell.exe будет выполнен запрос с использованием этих сетевых учетных данных.

1694507600922.png


В случае использования учетных данных в виде открытого текста пакет аутентификации попытается выполнить аутентификацию только после выполнения какого-либо действия и получения запроса на аутентификацию. Если аутентификация прошла успешно, он сохранит полученные TGT и TGS. В случае сбоя аутентификации LOFLCAB, инициировавший аутентификацию, сообщит, что аутентификация не удалась (в этом случае net.exe будет указано: Доступ запрещен). В то время как на сетевом уровне ответ на Kerberos AS-REQ, скорее всего, KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN будет используется несуществующее имя пользователя или KRB5KDC_ERR_PREAUTH_FAILEDв случае, если пароль пользователя неверен.

Респаун Проводник Windows

Следующая командная строка используется для того, чтобы сначала завершить работу всех экземпляров explorer.exe, а затем перезапустить его с новым сеансом входа в систему и указанными учетными данными.

1694507614274.png


TGT

При использовании билета на получение билета (TGT) необходимо использовать Rubeus. Rubeus предоставляет возможность создать процесс netonly, используя TGT, хранящийся в .kirbi файле или представленный в виде строки base64 в командной строке. Поскольку используется пакет проверки подлинности Negotiate, проверка подлинности может по-прежнему использовать проверку подлинности NTLM. Однако, поскольку предоставляется только TGT, такие учетные данные отсутствуют.

Можно запустить Rubeus с параметром для аутентификации /ticket, опустив параметры domain, /username и /password , однако в этом случае Rubeus сам сгенерирует случайный домен, имя пользователя и пароль и предоставит их пакету аутентификации. Однако это плохо по причинам OPSEC , поскольку имя пользователя будет видно в журналах целевого домена. По этой причине рекомендуется указать правильный домен и параметр у пользователя TGT. Наконец, можно использовать любой пароль, поскольку законного пароля, вероятно, не существует. Как обсуждалось в разделе «Наступательная настройка: атакующая виртуальная машина Windows», альтернативой является отключение резервного варианта NTLM, чтобы вообще избежать такой неудачной аутентификации NTLM./ticket/domain/username/password/username

PowerShell

Командная строка Rubeus для запуска PowerShell с использованием TGT выглядит следующим образом.

1694507625539.png


Респаун Проводник Windows

Следующая командная строка уничтожает все explorer.exe экземпляры, а затем перезапускает их с новым сеансом входа в систему с введенным в него TGT.

1694507636772.png


Сертификат

Для аутентификации на основе сертификатов снова можно использовать Rubeus. Чтобы аутентификация работала, /domain параметру необходимо указать полное доменное имя целевого домена. Кроме того, /password параметр необходим в том случае, если .pfx файл защищен паролем. Если сертификат был импортирован в несанкционированное хранилище Windows, вместо указания пути к сертификату можно использовать отпечаток сертификата в качестве параметра для параметра /certificate. Как и в случае с аутентификацией TGT/TGS, поскольку используется пакет аутентификации Negotiate, аутентификация может по-прежнему использовать аутентификацию NTLM, где применяются те же последствия, что и при аутентификации TGT/TGT.

PowerShell

Следующую командную строку можно использовать для запуска PowerShell с использованием аутентификации на основе сертификатов.

1694507648807.png


Респаун Проводник Windows

Следующая командная строка уничтожает все explorer.exe экземпляры, а затем перезапускает их с новым сеансом входа в систему, в котором используется проверка подлинности на основе сертификатов.

1694507657293.png


NTLM-хеш

Хэш NTLM, также известный как хеш RC4, может использоваться как для аутентификации Kerberos, так и для аутентификации NTLM. Для поддержки использования в обоих случаях используется комбинация Mimikatz и Rubeus, где Mimikatz заботится об аутентификации NTLM, а Rubeus заботится об аутентификации Kerberos.

PowerShell

Командная строка Rubeus для запуска PowerShell с использованием хэша NTLM, который поддерживает как аутентификацию Kerberos, так и резервный вариант NTLM, выглядит следующим образом.

1694507669776.png


Респаун Проводник Windows

Следующая командная строка уничтожает все explorer.exe экземпляры, а затем с помощью Mimikatz и Rubeus перезапускает его с новым сеансом входа в систему с введенным в него хэшем NTLM и билетом Kerberos.

1694507678554.png


Хэш AES128/AES256

Помимо аутентификации с использованием хеша NTLM, также можно пройти аутентификацию в Active Directory с использованием хеша AES128 или AES256 и получить TGT. Если в дополнение к хешу AES доступен хэш NTLM, командную строку из подраздела хеша NTLM можно обновить, чтобы подготовить окно PowerShell или сеанс Windows Explorer как с хэшем NTLM для возврата к аутентификации NTLM, так и с запросом TGT с использованием хеш AES. Везде, где /aes256 параметр упоминается для хеша AES256, его можно заменить параметром /aes128 для хеша AES128.

PowerShell

Следующую командную строку можно использовать для запуска PowerShell с использованием аутентификации с использованием хеша AES256.

1694507690025.png


Респаун Проводник Windows

Следующая командная строка уничтожает все explorer.exe экземпляры, а затем перезапускает их с новым сеансом входа в систему, который запрашивает TGT с использованием хеша AES256.

1694507702731.png


Заключение

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


TypeApproachUrlCommand-line
PlaintextFake logonscreenhttps://github.com/bitsadmin/fakelogonscreenFakeLogonScreen.exe
PlaintextFake login prompthttps://github.com/shantanu561993/SharpLoginPromptSharpLoginPrompt.exe
PlaintextCreate computer accounthttps://github.com/FuzzySecurity/StandInStandIn.exe --computer DESKTOP-B1T54DM --make
PlaintextInternal monologuehttps://github.com/eladshamir/Internal-MonologueInternalMonologue.exe
PlaintextDPAPI masterkeyshttps://github.com/leftp/DPAPISnoopDPAPISnoop.exe
PlaintextKerberoasthttps://github.com/GhostPack/RubeusRubeus.exe kerberoast /user:targetUser
PlaintextASEP Roasthttps://github.com/GhostPack/RubeusRubeus.exe asreproast /user:targetUser
TGTTGT delegationhttps://github.com/GhostPack/RubeusRubeus.exe tgtdeleg /nowrap
TGSSteal TGS from memoryhttps://github.com/GhostPack/RubeusRubeus.exe dump /nowrap /user:targetUser /service:targetService
CertificateAdd shadow credentialhttps://github.com/eladshamir/WhiskerWhisker.exe add /target:targetUser
CertificateRequest certificate from ADCS templatehttps://github.com/GhostPack/CertifyCertify.exe find
CertificateSharpAltSecIdshttps://github.com/bugch3ck/SharpAltSecIdsSharpAltSecIds.exe a /target:targetUser "/altsecid:X509:<I>DC=com,DC=bitsadmin,DC=ad,CN=LabSubCA1<S>DC=com,DC=bitsadmin,DC=ad,CN=mycert"
HashElevante and obtain hashes from lsasshttps://github.com/gentilkiwi/mimikatzmimikatz.exe privilege::debug sekurlsa::logonpasswords exit


Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://blog.bitsadmin.com/living-off-the-foreign-land-windows-as-offensive-platform-part-2
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх