Приветствую, дорогие друзья. Так уж вышло, что практически все популярные вредоносы, имеющие какую-либо связь с инжектором DotRunPex, были проанализированы. Кроме одного — FormBook. Вдобавок к этому количество сэмплов этого зловреда начало резко расти начиная с мая 2023.
На диаграмме он занимает далеко не последнее место, поэтому мы незамедлительно приступаем к разбору этого вируса.
FormBook — краткая история и общие сведения
Впервые вредонос был обнаружен в 2016 году в ходе исследования новых методов фишинга исследовательским центром FortiGuard Labs. Как раз-таки в их докладе впервые появилось упоминание о фишинге, связанном с рассылкой презентаций PowerPoint. Они не уточняли, что это были за презентации или какое у них было содержимое. Спустя несколько месяцев уже другой исследовательский центр заявил об обнаружении нового типа вредоносного ПО, распространяющегося через презентацию PowerPoint.
FormBook — это настоящий вредоносный швейцарский нож, так как он настолько мультифункционален, что любой другой вирус по сравнению с ним меркнет. Классифицируется он как инфостиллер и кейлоггер, но на самом деле его функционал намного больше. Также он может выполнять роль дроппера или трояна удалённого доступа (RAT).
На самом деле никакого исторического бэкграуда у Формбука нет, ведь с середины 2016 года этот вредонос начал продаваться на теневых форумах по принципу Malware-as-service за какие-то скромные $150 в год. Злоумышленники-создатели предоставили несколько вариантов подписки. Таким образом, покупатель может выбрать интересующую его специализацию. То есть, если потенциальный злоумышленник хочет лишь воровать данные банковских карт, то вредонос будет содержать исключительно модули, необходимые для этого.
В то время он активно рекламировался пользователем с именем «Sl4ID3R». К середине 2017 года дешёвый и эффективный Formbook укрепил свою популярность среди киберпреступников и стал постоянным компонентом кампаний по краже информации.
Наперёд скажу, что написан он на C#, поэтому создателям очень легко добавить или убрать какой-то модуль.
Но несмотря на то, что Формбук может купить любой, вектор атак, к моему удивлению, цельный. То есть в атаках до 2020 года всегда использовался один шаблон, презентация PowerPoint или другой документ, Microsoft Office → фишинговая рассылка.
А всё из-за существования уязвимости CVE-2017-8570 и небывалой халатности Microsoft (как всегда), которые позволили существовать этой дыре целых два с половиной года. После патча, конечно, мало что изменилось, и с небольшой щепоткой смекалки алгоритм внедрения вредоносного макроса до сих пор актуален. А Майкрософт продолжает отговариваться, мол, «мы все исправили».
CVE-2017-8570 — это идентификатор для уязвимости в программном обеспечении Microsoft Office, обнаруженной в 2017 году. Эта уязвимость позволяет злоумышленникам выполнить произвольный код на компьютере, если пользователь открывает специально созданный документ, содержащий вредоносный макрос.
Уязвимость CVE-2017-8570 относится к макровирусам, где злоумышленник может использовать вредоносные макросы в документах Office для выполнения вредоносного кода на компьютере пользователя. Это может привести к заражению компьютера вредоносным программным обеспечением или компрометации конфиденциальных данных.
В 2020 году, на фоне эпидемии Covid-19, появляется ещё один вектор — фишинговая рассылка с фейковым приложением для мониторинга статистики заражений. Злоумышленники выдавали себя за местные органы здравоохранения. Эти электронные письма содержали строки темы, такие как «Ответ правительства на коронавирус Covid-19», и вредоносные вложения, такие как «MyHealth.exe» или «HealthGOV.pptx».
На данный момент вредонос также распространяется через инжектор DotRunPex и все эти методы одновременно.
Инжектор — это вредоносное программное обеспечение или код, который используется для внедрения вредоносного кода (вируса, трояна и т. д.) в процессы или файлы других программ или системных компонентов. Целью инжектора является незаметное выполнение вредоносного кода в контексте других программ или системных процессов.
FormBook — краткий статистический анализ
Список инструментов, используемых для анализа:
DIE — Detect It Easy: многофункциональный инструмент, имеющий просто огромный арсенал. Позволит нам опередить тип компилятора вредоноса, язык, библиотеки и таблицы импорта/экспорта с последующим дизассемблированием.
PE Bear — неплохой инструмент для просмотра и редактирования составляющих PE файла.
Tiny Tracer — утилита для динамического отслеживания исполнения бинарных элементов. Так называемый трейсер.
IDA PRO — инструмент для реверс-инжиниринга.
Reko — декомпилятор, также знаком нам с прошлых статей.
HollowHunter — утилита, распознает и сбрасывает множество потенциально вредоносных имплантов (замененные/имплантированные PE, шелл-коды, перехватчики, патчи в памяти).
В рамках этой статьи мы разберем классический вариант заражения этим вредоносом, то есть через фишинговую рассылку и презентацию PowerPoint.
Как видите, выглядит всё достаточно просто, но существуют и более продуманные и красивые рассылки. Вредоносная презентация имеет расширение .pps, которое сообщает офису открыть это приложение не в режиме редактирования, а в режиме слайд-шоу. После запуска стоит жертве сделать хоть один клик и сразуе начнётся выполнение вредоносного макроса. Он является обычным скриптом PowerShell, отвечающим за загрузку и запуск второго этапа.
Этот скрипт с помощью метода Invoke-RestMetod обращается по какому-то сокращенному адресу, где находится основное тело вредоноса. Ссылка была сокращена через публичный «сокращатель» bit.ly, он пользуется огромной популярностью среди злоумышленников. Сам файл был выгружен на анонимный файлообменник Anonfiles.
Здесь стоит отметить, что существует несколько возможных путей развития событий:
Вредонос никак не маскируется, и сокращенная ссылка ведёт на какой-то анонимный файлообменник.
Вирус воспользуется вторичным дроппером, чтобы загрузить и выполнить основное тело.
Зловред пытается замаскироваться под обычную картинку, типа index.jpg.exe. Метод работает только в том случае, если на системе жертвы отключено отображение форматов исполняемых файлов.
На данный момент эти три метода, или их комбинации, остаются наиболее популярными, но это не означает, что не существует других. Напоминаю, что Формбук находится в свободной продаже, поэтому методы его доставки могут быть самыми разнообразными: от флешки с Autorun до использования 0-day уязвимостей.
0-day уязвимость — это уязвимость в программном обеспечении, которая только что обнаружена и не имеет известного исправления или патча. По своей природе эти уязвимости обычно остаются скрытыми от публичного внимания, чтобы разработчики программного обеспечения не имели возможности исправить их перед тем, как они могут быть использованы злоумышленниками.
О самой странной попытке распространять FormBook
Итак, перейдем к первичному визуальному осмотру нашего образца. Весит он 2.6 МБ, что достаточно много для такого вируса. Но стоило мне взглянуть на вкладку «Подробно», и всё встало на свои места.
Амадей — это продвинутый троян, который часто используется в кибератаках для целей фишинга и распространения других вредоносных программ.
Если я не ошибаюсь, то он уже был подвергнут небольшому анализу, поэтому особо на нем заострять внимания не будем. Нас, как и злоумышленников, в этом вирусе интересует лишь один модуль, который отвечает как раз-таки за загрузку конечного вредоноса.
Amadey Dropper — это модуль, который используется в рамках атаки Amadey для доставки и установки дополнительных компонентов или модулей в систему цели. Этот дроппер может использоваться для загрузки и установки различных вредоносных программ, таких как трояны или шпионское ПО, в зависимости от целей злоумышленников.
Как загрузчик следующего этапа, Амадей — далеко не лучший выбор, ведь эта его функция является лишь дополнительной и никак не основной. Вредонос просто загружает в определенную системную директорию указанный файл и запускает его.
Также он имеет достаточно печальный для злоумышленников процент обнаружения антивирусными приложениями, что делает использование Амадея в этой цепочке совсем уж каким-то сюром.
По классике, воспользуемся DIE для получения дополнительной информации:
Дата компиляции, естественно, изменена. Это TimeStomping.
Timestomping (или временная отметка) — это метод, используемый злоумышленниками для изменения временных меток файлов с целью сокрытия информации или обмана системы. Это техника, которая позволяет изменять даты создания, изменения или доступа к файлам, чтобы их вид и метаданные могли быть искажены.
Злоумышленники могут использовать технику timestomping для различных целей, включая сокрытие следов своей деятельности, обман системы мониторинга или подделку информации о файлах для обхода средств безопасности.
Написан этот псевдодроппер на C++ и защищен протектором, и у меня совсем нет желания его вскрывать, так как когда-то я уже это делал.
Более подробно о нём можно узнать вот здесь, но на данный момент он нас интересует меньше всего. Перейдем к анализу конечной полезной нагрузки — FormBook.
Итак, закроем глаза на чертовски странный метод доставки: начинали с презентации, а закончили трояном, который выполнил свою миссию и доставил Формбук на устройство жертвы.
По классике, выгружаем наш образец на VirusTotal, а он, в очередной раз нас радует, большинство популярных антивирусов видят этот вредонос:
Исполняемый PE файл весом в 806 КБ с достаточно странной иконкой. Также видим, что информация о файле была тщательно заполнена. Оригинальное имя файла lpqZ.exe и указан какой-то непонятный копирайтинг, информации о котором в поисковиках нет.
Для получения дополнительных сведений задействуем DIE, который покажет нам, что вредонос является библиотекой .NET, а обфускатора или протектора здесь нет.
Наконец, мне не придется мучаться с отладкой и прочими делами.
Библиотеки .NET, по сути своей, являются конечным результатом компиляции кода на C#. К нашему счастью, мы с легкостью можем декомпилировать данный образец с помощью утилиты DNspy и провести анализ чистого исходного кода или, по крайней мере, чего-то близкого к нему.
Переходим в DNSpy и видим настоящую вакханалию из иероглифов и нечитаемых символов.
DIE далеко не всегда показывает достоверную информацию, поэтому здесь ничего удивительного.
И здесь очень важно отметить, что то, что мы сейчас видим — это не совсем Формбук, так как его истинное тело является шелл-кодом. Если просмотреть существующие классы, то мы заметим, что некоторые участки и вовсе не зашифрованы. Они содержат какой-то мусорный код, который вообще никак не относится к вирусу. Это может быть какое-то приложение или вовсе игра и такие участки будут преследовать нас по ходу всего анализа.
Шелл-код (shellcode) — это набор инструкций машинного кода, который выполняет определенную задачу, обычно связанную с получением удаленного доступа к системе или выполнением вредоносных действий. Шелл-коды традиционно используются в эксплойтах и вредоносном программном обеспечении, чтобы использовать уязвимости в программном обеспечении и получить контроль над системой.
Шелл-коды разрабатываются на языке ассемблера и представляют собой последовательность инструкций, которые выполняют определенные действия, такие как открытие сетевого соединения, выполнение команд в удаленной оболочке (shell) или загрузка и запуск вредоносного кода.
Но это было сказано не просто так, всё дело в уникальном строении вредоноса. Он состоит из неких блоков или сегментов — кому как удобнее их называть.
Теперь, когда мы знаем, что основное тело вредоноса — шелл-код, мы можем предпринять некие действия для его поимки. Так как разбираться в вакханалии через DNSpy, даже с учетом отладки, будет очень сложно.
Поэтому мы воспользуемся утилитой Hollows Hunter, чтобы поймать этого негодника и проанализировать его. Делается всё это в пару кликов, поэтому не считаю необходимым описывать.
Теперь если мы воспользуемся IDA и откроем шелл-код, то увидим, что первый сегмент постоянно ссылается на второй и третий.
Это первый сегмент, который выполняется постоянно, чтобы понять, на каком этапе выполнения на данный момент находится вредонос. Если мы продолжим дизассемблировать этот участок, то сперва мы увидим обычный пролог x86 функции, то есть: push ebp; mov ebp, esp, но дальше начнет теряться любая логика, и всё превратится в не пойми что.
Второй и третий сегменты — это функции расшифровки decrypt_func1 и decrypt_func2, соответственно.
Что же они расшифровывают? Вызовы API Windows. Как и любой другой современный вредонос, чтобы избежать сигнатурного обнаружения, Формбук не использует собственные функции, а запрашивает их у системы.
Все эти вызовы жестко заданы в коде, и хранятся в виде хешей контрольной суммы. то алгоритм хеширования СRC32, который легко можно декодировать с помощью библиотеки Crccheck в Python. Способ не идеален, но с его помощью удалось расшифровать большинство системных вызовов. С их списком можно ознакомиться вот здесь.
CRC32 (Cyclic Redundancy Check 32) — это алгоритм контрольной суммы, используемый для обнаружения ошибок в передаче или хранении данных. Он вычисляет 32-битное значение контрольной суммы на основе содержимого проверяемых данных.
Имея всю эту информацию на руках, мы можем очертить примерный план работы вредоноса:
Внедрение шелл-колда в любой процесс Windows и последующая расшифровка необходимых API.
Закрепление себя в системе и уничтожение потенциально опасных процессов.
Проверка соединения и установка связи с C&C сервером.
Непосредственно кража данных.
Закрепление себя в системе и уничтожение потенциально опасных процессов
С первым пунктом мы уже разобрались, поэтому перейдём к следующему. Для того чтобы закрепить себя в системе и не потерять уже собранные данные, допустим в случае отключения машины жертвы от сети, вредоносу нужно материализоваться на устройстве. Поверьте, этот процесс очень занятный.
Каким же образом он выбирает файл, в который ему необходимо внедриться? Тот, который всегда будет запускаться со стартом системы? Нет, но эта догадка очень близка.
Сперва вирус снова объединяет свои сегменты в один под названием «MainFile». Он является конечной полезной нагрузкой. Затем Формбук обращается к файлу «AddInProcess32.exe» (этот файл принадлежит .NET Framework и находится в папке установки фрейморка). После он копирует файл из его родной папки C:\Windows\Microsoft.NET\Framework\v4.0.30319\AddInProcess32.exe и переносит его в директорию Temp, воспользовавшись системным вызовом CopyFileEx, и перезаписывает его.
Сам процесс перезаписи не является сложным. Сперва происходит запуск скопированного файла с помощью очередного системного вызова CreateProcessAsUser() с параметром 4U, который иначе можно определить как Create_suspended, то есть создание замороженного процесса. После этого с помощью вызова WriteProcessMemory, в память процесса записывается ранее созданный шелл-код MainFile. И уже от имени легитимного процесса вредонос начинает действовать.
Затем зараженный файл будет добавлен в папку автозагрузки.
Чтобы получить список активных процессов, вредонос воспользуется системным вызовом CreateToolhelp32Snapshot, чтобы получить их список. А вызов killProcessByName() поможет вредоносу уничтожить любой неугодный ему процесс.
Проверка соединения и установка связи с C&C сервером
Это одна из немногих функций, которая была вшита непосредственно в первичный .exe файл. Сперва происходит типичная для вредоносов такого типа проверка наличия интернет-соединения с помощью обычного пингования общедоступного ресурса. Формбук отличается от других сородичей лишь тем, что отправляет GET-запросы сразу на два сайта — google.com и bing.com.
После этого запускается процесс кражи конфиденциальных данных пользователя, а затем вредонос с помощью обычного POST-запроса отправляет их на командный сервер, IP-адрес которого, скорее всего, жёстко задан в самом коде.
Непосредственно кража данных
После всех хитроумных решений злоумышленников я ожидал увидеть какой-то особенный способ хищения. К сожалению, здесь всё ограничивается запросом необходимого файла через системный вызов CopyFileA.
Ранее в статьях мы уже разбирали этот алгоритм, злоумышленники пользуются известными фичами мессенджеров, браузеров и криптокошельков.
Разберём эту манипуляцию на примере мессенджера Телеграмм. Ранее я уже объяснял, что приложение для компьютеров имеет один существенный баг, который никто не спешит исправить. Всё дело в том, что копирование папки TDATA и перенос её в аналогичную директорию, но уже на другом устройстве, позволит злоумышленнику войти в ваш аккаунт без необходимости авторизации. Поэтому вредонос без особых раздумий копирует целую папку.
Таким образом происходит и с базой данных Google Chrome, где все пароли хранятся в .sql базе. Или с большинством популярных криптокошельков, где сид-фраза и авторизационные данные хранятся в файле Wallet.txt.
Собранные данные будут помещены в .zip архив и отправлены на C&C сервер.
Выводы
FormBook — это опасный инфостиллер с очень необычным способом развёртывания и доставки. Зачастую этот зловред доставляется с помощью документов любого типа. Сегодня мы разобрали образец, который использовал в качестве первичной полезной нагрузки презентацию с макросом, запускающим выполнение .VBS скрипта. А он доставлял зловреды на устройство жертвы. Но не стоит забывать, что Формбук начал использовать инжектор DotRunPex, о котором недавно шла речь.
Защита от этого вредоноса — плёвое дело. С известными на данный момент образцами практически любой антивирус справится без проблем. Но больше беспокоит удивительная гибкость и постоянное развитие. Злоумышленники не сидят на месте, а постоянно придумывают всё новые и новые уловки. Поэтому смотрите в оба. Никакой антивирус не сможет уберечь вас так, как собственная голова.
На самом деле, я не ожидал, что этот анализ выйдет настолько сложным и запутанным. Если что-то сделал не так, извините. А на этом у меня всё. Бывайте.
Автор статьи @DeathDay
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
-15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS