Инциденты

The SOC files: разборки в джунглях или новая цель APT41 в Африке

Введение

Некоторое время назад аналитики Kaspersky MDR зафиксировали целевую атаку на государственные IT-службы в Африканском регионе. Злоумышленники использовали «вшитые» в код вредоносного ПО внутренние сервисы, IP-адреса и прокси-серверы, а одним из C2 стал захваченный сервер SharePoint внутри инфраструктуры заказчика.

В ходе анализа инцидента нам удалось установить, что за ним стояла группа APT41 (aka Wicked Panda, Brass Typhoon, Barium, Winnti). Это китайскоговорящая группа, специализирующаяся на кибершпионаже и нацеленная на организации из многих отраслей, в том числе на телеком-провайдеров, образовательные и медицинские учреждения, IT-, энергетические и другие компании по меньшей мере в 42 странах. При этом стоит отметить, что до сих пор из всех регионов мира эта APT была наименее активна в Африке.

Расследование инцидента и анализ инструментария

Обнаружение

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

  • цепочка процессов svchost.exe ➔exe ➔ cmd.exe;
  • запись результата вывода исполняемой команды в файл на административном сетевом ресурсе, имеющий название из цифр, разделенных точкой:
Дерево процессов WmiExec

Дерево процессов WmiExec

Также злоумышленники использовали модуль Atexec набора инструментов Impacket, который создает задачи планировщика, выполняющие различные команды:

Задачи планировщика, созданные с помощью Atexec

Задачи планировщика, созданные с помощью Atexec

Этими командами атакующие проверяли доступность С2-сервера как напрямую через интернет, так и через прокси-сервер внутри организации.
Как выяснилось, источником подозрительной активности оказался не подключенный к мониторингу скомпрометированный хост, а запуск Impacket производился в контексте сервисной учетной записи. В дальнейшем хост будет подключен к телеметрии и нам удастся обнаружить реальный источник заражения.

После завершения работы модулей Atexec и WmiExec атакующие временно приостановили свою активность.

Повышение прав и боковое перемещение

Спустя несколько дней затишья злоумышленники вновь активизировались. На этот раз они интересовались запущенными процессами и занятыми портами:

Вероятнее всего, они пытались понять, установлены ли на целевых хостах какие-либо решения безопасности, например EDR-, MDR- или XDR-агенты, средства администрирования хоста и т. д.

Помимо этого, используя встроенную утилиту reg.exe, атакующие сохраняли файлы дампа веток SYSTEM и SAM:

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

В описываемом инциденте атакующие использовали для бокового перемещения две доменные учетные записи, полученные из дампа реестра: доменную учетную запись с правами локального администратора на всех рабочих станциях и учетную запись решения для резервного копирования с правами администратора домена. Права локального администратора позволили злоумышленникам передавать по протоколу SMB в административную сетевую папку C$ инструменты для взаимодействия с командным центром — Cobalt Strike и кастомный агент, о которых пойдет речь в следующем разделе.

В большинстве случаев атакующие помещали вредоносные инструменты в директорию C:\WINDOWS\TASKS\ на целевых хостах, но также использовались и другие пути:

Файлы из этих директорий запускались удаленно при помощи инструментария WMI:

Горизонтальное перемещение при помощи привилегированных учетных записей

Горизонтальное перемещение при помощи привилегированных учетных записей

Взаимодействие с C2

Cobalt Strike

Для взаимодействия с C2 на скомпрометированных хостах атакующие использовали инструмент Cobalt Strike, который распространяли в виде зашифрованного файла, обычно с расширением .txt или .ini. Для расшифровки этого файла применялась вредоносная библиотека, загружаемая методом DLL sideloading в легитимное приложение.

Общая схема запуска Cobalt Strike выглядит следующим образом:

Все необходимые файлы — легитимное приложение, вредоносную DLL и файл с полезной нагрузкой — атакующие размещали в одной из следующих директорий:

Вредоносная библиотека представляла собой легитимную DLL, модифицированную таким образом, чтобы при ее запуске исполняемый файл искал зашифрованную нагрузку Cobalt Strike в файле с заданным именем, расположенном в той же директории. Соответственно, названия файлов с полезной нагрузкой различались в зависимости от того, что именно было задано в коде, реализованном во вредоносной DLL-библиотеке.

Во время атаки злоумышленники задействовали следующие версии модифицированных DLL-загрузчиков и полезных нагрузок для них:

Legitimate file name DLL Encrypted CobaltStrike
TmPfw.exe TmDbg64.dll TmPfw.ini
cookie_exporter.exe msedge.dll Logs.txt
FixSfp64.exe log.dll Logs.txt
360DeskAna64.exe WTSAPI32.dll config.ini
KcInst.exe KcInst32.dll kcinst.log
MpCmdRunq.exe mpclient.dll Logs.txt

Несмотря на то что для запуска Cobalt Strike использовались различные легитимные приложения, расшифровка полезной нагрузки происходила схожим образом. Разберем подробнее один из вариантов выполнения Cobalt Strike на примере использования легитимного файла cookie_exporter.exe, который является частью приложения Microsoft Edge. Данное приложение при запуске подгружает библиотеку msedge.dll, расположенную в одной директории с ним.

Файл cookie_exporter.exe атакующие переименовали в Edge.exe, а msedge.dll заменили на вредоносную библиотеку с тем же названием.

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

  • японский (Япония)
  • корейский (Южная Корея)
  • китайский (материковый Китай)
  • китайский (Тайвань)

Если проверки проходят успешно, то приложение, загрузившее вредоносную библиотеку, выполняет экспортируемую функцию DLL, в которой и реализуется вредоносный код. Поскольку для запуска библиотеки в разных сценариях используются разные приложения, экспортируемые функции различаются в зависимости от того, что именно вызывает конкретное ПО. Так, в случае с msedge.dll вредоносный код был реализован в функции ShowMessageWithString, к которой обращается cookie_exporter.exe.

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

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

Расшифровка полезной нагрузки осуществляется циклическим выполнением следующих инструкций с использованием 128-битных регистров SSE:

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

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

Если запуск Cobalt Strike прошел успешно, имплант подключается к C2. Также злоумышленники создают сервис для его закрепления на хосте с помощью следующей команды:

Атакующие используют следующие названия сервисов для закрепления Cobalt Strike:

Agent

При расследовании мы обнаружили скомпрометированный сервер SharePoint, который атакующие использовали в качестве C2. Взаимодействие с ним осуществлялось посредством файлов, которые назывались agents.exe и agentx.exe и распространялись по протоколу SMB. Эти файлы представляют собой написанный на C# троянец, основная функциональность которого — выполнение команд, полученных с установленного на сервере SharePoint веб-шелла CommandHandler.aspx. Атакующие загрузили на хосты жертвы несколько версий таких агентов — все они имели схожую функциональность и использовали жестко закодированный URL-адрес для получения команд:

Команды, поступившие от CommandHandler.aspx, агент выполнял при помощи командной оболочки cmd.exe, запускаемой с флагом /c.

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

С помощью развернутых агентов атакующие проводили разведку, собирали чувствительные данные, такие как история браузеров, текстовые файлы, файлы конфигураций, а также документы .doc, .docx и .xlsx, а затем эксфильтрировали их на SharePoint через веб-шелл upload.ashx:

Стоит отметить, что при реализации механизма взаимодействия с сервером SharePoint атакующие допустили некоторые интересные ошибки. В частности, если веб-шелл CommandHandler.aspx на сервере недоступен, агент пытается выполнить сообщение об ошибке, которое выдает веб-страница, как команду:

Получение командной оболочки: реверс-шелл .hta

Если по результатам разведки атакующие считали зараженный хост интересным для дальнейшей активности, они пытались получить альтернативный доступ к командной оболочке на хосте. Для этого они выполняли следующую команду, которая загружает на хост .hta-файл со встроенным вредоносным скриптом JavaScript с внешнего ресурса и выполняет его:

Группировка пыталась замаскировать вредоносную активность, используя для загрузки .hta-файла ресурсы, имитирующие легитимные. В частности, команда выше обращается к домену github[.]githubassets[.]net, мимикрирующему под GitHub. В основном злоумышленники размещают на этом ресурсе JavaScript-скрипты, отвечающие за доставку либо следующего этапа вредоносного ПО, либо инструментов, необходимых для дальнейшего развития атаки.

На момент исследования вместо вредоносного скрипта с ресурса github[.]githubassets[.]net загружался безвредный. Вероятно, это было сделано для сокрытия активности и затруднения анализа атаки.

Безобидный скрипт на домене github[.]githubassets[.]net

Безобидный скрипт на домене github[.]githubassets[.]net

Однако нам удалось получить и проанализировать ранее распространяемые скрипты, в частности — вредоносный файл 2CD15977B72D5D74FADEDFDE2CE8934F. Его основная цель заключается в реализации обратного шелла на хосте и предоставлении злоумышленникам оболочки для выполнения команд.

После запуска скрипт собирает первичную информацию о хосте:

Затем он подключается к C2, также расположенному на домене github[.]githubassets[.]net, передавая уникальный идентификатор ATTACK_ID вместе с первично собранными данными. Скрипт использует различные методы подключения, включая WebSockets, AJAX, Flash и другие, в зависимости от доступных возможностей браузера или среды выполнения:

Сбор данных

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

Pillager

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

В основной перечень собираемой информации утилитой входят следующие данные:

  • сохраненные учетные данные браузеров, баз данных, административных утилит, таких как MobaXterm
  • исходные коды проектов
  • скриншоты
  • активные сессии мессенджеров и их данные
  • почтовые переписки
  • активные сессии SSH, FTP
  • список установленного программного обеспечения на хосте
  • вывод команд systeminfo и tasklist
  • учетные данные, хранящиеся и используемые операционной системой, и учетные данные от сети Wi-Fi
  • информация об аккаунтах в мессенджерах, почтовых клиентах и другом ПО

Пример собираемых данных в логе работы Pillager:

Сама по себе утилита представляет собой исполняемый файл .exe, но атакующие переписали код стилера и скомпилировали его в DLL-библиотеку wmicodegen.dll, код которой также выполняется на хосте с помощью техники DLL sideloading. В качестве приложения-жертвы они выбрали исполняемый файл convert-moftoprovider.exe из набора инструментов Microsoft SDK, который обычно используется для генерации кода из файлов Managed Object Format (MOF).

Несмотря на переработанный код, группировка не стала изменять стандартные имя и путь к файлу, в который стилер сохраняет результаты своей работы: C:\Windows\Temp\Pillager.zip.

Стоит отметить, что за основу вредоносной библиотеки была взята легитимная SimpleHD.dll из Xbox Development Kit, которая используется для рендеринга HDR. Исходный код этой библиотеки есть на GitHub. Код этой библиотеки был модифицирован таким образом, что исполняемый файл convertmoftoprovider.exe загружает экспортируемую функцию, в которой и реализован код Pillager.

При этом путь к .pdb-файлу хоть и похож на «легитимный», но все же отличается тем, что в нем используется PS5 вместо XBOX:

Checkout

Второй стилер, используемый атакующими, — Checkout. Помимо сохраненных учетных записей и истории браузера, он также крадет информацию о скачанных файлах и данные сохраненных в браузере кредитных карт:

При запуске стилера злоумышленники передают ему параметр j8, без которого он не запускается. Зловред собирает данные в .csv-файлы, которые затем архивирует и сохраняет в специально созданной директории CheckOut как CheckOutData.zip.

Сбор и архивация данных в Checkout

Сбор и архивация данных в Checkout

Диаграмма запуска Checkout в Kaspersky Threat Intelligence Platform

Диаграмма запуска Checkout в Kaspersky Threat Intelligence Platform

RawCopy

Помимо стандартных методов сбора дампов реестра, например при помощи reg.exe, атакующие использовали общедоступную утилиту RawCopy, имеющую MD5-хэш 0x15D52149536526CE75302897EAF74694, для копирования сырых файлов реестра.

RawCopy представляет собой консольное приложение, которое копирует файлы с томов NTFS, используя низкоуровневый метод чтения диска.

Для сбора файлов реестра использовались следующие команды:

Mimikatz

Для дампа учетных записей атакующие в том числе использовали утилиту mimikatz. Как и стилер Pillager, ее переписали и скомпилировали в DLL, подгружаемую легитимным файлом для компилирования Java-кода java.exe посредством техники DLL sideloading. В запуске mimikatz участвуют следующие файлы:

123.bat — это BAT-скрипт, который содержит команды для запуска легитимного исполняемого файла java.exe, подгружающего динамическую библиотеку для DLL sideloading. Та, в свою очередь, расшифровывает и запускает файл с инструментом mimikatz config.ini, который распространяется с ранее скомпрометированного хоста в инфраструктуре.

Ретрохантинг

Как мы уже упоминали, покрытие мониторинга в организации-жертве изначально было неполным, поэтому на первых этапах мы видели только внешний IP-адрес первоначального источника, а что происходило на этом хосте, нам не удалось обнаружить. Спустя некоторое время он все же был подключен к мониторингу, и выяснилось, что это веб-сервер IIS. Более того, несмотря на упущенное время, артефакты атаки все еще присутствовали на нем.

Среди них, в частности, был уже упомянутый имплант Cobalt Strike в директории c:\programdata\, а также задача планировщика, с помощью которой он закрепляется в системе. Кроме того, на хосте остался веб-шелл, который наши решения обнаружили как HEUR:Backdoor.MSIL.WebShell.gen, в стандартной директории для временного хранения скомпилированных файлов приложений ASP.NET:

Такие временные файлы генерируются автоматически и хранят в себе код страницы .aspx:

Веб-шелл имеет имя newfile.aspx. На скриншоте выше можно видеть названия его функций. По этим названиям нам удалось установить, что в данном случае был использован веб-шелл-туннель Neo-reGeorg tunnel.

Этот инструмент используется для проксирования трафика из внешней сети во внутреннюю через доступный из внешней сети веб-сервер. Таким образом, запуск инструментов Impacket, который, как мы первоначально предполагали, осуществлялся с неопознанного на тот момент хоста (IIS-сервера), на самом деле происходил из внешней сети через туннель.

Атрибуция

Мы с высокой степенью уверенности приписываем эту атаку группе APT41 на основании сходства TTP, инструментария и C2-инфраструктуры с другими кампаниями этой APT. В частности:

  • Злоумышленники использовали ряд характерных для APT41 инструментов, таких как Impacket, WMI и Cobalt Strike.
  • Атакующие прибегали к технике DLL sideloading.
  • В ходе атаки различные файлы сохранялись в директорию C:\Windows\Temp.
  • Имена C2-доменов, выявленные в этом инциденте (s3-azure.com, *.nss3-azure.com, *.ns2.s3-azure.com), схожи с доменными именами, ранее встречавшимися в атаках APT41 (us2[.]s3bucket-azure[.]online, status[.]s3cloud-azure[.]com).

Выводы и извлечение уроков

Злоумышленники используют широкий арсенал инструментов для проведения атак, который включает не только самописное, но и общедоступное ПО. В частности, на различных этапах атаки используются инструменты для тестирования на проникновение, такие как Cobalt Strike. При этом атакующие быстро приспосабливаются к целевой инфраструктуре и обновляют вредоносные инструменты с учетом конкретных ее параметров, а для взаимодействия с С2 и эксфильтрации данных используют в том числе внутренние сервисы. Обнаруженные в ходе расследования инцидента файлы указывают на то, что злоумышленники прямо во время атаки адаптируют применяемые техники для сокрытия своих действий, например переписывают исполняемые файлы и компилируют их как DLL для использования техники DLL sideloading.

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

Приложение:

Правила:

Yara

Sigma

IOC

Файлы

2F9D2D8C4F2C50CC4D2E156B9985E7CA
9B4F0F94133650B19474AF6B5709E773
A052536E671C513221F788DE2E62316C
91D10C25497CADB7249D47AE8EC94766
C3ED337E2891736DB6334A5F1D37DC0F
9B00B6F93B70F09D8B35FA9A22B3CBA1
15097A32B515D10AD6D793D2D820F2A8
A236DCE873845BA4D3CCD8D5A4E1AEFD
740D6EB97329944D82317849F9BBD633
C7188C39B5C53ECBD3AEC77A856DDF0C
3AF014DB9BE1A04E8B312B55D4479F69
4708A2AE3A5F008C87E68ED04A081F18
125B257520D16D759B112399C3CD1466
C149252A0A3B1F5724FD76F704A1E0AF
3021C9BCA4EF3AA672461ECADC4718E6
F1025FCAD036AAD8BF124DF8C9650BBC
100B463EFF8295BA617D3AD6DF5325C6
2CD15977B72D5D74FADEDFDE2CE8934F
9D53A0336ACFB9E4DF11162CCF7383A0

Домены и IP

47.238.184[.]9
38.175.195[.]13
hxxp://github[.]githubassets[.]net/okaqbfk867hmx2tvqxhc8zyq9fy694gf/hta
hxxp://chyedweeyaxkavyccenwjvqrsgvyj0o1y.oast[.]fun/aaa
hxxp://toun[.]callback.red/aaa
hxxp://asd.xkx3[.]callback.[]red
hxxp[:]//ap-northeast-1.s3-azure[.]com
hxxps[:]//www[.]msn-microsoft[.]org:2053
hxxp[:]//www.upload-microsoft[.]com
s3-azure.com
*.ns1.s3-azure.com
*.ns2.s3-azure.com
upload-microsoft[.]com
msn-microsoft[.]org

MITRE ATT&CK

Tactic Technique ID
Initial Access Valid Accounts: Domain Accounts T1078.002
Exploit Public-Facing Application T1190
Execution Command and Scripting Interpreter: Powershell T1059.001
Command and Scripting Interpreter: Windows Command Shell T1059.003
Scheduled Task/Job: Scheduled Task T1053.005
Windows Management Instrumentation T1047
Persistence Create or Modify System Process: Windows Service T1543.003
Hijack Execution Flow: DLL Side-Loading T1574.002
Scheduled Task/Job: Scheduled Task T1053.005
Valid Accounts: Domain Accounts T1078.002
Web Shell T1505.003
IIS Components T1505.004
Privilege Escalation Create or Modify System Process: Windows Service T1543.003
Hijack Execution Flow: DLL Side-Loading T1574.002
Process Injection T1055
Scheduled Task/Job: Scheduled Task T1053.005
Valid Accounts: Domain Accounts T1078.002
Defense Evasion Hijack Execution Flow: DLL Side-Loading T1574.002
Deobfuscate/Decode Files or Information T1140
Indicator Removal: File Deletion T1070.004
Masquerading T1036
Process Injection T1055
Credential Access Credentials from Password Stores: Credentials from Web Browsers T1555.003
OS Credential Dumping: Security Account Manager T1003.002
Unsecured Credentials T1552
Discovery Network Service Discovery T1046
Process Discovery T1057
System Information Discovery T1082
System Network Configuration Discovery T1016
Lateral movement Lateral Tool Transfer T1570
Remote Services: SMB/Windows Admin Shares T1021.002
Collection Archive Collected Data: Archive via Utility T1560.001
Automated Collection T1119
Data from Local System T1005
Command and Control Application Layer Protocol: Web Protocols T1071.001
Application Layer Protocol: DNS T1071.004
Ingress Tool Transfer T1105
Proxy: Internal Proxy T1090.001
Protocol Tunneling T1572
Exfiltration Exfiltration Over Alternative Protocol T1048
Exfiltration Over Web Service T1567

The SOC files: разборки в джунглях или новая цель APT41 в Африке

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

 

Отчеты

ToddyCat — ваш скрытый почтовый ассистент. Часть 1

Эксперты «Лаборатории Касперского» разбирают атаки APT ToddyCat через корпоративную электронную почту. Изучаем новую версию TomBerBil, инструменты TCSectorCopy и XstReader, а также способы кражи токенов доступа из Outlook.

Криптоафера группы BlueNoroff: «призрачные» инвестиции и фиктивные рабочие предложения

Эксперты команды GReAT проанализировали кампании GhostCall и GhostHire APT-группы BlueNoroff: несколько цепочек вредоносного ПО для macOS, поддельные клиенты Zoom и Microsoft Teams, а также изображения, улучшенные с помощью ChatGPT.

Mem3nt0 mori – Hacking Team снова с нами!

Исследователи «Лаборатории Касперского» впервые обнаружили шпионское ПО Dante, разработанное Memento Labs (бывшей Hacking Team) в дикой природе и нашли его связь с APT ForumTroll.