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

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

Но недавно исследователи из компании, занимающейся кибербезопасностью, Trendmicro заметили новый тип вредоносного ПО, которое распространялось через фишинговые рассылки и уязвимость CVE-2015–2291 в драйвере Intel. Имя этой угрозе — Enigma.

Подвержены воздействию этого плохиша все версии Windows. Вирус способен выполнять как функции стиллера, воруя файлы, содержащие в себе секретные фразы от кошельков и Cookie, так и функции дроппера, загружая на устройство жертвы следующую ступень или совершенно другой вредонос.

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

Пути заражения новой угрозой

Так называемый Enigma Stealer достаточно быстро распространяется, заражая пользователей, которые так или иначе связаны с криптосферой, не только в России, но и по всему миру. Особое внимание было уделено Центральной Европе, где жертвы исчисляются уже сотнями.

В основном все происходит достаточно банально, и существует два варианта фишинговых атак с использованием этого стиллера.

  1. Жертва получает на свой эмейл письмо, в котором злоумышленник представляется известной компанией и предлагает трудоустройство, по классике, во вложениях будет архив, в котором находится вредоносный файл, замаскированный под документ Microsoft Word.

  2. Жертва получает письмо на свой электронный адрес, но злодей представляется уже журналистом и попросит вас пройти небольшой опрос, тематически связанный с криптовалютой.

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

А вот как выглядит содержимое архива:

Краткий технический анализ уязвимости CVE-2015-2291

Как уже упоминалось ранее, вредонос также может распространяться с помощью этой уязвимости, но в основном используется как дополнительная ступень для повышения привилегий или загрузки вирусного драйвера. Поговорим немного о этой дыре, которую Microsoft пытаются закрыть уже несколько лет. Более подробное описание можно будет найти вот здесь.

Это уязвимость в драйвере iqvw64e.sys, который отвечает за диагностику сетевого адаптера. Да, это та самая функция «Поиск неисправностей устройства».

Поскольку этот компонент может напрямую взаимодействовать с устройством и выполнять множество подпрограмм ядра, предоставляя доступ к нескольким IOCTL, для злоумышленников он становится хорошей мишенью.

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

Злоумышленник может получить доступ к следующим кодам.

  • Код управления вводом-выводом, который будет использоваться для обращения к уязвимому кодовому пути — 0x80862007.

  • Код 0x33 для обращения к memmov. 

  • Код 0х30 для обращения к memset. 

Код 0x28 для обращения к DriverEntry, что позволяет злоумышленнику загружать драйвера из произвольных источников.

  • Код 0x27 для обращения к DeviceControl, позволяющей злоумышленнику передать структуру и внедрить её в подпрограмму ядра.

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

Использование злоумышленником этой дыры в защите Windows можно рассматривать под разными углами, так как применений у неё хоть отбавляй, но в инциденте с Enigma Stealer злоумышленники просто заменяли драйвер Windows Defender»a на свой вредоносный файл или повышали привилегии вирусному процессу в зависимости от обстоятельств.

Краткий статистический анализ вредоноса

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

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

  2. Hidra — как и прошлая утилита, уже светилась в моей статье. Прекрасный и многофункциональный инструмент для реверс-инжиниринга. 

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

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

Как и в прошлой статье, мне захотелось сперва проверить этот файлик через VirusTotal, чтобы потом было легче делать выводы, мол, такие антивирусы хорошие, а такие — совсем не видят в файле угрозу. Результаты меня порадовали, 47 из 71 — это достаточно хороший результат. 

Итак, после распаковки заветного архива у нас перед глазами появляется, как и упоминалось ранее, два файла: ничем не примечательный текстовый документ и исполняемый .exe, который очень неумело замаскирован под Microsoft Word. 

Размер вредоноса составляет 273 килобайта, при просмотре свойств, к моему удивлению, удалось обнаружить некоторую информацию: 

Естественно, это нам ничего не дает, только вот описание файла немного не стыкуется с маскировкой.

По классике, воспользуемся DIE для получения дополнительной информации. 

Как и прошлые исследуемые, это PE файл, написан на C/C++, а используемый компилятор — Microsoft Visual C/C++ 2017. Но здесь злоумышленник пренебрег использованием метода, который изменяет дату компиляции, что не является таким уж и критичным. 

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

Давайте обрисую вам общую инфраструктуру. 

  1. Первый этап. Начальный загрузчик. Исключительно скачивание необходимых файлов для выполнения следующего шага.

  2. Второй этап. Вторичный загрузчик. Представлен библиотекой UpdateTask.dll, которая эксплуатирует уязвимость CVE-2015-2291, повышает привилегии и отключает защитник Windows. Также загружает дроппер третьей ступени.

  3. Третий этап. Снова дроппер. Скачивает основную полезную нагрузку в виде Enigma Stealer.

  4. Четвертый этап. Развертывание Enigma. 

Анализ первого этапа

Общую информацию о дроппере первого этапа вы уже видели выше, поэтому перейдем непосредственно к краткому анализу кода. Также затронем особенности, присущие именно этому типу вредоносного ПО. 

По классике, начинаем с импортируемых библиотек, их всего-то четыре:

  • USER32.dll

  • ADVAPI32.dll

  • KERNELL.dll

  • RPCRT4.dll 

Этот загрузчик выполняет следующую цепочку процессов: 

  • l. Расшифровка зашифрованных строк.

  • ll. Создание мьютекса и загрузка второй ступени.

l. Расшифровка зашифрованных строк

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

Хеширование API — это метод, который вредоносные программы используют для сокрытия потенциально опасных API функций от статического обнаружения. Простыми словами, вредонос маскирует свои запросы к функциям определенных библиотек, чтобы остаться в тени и уйти от глаз антивируса. 

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

Итак, давайте более подробно разберем хеширование вредоносных функций в нашем образце первого этапа. 

Допустим, очевидно вредоносная функция «CreateMutexA», отвечающая за проверку и создания мьютекса. 

Мью́текс — примитив синхронизации, обеспечивающий взаимное исключение выполнения критических участков кода.

Говоря уж совсем простым языком — это простая проверка, запущен ли уже процесс вируса на данном устройстве или нет.

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

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

И как оказалось, Гидра снова не справилась. Показав таблицу импорта из четырех .dll файлов, что оказалось неверным. На самом деле вредонос задействует более 15 системных файлов.

ll. Создание мьютекса и загрузка второй ступени  

Сперва вредонос извлекает MachineGUID (цифровой идентификатор системы), происходит это с помощью обращения к реестру Windows по следующему пути: 

SOFTWARE\ Microsoft\Cryptography\MachineGuid

Также полученное значение будет использоваться в качестве ID на командном сервере. 

Затем вредонос удаляет следующий путь реестра:

 KCU\SOFTWARE\Intel  

Иногда безвозвратно. Но иногда создает его заново с двумя новыми значениями HWID и ID. Или автор не понимает смысла этого действия, или оно действительно лишено смысла. 

Следом происходит создание мьютекса: 

После этого происходит связь с командным сервером, IP-адрес которого был зашифрован с помощью того же самого пользовательского Мурхеша, и выглядит следующим образом: 

193.56[.]146.29

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

Вредонос отправляет на сервер идентификатор системы и версию .NET Framework. 

Но чтобы произвести загрузку следующего этапа, вирус уже будет связываться с API бота в Telegram, запрос построен в виде обычного обращения к файлу: 

https://api[.]telegram[.]org/bot/TOKEN/updatetask.dll

Затем происходит отправка сообщения «Бот получил», и от этого стартует уже вторая ступень.

Краткий анализ второго этапа

Как я уже писал выше, полезная нагрузка этого этапа представлена в виде .dll файла. Размером она в 498 КБ и написана на C++. 

Имеет вредоносный .dll две основные функции. 

  1. Отключить Microsoft Defender путем развертывания вредоносного драйвера. Та самая эксплуатация CVE-2015-2291, описанной ранее. 

  2. Загрузка и выполнение следующего этапа. 

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

Делается это с помощью API запроса к функции GetTokenInformation: 

Далее производится удаление системного драйвера Защитника Windows и, используя уязвимость, вредонос загружает свой. Примечательно, что имя этого файла написано на кириллице — драйвер.sys. 

После этого производится закрепление в системе, дроппер вносит себя в планировщик задач и реестр. 

И наконец происходит загрузка и запуск следующего этапа, он также представлен дроппером. В самом скачивании нет ничего примечательного, оно происходит аналогично через Telegram API.

Краткий анализ третьего этапа

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

На этот раз он написан на C# и весит всего 11 КБ. 

Его единственной функция — скачать окончательную полезную нагрузку в виде стиллера Enigma. Но зачем-то он имеет возможность контролироваться с помощью того же API Телеграм. Злоумышленник, если просто передумает, может остановить выполнение финальной фазы.

Анализ финальной фазы: Enigma Stealer

Наконец—то. Следующие данные мы получаем после простого визуального осмотра стиллера: 1534 KБ, исходное имя — stub.exe и копирайтинг, который ссылается на GitHub репозиторий — Stealerum. 

И на этом моменте автор потерял себя, надежда увидеть что-то уникальное и эксклюзивное полностью исчезла. 

Как оказалось, Enigma является модифицированной версией этого самого репозитория. 

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

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

Это «Timestomping», он представляет собой антикриминалистический метод, используемый для того, чтобы ввести следствие и специалистов быстрого реагирования в заблуждение.

Вирустотал показал замечательные показатели обнаружения: 

А теперь непосредственно к делу. Для реверс-инжиниринга вредоносов,  написанных с помощью C#, мы будем использовать следующий сетап утилит: 

  1. DNSpy — декомпилятор, дизассемблер и дебаггер в одном. Хороший, простой и бесплатный. 

  2. Reco & DotPeek — запасной вариант, выполняют те же функции. И уже неоднократно фигурировали в моих статьях.

Вскрываем и анализируем. Поехали. 

По классике, разметим основной алгоритм работы вредоноса. 

  • Создание рабочей директории и загрузка конфигурационных файлов. 

  • Сбор информации о системе и кража данных. 

  • Отправка данных злоумышленнику через телеграм-бота. 

Создание рабочей директории и загрузка конфигурационных файлов

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

Сразу после этого происходит процесс обработки конфига вредоноса, если он отсутствует — производится его загрузка с командного сервера. 

Конфигурация нашего вредоноса выглядит следующим образом: 

 

Исходя из этого мы можем определить используемые модули и базовые возможности стиллера. Основными являются Keylogger и Grabber. 

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

Grabber — модуль, отвечающий за непосредственно сбор печенек и других файлов. 

Затем вредонос начинает собирать системную информацию и крадет информацию о пользователях, токены и пароли из различных веб-браузеров и приложений, таких как Google Chrome, Microsoft Edge, Microsoft Outlook, Telegram, Signal, OpenVPN и других. Также вредонос создает снимки экрана и отправляет все данные в Telegram. 

После чего собранные данные будут помещены в архив посредством «CreateArchive», это вы можете увидеть на скриншоте, как и список собираемой информации: 

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

Краткий динамический анализ вредоноса

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

Для динамического анализа у нас уже имеется следующий сетап утилит (все они находятся в открытом доступе):

  1. ProcessHacker — простенько и со вкусом, понаблюдаем за тем, как вирус взаимодействует с другими .dll и системой. 

  2. TCPView — утилита, которая прослеживает исходящие TCP соединения. 

  3. Regshot — очень простое приложение с открытым исходным кодом, которое позволит просмотреть изменения в реестре после запуска вредоноса. 

По классике, делаем слепок нашего реестра, открываем все приложения и наблюдаем. 

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

Затем появляются ещё несколько процессов, которые уже начинают получение какой-то информации с того же самого IP-адреса. Так и происходит загрузка второй ступени. 

Далее в ProcessHacker начинает маячить новый процесс Update.exe, нагружает центральный процессор на максимум и утихает. 

На этом моменте, если проверить планировщик задач Windows, можно увидеть следующее: 

Это свидетельствует об успешном выполнении второй ступени вредоноса, ведь задача отвечает за ежедневное выполнение вредоносного .dll файла updateTask. 

На снимках реестра можно увидеть то самое удаление раздела Intel в реестре Windows: 

Но после этого выполнение прервалось по неизвестным мне причинам. 

Немного о командном PHP сервере

Всего мы успели заметить два IP адреса, первый исходит от начальной ступени, второй же — от вредоносного .dll. 

Второй нам не особо интересен, так как ссылается сразу же на API Телеграма: 

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

При переходе по этому айпи адресу нас встретила очень неприветливая форма авторизации, но меня посетила мысль проверить доступность файла info.php. И оказалось, что здесь он присутствовал. 

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

А сам информационный файл выглядел так: 

Дениска Хакер? Интересно. Но что более поражающее, этот сервер, скорее всего, расположен в Москве, но я не исключаю возможности, что эта информация была указана с целью ввести следствие в заблуждение: 

Выводы

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

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

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

На данный момент Enigma и его дропперная инфраструктура не представляют особой опасности. Ведь каждая его ступень с легкостью определяется большинством антивирусных приложений.  

А на этом у меня все. Бывайте. 


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

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

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


  1. anzay911
    00.00.0000 00:00

    Когда уже закончатся пользователи, открывающие файлы от неизвестных источников?


    1. czz
      00.00.0000 00:00
      +1

      Представьте себе, такой файл может прийти и от вполне известного источника


  1. PowerMetall
    00.00.0000 00:00

    *.word.exe

    Ммда. Судя по такому - расчитано на условных домохозяек. А у них криптовалюта вряд ли имеется