Мы, специалисты PT Expert Security Center, регулярно отслеживаем угрозы ИБ, в том числе как ранее известные, так и впервые обнаруженные вредоносные программы. Во время такого мониторинга в нашу песочницу PT Sandbox попал любопытный образец вредоносного ПО. Согласно первым результатам анализа трафика, он походил на RedLine — самый популярный инфостилер в киберпреступных каналах и чатах в Telegram за последние три года. Однако дальнейшее исследование показало, что пойманный вредонос — BlueFox. Это свежий инфостилер, который хоть и недавно появился в хакерской среде, но уже успел засветиться за рубежом.

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

Как был обнаружен BlueFox

В ходе анализа поступающего сетевого трафика были обнаружены подключения к внешним серверам. Распределение пакетов (см. рис. 1) в соединениях существенно коррелировало с распределением пакетов известного ранее похитителя учетных данных RedLine. Энтропия в этих соединениях была значительно выше, чем у RedLine, который использует MC-NMF (.NET Message Framing Protocol). В результате было выдвинуто предположение: это новая версия RedLine, поддерживающая шифрование без обертки в протокол. Наши инструменты поиска похожего трафика среагировали на последовательность нескольких этапов обмена данными с сервером, типичных для RedLine, однако исследуемые передаваемые данные были зашифрованы.

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

Второй этап — отправка сервером клиенту задания на сбор данных. Оно содержит шаблоны имен файлов и пути расположения похищаемой информации.

Третий этап — непосредственно эксфильтрация клиентских данных в соответствии с заданием сервера.

Общая классификация поступившего трафика (кража учетных данных, снимков экрана, токенов авторизации и т. п.) точно указывает на работу инфостилера.

Рисунок 1. Распределение пакетов в TCP-потоке и состояние протокола
Рисунок 1. Распределение пакетов в TCP-потоке и состояние протокола

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

Извлечение образца для анализа

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

Рисунок 2. Упакованный образец стилера
Рисунок 2. Упакованный образец стилера

Чтобы получить распакованный файл, мы запустили исходный образец на виртуальной машине и извлекли его из памяти при помощи программы pd64.exe (см. рис. 3).

Рисунок 3. Распакованный образец стилера
Рисунок 3. Распакованный образец стилера

В секции .data (см. рис. 4) распакованного образца стилера в открытом виде находился еще один исполняемый файл с символами MZ в первых двух байтах (см. рис. 5). Запустив его отдельно, мы выяснили, что именно этот исполняемый файл создает нужный нам трафик. Поэтому далее будем работать только с ним, к тому же в остальных файлах больше нет интересной для анализа информации.

Рисунок 4. Секции распакованного образца стилера
Рисунок 4. Секции распакованного образца стилера
Рисунок 5. Секция .data в HEX-представлении
Рисунок 5. Секция .data в HEX-представлении

Определение семейства вредоносной программы

Первым делом мы обратили внимание на файлы ресурсов образца, а именно на version.txt (см. рис. 6). Большая часть информации в нем не несет какого-либо смысла, но есть название программы BlueFox2.0.8.exe.

Рисунок 6. Файл version.txt вредоносного образца BlueFox
Рисунок 6. Файл version.txt вредоносного образца BlueFox

Поиск по названию привел к статье с похожими по структуре, размеру и поведению образцами (пример на сайте VirusTotal).

Описание BlueFox

Стилер BlueFox распространяется по схеме MaaS (malware as a service): автор программы продавал ее на форумах XSS, BHF и в даркнете.

Первая версия BlueFox появилась в декабре 2021 года и продавалась по цене 150 $ в месяц, но не снискала популярности. Скорее всего, помешала конкуренция: в то время был взлет популярности RedLine, который продавался по той же цене. Вторая версия появилась в сентябре 2022 года по цене 350 $. Она оказалась успешнее для злоумышленников: автор закрыл продажи, так как набрал достаточную клиентскую базу.

Описание стилера показано на рисунке 7. Автор подает ВПО как универсальное решение для получения и обработки большого количества информации с личным сервером и собственным протоколом связи.

Рисунок 7. Описание BlueFox
Рисунок 7. Описание BlueFox

Функциональные возможности программы не отличаются оригинальностью, другие стилеры (RedLine, Raccoon и т. п.) имеют похожие характеристики (см. рис. 8).

Рисунок 8. Функциональные возможности исполняемого файла
Рисунок 8. Функциональные возможности исполняемого файла

Однако доступная только из даркнета панель управления BlueFox вызывает интерес. Ее описание показано на рисунке 9.

Рисунок 9. Функциональные возможности панели управления BlueFox
Рисунок 9. Функциональные возможности панели управления BlueFox

Панель вредоноса имеет удобный информативный интерфейс со статистикой, поиском и большим количеством параметров (см. рисунки 10–13).

Рисунок 10. Интерфейс BlueFox, страница статистики
Рисунок 10. Интерфейс BlueFox, страница статистики
Рисунок 11. Интерфейс BlueFox, последние собранные данные
Рисунок 11. Интерфейс BlueFox, последние собранные данные
Рисунок 12. Интерфейс BlueFox, поиск по журналам
Рисунок 12. Интерфейс BlueFox, поиск по журналам
Рисунок 13. Интерфейс BlueFox, настройка загрузчика
Рисунок 13. Интерфейс BlueFox, настройка загрузчика

Автор стилера также показал пример собранной и обработанной информации, среди которой есть характеристики компьютера, страна, IP-адрес и расположение файлов с паролями (см. рисунок 14).

Рисунок 14. Собранная стилером информация
Рисунок 14. Собранная стилером информация

Анализ образца BlueFox

Анализируемый образец сильно обфусцирован, что затрудняло его исследование (см. рис. 15).

Рисунок 15. Обфусцированный код вредоносного образца
Рисунок 15. Обфусцированный код вредоносного образца

Для устранения обфускации использовалась программа NETReactorSlayer. Она помогла частично распутать код и облегчила нам дальнейший анализ (см. рис. 16).

Рисунок 16. Снятие обфускации с вредоносного образца
Рисунок 16. Снятие обфускации с вредоносного образца

Без подключения к серверу образец не проявляет активности, поэтому начнем разбор ВПО с анализа его трафика. По словам автора стилера, программа использует собственный протокол передачи данных в зашифрованном виде (см. рис. 17).

Рисунок 17. Связь с сервером
Рисунок 17. Связь с сервером

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

Рисунок 18. Формирование сетевого пакета от компьютера-жертвы
Рисунок 18. Формирование сетевого пакета от компьютера-жертвы

Для наглядности на рисунке 19 показан типичный сетевой пакет. Красным выделена длина полезной нагрузки сообщения — в этом случае 0x30, а зеленым — флаг-индикатор. Все остальные байты — полезная нагрузка. Так как флаг равен 1, полезная нагрузка в сообщении зашифрована.

Рисунок 19. Типичный зашифрованный сетевой пакет
Рисунок 19. Типичный зашифрованный сетевой пакет

Рассмотрим также первый пакет клиента, так как он пригодится для обнаружения стилера. Вся полезная нагрузка – это число 0x19 (см. рис. 20).

Рисунок 20. Первый сетевой пакет от компьютера жертвы
Рисунок 20. Первый сетевой пакет от компьютера жертвы

Большой смысловой нагрузки этот пакет не несет, число 0x19 — простая константа для этой версии стилера (см. рис. 21–22). В предыдущих версиях она равна 0x18 (см. рис. 23).

Рисунок 21. Отправка константы на сервер
Рисунок 21. Отправка константы на сервер
Рисунок 22. Константа в анализируемой версии стилера
Рисунок 22. Константа в анализируемой версии стилера
Рисунок 23. Константа в старых версиях стилера
Рисунок 23. Константа в старых версиях стилера

Полезная нагрузка с обеих сторон шифруется одним и тем же алгоритмом, что подтверждают части кода, отвечающие за шифрование и дешифрование данных (см. рис. 24 и 25).

Рисунок 24. Алгоритм шифрования данных
Рисунок 24. Алгоритм шифрования данных
Рисунок 25. Алгоритм дешифрования данных
Рисунок 25. Алгоритм дешифрования данных

В обоих случаях используется симметричный алгоритм блочного шифрования AES (Advanced Encryption Standard) в режиме ECB (electronic code book) с дополнением PKCS7.

Ключ для AES и его длина передаются в первом сообщении от сервера (см. рис. 26). Красным выделена длина ключа — 0x18 (192 бита), зеленым — сам ключ (081B5A91C24799F374F8F24D03BE7A964EEA4316F0B6AF25).

Рисунок 26. Ключ шифрования и его длина
Рисунок 26. Ключ шифрования и его длина

Зная алгоритм и ключ шифрования, можно расшифровать весь имеющийся трафик. Дешифруем полезную нагрузку из сообщения, показанного на рисунке 19 (см. рис. 27). Видно, что был передан UUID, который используется для идентификации компьютера жертвы на сервере.

Рисунок 27. Расшифрованная полезная нагрузка
Рисунок 27. Расшифрованная полезная нагрузка

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

Рисунок 28. Расшифрованная конфигурация
Рисунок 28. Расшифрованная конфигурация

Образец проходит по элементам списка из конфигурации, проверяет наличие файла в системе и, если он есть, читает и обрабатывает файл (см. рис. 29).

Рисунок 29. Работа с конфигурацией
Рисунок 29. Работа с конфигурацией

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

Рисунок 30. Попытка получить доступ к файлу из конфигурации
Рисунок 30. Попытка получить доступ к файлу из конфигурации

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

Рисунок 31. Запись файла в память
Рисунок 31. Запись файла в память
Рисунок 32. Обработка открытых файлов в памяти
Рисунок 32. Обработка открытых файлов в памяти

Стилер сохраняет полученные ранее данные в списке, шифрует его и отправляет на сервер (см. рис. 33).

Рисунок 33. Отправка собранных данных на сервер
Рисунок 33. Отправка собранных данных на сервер

Чтобы подтвердить результаты анализа, расшифруем сетевой пакет от устройства жертвы, который был отправлен после получения конфигурации. Сообщение содержит описанный выше UUID и эксфильтрованные данные в формате SQLite, о чем говорит строка SQLite format 3 (см. рис. 34).

Рисунок 34. Часть эксфильтрованных данных
Рисунок 34. Часть эксфильтрованных данных

Эксфильтрованные данные показаны в приложении для просмотра баз данных, чтобы можно было увидеть их структуру (см. рис. 35).

Рисунок 35. Структура эксфильтрованных данных
Рисунок 35. Структура эксфильтрованных данных

Самой интересной кажется таблица с учетными данными: в ней должно находиться большинство украденных сведений (см. рис. 36).

Рисунок 36. Структура таблицы с учетными данными
Рисунок 36. Структура таблицы с учетными данными

На рисунке 37 показаны учетные данные, которые смог украсть стилер.

Рисунок 37. Украденные учетные данные
Рисунок 37. Украденные учетные данные

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

После отправки данных программа удаляет себя с компьютера жертвы следующей командой:cmd.exe /C timeout 5 & del "$PATH

Выполняем сетевой детект

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

Рисунок 38. Расшифрованные сообщения BlueFox в сетевом трафике
Рисунок 38. Расшифрованные сообщения BlueFox в сетевом трафике

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

Количество байтов во втором сетевом сообщении — 53: пять байтов служебной части и три блока AES по 16 байтов каждый. Но искать в сетевых потоках высоконагруженных систем анализа трафика все пакеты с длиной 53 байта и с небольшим количеством контента — не лучшая идея. Поэтому, учитывая первый пакет длиной 9 байтов, мы можем точно позиционировать второй пакет в клиентском потоке, объединить правила в цепочку и приправить небольшим количеством контента. Правило для детектирования второго клиентского пакета выглядит следующим образом:

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

Дополнительные функции вредоноса

В дополнение рассмотрим функциональные возможности образца, не продемонстрированные им при анализе в песочнице, но доступные владельцу сервера (см. рис. 39).

Рисунок 39. Дополнительные функции BlueFox
Рисунок 39. Дополнительные функции BlueFox

На рисунке 40 показан алгоритм создания снимка экрана, после чего снимок отправляется на сервер.

Рисунок 40. Создание снимка экрана
Рисунок 40. Создание снимка экрана

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

Рисунок 41. Загрузка файла и его запуск
Рисунок 41. Загрузка файла и его запуск

Мы обнаружили один примечательный случай, когда BlueFox скачивал артефакты, которые использовал другой стилер — Raccoon (индикаторы Raccoon, анализ BlueFox). Адреса, с которых стилер загружал артефакты, показаны на рисунке 42.

Рисунок 42. Адреса, с которых BlueFox скачивал артефакты Raccoon
Рисунок 42. Адреса, с которых BlueFox скачивал артефакты Raccoon

При тестировании Raccoon в песочнице ANY.RUN появились те же адреса (см. рис. 43).

Рисунок 43. Загрузка артефактов в ANY.RUN стилером Raccoon
Рисунок 43. Загрузка артефактов в ANY.RUN стилером Raccoon

Один из артефактов — стилер Vidar. Иными словами, стилеры BlueFox и Raccoon скачали и запустили другой стилер:

Вывод

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

Авторы:

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

Файловые индикаторы

Файл

SHA-256

Setup.exe

acc4857463042ceebf8e7dfce4f1f665621c7b2645f015defaa2a2dab804a819

.data

8935e6e7675d8f12eb75934a57f0c7e6369d4d4a3a6f729a4d791dc18c42c498

BlueFox2.0.8.exe

9ed0f76449bbc6d5d6db12dfc527740c072436c4379248855729321032d91bb7

7685746235625412.bin

247f844391e0d6917f94c37857928576d32552d62d8ef6af7349e39af61f3257

v0.9_rebranding_64.exe

5f6878cf4aa52dd5fa9ed42b664333b0fc7b28820a36cbe59dce16829ffa808f

Сетевые индикаторы

IP-адрес

Порт

185.53.46.24

64486

45.8.147.121

29806

45.8.147.133

13867

45.133.216.192

34323

5.182.39.226

2304

45.8.147.31

15100

94.131.104.43

6573

45.89.54.21

28692

31.41.244.152

47567

Адреса загрузки сопутствующих вредоносных программ:

  • hххp://77.73.133[.]31/v0.9_rebranding_64.exe;

  • hххp://193.149.180[.]210/GdjrtfHETyier5rfVMD/7685746235625412.bin.

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


  1. RalphMirebs
    09.12.2022 11:32

    В СНГ не работает. Хм… Дискриминация, солидарность или страх?


    1. HappyGroundhog
      09.12.2022 14:20

      Есть негласное правило "Не работать по RU".