
XLL Фишинг-методы
После недавнего объявления Microsoft о блокировке макросов в документах, полученных из интернета (по email И загрузки из сети), злоумышленники начали активно искать другие способы получения доступа через действия пользователя (UDA). При поиске жизнеспособного метода фишинга для получения доступа необходимо взвесить несколько факторов:
Это основные вопросы, но, безусловно, есть и другие. Ситуация усложняется, когда вы понимаете, что эти факторы накладываются друг на друга; например, если у клиента есть веб-прокси, запрещающий загрузку исполняемых файлов или DLL, возможно, придётся поместить полезную нагрузку в контейнер (ZIP, ISO и т.д.). Это, в свою очередь, может создать дополнительные проблемы в дальнейшем в плане обнаружения. Более надёжная защита требует более сложных комбинаций методов для её преодоления.
Эта статья написана с учётом вымышленной целевой организации; в этой организации внедрены несколько защитных мер, включая правила фильтрации электронной почты, блокировку загрузки определённых типов файлов, блокирование приложений по белому списку на конечных точках, а также Microsoft Defender для конечных точек в качестве решения EDR.
Реальные организации могут не применять ни одну из этих мер, некоторые или даже больше, что может упростить или усложнить методы, описанные в этом исследовании. Как всегда, знайте свою цель.
XLL — это DLL, специально созданные для Microsoft Excel. Неискушённому глазу они очень похожи на обычные документы Excel.

XLL представляют собой очень привлекательный вариант для UDA, поскольку они выполняются Microsoft Excel — очень часто встречающимся ПО в клиентских сетях; в качестве дополнительного бонуса, так как они выполняются Excel, наша полезная нагрузка почти наверняка обойдёт правила блокирования приложений по белому списку, поскольку их выполняет доверенное приложение (Excel). XLL можно писать на C, C++ или C#, что обеспечивает гораздо большую гибкость и мощность (и вменяемость) по сравнению с макросами VBA, что делает их ещё более желанным выбором.
Недостатком, конечно, является то, что законных способов использования XLL очень мало, поэтому организациям ДОЛЖНО быть очень легко заблокировать загрузку этого расширения файла как по электронной почте, так и при скачивании из сети. К сожалению, многие организации отстают от современных стандартов на годы, и поэтому XLL остаются жизнеспособным методом фишинга ещё некоторое время.
Существует ряд различных событий, которые можно использовать для выполнения кода внутри XLL, самым заметным из которых является xlAutoOpen. Полный список можно увидеть здесь:

При двойном щелчке по XLL пользователь видит такой экран:

Это единственное диалоговое окно отделяет пользователя от выполнения кода; при достаточно тонкой социальной инженерии выполнение кода практически гарантировано.
Необходимо помнить, что XLL, как исполняемые файлы, являются архитектурно-зависимыми. Это означает, что вы должны знать свою цель; версия Microsoft Office/Excel, которую использует целевая организация, (обычно) определяет, под какую архитектуру нужно собирать полезную нагрузку.
Существует достаточно чёткое разграничение по версиям Office, которое можно использовать как эмпирическое правило:
Office 2016 или старше: x86
Office 2019 или новее: x64
Следует отметить, что для каждого продукта возможно установить другую архитектуру, однако это архитектуры, устанавливаемые по умолчанию, и в большинстве случаев это должно быть надёжным способом принятия решения о том, для какой архитектуры создавать XLL. Конечно, в зависимости от метода доставки и предлога, используемого в фишинговой кампании, возможно предоставить обе версии и положиться на то, что жертва выберет подходящую для своей системы.
Полезная нагрузка XLL, созданная в ходе этого исследования, основана на этом проекте edparcell. В его репозитории есть хорошие инструкции по началу работы с XLL в Visual Studio, и я использовал его код в качестве отправной точки для разработки вредоносного файла XLL.
Заметное отличие от его репозитория заключается в том, что если вы хотите создать свой собственный проект XLL, вам понадобится загрузить последнюю версию SDK Excel, а затем следовать инструкциям из ранее указанного репозитория, используя эту версию вместо версии SDK 2010, упомянутой в README.
Доставка полезной нагрузки является серьёзным фактором в контексте UDA. Мы сосредоточимся на двух основных методах:
Будь то прикрепление файла или включение ссылки на веб-сайт, где можно загрузить файл, электронная почта является критически важной частью процесса UDA. За прошедшие годы многие организации (и поставщики электронной почты) усовершенствовали и внедрили правила для защиты пользователей и организаций от вредоносных вложений. Результаты могут различаться, но в настоящее время организации могут:
«Фаззинг» правил электронной почты организации может быть важной частью вовлечения, однако всегда нужно быть осторожным, чтобы не выдать, что проводится операция Red Team и информация активно собирается.
Для целей этой статьи будем считать, что в целевой организации действуют строгие правила вложений, препятствующие доставке полезной нагрузки XLL. Мы перейдём к веб-доставке.
Электронная почта всё ещё будет использоваться в этом векторе атаки, однако вместо отправки вложения она будет использоваться для отправки ссылки на веб-сайт. Правила веб-прокси и сетевые меры, контролирующие разрешённые типы загружаемых файлов, могут отличаться от тех, которые применяются к вложениям электронной почты. Для целей этой статьи предполагается, что организация блокирует загрузку исполняемых файлов (MZ-заголовков) из сети. В таком случае стоит изучить упаковщики/контейнеры.
Идея заключается в том, что мы можем поместить наш исполняемый файл внутрь файла другого типа и провезти его контрабандой мимо политик организации. Важным фактором является родная поддержка файлового типа; например, файлы 7Z нельзя открыть в Windows без установки стороннего ПО, поэтому они не лучший вариант. Такие форматы, как ZIP, ISO и IMG, привлекательны тем, что они поддерживаются Windows изначально, и, как дополнительный бонус, они добавляют очень мало дополнительных шагов для жертвы.