Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

В конце июля 2019 года мы обнаружили интересный образец вредоносного ПО группы TA505. 22 июля 2019 года он был загружен на сервис ANY.RUN для проведения динамического анализа. Наше внимание привлекло то, что среди выставленных тегов, помимо обыденного для TA505 Servhelper, также появился тег netsupport, а среди срабатываний сетевых сигнатур идентифицирован — одноименный NetSupport RAT.

cssqukxglw4w6ygse7dzg kw2jw - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 1. Дата загрузки ВПО и выставленные теги в онлайн-анализаторе ANY.RUN

h9hdg8qo0sxrox1jnippd8ka zo - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 2. Срабатывание сетевой сигнатуры на NetSupport RAT в песочнице ANY.RUN

На первый взгляд это может показаться странным: ведь бэкдор группы ServHelper и сам обладает внушительной функциональностью для контроля ПК жертвы. Самое время рассмотреть работу ВПО в подробностях.

NSIS- и PowerShell-дропперы

Исполняемый PE-файл, с которого начинается наш анализ, представляет собой установщик на платформе Nullsoft Scriptable Install System (NSIS). NSIS-скрипт, выполняющий процесс установки, извлекает и запускает вложенный PowerShell-скрипт:

xtajnurxwbyfsilz4yamr5cckmq - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 3. Инструкции NSIS-скрипта

Запущенный PowerShell-скрипт содержит закодированный в Base64 буфер (усечен на рисунке ниже для наглядности), который после декодирования расшифровывается алгоритмом Triple DES (3DES) в режиме CBC:

uoowr0t6nf0s2khnk2blkkgdk8c - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 4. Расшифровка данных в PowerShell-скрипте

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

Техника № 1: с использованием задачи SilentCleanup в планировщике задач:

  • Задача может быть запущена пользователем, но работает с повышенными привилегиями. В свойствах задачи прописан путь до исполняемого файла с использованием переменной среды %windir%. Значение переменной среды можно изменить (например, указать запуск PowerShell-скрипта), тогда запуск задачи приведет к исполнению PowerShell-скрипта с правами администратора без предупреждения UAC.
  • Злоумышленники применяют данную технику на системах Windows 8 и Windows 10.
  • Код, выполняющий данную технику, идентичен реализации модуля для фреймворка Metasploit.
4njo svmmajgn z2xmf5iuddj78 - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 5. Часть скрипта с техникой обхода задачей SilentCleanup

Техника № 2: с использованием системной утилиты sysprep.exe и техники DLL Side-Loading:

  • Сначала создается вспомогательный сценарий для перезапуска PowerShell-скрипта в каталоге C:\Windows\Temp. Затем формируется CAB-архив, который содержит вспомогательную DLL-библиотеку CRYPTBASE.dll (PowerShell-скрипт содержит как x86-, так и x64-версии библиотеки). Средствами системной утилиты wusa.exe данный архив распаковывается в каталог C:\Windows\System32\Sysprep. Затем запускается системная утилита sysprep.exe, которая загрузит ранее распакованную DLL-библиотеку, а она, в свою очередь, выполнит вспомогательный сценарий. В результате PowerShell-скрипт будет перезапущен с правами администратора без предупреждения UAC.
  • Злоумышленники применяют данную технику на системе Windows 7.
  • Подробное описание можно встретить в этой статье, а примеры реализации, например, в этом проекте на Github.
9jlvcdqsqskqepj5qxegbsxapky - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 6. Часть скрипта с техникой обхода утилитой sysprep.exe

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

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

  • строка декодируется Base64,
  • буфер разжимается с помощью Deflate,
  • строка повторно декодируется Base64.
eranbgnpwn2psafs1n0o0i5uv7s - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 7. Алгоритм декодирования полезной нагрузки

  • В результате в системе будут созданы следующие файлы:
  • %systemroot%\help\hlp11.dat — x86/x64-версия библиотеки RDP Wrapper Library. Применяется для расширения функциональности сервиса RDP, в том числе для возможности нескольких одновременных подключений. Важно отметить, что библиотека модифицирована: в начале исполнения линейным XOR декодируется строка c:\windows\help\hlp12.dat, затем по полученному пути загружается DLL-библиотека:
vljixm5vye ncz p5hkkl mfpjw - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 8. Расшифровка пути до DLL-библиотеки и ее загрузка

  • %systemroot%\help\hlp12.dat — x86/x64-версия бэкдора ServHelper, который будет рассмотрен в следующем разделе;
  • %systemroot%\help\hlp13.dat — конфигурационный файл для RDP Wrapper Library,
  • %systemroot%\system32\rdpclip.exe — компонент сервиса RDP для возможности обмениваться данными буфера обмена;
  • %systemroot%\system32\rfxvmt.dll — компонент сервиса RDP для передачи данных с применением технологий RemoteFX.

После извлечения и записи полезной нагрузки скрипт настраивает корректную работу её компонентов:

  • меняет владельца компонента rfxvmt.dll на NT SERVICE\TrustedInstaller и наделяет необходимыми правами;
  • изменяет значение порта для RDP-соединений со стандартного 3389 на 7201;
  • добавляет учетную запись сетевых сервисов в группу локальных администраторов;
  • регистрирует hlp11.dat как RDP-службу и перезапускает сервис;
  • удаляет созданные временные файлы.

ServHelper RAT → Dropper

Одним из результатов работы дропперов является DLL-библиотека hlp12.dat, которая представляет собой ВПО ServHelper. Может быть создана как x86-, так и x64-версия библиотеки в зависимости от битности ОС (принципиальных отличий между ними нет). Обе версии написаны на Delphi, упакованы UPX 3.95 (x64) и PeCompact 2.20 (x86). Наши коллеги из Proofpoint и Trend Micro ранее представляли анализ особенностей распространения и работы этого бэкдора. Арсенал возможностей нашего образца во многом сходится с тем, что уже известно: в частности, не изменился алгоритм расшифровки используемых строк (шифр Виженера):

ulmscymkg 0u1nk02c9kqxz8brs - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 9. Псевдокод расшифровки строк с помощью шифра Виженера

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

a bduux2q7geptwtgyeijtiqpzw - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 10. Незашифрованные домены и веб-ссылки

При обращении к одной из таких ссылок (hxxp://letitbe.icu/2.txt) происходит загрузка зашифрованного файла (MD5: 0528104f496dd13438dd764e747d0778). При анализе конца файла в шестнадцатеричном редакторе можно заметить частые повторения значения байта 0x09:

gm1o9ff vl6w12nr0dfxgxu78zu - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 11. Повторение байта 0x09 в скачанном файле

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

aw7klqin brodmhtoy7wccnhw9c - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 12. Функция шифрования однобайтовым XOR

bvptvd axazrevfus5vxogr5kuy - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 13. Передача однобайтового значения в функцию XOR в качестве аргумента

В результате расшифровки мы получим ZIP-архив со следующим содержанием:

itoiw2a gl6palkqplytqjv4ae4 - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 14. Содержимое расшифрованного ZIP-архива

Все файлы представляют собой легитимное ПО для удаленного управления ПК NetSupport Manager, которое не раз использовалось злоумышленниками из различных группировок.

qs1f1b0xwk9zrfddvzixc4mizhy - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 15. Описание ПО NetSupport Manager

Один из файлов (client32.ini) представляет собой конфигурационный файл, в котором указан адрес промежуточного шлюза, через который ПК жертвы будет соединяться со злоумышленниками:

upchfeck veyfpct418q8h1akre - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 16. Адрес злоумышленников в качестве шлюза NetSupport Manager

Такая опция имеет смысл в случае, если жертва находится за межсетевым экраном, а доступ в интернет ограничивается по портам. Для корректной работы в интернете требуется открыть доступ по крайней мере к двум портам, 80 (HTTP) и 443 (HTTPS), поэтому вероятность успешного соединения повышается.

В сентябре 2019 года мы обнаружили несколько аналогичных образцов ServHelper с существенно ограниченным набором возможностей. На примере одного из них (MD5: 5b79a0c06aec6126364ce1d5cbfedf66): среди ресурсов исполняемого PE-файла находятся зашифрованные данные со схожим характерным признаком в виде повторяющегося байта:

ueiytt k swonc2vfbnvcrnylos - Изучаем бэкдор ServHelper с NetSupport RAT. Часть вторая

Рис. 17. Зашифрованные данные в ресурсах ServHelper
Это вновь «заксоренный» одним байтом ZIP-архив, в котором находятся те же самые компоненты NetSupport Manager, правда на этот раз с другим промежуточным шлюзом: 179[.]43.146.90:443.

Выводы

В этой статье мы рассмотрели один из вариантов доставки и использования бэкдора группы TA505 — ServHelper. Кроме любопытных особенностей, предшествующих работе основного компонента (например, обхода UAC и повышения привилегий), мы заметили интересные метаморфозы основного бэкдора: базовая функциональность (кража данных, шпионаж и выполнение команд) дополнилась встраиванием еще одного инструмента для удаленного управления ПК — NetSupport RAT. Кроме этого, новые версии ServHelper уже не имели ключевых возможностей, делающих его полноценным бэкдором: теперь он выполняет только роль промежуточного дроппера для установки NetSupport RAT. Вероятно, злоумышленники нашли такой подход более эффективным как с точки зрения разработки, так и в плане возможности обнаружения. Однако список инструментов группы, представляющих для нас интерес, на этом не заканчивается.

Автор: Алексей Вишняков, Positive Technologies

https://habr.com