Операция TA505, часть вторая: изучаем бэкдор ServHelper с NetSupport RAT

Операция TA505, часть вторая: изучаем бэкдор ServHelper с NetSupport RAT

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение 

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

Дата загрузки ВПО и выставленные теги в онлайн-анализаторе ANY.RUN
Срабатывание сетевой сигнатуры на NetSupport RAT в песочнице ANY.RUN

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

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

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

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

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

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

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

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

  • Задача может быть запущена пользователем, но работает с повышенными привилегиями. В свойствах задачи прописан путь до исполняемого файла с использованием переменной среды %windir%. Значение переменной среды можно изменить (например, указать запуск PowerShell-скрипта), тогда запуск задачи приведет к исполнению PowerShell-скрипта с правами администратора без предупреждения UAC.
  • Злоумышленники применяют данную технику на системах Windows 8 и Windows 10.
  • Код, выполняющий данную технику, идентичен реализации модуля для фреймворка Metasploit.
Часть скрипта с техникой обхода задачей 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.
Часть скрипта с техникой обхода утилитой sysprep.exe

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

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

  • строка декодируется Base64,
  • буфер разжимается с помощью Deflate,
  • строка повторно декодируется Base64.
Алгоритм декодирования полезной нагрузки
  • В результате в системе будут созданы следующие файлы:
  • %systemroot%\help\hlp11.dat — x86/x64-версия библиотеки RDP Wrapper Library. Применяется для расширения функциональности сервиса RDP, в том числе для возможности нескольких одновременных подключений. Важно отметить, что библиотека модифицирована: в начале исполнения линейным XOR декодируется строка c:\windows\help\hlp12.dat, затем по полученному пути загружается DLL-библиотека:
Расшифровка пути до 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 ранее представляли анализ особенностей распространения и работы этого бэкдора. Арсенал возможностей нашего образца во многом сходится с тем, что уже известно: в частности, не изменился алгоритм расшифровки используемых строк (шифр Виженера):

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

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

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

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

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

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

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

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

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

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

Описание ПО NetSupport Manager

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

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

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

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

Зашифрованные данные в ресурсах ServHelper

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

Выводы

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

Источник


Report Page