Целевой фишинг — популярный метод доставки вредоносного ПО на компьютеры сотрудников крупных компаний. От обычного фишинга он отличается тем, что злоумышленники заранее собирают информацию и персонализируют свое сообщение, побуждая жертву выполнить какое-то действие, которое приведёт к компрометации. Основными целями преступники выбирают или высокопоставленных сотрудников, обладающих доступом к ценной информации, или сотрудников тех отделов, которые по долгу службы контактируют с множеством адресатов. В частности это касается работников отдела кадров: они получают массу писем от ранее незнакомых лиц с вложениями в самых разных форматах. Такой вектор атаки и был избран мошенниками в том случае, о котором мы сейчас вам расскажем.
В марте 2024 года в компанию «Доктор Веб» обратились представители крупного российского предприятия, работающего в отрасли грузовых железнодорожных перевозок. Внимание сотрудников отдела информационной безопасности привлекло подозрительное письмо с прикрепленным к нему вложением. После попытки самостоятельно определить, какую опасность несет приложенный файл, они обратились к нашим специалистам. Ознакомившись с полученным запросом, наши аналитики пришли к выводу, что компания чуть не стала жертвой целевой атаки. Задачами, которые ставили перед собой злоумышленники, был сбор информации о системе и запуск модульного вредоносного ПО на скомпрометированном ПК.
Для реализации атаки киберпреступники отправили на электронный адрес компании фишинговое письмо, замаскированное под резюме соискателя вакансии. К письму был приложен архив, якобы содержащий PDF-файл с анкетой. Этот файл имел «двойное» расширение .pdf.lnk. Сокрытие вредоносных объектов при использовании двойных расширений — довольно частая тактика злоумышленников, которой они пользуются для того, чтобы вводить своих жертв в заблуждение. По умолчанию ОС Windows скрывает расширения файлов для удобства пользователя. А если файл имеет «двойное» расширение, то система скрывает только последнее из них. Таким образом, в данном случае жертва могла видеть первое расширение — .pdf, а расширение .lnk было скрыто. Отметим, что даже при включенном отображении полных имен файлов расширение .lnk всегда скрывается ОС.
Идея компрометации систем посредством lnk-файлов не нова. Наиболее знаковая атака произошла в 2010 году, когда оборудование для обогащения урана в иранском городе Нетенз подверглось беспрецедентному кибервоздействию со стороны злоумышленников. Червь под название Stuxnet атаковал ПЛК, управляющие газовыми центрифугами, выводя последние на запредельную скорость вращения, а затем резко останавливая, из-за чего происходило разрушение их корпусов. Помимо порчи оборудования этот червь инфицировал более 200 000 компьютеров во многих странах мира. Основным вектором атаки был lnk-файл, который попал на управляющий компьютер предприятия на USB-носителе. А для запуска вредоносного достаточно было лишь перейти в папку, содержащую специально сформированный lnk-файл. В рамках атаки было задействовано 4 уязвимости нулевого дня, в частности эксплойт CPLINK, что позволило запустить червя Stuxnet без участия пользователя.
Метаданные, хранящиеся в lnk-файле
Истинное расширение .lnk является расширением ярлыков в ОС Windows. В поле «Объект» (Target) можно указать путь до любого объекта ОС — например, исполняемого файла — и запустить его с требуемыми параметрами. В рамках этой атаки скрытно происходил запуск интерпретатора команд PowerShell, скачивавший с сайта злоумышленников два вредоносных скрипта, каждый из которых запускал свою полезную нагрузку.
Схема атаки
Первая из них представляла собой отвлекающий PDF, а также исполняемый файл с названием YandexUpdater.exe, маскирующийся под компонент для обновления Яндекс Браузера (название реального компонента — service_update.exe). Данный исполняемый файл представляет собой дроппер трояна Trojan.Packed2.46324, который после ряда проверок, направленных на выявление факта запуска в эмулируемом окружении и наличия ПО для отладки, распаковывал в скомпрометированной системе трояна Trojan.Siggen28.53599. Последний имеет возможность удаленного управления, выполняет сбор системной информации и скачивание различных вредоносных модулей. Помимо данных функций троян также обладает возможностями по противодействию отладке. При выявлении процессов антивирусов, виртуальных машин и отладчиков троян перезаписывает свой файл нулями и удаляет его вместе с папкой, в которой он хранился.
Отвлекающий PDF-файл
Вторая полезная нагрузка состояла из отвлекающего PDF-файла и трояна Trojan.Siggen27.11306. Данный троян представляет собой динамическую библиотеку (DLL) с зашифрованной полезной нагрузкой. Особенность данного трояна заключается в том, что он эксплуатирует уязвимость Яндекс Браузера к перехвату порядка поиска DLL (DLL Search Order Hijacking). В ОС Windows DLL-файлы представляют собой библиотеки, которые используются приложениями для хранения функций, переменных и элементов интерфейса. В момент своего запуска приложения выполняют поиск библиотек в различных хранилищах данных в определенном порядке, поэтому злоумышленники могут попытаться «пролезть без очереди» и поместить вредоносную библиотеку в ту папку, где поиск DLL происходит с наибольшим приоритетом.
Упрощенная схема приоритета поиска библиотек
Данный троян сохраняется в скрытую папку %LOCALAPPDATA%\Yandex\YandexBrowser\Application под именем Wldp.dll. Именно в этот каталог устанавливается Яндекс Браузер, и там же браузер будет искать необходимые ему библиотеки при запуске. В свою очередь, легитимная библиотека Wldp.dll, функция которой заключается в обеспечении безопасности запуска приложений, является системной библиотекой ОС и находится в папке %WINDIR%\System32. А так как вредоносная библиотека располагается в папке установки Яндекс Браузера, то первой будет загружаться именно она. При этом она получает все разрешения основного приложения: может выполнять команды и создавать процессы от имени браузера, а также наследовать правила брандмауэра для доступа в интернет.
После запуска браузера вредоносная библиотека Wldp.dll расшифровывает зашитую в нее полезную нагрузку. Следует отметить, что расшифровка выполняется дважды. В первый раз она производится с помощью ключа, создаваемого на основе хеша пути, по которому расположена вредоносная DLL, а затем — с помощью глобального ключа, зашитого в тело трояна. Результатом расшифровки является шелл-код, выполнение которого позволяет злоумышленникам запустить в скомпрометированной системе приложение, написанное на языке .NET. В свою очередь, этот стейджер загружал из сети вредоносное ПО. К сожалению, на момент нашего расследования на сервере, с которым связывался загрузчик, искомый файл был недоступен, и нам не удалось узнать, какой конкретно троян скачивался в данном случае.
Таким образом, мы видим многовекторную и многоступенчатую схему инфицирования одновременно двумя разными троянами, которые доставляются в скомпрометированную систему при открытии файла из фишингового письма. Несмотря на запутанную реализацию, методы профилактики и защиты от таких атак довольно просты. Они изложены ниже.
После обнаружения эксплуатации уязвимости в Яндекс Браузере мы передали информацию о ней в компанию Яндекс. Разработчики оперативно отреагировали на наше сообщение, в результате чего была выпущена версия Яндекс Браузера 24.7.1.380 с исправлением, а найденной уязвимости был присвоен идентификатор CVE-2024-6473.
В дальнейшем мы координировали дату публикации этой новости с разработчиками браузера, чтобы дать возможность пользователям получить исправленную версию Яндекс Браузера до обнародования подробностей об этой атаке.