Приветствую, читатели. Время идет, и все больше и больше новых вирусов и потенциально опасных приложений появляется в сети. Казалось бы, мир уже давным-давно познал целые интернет-эпидемии и не является таким беззащитным, как во времена первых сетевых червей. Code Red тому в пример. Но так уж пошло, что чем сложнее защита или система, тем больше в ней может находиться уязвимых мест. Парадокс, не правда ли? 

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

Вспомните нашумевшую уязвимость Eternal Blue, с помощью которой злоумышленники распространяли различные вымогатели по всему миру. 

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

Что ж, в этой статье пойдет речь как раз таки о вирусе, который в своей кампании использует критические уязвимости нулевого дня и сейчас нацелился на пользователей сети Европы и стран СНГ — Magniber.

«Нулевой день» — это общий термин, описывающий недавно обнаруженные уязвимости в системе безопасности, которые могут быть использованы злоумышленниками для атаки на систему. Термин «нулевой день» показывает, что поставщик или разработчик только что узнали об уязвимости, и у них есть «ноль дней» на ее исправление. Атака нулевого дня происходит в результате использования злоумышленниками уязвимости до того, как разработчикам удается ее исправить.

На данный момент шифровальщик нацелен на свежие операционные системы, такие как Windows 10 и Windows 11. Самым опасным является то, что он шифрует до 250 типов файлов, превращая их в нечитаемый мусор: изображения, архивы, документы и прочее. 

Вымогатель Magniber: краткая история

Итак, Magniber является очень старым представителем семейства вымогателей, впервые активность этого вредоноса была замечена в конце 2017 года в Южной Корее. Как раз в тот период, когда у нас были те самые WannaCry, Petya и все прочие. В то время Магнибер использовал уязвимость Eternal Blue для своего распространения, как и его европейские собратья.  

Но в конце 2018 года были замечены первые случаи заражения на Тайване и других странах Азии. Правда, уже с использованием другой критической RCE уязвимости CVE-2018-8174

Remote Code Execution (RCE) — удаленное выполнение кода — опасная уязвимость, которая позволяет дистанционно запустить вредоносный код в целевой системе по локальной сети или через Интернет. При этом физический доступ к устройству не требуется.

CVE-2018-8174 — связана с ошибкой в процессе обработки объектов в памяти Windows VBScript Engine. Позволяет злоумышленнику удаленно выполнить произвольный код на устройстве жертвы. Были подвержены этой уязвимости следующие операционные системы: Windows 7, Windows Server 2012 R2, Windows RT 8.1, Windows Server 2008, Windows 10.

Microsoft выпустила патч спустя два месяца после обнаружения дыры в своих системах.

Когда операторы вымогателя расширили ареал атаки на все страны Азии и некоторые европейские, у них сменились и приоритеты. Если в конце 2017 года вредонос распространялся в основном среди обычных пользователей, то с 2018 года атаки были ориентированы на мелкие и средние компании. 

А дальше два года тишины и никакой активности от Магнибера… Вымогатель просто исчез. 

Но уже в 2021 году он снова объявился, на этот раз используя новые критические уязвимости в Windows: CVE-2021-26411, CVE-2021-40444 и, в первую очередь, RCE уязвимость PrintNightmare, CVE-2021-34527.

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

CVE-2021-34527 — дыра в службе диспетчера очереди печати Windows, которая позволяет злоумышленнику загрузить и запустить на устройстве жертвы свой .dll файл. 

Методологию атаки и опасности данной уязвимости хорошо описали специалисты из Лаборатории Касперского.    

Спустя некоторое время вредонос снова впадает в спячку, теперь на целых полтора года. 

Новое пришествие произошло совсем недавно, а именно – летом прошлого года. И теперь Магнибер стал гораздо опаснее. Специалисты из группы TXOne отмечают, что вымогатель отличается полностью переработанным кодом и по своему канону использует новые 0-day уязвимости. Злоумышленники также начали использовать новые векторы заражения, если раньше Магнибер существовал лишь в формате системного установщика Windows, то есть .msi, то теперь появились и куда более изощренные варианты: вредоносные файлы JavaScript, ISO, ZIP архивы и даже INK ярлыки.

Согласно новому отчету от Google Threat Analysis Group (это команда экспертов в области кибербезопасности, работающая в компании Google), с августа 2022 года киберпреступники активно эксплуатировали уязвимости нулевого дня в компоненте SmartScreen (CVE-2023-24880), а также распространяли вымогатель несвойственным для этой вредоносной кампании способом — фишинговыми уловками и рассылками. 

Служба Smartscreen представляет собой некий антивирус, который блокирует запуск потенциально опасных файлов, а также предотвращает фишинговые атаки в браузере Edge. 

Аналитики Google заявили, что они заметили более 100 тысяч загрузок вредоносных .msi файлов. И самое печальное то, что 30% скачиваний были совершены в России и близлежащих странах.

На момент написания статьи прошло лишь два дня после выпуска патча от Microsoft, который закрывает эту уязвимость. Их представители заявляют, что для тех, кто установил последний патч опасность миновала и они на 100% защищены. Но так ли это на самом деле? 

Краткий обзор уязвимости CVE-2023-24880

Прежде чем писать о ней, стоит отметить, что ошибки в службе SmartScreen не являются редкостью и пользуются спросом у злоумышленников для реализации вредоносного ПО. 

Так в ноябре прошлого года неизвестные злоумышленники распространяли вымогатель и дроппер QBot, используя неправильную подпись Authenticode для обхода предупреждений безопасности SmartScreen. Тогда уязвимость была классифицирована как CVE-2022-44698 и оперативно исправлена, но с долей халатности, что привело к ещё большему количеству прорех. 

Все дело в том, что при каждом запуске приложения, процесс explorer.exe формирует обращение к shdocvw.dll (библиотека smartscreen) и его функции AppReputationService, для получения вердикта о безопасности запускаемого файла. По умолчанию предупреждение срабатывает лишь при обнаружении чего-то подозрительного, но если служба smartscreen ответит ошибкой, то процесс продолжает использовать параметр по умолчанию и запускает файл, не отображая никаких предупреждений безопасности для пользователя.

И дело как раз в том, что когда shdocvw.dll получает битую подпись Authenticode, происходит автоматическое возвращение ошибки и продолжение работы. 

Чтобы это исправить, Microsoft просто убрали возможность выдачи ошибки вот этим фрагментом кода:

Парадокс в том, что уязвимая функция THROW_HR вызывается из многих других участков кода службы.

А CVE-2023-24880 представляет собой банальный обход, обращенный как раз таки на другие участки кода. Алгоритм примерно тот же. Здесь я описал все максимально простым и понятным языком, для получения более глубоких сведений рекомендую ознакомиться с этим отчетом от Google.

Magniber.msi —  статистический анализ

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

  1. DIE — Detect it Easy: многофункциональный инструмент, имеющий просто огромный арсенал. Позволит нам опередить тип компилятора вредоноса, язык, библиотеки и таблицы импорта/экспорта с последующим дизассемблированием. 

  2. PE Bear  — неплохой инструмент для просмотра и редактирования составляющих PE файла. 

  3. Tiny Tracer  — утилита для динамического отслеживания исполнения бинарных элементов. Так называемый трейсер.

  4. IDA PRO — инструмент для реверс-инжиниринга. 

  5. Reko — декомпилятор, также знаком нам с прошлых статей.

  6. Orca — простой и хороший обозреватель таблиц, входящих в пакеты Microsoft Installer (.msi). 

Сразу же приступаем. Бросается в глаза несвойственный для вредоносов большой вес .msi файла. Целых 20 412 КБ. При просмотре свойств стоит также отметить фишинговое название нашего вредоноса  —  «Installation DataBase». И примерное время создания содержимого 04.07.2022.

DIE нам здесь не покажет ничего особого, лишь обозначит, что это компонент установки Windows. Уже по традиции, давайте загрузим наш образец на VirusTotal и посмотрим процент обнаружения. 

Очень интересно, то, что такой антивирус как MalwareBytes не видит в этом файле угрозы. Остальные результаты сканирования можете увидеть на скриншоте.

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

В основе пакет выглядит стандартно, кроме двух таблиц — это Binary (в которую вставлены двоичные файлы) и Custom Action  которая вызывает один из них).  Просмотрев эти разделы, можно прийти к выводу, что основной запускаемый бинарник называется «gicpivjme», так как он единственный, к которому идет обращение на извлечение функции «brjvqnc». Остальные являются пустышками с кучей нулевых байтов. 

Что ж, теперь нам нужно как-то извлечь целевой файл из пакета .msi. Сделать это можно с помощью архиватора 7-zip.  

Затем запустим IDA, эта программа нам сразу указывает на то, что наш бинарный файл является исполняемым PE файлом. Логично. 

Злоумышленники изрядно постарались и запутали поток выполнения настолько, насколько это возможно. Все начинается с одного вызова и резко переходит в очередность прыжков, это так называемая «кроличья норка». Вся эта вакханалия очень затрудняет анализ, как вообще разобраться во внутренней работе этого вымогателя, если трудно найти даже необходимый участок кода. Но всё же это возможно.

Предположительный алгоритм работы вредоноса

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

  • Первичная полезная нагрузка, отвечающая за уход от обнаружения и создание дочерних процессов.

  • Вторичная полезная нагрузка, отвечает за внедрение вредоносных функций в легальные процессы Windows (чем и объясняется ранее виденное мной чудо, когда svchost.exe шифровал данные).

  • Ядро вредоноса, отвечающее за процесс шифрования данных.

Все это вполне возможно отследить, пусть и будет очень трудно, поэтому поделим статью на следующие подразделы: 

  1. Отслеживание полезной нагрузки первого этапа и её последующий анализ; 

  2. Отслеживание полезной нагрузки второго этапа и её последующий анализ;

  3. Анализ ядра Magniber.

Отслеживание полезной нагрузки первого этапа и её последующий анализ

Для этого дела мы будем использовать инструмент для динамического отслеживания процесса исполнения — Tiny Tracer.  Мануал по установке можете найти вот здесь. 

Но сперва нам нужно превратить вредоносный .dll в автономный исполняемый файл, то есть в .exe. Без этого провести процесс трассировки будет очень сложно. В этом нам очень подсобит утилита PE Bear.  

Итак, раз мы занялись таким превращением, нам нужно определить, является ли начальная ступень .dll файла «DLLMain» началом осмысленного кода. В нашем случае, эта ступень не имеет в себе ничего, что относилось бы к непосредственной работе вредоноса, и это знатно упрощает фронт работы, потому что её можно попросту пропустить. 

Далее нам нужно найти целевую функцию, то есть «brjvqnc», во вкладке «Export» и просто изменить на неё точку входа, чтобы пропустить ту самую «кроличью нору». Делается это так, как показано на скринах.

Затем просто изменяем числовые характеристики нашего файла из .dll на исполняемый .exe.

Изменяем имеющееся число на 102, чтобы все выглядело вот так (как можно увидеть на скриншоте число 2 отвечает за возможность запуска, а число 100 за разрядность):

И сохраняем все это дело в необходимом нам формате.

Теперь мы спокойно можем запустить его через Tiny и увидеть, что же происходит на самом деле. 

После окончания процесса отслеживания мы можем проанализировать созданный трейсером журнал. Открыт он в банальном блокноте, так как на виртуальной машине не оказалось ничего покруче.

Первым делом вредонос выделяет участки памяти посредством системного вызова NtAllocateVirtualMemory, куда копируется содержимое шелл кода. Сам шелл находится в теле основного исполняемого файла вымогателя по RVA адресу 0x14bd.

Шелл-код (англ. shellcode) — это часть кода, встроенного во вредоносную программу и позволяющего после инфицирования целевой системы жертвы получить код командной оболочки. Очень часто shellcode используется как полезная нагрузка эксплоита.

Далее, используя все те же системные вызовы, вредонос получит информацию о количестве ядер процессора на устройстве жертвы и будет засыпать на случайные промежутки времени с помощью вызова NtDelayExecution. 

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

Также стоит отметить, что вредонос практически не использует функции из своего же .dll, зачастую просто вызывая системные. На скриншоте вы можете увидеть два примера использования функций непосредственно из вредоносного файла.

Первая отвечает за инициализирование подсчитываемой строки юникода. Вторая же — за создание процессов с необходимыми параметрами.

Выполнение этой части обрывается системным вызовом SYSCALL:0xc8(NtCreateUserProcess), а трейсер сообщает нам, что не смог проследить за процессом дальше. И это вполне очевидно.

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

Интересным в более глубокой трассировке являются два сегмента.

Первый отвечает за создание трех процессов: неизвестного на данный момент, cmd.exe и fodhelper.exe. 

В этот момент пазл наконец начал складывается. Ведь это очень напомнило мне об одной старой уязвимости в Windows 10, которая до сих пор не была исправлена. Она не имеет идентификатора, но вот PoС эксплоит очень похож на то, что мы видим на скрине. 

Подобная манипуляция позволяет обойти блокировку UAC, посредством перезаписи реестра fodhelper.exe, и запустить что-либо с правами администратора, не выдавая никаких предупреждений.

И что же будет запущено? На этот вопрос ответит второй сегмент, который находится чуточку выше.

Зашифрованный .vbs скрипт, который будет создан по пути C:/Users/Public. Проблема заключалась в том, что сразу же после запуска он уничтожался, а этот процесс происходил очень быстро. 

VBScript — сценарий Windows, грубо говоря набор команд, которые должна выполнить система при запуске этого файла. 

Ничего лучше я не придумал, как просто замораживать все процессы вредоноса через Process Hacker и на десятой, или около того, попытке, мне удалось заполучить необходимый файл. 

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

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

Интересным также можно назвать то, что он пытается расширить свои права доступа, выдавая себя за Microsoft Defender. А также отключить ограничение доступа к папкам: 

 "EnableControlledFolderAccess" = 0

Выводы

На этом моменте вынужден закончить первую часть статьи. Материала ещё много и вместить все сюда будет попросту невозможно. 

Несмотря на все эти хитромудрые манипуляции и невообразимую дальновидность злоумышленников, Magniber использует достаточно простой алгоритм шифрования, а именно AES-128 в режиме CBC, что делает процесс расшифровки достаточно легкой задачей. 

На данный момент имеется несколько десятков эффективных расшифровщиков, которые вы можете найти на портале NO MORE RANSOM

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

Также не будет ошибкой добавить, что вредонос детектится буквально всеми антивирусными приложениями (кроме MalwareBytes) и защита от него — задача простая. 

Но несмотря на это, Магнибер является серьёзной угрозой, как раз таки из-за гибкости мышления злоумышленников. Неизвестно, что они выкинут в следующий раз. 

Сейчас вымогатель распространяется в основном через файлообменники и сайты с пиратским ПО. 

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

А на этом первая часть анализа закончена. Увидимся. 

Автор статьи @DeathDay


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Комментарии (0)