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

DarkPulsar

В марте 2017 года группа хакеров, называющих себя «ShadowBrokers», опубликовала украденные данные, среди которые были два фреймворка: FuzzBunch and DanderSpritz. Первый фреймворк предлагает консольный интерфейс и в целом напоминает Metasploit. Он спроектирован по модульному принципу и целиком состоит из плагинов разных категорий, используемых для разведки, применения эксплойтов и изучения уже подконтрольных машин. Предназначение Fuzzbunch состоит в объединении множества утилит для удобства использования и возможности их комбинирования, например, когда выходные параметры одной утилиты являются входными параметрами для другой.

Второй фреймворк, DanderSpritz, — это, скорее, среда для контроля уже скомпрометированных хостов. Он написан на Java и предоставляет графический интерфейс с окнами, кнопками и меню. Похожие интерфейсы можно увидеть в административных панелях для управления бот-сетями. DanderSpritz включает в себя собственные бэкдоры и плагины для управления зараженными машинами и не имеющие отношения к FuzzBunch. Таким образом, FuzzBunch и DanderSpritz – это независимые платформы для осуществления кибершпионажа, которые, однако, имеют общие черты, поскольку созданы, судя по всему, одним производителем.

Как отмечалось выше, FuzzBunch содержит плагины разных типов, большинство из которых предназначены для изучения жертв, эксплуатации уязвимостей, удаленной работы с планировщиком задач, реестром, файловой системой и т.д. Также присутствует категория ImplantConfig, плагины в которой предназначены для управления зараженными машинами уже через имплант на этапе пост-эксплуатации. Одним из плагинов этой категории является DarkPulsar — бэкдор, предоставляющий функции удаленного управления. Он работает на стороне зараженного пользователя, и мы изучили его подробно, так как в первую очередь необходимо было обеспечить обнаружение этой программы.

В общем случае в комплект плагина из фреймворка FuzzBunch входят три файла:

  • %pluginName%-version.fb

Служебный файл фреймворка. Он дублирует заголовок из XML и включает в себя идентификатор плагина.

  • %pluginName%-version.exe

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

  • %pluginName%-version.xml

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

Согласно конфигурационному файлу, плагин DarkPulsar является администраторским модулем для управления пассивным бэкдором, установленным на скомпрометированной машине под именем sipauth32.tsp, и поддерживает следующие команды:

  • Burn
  • RawShellcode
  • EDFStagedUpload
  • DisableSecurity
  • EnableSecurity
  • UpgradeImplant
  • PingPong

Команды Burn, RawShellcode, UpgradeImplant, PingPong тривиальны и выполняют, соответственно, удаление импланта, запуск произвольного кода, обновление импланта и проверку установлен ли бэкдор на удаленной машине. Назначение других команд было не так очевидно. К сожалению, фреймворк из утечки содержал только администраторский модуль для работы с DarkPulsar-ом, но не сам бэкдор.

Проанализировав администраторский модуль, мы заметили несколько магических констант, используемых для шифрования трафика между C&C и имплантом:

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

Техническое введение

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

  1. Две безымянные функции, использующиеся для установки бэкдора в системе.
  2. Функции с названиями, связанными с работой интерфейса TSPI (Telephony Service Provider Interface), в которых реализуется обеспечение автозапуска бэкдора.
    • TSPI_lineNegotiateTSPIVersion
    • TSPI_providerEnumDevices
    • TSPI_providerInit
    • TSPI_providerShutdown
  1. Функция с названием, связанным с работой интерфейса SSPI (Security Support Provider Interface), в которой реализован основной вредоносный код.
    • SpLsaModeInitialize

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

Закрепление DarkPulsar в системе

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

Запуск бэкдора заключается в вызове Secur32.AddSecurityPackage с правами администратора, в параметре которой имплант указывает путь на свою же библиотеку. Согласно схеме выше, это приводит к тому, что системный процесс lsass.exe загружает библиотеку DarkPulsar для работы как SSP/AP, что сопровождается её инициализацией через вызов экспортируемой функции SpLsaModeInitialize, в которой DarkPulsar выполняет инициализацию бэкдора. Имплант использует такой способ запуска, чтобы продолжить работать в процессе lsass.exe. Таким образом, функция AddSecurityPackage используется для инжекта кода в lsass.exe.

Для автозапуска имплант создает значение с именем своей библиотеки по пути реестра HKLM\Software\Microsoft\Windows\CurrentVersion\Telephony\Providers, где перечислены поставщики услуг телефонии. Такие библиотеки загружаются при старте системы службой «Телефония» (TapiSrv), которая запускается вместе со службой «Диспетчер подключений удаленного доступа» (RasMan). Также DarkPulsar устанавливает у последней тип запуска – автоматически при старте системы, что и обеспечивает автозапуск бэкдора. При загрузке библиотеки поставщика услуг телефонии служба TapiSrv вызывает её экспортированную функцию TSPI_lineNegotiateTSPIVersion, где, в случае DarkPulsar, находится вызов AddSecurityPackage — инжект кода в lsass.exe.

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

Принцип работы

Свои возможности DarkPulsar реализует при помощи установки перехватов SpAcceptLsaModeContext – функции, ответственной за аутентификацию. Подобные перехваты сделаны в нескольких системных пакетах безопасности внутри процесса lsass.exe и позволяют Darkpulsar-у контролировать аутентификацию, основанную на следующих протоколах:

  • Msv1_0.dll – для протокола NTLM
  • Kerberos.dll – для протокола Kerberos
  • Schannel.dll – для протоколов TLS/SSL.
  • Wdigest.dll – для протокола Digest.
  • Lsasrv.dll – для протокола Negotiate.

Так как данная сетевая активность происходит по стандартным системным схемам, то и проявляться она будет только в процессе System, используя системные порты, зарезервированные для вышеперечисленных протоколов, не нарушая при этом их работу.

Трафик успешного подключения к импланту DarkPulsar

Команда DisableSecurity

Вторым преимуществом контролирования процессов аутентификации является возможность обойти ввод верной пары имени пользователя и пароля при получении доступа к защищенным объектам, таким как список процессов, удаленный реестр и файловая система через протокол SMB. После того, как бэкдору Darkpulsar была отправлена команда DisableSecurity, перехватчики бэкдора будут всегда возвращать в функции SpAcceptLsaModeContext, что переданные учетные данные верные и аутентификация пройдена успешно. Получая такой результат от функции SpAcceptLsaModeContext, зараженная система будет предоставлять доступ к защищенным объектам любому клиенту. Когда доступ к защищенным объектам перестал быть нужен, использовалась функция EnableSecurity, которая обратно включает проверку учетных данных.

Работа с администраторской программой DarkPulsar

Для выполнения вышеописанных команд над зараженной машиной использовался администраторский модуль Darkpulsar-1.1.0.exe. Он работает по принципу «одна команда – новый запуск». Команду для выполнения нужно указать либо в файле конфигурации Darkpulsar-1.1.0.9.xml, в котором указаны и прокомментированы все необходимые входные параметры, либо аргументами командной строки к утилите Darkpulsar-1.1.0.exe.

Помимо прочего, в параметрах нужно указать:

  • разрядность атакуемой машины;
  • протокол, по которому будет доставлена команда (поддерживаются SMB, NBT, SSL, RDP) и связанный с протоколом номер порта;
  • приватный RSA-ключ для расшифровки сессионного AES-ключа на стадии его передачи;

Например, для выполнения команды EnableSecurity нужно запустить Darkpulsar-1.1.0 с такими параметрами:

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

Использование Darkpulsar-1.1.0 как отдельной программы для управления зараженной машиной может показаться неудобным, но её и не предполагалось использовать таким образом. Эта утилита — плагин фреймворка Fuzzbunch, который сам формирует параметры ее запуска в зависимости от команд оператора и связывает результаты её работы с другими компонентами системы через выходные данные программы.

Вот так выглядит использование команды DisableSecurity в Fuzzbunch:

Как уже говорилось, после активации режима DisableSecurity, можно выполнить любой плагин, требующий аутентификацию без знания валидных данных. Ниже показан пример использование плагина Processlist на зараженной машине сразу после исполнения команды DisableSecurity в DarkPulsar. Для полей Username и Credential плагина мы ввели произвольное значение. Плагин Processlist никак не связан с DarkPulsar и работает через обычные системные функции (служба удаленного реестра), в ходе которых, как было уже сказано, и проверяется, имеет ли подключаемый пользователь права на удалённый запрос данных или выполнение других действий.

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

DanderSpritz

DanderSpritz – это фреймворк для управления зараженными машинами. Его отличие от FuZZbuNch заключается в том, что последний предоставляет довольно скудный инструментарий на стадии пост-эксплуатации. Есть какие-то специфические функции, например, для DarkPulsar – это DisableSecurity и EnableSecurity, но стандартного набора для удобного удаленного управления не имеет. А DanderSpritz выше по уровню абстракции: не важно, какой именно бэкдор предоставляет первоначальный канал связи, важно, чтобы на зараженной машине была запущена библиотека, через которую DanderSpritz и предоставляет оператору управление машиной.

DarkPulsar в режиме EDFStagedUpload отвечает за возможность заражения жертвы более функциональным имплантом – PCDllLauncher (плагин Fuzzbunch) разворачивает на стороне жертвы имплант PeddleCheap, а DanderSpritz предоставляет удобный интерфейс по пост-эксплуатации. Отсюда и название PCDllLauncher — PeddleCheap DLL Launcher.

Итоговая схема использования DanderSpritz с плагином PeddleCheap через FuZZbuNch с плагинами DarkPulsar и PCDllLauncher состоит из четырех шагов:

  1. Через FuZZbuNch запустить DarkPulsar с командой EDFStagedUpload.
  2. В DanderSpritz командой pc_prep подготовить полезную нагрузку (payload) с библиотекой, которая будет запущена на стороне импланта.
  3. В DanderSpritz выполнить команду pc_old (это alias к команде pc_listen -reuse -nolisten -key Default) – запустить ожидание сокета от Pcdlllauncher.
  4. Через FuZZbuNch запустить Pcdlllauncher и указать в параметре ImplantFilename путь к подготовленной с помощью команды pc_prep полезной нагрузке.

После выполнения этих действий в DanderSpritz можно использовать другие его плагины:

Терминал командной строки в интерфейсе DanderSpritz, где вводятся команды, которые будут исполняться на зараженной машине:

Плагин для работы с файловой системой:

Итоги

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

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

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

Сетевая активность на зараженной машине

Рассмотрим подробнее трафик при проведении атаки. Машина заражена имплантом DarlPulsar, и последний ждет команды. На этой стадии в процессе lsass.exe нет пары связанных сокетов и нет трафика по 445-му порту (в TCPView он назван microsoft-ds):

При выполнении команды EDFStagedUpload устанавливается постоянное соединение, поэтому появляется трафик по 445-му порту. Также появилась пара связанных сокетов в lsass.exe:

Во время развертывания DanderSpritz полезной нагрузки Peddle Cheap через плагин PcDllLauncher резко возрастает сетевая активность:

При отключении от зараженной машины сетевая активность прекращается, а из следов остается только два связанных сокета в lsass.exe:

Виктимология

Все известные нам жертвы располагались в России, Иране и Египте. Как правило, были заражены серверные версии ОС Windows (2003\2008 Server), всего около полусотни зараженных систем.

Цели: компании и организации, связанные с ядерной энергетикой, телекоммуникацией и информационными технологиями, аэрокосмическими технологиями и научно-производственные предприятия.

IOCs

Бэкдор — 96f10cfa6ba24c9ecd08aa6d37993fe4
Путь – %SystemRoot%\System32\sipauth32.tsp
Путь в реестре — HKLM\Software\Microsoft\Windows\CurrentVersion\Telephony\Providers

DarkPulsar

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

 

Отчеты

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

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

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

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

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

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

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

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