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

Статья Жизнь за счет чужой земли. Часть 3/3: Использование Windows в качестве наступательной платформы

yashechka

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

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

Отсюда наступательная виртуальная машина Windows будет использоваться для выполнения разведывательных и наступательных действий в целевой сети.

Жизнь за счет чужой земли


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

1. Виртуальная машина маршрутизации Linux настроена.

- Общий вариант: наступательная настройка: виртуальная машина маршрутизации Linux.
- В зависимости от домена: виртуальная машина маршрутизации Linux: конфигурация для каждого домена
2. Нападающая виртуальная машина Windows настроена
- Общий вариант: наступательная настройка: наступательная виртуальная машина Windows
- Зависит от домена: атакующая виртуальная машина Windows: конфигурация для каждого домена
3. Получение кредов
4. Креды помещены в память виртуальной машины Offensive Windows: подготовка учетных данных

Отсюда можно двигаться вперед в различных направлениях:

1. Active Directory, выполняет разведку через LDAP и веб-службы Active Directory ( ADWS );
2. Перечислить общие файловые ресурсы хранилищ данных и SharePoint;
3. Взаимодействовать с системами Windows, выполняя разведку и управляя ими;
4. Взаимодействовать со службами, работающими в домене, например службами сертификации или Hyper-V;
5. Различные действия, такие как запуск приложения собственной разработки на виртуальной машине Offensive Windows.

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

Active Directory

Первая категория возможных атак — это атаки, ориентированные на Active Directory. Эти атаки могут осуществляться из контекста пользователя с низким уровнем привилегий и могут использоваться для потенциального определения путей эскалации к учетным записям с более высокими привилегиями. Ниже перечислены наиболее часто используемые порты для взаимодействия с Active Directory.

1694601772392.png


Модуль ActiveDirectory PowerShell

Очень мощный набор инструментов, включенный в Windows, — это инструменты удаленного администрирования сервера (RSAT), которые были установлены на атакующей виртуальной машине Windows в разделе «Наступательная настройка: атакующая виртуальная машина Windows» во второй части этой статьи. RSAT состоит из оснасток консоли управления Microsoft ( MMC ), инструментов командной строки, а также различных модулей PowerShell для удаленного управления. Одним из таких модулей является модуль ActiveDirectory , содержащий около 150 командлетов, список которых можно перечислить с помощью Get-Command -Module ActiveDirectory.

Поскольку наступательная виртуальная машина Windows официально не является частью домена, в зависимости от используемого командлета может потребоваться использовать параметр, -Server который поддерживается большинством командлетов в модуле ActiveDirectory, чтобы заставить командлет взаимодействовать с контроллером домена в целевом объекте сети. Как обсуждалось в предыдущем разделе, вся аутентификация (Kerberos) прозрачно осуществляется соответствующим пакетом аутентификации. Чтобы избежать необходимости каждый раз указывать параметр -Server, можно настроить, чтобы для определенных командлетов (любых командлетов, где существительное начинается с AD) параметр -Serverав томатически добавлялся с указанным значением. Для этого можно использовать следующую строку PowerShell.

1694601787734.png


Пример командных строк для отображения некоторой информации о домене: Get-ADDomainи Get-ADTrust -Filter * | Format-Table Direction,Name,TrustType. Другая командная строка, которая предоставляет соответствующую информацию для диапазонов IP-адресов, используемых в организации, и которую можно настроить для маршрутизации для настройки LOFL, — это Get-ADReplicationSubnet -Filter * | Format-Table Name,Location,Site .

Консоль управления

Помимо использования модуля PowerShell для управления Active Directory, также можно использовать оснастки консоли управления Microsoft ( MMC ) для взаимодействия с Active Directory. Windows имеет различные встроенные оснастки, а в рамках RSAT были добавлены различные дополнительные оснастки. Поскольку консоль управления Microsoft является распространенным способом управления службами, при установке дополнительного программного обеспечения (Microsoft), например, для Microsoft SQL Server, которое обсуждается далее в этом разделе, могут быть установлены дополнительные оснастки.

Оснастки MMC обычно могут подключаться к удаленной системе разными способами. В зависимости от оснастки поддерживаются или нет определенные параметры. Какой метод работает для какой конкретной оснастки, описано на сайте LOFL -Project .


ОпцияОписаниеПрмечание
Add moduleПри добавлении модуля в консоли управления Microsoft (Ctrl+M) можно выбрать удаленную систему.
Connect to different systemПосле открытия оснастки щелкните правой кнопкой мыши корневой узел на левой панели и выберите «Подключиться к другому серверу».
Command-linesome.msc /server:DC1.ad.bitsadmin.comВ зависимости от оснастки часто используется один из следующих параметров командной строки, чтобы указать оснастке на другой сервер: /ComputerName, /computer:, /server=, /domain=
Server ManagerПосле добавления управляемого сервера в Диспетчер серверов (обсуждается далее в этом разделе) из графического пользовательского интерфейса можно напрямую управлять серверами или запускать модули .msc, которые используют параметры, подобные тем, которые указаны в командной строке. вариант выше

Оснастка, которая часто используется администраторами домена, — «Пользователи и компьютеры Active Directory» ( dsa.msc). Помимо других наступательных действий, эта оснастка позволяет проводить разведку пользователей, групп и компьютеров, добавлять и изменять пользователей, а также изменять членство в группах пользователей. Самый быстрый способ открыть оснастку для целевого домена — выполнить следующую командную строку из консоли PowerShell, в которой есть сеанс входа в систему с учетными данными для целевого домена: dsa.msc /server=DC1.ad.bitsadmin.com. Альтернативно, оснастку можно либо открыть, запустив mmc.exe из консоли PowerShell, а оттуда с помощью оснастки «Добавить/удалить» можно добавить соответствующие оснастки, где целевой домен или сервер можно установить, щелкнув правой кнопкой мыши оснастку в корневом узле и выбрав «Изменить домен» или Измените контроллер домена .

Другие оснастки, предоставляющие информацию о домене, — это «Домены и доверительные отношения Active Directory» ( domain.msc) и «Управление групповой политикой» ( gpmc.msc). Командные строки для запуска оснасток для целевого домена: соответственно domain.msc /server=DC1.ad.bitsadmin.com и gpmc.msc /domain:ad.bitsadmin.com. Обратите внимание, что для последнего он вернет некоторую ошибку при открытии оснастки («Параметр неверен»), необходимо использовать настройку OffensiveDC, а для этого необходимо изменить настройку в оснастке. Все подробности по gpmc.msc можно найти на странице сайта LOFL -Project .

Система ADExplorer

Альтернативный способ взаимодействия с Active Directory — инструмент ADExplorer от Sysinternals. Этот инструмент можно запустить из сеанса PowerShell, подготовленного в предыдущем разделе. После запуска на экране подключения все поля можно оставить пустыми и нажать кнопку «ОК», когда ADExplorer подключается к целевому домену. При необходимости на экране подключения в поле «Подключить» укажите полное доменное имя контроллера домена, за которым следует :636 принудительное подключение ADExplorer через LDAPS , например DC1.ad.bitsadmin.com:636. Далее можно выполнять любые запросы LDAP и, если у пользователя есть достаточные полномочия, вносить изменения.

Еще одна особенность Sysinternals ADExplorer — создание моментального снимка всех данных в домене и сохранение его в двоичном ( .dat) файле. Этот файл впоследствии можно использовать для выполнения запросов в автономном режиме или преобразовать в .json формат BloodHound ( ) и импортировать в BloodHound для определения путей эскалации. Дополнительную информацию можно найти в статье 2 «Работа с большими наборами данных Bloodhound» в этом блоге.

Данные

Следующая категория атак относится к области данных и имеет целью идентифицировать информацию, чтобы лучше понять ИТ-инфраструктуру, или, возможно, даже учетные данные или токены, которые можно использовать для эскалации. Поскольку просмотр общих ресурсов в SOCKS происходит относительно медленно, хорошим гибридным подходом является использование инструмента Dir2json, представленного в предыдущем блоге (В поисках секретов корпоративных общих ресурсов 3 ), из программного имплантата для создания списка каталогов, а затем загрузки файлов или полные структуры папок из наступательной виртуальной машины Windows.

Общие ресурсы можно обнаружить с помощью встроенной net.exe утилиты командной строки Windows. Синтаксис следующий, где флаг /all используется для отображения скрытых (долларовых) шар: net.exe view \\DC1.ad.bitsadmin.com /all.

Для просмотра и копирования из общих ресурсов можно использовать PowerShell с помощью командлетов Get-ChildItem и Copy-Item или использовать проводник Windows. Однако имейте в виду, что согласно инструкциям предыдущего раздела необходимо использовать подход Respawn Windows Explorer. Если это не сделано, например, при запуске Windows Explorer из PowerShell с проверкой подлинности с использованием explorer.exe \\DC1.ad.bitsadmin.com\SYSVOL, explorer.exe процесс, который (повторно) используется из сеанса локального пользователя Offensive Windows VM, не имеет необходимых учетных данных, и после некоторых неудачных проверок подлинности NTLMSSP (если включено)) отобразит запрос учетных данных. В качестве альтернативы можно использовать такой инструмент, как XYplorer Free , поскольку он правильно наследует сеанс входа в систему с соответствующими учетными данными из родительского процесса PowerShell.

Еще одно место, где часто хранится интересная информация, — это SharePoint. Из PowerShell с учетными данными можно запустить браузер, чтобы посетить эти сайты SharePoint и просмотреть их. Более того, при использовании Internet Explorer также можно просматривать папки через Windows Explorer и легко копировать папки с информацией локально.

Системы Windows

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

Вызовы удаленных процедур ( RPC ) и инструментарий управления Windows ( WMI ) широко используются при выполнении действий в удаленной системе. Еще одним протоколом, который все чаще используется для управления удаленными системами, является WinRM , который является реализацией протокола WS-Management в Windows. Обычно используются следующие порты и протоколы: в случае WMI при использовании DCOM трафик проходит через порты DCERPC , а в случае использования WSMan используются порты WinRM .

1694601933234.png


Сессии

С помощью вызовов RPC и WMI можно перечислить пользователей, которые в интерактивном режиме вошли в систему на конкретной рабочей станции, что может быть полезно для определения, является ли рабочая станция интересной целью для горизонтального перехода. Из виртуальной машины Offensive Windows это можно сделать с помощью query.exe встроенной утилиты командной строки, где, в зависимости от используемой подкоманды, отображаются немного разные детали.

В query.exe user /server:W10.ad.bitsadmin.com командной строке отображаются пользователи, у которых есть сеанс (активный или отключенный) на хосте, а также дата и время их входа в систему. У этого инструмента также есть сокращенная версия — quser.exe, где, как и в предыдущей командной строке для удаленной системы, /server необходимо указать параметр.

Другая query.exe командная строка содержит query.exe session /server:W10.ad.bitsadmin.com список оконных станций в удаленной системе и, если применимо, имя пользователя, подключенного к оконной станции. Как и в случае с подкомандой пользователя, здесь также доступен псевдоним ( qwinsta.exe), где /server можно использовать параметр.

Несмотря на то, что это не LOFLBin, Mimikatz также может отображать информацию, отображаемую в приведенных выше командных строках, включая некоторую дополнительную информацию, такую как исходный IP-адрес, откуда происходит удаленное соединение, заблокирован ли удаленный сеанс и различные дополнительные сведения. Используемая командная строка: mimikatz.exe "ts::sessions /server:W10.ad.bitsadmin.com" exit.

Наконец, с помощью WMI также можно составить список интерактивных сеансов, отфильтровав соответствующие типы входа в систему Win32_LogonSession и связав их с классами Win32_LoggedOnUser/ Win32_Account.

Получение списка процессов

Список процессов актуален для различных целей. Примеры: определить, какое антивирусное программное обеспечение или программное обеспечение EDR работает в системе, или проверить, работает ли менеджер паролей KeePass. Как и в случае с сеансами, инструмент query.exe предоставляет возможность отображать удаленные процессы: либо полный список процессов ( *), либо конкретный процесс ( KeePass.exe). Командная строка выглядит следующим образом: query.exe process * /server:W10.ad.bitsadmin.com. Как и предыдущие query.exe подкоманды, эта подкоманда также имеет псевдоним, при котором остальные параметры qprocess.exe остаются такими же, как и у query.exe эквивалента.

Другой способ отображения запущенных процессов — использование WMIWin32_Process , где можно запрашивать экземпляры класса , при необходимости с фильтром для поиска конкретных процессов. Преимущество использования WMI заключается в том, что с помощью query.exe. Пример командной строки выглядит следующим образом.

1694601962286.png


Наконец, командлет Get-Process PowerShell также можно использовать для получения списка процессов на удаленном хосте, используя параметр -ComputerName.

Kill processes

В некоторых случаях полезно иметь возможность завершать процессы. Это можно сделать с помощью различных LOFLCAB , а именно встроенных утилит taskkill.exe и tskill.exe утилит командной строки, а также с помощью класса Win32_Process WMI .

1694601984088.png


1694601994897.png


1694602003253.png


Выполнение командной строки

Командные строки могут выполняться различными способами и протоколами. Некоторые из этих методов описаны здесь https://lofl-project.github.io, а на веб-сайте LOFL-Project более обширный список доступен при выборе функции «Выполнить» .

Самый простой способ — это командлет Invoke-Command, который либо использует существующий сеанс удаленного взаимодействия PowerShell, созданный с помощью New-PSSession командлета через параметр -Session, либо напрямую указывает систему (или системы), для которой командлет должен быть выполнен, с использованием параметра -Computer, который при необходимости может обрабатывать массив имен компьютеров. Однако для длительных задач соединение WinRM должно оставаться открытым, иначе процесс будет немедленно завершен. По этой причине этот вариант удобен для получения некоторой информации с помощью командлета или инструмента командной строки, но он не идеален для запуска программного имплантата.

1694602017733.png


Другой метод — WMI с использованием командлета Invoke-WSManAction, использующего сеанс WinRM . В отличие от Invoke-Command, поскольку этот метод использует WMI, а не WinRM , этот командлет поддерживает длительные выполнения. Однако он не показывает вывод команды. Выполняемые процессы запускаются в рамках процесса WmiPrvSE.exe, который является узлом поставщика WMI и порождается сервисным процессом svchost.exe процессом DcomLaunch.

1694602024821.png


То же самое выполнение WMI можно выполнить, используя Invoke-CimMethod который, в отличие от Invoke-WSManAction использования параметра -SessionOption командлета New-CimSessionOption предоставляет возможность использовать WinRM или DCERPC в качестве протокола. Следующий код запускает маяк через DCERPC через WMI .

1694602031594.png


Помимо выполнения через общеизвестный класс Win32_Process, существуют различные альтернативные классы WMI для выполнения выполнения. Одним из них является класс Win32_Product, который позволяет установить .msi пакет установщика по URL-адресу. Ниже смотрите видеоролик, в котором .msi скачивается и устанавливается доброкачественная программа. Однако это также мог быть вредоносный установочный пакет, запускающий программный имплант C2. В этом видео используется следующая командная строка.

1694602042366.png



1694602056453.png


Последний пример прямого выполнения командной строки — выполнение через DCOM . Существуют различные COM- объекты, которые можно запускать удаленно и выполнять командные строки. В этом примере интерфейс IShellWindows, предоставляющий ShellExecute функцию. Процесс, выполняемый через этот интерфейс, запускается под explorer.exe процессом. Дополнительные примеры таких COM- интерфейсов можно найти в статье «Злоупотребление объектами COM и DCOM » 5 .

1694602067720.png


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

Сервисы

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

Управлять службами можно либо через командную строку с помощью командлетов, sc.exe либо *-Service через графический интерфейс с помощью services.msc. С помощью соответственно sc.exe \\W10.ad.bitsadmin.com query и Get-Service -ComputerName W10.ad.bitsadmin.com можно перечислить сервисы.

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

1694602081130.png


При желании эту службу можно запустить сразу.

1694602092090.png


Оснастку services.msc MMC можно запустить следующим образом. Обратите внимание, что туннель SOCKS может работать довольно медленно, поскольку для каждой службы выполняется несколько циклических запросов. Кроме того services.msc не имеет функций для создания службы и по сравнению с командной строкой имеет меньше возможностей для изменения службы. По этой причине для этой оснастки, вероятно, лучше использовать командную строку/командлеты.

1694602099075.png


Шедуллер

Запланированные задачи также можно использовать для выполнения двоичных файлов в системе, а также для сохранения. Командная строка для двоичного файла schtasks.exe выглядит следующим образом: задача будет запускаться как ( /RU) СИСТЕМА, а расписание ( /SC) — ежечасно. То же самое можно сделать с помощью New-ScheduledTaskкомандлета.

1694602111042.png


Помимо командной строки, планировщиком задач также можно управлять через графический интерфейс с помощью оснастки taskschd.msc MMC. После запуска оснастки можно подключиться к удаленной системе, щелкнув правой кнопкой мыши корневой узел и выбрав « Подключиться к другому компьютеру». Альтернативно compmgmt.ms /computer:W10.ad.bitsadmin.com можно использовать, которая среди других оснасток содержит оснастку «Планировщик заданий».

1694602121673.png


Брандмауэр Windows

Брандмауэр Windows можно запрашивать или управлять им через командную строку с помощью netsh.exe или командлетов в модуле NetSecurity. Например, можно включить правило брандмауэра (разрешающее определенное соединение), как это используется в статье «Слежка за пользователями с помощью теневого копирования RDP» в этом блоге .

1694602131429.png


Управление правилами брандмауэра также можно осуществлять через графический интерфейс: mmc.exe-> Файл -> Добавить/удалить оснастку -> Брандмауэр Защитника Windows в режиме повышенной безопасности -> Добавить -> Другой компьютер: -> W10.ad.bitsadmin.comГотово -> ОК.

Локальные пользователи

С помощью оснастки MMC « Локальные пользователи и группы» можно управлять пользователями и группами и, например, можно создать административного бэкдор-пользователя. Командная строка выглядит следующим образом: lusrmgr.msc /computer=W10.ad.bitsadmin.com.

1694602140985.png


Сертификаты

Вредоносные корневые сертификаты могут быть добавлены, например, для того, чтобы обеспечить возможность выполнения действия «человек посередине», когда целевая система доверяет сертификату, который используется системой злоумышленника для расшифровки трафика. Сертификаты можно просмотреть и добавить с помощью оснастки «Сертификаты» MMCcertlm.msc ( ). После открытия оснастки щелкните правой кнопкой мыши корневой узел -> Подключиться к другому компьютеру -> Введите имя объекта для выбора -> W10.ad.bitsadmin.com.

Реестр

Реестр удаленной системы можно как запрашивать, так и изменять удаленно, при этом reg.exe используются либо методы класса StdRegProvв WMI. Также regedit.exe поддерживает подключение к удаленной системе с помощью параметра «Подключить сетевой реестр» в меню «Файл». Ниже показан пример запроса ключа с использованием .

1694602158269.png


Изменения реестра можно использовать для добавления постоянства, из которых наиболее простым является следующий способ, однако существует гораздо больше методов обеспечения постоянства через реестр. Подумайте об обновлении пути к двоичному файлу заставки Image File Execution Options или о перехвате COM .

1694602164408.png


Журнал событий Windows

Если целью взаимодействия является нацеливание на определенного пользователя, если пользователь удаленно вошел на определенный сервер, можно через журнал событий безопасности определить исходный IP-адрес пользователя, после чего можно будет предпринять попытку бокового перехода к этому хосту. Тот же подход можно использовать для журналов безопасности контроллера домена, чтобы определить, откуда поступают аутентификации пользователей, или, если он включен, запросы на TGT или даже TGS.

Журнал событий Windows можно запросить с помощью Get-WinEventпараметра -ComputerName, оснастки MMC «Просмотр событий» ( eventvwr.exe DC1.ad.bitsadmin.com) или WMI ( Win32_NTLogEvent). Пример использования Get-WinEventдля запроса DC события с идентификатором 4768 (запрос TGT) показан ниже и может использоваться для идентификации IP-адреса рабочей станции интересующего целевого пользователя.

1694602178926.png


Журналы событий можно очистить, чтобы скрыть следы, с помощью Clear-EventLog командлета или оснастки MMC « Просмотр событий».

Роли и функции Windows Server

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

1694602195903.png


Инструменты злоумышленника

Несмотря на то, что инструменты злоумышленника не совсем являются LOFLCAB, в зависимости от того, как они разработаны, их можно использовать с атакующей виртуальной машины Windows против целевой среды. Это могут быть инструменты .NET, приложения Win32 или сценарии PowerShell. Пока лежащие в основе инструменты используют библиотеки Windows, которые прозрачно выполняют аутентификацию, их можно использовать для взаимодействия с Active Directory и другими системами Windows. Как всегда при использовании атакующей виртуальной машины Windows, с помощью этих инструментов необходимо использовать полное доменное имя целевого домена или хоста. При использовании инструментов, взаимодействующих с доменом, часто доменом и в некоторых случаях LDAP имя сервера необходимо указывать явно, поскольку его нельзя идентифицировать на основе контекста. Примером хорошо работающего инструмента злоумышленника является SharpHound , где требуется указать параметр --Domain.

В случае, если версии инструментов .NET не работают должным образом, часто доступен эквивалент Python. В отличие от версии .NET, инструменты Python обычно не предполагают, что они находятся в контексте предметной области. Такой инструмент Python можно использовать из виртуальной машины маршрутизации Linux, которая, как и виртуальная машина Offensive Windows, прозрачно проходит через тот же туннель SOCKS. Версия Python потребует явного указания всех деталей цели, включая учетные данные (Kerberos) ( .kirbi), которые можно извлечь из виртуальной машины Offensive Windows с помощью, например, команды Rubeus dump, а затем преобразовать в формат ccache с помощью, например, сценария ticketConverter.py

Примером частично работающего инструмента злоумышленника является Certify. Из атакующей виртуальной машины Windows программа Certify может отображать список уязвимых шаблонов сертификатов с тем ограничением, что для списков ACL шаблонов сертификатов отображаются SID вместо фактических имен пользователей. Однако при попытке запросить сертификат с использованием уязвимого шаблона Certify аварийно завершает работу с исключением NullReferenceException в GetCurrentUserDN()функции, что, очевидно, связано с тем, что инструмент не запускается из контекста целевого домена. В командной строке для поиска сертификатов необходимо указать параметры /domain и /ldapserver, например, certify find /domain:ad.bitsadmin.com /ldapserver:DC1.ad.bitsadmin.com /vulnerable. К счастью, у Certify также есть эквивалент Python под названием CertiPyавтор Оливер Ляк (@ly4k_), который с помощью файла ccache и целевого домена может перечислять все уязвимые сертификаты и запрашивать сертификаты.

Многие сценарии PowerShell можно использовать из атакующей виртуальной машины Windows. Примером сценария PowerShell, который можно использовать для сбора подробной информации из целевой системы, является Kansa от Дэйва Халла (@davehull), платформа PowerShell для реагирования на инциденты. При запуске kansa.ps1 важно добавить флаг -Authentication Negotiate, заставляющий его использовать пакет проверки подлинности Negotiate, как описано в разделе «Подготовка учетных данных» в части 2 этой статьи. В случае kansa.ps1 использования в целях инцидента при настройке LOFL в зараженной среде особенно важно отключить резервный вариант NTLM, который обсуждается в разделе « Наступательная настройка: атакующая виртуальная машина Windows»раздел в части 2 этой статьи, чтобы не допустить утечки учетных данных в систему, потенциально скомпрометированную злоумышленником.

Примерами инструментов, которые лучше всего можно запускать из виртуальной машины маршрутизации/злоумышленника Linux, являются инструменты ретрансляции, такие как Impacket ntlmrelayx.py. Для этих инструментов также требуется программное обеспечение C2, которое перенаправляет порты с хоста, на котором работает программный имплант, на виртуальную машину маршрутизации Linux. Благодаря настройке LOFL любые исходящие соединения для ретранслятора будут автоматически проходить через маршруты tun2socks, поэтому proxychains-ng не требуется.

Сервисы

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

Hyper-V


Hyper-V — это платформа виртуализации, которую можно установить как автономную операционную систему без графических компонентов (сервер Hyper-V) или как роль сервера в системе Windows Server. Серверы Hyper-V также могут быть присоединены к домену и обеспечивать встроенную аутентификацию для управления платформой Hyper-V, которая включает в себя функции создания новых виртуальных машин, взаимодействия с виртуальными машинами на консоли и выполнения живой миграции.

Чтобы иметь возможность взаимодействовать с Hyper-V, на атакующей виртуальной машине Windows необходимо установить инструменты управления Hyper-V (графический интерфейс пользователя и модуль PowerShell), для чего можно использовать следующую командную строку: Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-Management-* -Online | Enable-WindowsOptionalFeature -Online. Затем можно запустить оснастку MMC «Диспетчер Hyper-V» ( virtmgmt.msc) и подключиться к удаленному серверу Hyper-V, щелкнув правой кнопкой мыши корневой узел -> Подключиться к серверу -> Удаленный сервер -> HYPERV1.ad.bitsadmin.com.

1694602220348.png


Что касается взаимодействия на уровне сети с сервером Hyper-V, порт 5985/TCP( WinRM ) используется как для действий по управлению в диспетчере Hyper-V, так и для открытия консоли виртуальной машины без включения опции расширенного сеанса. Только после включения опции расширенного сеанса 2197/TCP для связи RDP используется дополнительное соединение через порт (VMDP для расширенного сеанса).

1694602230999.png


Службы удаленных рабочих столов (RDS)

Службы удаленных рабочих столов — это роль Windows Server, которая позволяет пользователям получать доступ и взаимодействовать с удаленным компьютером или виртуальной машиной. RDS предоставляет как функциональные возможности для предоставления пользователям выделенных сред, так и среду общего рабочего стола на одном сервере. Более того, благодаря функциям RemoteApp он может передавать приложения, работающие на сервере, клиенту. Эта функция без проблем работает в клиентской среде Windows и через mstsc.exe эти приложения RemoteApps будет отображаться на рабочем столе атакующей виртуальной машины Windows.

Для управления серверной частью RDS можно использовать Диспетчер серверов (ServerManager.exe ). В разделе «Службы удаленных рабочих столов» диспетчера сервера можно управлять различными аспектами RDS, такими как веб-доступ к удаленным рабочим столам и опубликованные приложения RemoteApp.

Службы сертификации Active Directory (ADCS)

Службы сертификации Active Directory (ADCS) — это роль сервера, которая предоставляет службы аутентификации и шифрования на основе сертификатов для сети. Управление ADCS состоит из двух частей. Первая часть — это оснастка MMC «Шаблоны сертификатов» ( certtmpl.msc). Эту оснастку необходимо запускать с OffensiveDC, иначе она будет жаловаться, что не может обнаружить DC, а также не может подключиться к целевому домену. На Offensive DC запустите certtmpl.msc, проигнорируйте предупреждающее сообщение и щелкните правой кнопкой мыши корневой узел -> Подключиться к другому записываемому контроллеру домена -> Изменить -> ad.bitsadmin.com-> ОК. Появилась возможность создавать (дублировать), изменять и удалять шаблоны сертификатов. Обратите внимание: если используется SOCKS-туннель, не поддерживающий UDP, для данной оснастки cldaproxy.sh необходим скрипт.

Вторая часть — оснастка MMC « Центр сертификации» ( certsrv.msc), которую можно запустить с /COMPUTER:параметром для подключения к удаленному центру сертификации: certsrv.msc /COMPUTER:CASUB1.ad.bitsadmin.com. Эта оснастка предоставляет такие функции, как список выданных и отозванных сертификатов, список неудачных запросов на сертификаты, выдачу или отклонение ожидающих запросов и, наконец, включение шаблонов сертификатов для использования из указанного центра сертификации. За исключением последней функции, которая отображает ошибку, все функции работают хорошо при настройке LOFL.
1694602252914.png


SQL-сервер

Microsoft SQL Server (MSSQL) — мощная система управления реляционными базами данных, используемая на многих предприятиях. К MSSQL можно подключиться как для управления им, так и для запроса.

Управление MSSQL осуществляется через диспетчер конфигурации SQL Server ( SqlServerManagerXX.msc), где на момент написания 16 — это последняя версия оснастки, включенная в SQL Server 2022, а 15 — это версия, включенная в SQL Server 2019. Это Оснастка является частью установки SQL Server, где для включения этого файла необходимо установить соответственно «Службы интеграции» или «Подключение клиентских инструментов». Оснастку можно запустить с параметром /computer подключения к SQL-серверу, например SQLServerManager15.msc /computer:SQL1.ad.bitsadmin.com. Во время тестирования казалось необходимым разрешить возврат к NTLM (см. раздел «Нападение: наступательная виртуальная машина Windows» в части 2 этой статьи), чтобы использовать этот LOFLBin.

SQL Server Management Studio (SSMS) — официальный клиент для взаимодействия с MSSQL. Ssms.exe может быть запущен и использован с проверкой подлинности Windows. Как и в случае с диспетчером конфигурации SQL Server, во время моего тестирования требовалось разрешить переход на NTLM, иначе соединение не удавалось, однако это также может быть из-за какой-то ошибки в конфигурации Kerberos MSSQL в моей лабораторной среде. После подключения можно попытаться выполнить команды в операционной системе, на которой работает MSSQL, с помощью xp_cmdshell хранимой процедуры или попытаться переключиться на другие серверы MSSQL с помощью OPENQUERYфункции MSSQL.

1694602266855.png


Диспетчер конфигурации Microsoft (MCM)

Microsoft Configuration Manager (MCM), ранее известный как System Center Configuration Manager (SCCM), представляет собой решение для управления и развертывания программного обеспечения, предназначенное для эффективного управления и контроля ИТ-инфраструктуры. Консоль Configuration Manager можно загрузить с веб-сайта Microsoft и установить на атакующую виртуальную машину Windows 10 для управления системами в среде.

Во время настройки консоли MCM настраивается сервер SCCM. При необходимости этот хост можно изменить через реестр. Консоль MCM сначала просматривает значение ServerName, указанное в HKCU\SOFTWARE\Microsoft\ConfigMgr10\AdminUI\MRU\1. Если MRU ключ не существует, он вернется к значению сервера, настроенному в HKLM\SOFTWARE\WOW6432Node\Microsoft\ConfigMgr10\AdminUI\Connection.

После настройки правильного сервера из консоли с подготовленными учетными данными можно запустить Microsoft.ConfigurationManagement.exe LOFLBinSMS:DebugView , при необходимости с параметром, который предоставляет дополнительную опцию «Инструменты» в меню. С консоли можно управлять Microsoft Configuration Manager и выполнять вредоносные действия, такие как сбор информации о системах, зарегистрированных в MCM, и развертывание программного имплантата.

1694602282473.png


Разное программное обеспечение

Многие компании используют программное обеспечение собственной разработки. Несмотря на то, что в настоящее время все больше программного обеспечения переходит в сторону веб-технологий, по-прежнему используется много программного обеспечения на базе Windows. Это программное обеспечение можно установить или скопировать на виртуальную машину Offensive Windows и использовать оттуда через прокси-сервер SOCKS. Это позволяет злоумышленнику использовать программное обеспечение без наблюдения на конечной точке, а злоумышленник может иметь возможность вмешаться в программное обеспечение (например, подключив к нему отладчик), что позволит обойти ограничения.

Заключение

Поскольку используется наступательная виртуальная машина Windows, можно управлять многими другими службами на базе Windows, включая те, которые включены в операционную систему Windows Server, такие как служба маршрутизации и удаленного доступа (RRAS), службы федерации Active Directory (ADFS) и службы обновления Windows Server. (WSUS) или другое программное обеспечение Microsoft или других поставщиков, работающее в экосистеме Microsoft.

Некоторыми примерами программного обеспечения Microsoft, которое изначально не включено в Windows Server, но которым можно управлять, являются Microsoft Exchange, SharePoint и Microsoft Dynamics. Примерами серверов сторонних производителей, которые могут работать в среде, являются IBM Cognos (IBM Cognos Command Center), Symantec Endpoint Protection (Symantec Endpoint Protection Manager) и серверы баз данных Oracle (Oracle SQL Developer). По сути, к любой службе, хост которой интегрирован с Active Directory, либо напрямую через Kerberos, либо косвенно через Kerberos через ADFS, можно получить доступ из наступательной виртуальной машины Windows и управлять ею для проведения разведки или использовать для эскалации или горизонтального перемещения.

На этом наступательная часть статьи заканчивается. Следующий раздел будет посвящен защите и обнаружению использования LOFL .

Обнаружение

В этом разделе описываются некоторые методы, которые можно использовать для обнаружения конфигурации, в которой прокси-сервер SOCKS используется для выполнения действий LOFL против узлов в сети. В зависимости от используемого LOFLBin или LOFLCmdlet в целевой системе и/или на сетевом уровне могут существовать дополнительные IOC. Если они известны, они указаны в разделе обнаружения конкретного LOFLCAB на веб-сайте LOFL -Project.

Соединения на уровне системы


Из бинарного хостинга SOCKS-сервера, который обеспечивает доступ к целевой сети, в зависимости от активности злоумышленника могут быть многочисленные исходящие соединения. Если, например, используется программный имплант C2 и этот имплант внедряется в процесс rundll32.exe, на различных этапах наступательных действий, выполняемых с наступательной виртуальной машины Windows, можно наблюдать следующее. В этом примере с использованием аутентификации на основе сертификатов запускается новое приглашение PowerShell, а затем перечисляются общие ресурсы хоста ( net view \\BAK1.ad.bitsadmin.com /all).

1. Получение TGT
- Процесс rundll32.exe устанавливает соединение с портом 53/TCP контроллера домена для получения соответствующих записей DNS для выполнения аутентификации в домене;
- Процесс rundll32.exe устанавливает соединение с контроллером домена с ролью KDC для порта 88/TCP и выполняет аутентификацию для запроса TGT.
2. Идентификация цели
- Процесс rundll32.exe устанавливает соединение с портом 53/TCP контроллера домена для получения записей DNS A целевого хоста: BAK1.ad.bitsadmin.com;
- Процесс rundll32.exe устанавливает соединение с портом 445/TCP и BAK1.ad.bitsadmin.com отправляет запрос протокола согласования SMB, на который отвечает, что поддерживается проверка подлинности Kerberos. TCP-соединение остается открытым.
3. Получение TGS
Процесс rundll32.exe устанавливает соединение с контроллером домена с ролью KDC для порта, 88/TCP отправляющего свой TGT, запрашивающего TGS для SPN cifs/BAK1.ad.bitsadmin.com, который затем принимается.
4. Листинг шар
- Используя TCP-соединение, ранее открытое на шаге 2, запрашивается список общих ресурсов, и соединение с портом 445/TCP закрывается.

Глядя на rundll32.exe уровень процесса, это покажет:

- Два исходящих подключения к DNS ( 53/TCP);
- Два исходящих соединения с KDC ( 88/TCP);
- И одно исходящее соединение к цели, в этом примере шара SMB на порту 445/TCP.

Однако, если именно этот листинг общих ресурсов будет выполнен пользователем в системе, на которой работает программный имплант C2, будет наблюдаться следующее:

- DNS-запросы отправляются на порт 53/ UDP процессом, svchost.exeна котором размещена служба «DNS-клиент» (dnscache);
- Запросы аутентификации Kerberos (TGT/TGT) на порт 88/TCP отправляются lsass.exe;
- Запрос на листинга шар к порту 445/TCP от net.exe.

Это обычное поведение сильно отличается от поведения, проявляющегося при выполнении запроса от атакующей виртуальной машины Windows, где основными указателями на то, что происходит что-то подозрительное, являются подключение к порту от непроцесса 88/TCP и lsass.exe порту 53/TCPот процесса, который не является «процессом» DNS-клиент» svchost.exe.

Подключения на уровне сети


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

Аутентификация

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

Если переход пакета безопасности Negotiate к NTLM не отключен и проверка подлинности Kerberos по какой-либо причине не удалась, наступательная виртуальная машина Windows вернется к проверке подлинности NTLM. Это приведет к созданию события с идентификатором 4624 (учетная запись успешно зарегистрирована) в журнале событий безопасности, где пакет аутентификации — NTLM, а не Kerberos. Кроме того, в событии будет видно имя рабочей станции атакующей виртуальной машины Windows, тогда как в случае аутентификации Kerberos это пустое поле.

В некоторых случаях злоумышленник может удаленно управлять системой (например, для обеспечения устойчивости с помощью планировщика задач - schtasks.msc), где в журнале событий безопасности будет отображаться один или оба вышеупомянутых идентификатора события (4624, 4672), где поле «Адрес исходной сети» является IP-адрес самой системы. Выполнение аутентификации Kerberos для самого себя может быть исключительной комбинацией, заслуживающей срабатывания предупреждения.

Методы MITRE ATT&CK


В этом разделе события, особенно относящиеся к настройке LOFL с атакующей виртуальной машиной Windows, сопоставлены с TTP платформы MITRE ATT&CK. TTP LOFLCAB документированы на соответствующих страницах веб-сайта https://lofl-project.github.io/ .

1694602334162.png


Будущая работа

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

IPv6

Все инструменты, входящие в состав установки, поддерживают IPv6, однако это еще не проверялось.

Улучшено поведение tun2socks.

В настоящее время всякий раз, когда приходит пакет TCP SYN, tun2socks просто немедленно отвечает SYN/ACK. Чтобы повысить удобство использования инструментов на атакующей виртуальной машине Windows, когда порты закрыты, более естественным было бы, если tun2socks сначала проверит, действительно ли удаленный порт открыт. Как только он обнаружит, что порт открыт, он может ответить сообщением SYN/ACK, а в случае, если порт закрыт, не отвечать на SYN/ACK или ответить сообщением RST.

В настоящее время в разделе «Обсуждения» проекта tun2socks 10 продолжается взаимодействие, а форк 11 и запрос на включение 12 от пользователя GitHub 0990 должны реализовать описанное выше поведение в tun2socks. Однако я еще не тестировал этот форк.

Для дальнейшего чтение
Завершая статью, я обнаружил, что Майкл Крюгер из Sensepost в сентябре 2022 года написал в блоге аналогичную настройку, в которой он использует виртуальную машину Linux, через которую он маршрутизирует трафик от виртуальной машины Windows. Ознакомьтесь с его интересным постом и инструментом WireSocks здесь: https://sensepost.com/blog/2022/wiresocks-for-easy-proxied-routing/ .

1694602353407.png
 


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