Отчеты о целевых атаках (APT)

Lazarus распространяет протрояненный DeFi-кошелек

APT-группа Lazarus специализируется в первую очередь на получении финансовой выгоды. В последнее время криптовалютный бизнес — ее основная цель. По мере того как стоимость криптовалют растет, а невзаимозаменяемые токены (NFT) и децентрализованные финансы (DeFi) привлекают все больше внимания, Lazarus продолжает активно атаковать криптовалютный сектор.

Недавно мы обнаружили протрояненное DeFi-приложение, скомпилированное в ноябре 2021 года. Оно содержит легитимную программу DeFi Wallet для работы с криптовалютным кошельком, которая при выполнении имплантирует в систему вредоносный файл — полнофункциональный бэкдор, способный контролировать скомпрометированное устройство. Проанализировав функции этого бэкдора, мы обнаружили многочисленные совпадения с другими инструментами группы Lazarus.

Для этой атаки оператор вредоносного ПО использовал исключительно скомпрометированные веб-серверы, расположенные в Южной Корее. Чтобы перехватить управление ими, мы тесно сотрудничали с корейским центром реагирования KrCERT, и в результате смогли исследовать командный сервер группы Lazarus. Инфраструктура серверов сконфигурирована для атаки в несколько этапов. Серверы первого этапа распространяют бэкдор, а цель серверов второго этапа — связь с имплантами. Такая схема характерна для инфраструктуры Lazarus.

Краткая предыстория

В середине декабря 2021 года мы заметили подозрительный файл, загруженный на VirusTotal. На первый взгляд он выглядел как приложение для работы с децентрализованными финансами (DeFi). Однако при более тщательном анализе мы выяснили, что файл запускает цепочку заражения. При запуске приложение помещает в систему и вредоносный файл, и установщик легитимного приложения. Вредоносная программа выполняется с использованием пути к протрояненному установщику. Затем созданный бэкдор заменяет протрояненное приложение на легитимное, чтобы скрыть следы первого.

Цепочка заражения

Цепочка заражения

Первичное заражение

Хотя до сих пор не ясно, как именно злоумышленники заставляют жертву запускать протрояненное приложение (0b9f4612cdfe763b3d8c8a956157474a), мы предполагаем, что для этого они используют целевые фишинговые письма или сообщения в социальных сетях. Протрояненное приложение запускает цепочку заражения. Установочный пакет маскируется под приложение DeFi Wallet и содержит легитимный двоичный файл и вредоносный установочный файл.

После выполнения установочный файл получает расположение вредоносной программы следующего этапа (C:\ProgramData\Microsoft\GoogleChrome.exe) и дешифрует его с помощью операции XOR с однобайтовым ключом 0x5D. При подготовке к следующему этапу заражения установочный файл записывает первые 8 байт, включая заголовок MZ, в файл GoogleChrome.exe и извлекает остальные 71 164 байта из секции .data протрояненного приложения. Затем созданный зловред загружает ресурс CITRIX_MEETINGS из своего тела и сохраняет его по адресу C:\ProgramData\Microsoft\CM202025.exe. Полученный файл представляет собой легитимное приложение DeFi Wallet. Наконец, установщик выполняет ранее созданную вредоносную программу, используя имя файла как параметр:

C:\ProgramData\Microsoft\GoogleChrome.exe «[текущее имя файла]»

Схема создания зловреда

Схема создания зловреда

Создание бэкдора

Зловред (d65509f10b432f9bbeacfc39a3506e23), сгенерированный указанным выше протрояненным приложением, маскируется под безобидный браузер Google Chrome. После запуска зловред проверяет, что он был запущен с аргументом, прежде чем начать копировать легитимное приложение C:\ProgramData\Microsoft\CM202025.exe по адресу, представленному в виде параметра командной строки, то есть переписывает исходный протрояненный установщик. Вероятнее всего, это попытка скрыть следы присутствия этого установщика. Затем зловред выполняет легитимный файл, чтобы усыпить бдительность жертвы, демонстрируя процесс установки безобидной программы. Когда пользователь запускает новую программу, он видит программное обеспечение DeFi Wallet[1] с открытым исходным кодом.

Снимок экрана протрояненного приложения

Снимок экрана протрояненного приложения

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

Смещение Длина (в байтах) Описание
0x00 4 Флаг для начала коммуникации с командным центром
0x04 4 Случайное значение для выбора командного сервера
0x08 4 Случайное значение для идентификации жертвы
0x0C 0x208 Адрес командного сервера
0x214 0x208 Адрес командного сервера
0x41C 0x208 Адрес командного сервера
0x624 0x208 Адрес командного сервера
0x82C 0x208 Адрес командного сервера
0xA34 0x464 Буфер для системных данных
0xE98 0x400 Полный путь к файлу cmd.exe
0x1298 0x400 Путь к временной папке
0x1698 8 Время запуска бэкдора
0x16A0 4 Временной интервал
0x16A4 4 Флаг для сбора информации о логических дисках
0x16A8 8 Флаг для составления списка данных о сеансах
0x16B0 8 Значение времени для сбора информации о логических дисках и сеансах

Зловред случайным образом выбирает адрес командного сервера и отправляет на него сигнал. Этот сигнал представляет собой жестко прописанное и незашифрованное значение типа DWORD 0x60D49D94. Ответ от сервера содержит то же самое значение. Если от командного сервера приходит ожидаемое значение, зловред начинает работать как бэкдор.

Следуя дальнейшим указаниям командного сервера, бэкдор шифрует данные с использованием заранее заданного метода. Для шифрования используется алгоритм RC4 и жестко заданный ключ 0xD5A3. После шифрования данные дополнительно кодируются по методу base64.

Бэкдор генерирует параметры POST с жестко заданными именами. Тип запроса (msgID), идентификатор жертвы и случайным образом сгенерированное значение объединяются в параметр jsessid. Зловред также создает параметр cookie, в котором содержатся четыре случайным образом сгенерированных четырехбайтовых значения. Эти значения тоже шифруются по алгоритму RC4 с дополнительным кодированием base64. Анализируя скрипт командного сервера, мы заметили, что зловред использует не только параметр jsessid, но и параметр jcookie.

Структура параметра jsessid

Структура параметра jsessid

Показанный ниже HTTP-запрос – попытка зловреда связаться с командным сервером, используя тип запроса 60d49d98 и случайным образом сгенерированное значение cookie.

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

Команда Описание
0x60D49D97 Настройка времени с текущим значением временного интервала (по умолчанию 10)
0x60D49D9F Настройка времени с использованием данных, полученных от командного сервера
0x60D49DA0 Сбор информации о системе: IP-адрес, имя компьютера, версия ОС, архитектура ЦП
0x60D49DA1 Сбор информации о дисках, в том числе о типе и объеме свободного пространства
0x60D49DA2 Составление списка файлов (с указанием имени, размера и времени последнего изменения)
0x60D49DA3 Составление списка процессов
0x60D49DA4 Прекращение процесса
0x60D49DA5 Смена рабочего каталога
0x60D49DA6 Подключение к заданному IP-адресу
0x60D49DA7 Установка временных меток
0x60D49DA8 Выполнение команды Windows
0x60D49DA9 Безопасное удаление файла
0x60D49DAA Создание нового процесса с помощью API CreateProcessW
0x60D49DAB Создание нового процесса с помощью API CreateProcessAsUserW
0x60D49DAC Создание нового процесса с высоким уровнем целостности
0x60D49DAD Загрузка файла с командного сервера и сохранение в заданном расположении
0x60D49DAE Отправка информации о времени создания и содержимом файла
0x60D49DAF Добавление файлов в файл .cab с последующей отправкой на командный сервер
0x60D49DB0 Составление списка файлов в заданном расположении
0x60D49DB1 Отправка конфигурации на командный сервер
0x60D49DB2 Получение новой конфигурации от командного сервера
0x60D49DB3 Установка конфигурации на текущее время
0x60D49DB4 Приостановка на 0,1 с и продолжение работы

Инфраструктура

В этой кампании группа Lazarus использовала исключительно скомпрометированные веб-серверы, расположенные в Южной Корее. В тесном сотрудничестве с корейским центром KrCERT мы смогли отследить и проанализировать скрипт с одного из скомпрометированных серверов. Описанный в этом разделе скрипт находился по следующему пути:

Он представляет собой ASP-файл, написанный на языке VBScript.Encode, — Lazarus часто использует такие скрипты для своих командных серверов. После декодирования видно, что строка 60d49d95 используется как код сообщения об ошибке, а строка 60d49d94 – как сообщение об успехе. Кроме того, история подключений записывается в файл stlogo.jpg, а адрес командного сервера для следующего этапа сохраняется в файле globals.jpg в той же папке.

Конфигурация скрипта командного сервера

Конфигурация скрипта командного сервера

Скрипт проверяет значение, доставленное в параметре jcookie, и если его длина превышает 24 символа, извлекает первые восемь символов как значение msgID. В зависимости от значения msgID вызываются разные функции. Команды для бэкдора и результаты исполнения команд, отправляемые бэкдором, сохраняются в глобальных переменных. Мы уже видели эту схему в действии в случае с кластером Bookcode[2]. Чтобы обеспечивать обмен данными между бэкдором и командным сервером второго этапа, скрипт использует следующие переменные как флаги и буферы:

  • lFlag: флаг, сигнализирующий о том, что имеются данные для доставки бэкдору
  • lBuffer: буфер для хранения данных, которые позже будут отправлены бэкдору
  • tFlag: флаг, сигнализирующий о наличии ответа от бэкдора
  • tBuffer: буфер для хранения данных, поступающих от бэкдора
msgID Название функции Описание
60d49d98 TFConnect Сохраняет значение TID (идентификатор жертвы) в файл журнала, отправляет значение jcookie с IP-адресом клиента после того, как получит адрес командного сервера следующего этапа из конфигурационного файла (globals.jpg). Перенаправляет в клиент запрос от сервера следующего этапа.
60d49d99 TConnect Доставляет команду бэкдору.

Если lFlag имеет значение true, отправляет IBuffer в клиент. Сбрасывает IBuffer и устанавливает для lFlag значение false. В противном случае сбрасывает tBuffer и устанавливает для tFlag значение false.

60d49d9a LConnect Отправляет команду и возвращает результат выполнения команды.

Устанавливает значение lBuffer как параметр jcookie, доставляя буфер tBuffer в клиент.

60d49d9c Check Собирает информацию о хосте (имя компьютера, версия ОС). Удаляет конфигурационный файл, в котором сохранен адрес командного сервера следующего этапа, если такой файл имеется. Затем сохраняет новую конфигурацию с полученными данными, используя параметр jcookie.
60d49d9d LogDown Доставляет файл журнала после кодирования по методу base64, затем удаляет его.
Другие значения Н/д Записывают подключения с неизвестными/неожиданными значениями msgID (тип запроса) в файл журнала, записи маркируются метками xxxxxxxx.

Атрибуция кибератак

Мы с высокой степенью уверенности считаем, что это вредоносное ПО связано с группой Lazarus, так как мы обнаружили похожий зловред в кластере вредоносного ПО CookieTime (японский центр JPCERT назвал LCPDot). До недавних пор кластер активно использовался группой Lazarus, мы наблюдали ее атаки на оборонный сектор с использованием CookieTime и предложения вакансий в качестве приманки. Мы уже опубликовали несколько отчетов об этом кластере для клиентов сервиса информирования об угрозах и нашли протрояненное приложение Citrix (MD5 5b831eaed711d5c4bc19d7e75fcaf46e) с такой же подписью кода, как и у зловреда CookieTime. Бэкдор, обнаруженный в ходе последнего расследования, и найденное ранее протрояненное приложение практически идентичны. Среди прочего они используют один и тот же метод связи с командным сервером, одни и те же функции бэкдора, процедуру генерирования случайных чисел и один и тот же метод шифрования данных подключения. Этот зловред также упоминается в отчете Ahnlab, которые рассматривают его связь с CookieTime (LCPDot).

Переключение бэкдора такое же, что и в CookieTime

Переключение бэкдора такое же, что и в CookieTime

В свою очередь, мы выяснили, что кластер CookieTime связан с кластерами Manuscrypt и ThreatNeedle, которые также приписывают группе Lazarus. Это относится не только к бэкдору, но и к скриптам командных серверов, которые демонстрируют несколько совпадений с кластером ThreatNeedle. В скриптах командных серверов мы обнаружили почти все имена функций и переменных, а это означает, что операторы повторно использовали базу кода и сгенерированные скрипты командных серверов для вредоносного ПО.

Скрипт командного сервера ThreatNeedle из расположения
roit.co[.]kr/xyz/adminer/edit_fail_decoded.asp
Скрипт командного сервера в данном случае

Почти идентичные скрипты для получения IP-адреса клиента

Скрипт командного сервера ThreatNeedle из расположения
edujikim[.]com/pay_sample/INIstart.asp
Скрипт командного сервера в данном случае

Похожие скрипты для сохранения данных в файл

Выводы

Во время предыдущего расследования мы выяснили, что группа BlueNoroff, тоже связанная с Lazarus, скомпрометировала DeFi-кошелек MetaMask. Как продемонстрировал последний случай, группы Lazarus и BlueNoroff пытаются доставить свое вредоносное ПО, не привлекая к нему внимания, и используют для привлечения жертв изощренные методы. Отрасль криптовалют и блокчейн-технологий продолжает развиваться и привлекать новые инвестиции. Поэтому мы полагаем, что интерес группы Lazarus к ней как основному источнику прибыли в ближайшее время не снизится.

Индикаторы компрометации

Протрояненное приложение DeFi

0b9f4612cdfe763b3d8c8a956157474a    DeFi-App.exe

Внедряемый бэкдор

d65509f10b432f9bbeacfc39a3506e23    %ProgramData%\Microsoft\GoogleChrome.exe

Похожий бэкдор

a4873ef95e6d76856aa9a43d56f639a4
d35a9babbd9589694deb4e87db222606
70bcafbb1939e45b841e68576a320603
3f4cf1a8a16e48a866aebd5697ec107b
b7092df99ece1cdb458259e0408983c7
8e302b5747ff1dcad301c136e9acb4b0
d90d267f81f108a89ad728b7ece38e70
47b73a47e26ba18f0dba217cb47c1e16
77ff51bfce3f018821e343c04c698c0e

Командные серверы первого этапа (легитимные, скомпрометированные)

hxxp://emsystec[.]com/include/inc[.]asp
hxxp://www[.]gyro3d[.]com/common/faq[.]asp
hxxp://www[.]newbusantour[.]co[.]kr/gallery/left[.]asp
hxxp://ilovesvc[.]com/HomePage1/Inquiry/privacy[.]asp
hxxp://www[.]syadplus[.]com/search/search_00[.]asp
hxxp://bn-cosmo[.]com/customer/board_replay[.]asp

Командные серверы второго этапа (легитимные, скомпрометированные)

hxxp://softapp[.]co[.]kr/sub/cscenter/privacy[.]asp
hxxp://gyro3d[.]com/mypage/faq[.]asp

Сопоставление с базой знаний MITRE ATT&CK

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

Тактика Метод Название метода
Execution T1204.002 User Execution: Malicious File (Выполнение с участием пользователя: вредоносный файл)
Использование протрояненного приложения для внедрения вредоносного бэкдора
Persistense T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder (Автозапуск при загрузке или входе в систему: ключи запуска в реестре / Папка автозагрузки)
Бэкдор внедряется в раздел реестра Run
Defense Evasion T1070.004 Indicator Removal on Host: File Deletion (Удаление признаков активности из системы: удаление файлов)
Протрояненное приложение заменяется на легитимное, чтобы скрыть следы присутствия в системе
T1070.006 Indicator Removal on Host: Timestomp (Удаление признаков активности из системы: изменение временных меток)
Бэкдор может изменять временные метки отдельных файлов
Discovery T1057 Process Discovery (Исследование процессов)
Бэкдор составляет список запущенных процессов
T1082   System Information Discovery (Исследование информации о системе)
Бэкдор собирает информацию о системе: IP-адрес, имя компьютера, версия ОС и архитектура ЦП
T1083 File and Directory Discovery (Исследование файлов и каталогов)
Бэкдор составляет список файлов в некоторых каталогах
T1124 System Time Discovery (Исследование системного времени)
Бэкдор собирает информацию о системе
Command and Control T1071.001 Application Layer Protocol: Web Protocols (Протокол прикладного уровня: веб-протоколы)
Использование HTTP как канала для связи бэкдора и командного сервера
T1573.001   Encrypted Channel: Symmetric Cryptography (Зашифрованный канал: симметричное шифрование)
Бэкдор использует шифрование по алгоритму RC4 и метод base64
Exfiltration T1041 Exfiltration Over C2 Channel (Эксфильтрация через канал управления)
Бэкдор отправляет собранные данные по каналам командных серверов

[1] https://github.com/DeFiCh/app
[2]Отчет об APT-угрозе: группа Lazarus собирает данные, связанные с Covid19.

Lazarus распространяет протрояненный DeFi-кошелек

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Азиатские APT-группировки: тактики, техники и процедуры

Делимся с сообществом подходами, которые используют азиатские APT-группировки при взломе инфраструктуры, и подробной информацией о тактиках, техниках и процедурах (TTPs) злоумышленников, основанной на методологии MITRE ATT&CK.

Как поймать «Триангуляцию»

Эксперты «Лаборатории Касперского» смогли получить все этапы «Операции Триангуляция»: эксплойты нулевого дня для iOS, валидаторы, имплант TriangleDB и дополнительные модули.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике