DownEx Operation IOCs

security

В конце 2022 года компания Bitdefender Labs обнаружила кибератаку, направленную на иностранные государственные учреждения в Казахстане. В ходе расследования этого инцидента выяснилось, что это была высокоцелевая атака, направленная на утечку данных. Мы решили отложить публикацию наших результатов и провели мониторинг региона на предмет других подобных атак. Эти усилия были вознаграждены, когда мы обнаружили еще одну атаку в Афганистане и собрали дополнительные образцы и наблюдения.

DownEx Operation

Домен и IP-адреса не фигурируют ни в одном из ранее задокументированных инцидентов, а код вредоносной программы не имеет сходства с ранее известными вредоносными программами. Поскольку это, по-видимому, новое семейство вредоносных программ, мы назвали его DownEx.

Анализируя косвенные признаки, такие как конкретные цели атак, метаданные документа, выдающие себя за реального дипломата, и основной фокус на утечке данных, мы можем сделать обоснованное предположение, что за эти инциденты ответственна группа, спонсируемая государством. Несмотря на использование различных методов, нам не удалось установить принадлежность этих атак к конкретному субъекту угрозы. Одним из признаков, указывающих на происхождение атаки, является использование взломанной версии Microsoft Office 2016, популярной в русскоязычных странах (известной как "SPecialisST RePack" или "Russian RePack by SPecialiST"). Также необычно видеть один и тот же бэкдор, написанный на двух языках - такая практика ранее наблюдалась у группы APT28 с их бэкдором Zebrocy. На основании совокупности показателей мы относим эту кампанию к группе, связанной с Россией, хотя и с низкой степенью уверенности.

Хотя первоначальный вектор заражения остается неясным, Bitdefender предполагают, что субъекты угрозы использовали методы социальной инженерии для доставки фишингового письма с вредоносной полезной нагрузкой. Атака использовала простую технику использования файла иконки, связанного с файлами .docx, для маскировки исполняемого файла под документ Microsoft Word. Вложенный файл не использовал двойное расширение (обычно выявляемое как подозрительная практика) и был назван просто "! to <redacted> embassy kazakh 2022.exe". К сожалению, похоже, что электронная почта остается эффективным способом доставки вредоносной полезной нагрузки в 2023 году.

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

  • C:\Users\<Redacted>\Appdata\Local\Temp\! to <Redacted> Embassy kazakh 2022.doc
  • C:\ProgramData\Utility\log

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

Второй файл журнала - это файл HTA без расширения (обычно .hta) со встроенным кодом VBScript. HTA означает "HTML-приложение" и представляет собой тип файла, содержащий код VBscript, HTML, CSS или JavaScript, который может быть выполнен как отдельное приложение в операционной системе Windows. HTA был популярным способом для системных администраторов добавить базовый пользовательский интерфейс к своим скриптам или создать простые служебные программы.

Загрузка следующего этапа не удалась, и Bitdefender не смогли получить полезную нагрузку с командно-контрольного (C2) сервера. Основываясь на анализе аналогичных атак, Bitdefender предполагают, что угрожающие субъекты пытались загрузить бэкдор для обеспечения устойчивости.

Несколько других инструментов, расположенных на машине жертвы, использовались для установления соединения с сервером C2.

Bitdefender обнаружили два инструмента, написанных на языке C/C++ и предназначенных для перечисления всех ресурсов в сети. Оба исполняемых файла wnet.exe (MD5: a45106470f946ea6798f7d42878cff51) и utility.exe (MD5: 3ac42f25df0b600d6fc9eac73f011261) находились в папке C:\\\ProgramData\\\Programs. Функциональность использует функции Windows Networking (WNet) из Win32 API. Это обычный подход к сетевой разведке, поскольку эти функции не зависят от сети.

Для установления связи с инфраструктурой C2 угрозы развернули бэкдор help.py на языке Python, расположенный в папке C:\ProgramData\python\tools\scripts. Угрожающие лица приложили дополнительные усилия, чтобы сделать этот скрипт трудным для анализа. Сценарий был защищен PyArmor, инструментом обфускации Python, который может помочь защитить сценарии от обратной разработки и взлома. Нам удалось получить соответствующий модуль Pytransform.pyd. Этот скомпилированный модуль (по сути, DLL-файл, используемый скриптом Python) был защищен средством защиты программного обеспечения Themida, и в нем были использованы многочисленные методы обфускации, включая смешивание опкодов.

Help.py генерирует пару открытый/закрытый ключ RSA длиной 2048 бит.
Открытый ключ передается на сервер C2 (https[:]//net-certificate[.]services:443) методом POST со следующими парами ключ-значение.

  • USR_KAF - Содержит EmailID, жестко закодированное значение, идентифицирующее конкретную кампанию электронной почты.
  • USR_PUB - Открытый ключ, сгенерированный на шаге 1.
  • USR_CRC - SHA256-хэш запущенного скрипта (help.py), сгенерированного автоматически.
  • C2 отвечает действительным Python-кодом для установки ID клиента. Этот ID клиента используется в шаге 4.
  • TSK_KEY - Зашифрованный ключ AES, необходимый для расшифровки поля TSK_BODY. Это значение шифруется с помощью открытого ключа из шага 2.
  • TSK_IV - Вектор инициализации AES, необходимый для расшифровки поля TSK_BODY. Это значение шифруется с помощью открытого ключа из шага 2.
  • TSK_BODY - код Python, зашифрованный с помощью AES в режиме CBC. Мы эмулировали протокол, и ответом всегда была установка переменной USR_KAR. Похоже, что это идентификация клиента. В бесконечном цикле скрипт сделает POST-запрос на https[:]//net-certificate.services:443/< USR_KAF>, где USR_KAF - идентификатор клиента, полученный на шаге 3.

В бесконечном цикле скрипт будет выполнять POST-запрос на https[:]//net-certificate.services:443/< USR_KAF>, где USR_KAF - идентификатор клиента, полученный на этапе 3.

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

  • TSK_KEY и TSK_IV - ключ AES и вектор инициализации, необходимые для расшифровки TSK_BODY. Эти значения шифруются с помощью открытого ключа, сгенерированного на шаге 2.
  • TSK_LINK - Число, представляющее уникальный идентификатор задачи. Похоже, что это инкрементное и глобальное значение для всех жертв. Самый большой ID задачи, который мы обнаружили, равен 115880, поэтому можно предположить, что жертвам было отправлено более 100K задач.
  • TSK_BODY - это зашифрованный код Python, представляющий задачу для выполнения.

Задачи представлены классом Python, имеющим вид "class A<number>". В ходе нашего мониторинга мы наблюдали 4 отдельных задачи, но мы уверены, что существует больше типов задач:

A3 - DOWNLOAD_LIST - извлечение файлов с определенными расширениями из каталога.
Директории D:\ и C:\Users рекурсивно анализируются.
Список расширений жестко закодирован: doc; docx; dot; dotx; xls; xlsx; ppt; pptx; odt; pdf; rtf; rar; jpg; jpeg; bmp; heic; tiff; tif.
Извлекает только те файлы, которые были изменены за последние N дней. N - это жестко заданное значение, если его значение равно -1, фильтр последних измененных данных не применяется.
Файлы рассылаются в zip-архивах размером не более 16 МБ. При необходимости используется несколько архивов.
Жертва возвращает список подходящих файлов на сервер C2, включая информацию о полном пути, размере созданного файла и дате последнего изменения.

A4 - DOWNLOAD_AND_DELETE_LIST - аналогична задаче A3, но также удаляет эксфильтрованные файлы.
Bitdefender считают, что эта задача используется для эксфильтрации файлов, созданных другой вредоносной задачей/вредоносным ПО. Это предположение основано на наблюдаемых инструкциях, таких как загрузка и удаление файлов из:

C:\\\ProgramData\\\Python\\\Lib\\LOC\\\F, которые не имеют расширения .py.
C:\\Users\\<USERNAME>\\AppData\\Local\\Diagnostics\\<USER_SID>\\1cbe6654-466b-4d53-8303-2e86ab6db8a7 with extension ~tmp.
A6 - SCAN_LIST - аналогично задаче A3, но сообщает только о совпадающих файлах, не эксфильтруя их.
A7 - SCREENSHOT - Загружает снимок экрана со взломанной машины.
Количество скриншотов и интервал между ними является жестко заданным значением.

После того как жертва завершает обработку заданий, она обменивается данными с сервером C2, используя следующую структуру JSON:

  • SK_LINK - ID задания, указанный в запросе задания от сервера C2.
  • RESULT - Результат выполнения задания или отладочное/логовое сообщение. Например, "Успех: GET от клиента SCREENSHOT_START". Это поле шифруется с помощью AES и кодируется base64.
  • NAME_FILE - Имя файла на сервере, в который записывается RESULT. Оно содержит метку времени, идентификатор задачи и дополнительную информацию (например, выполненный метод). Это поле шифруется с помощью AES и кодируется base64.

Важно отметить, что ничто не мешает субъектам угроз поставлять код Python напрямую, а не использовать конструкции классов.

В ходе расследования Bitdefender обнаружили несколько образцов нового вредоносного ПО, написанного на языке C++. Исполняемый файл diagsvc.exe хранился в папке C:\\\ProgramData\\\\Programs и предназначен для эксфильтрации файлов.

Один из образцов включал строку PDB "C:\Projects\DOWN\Release\DOWN.pdb". PDB (Program DataBase) - это формат файла, используемый Microsoft Visual Studio для хранения отладочной информации об исполняемом или DLL-файле. Мы решили назвать это семейство вредоносных программ DownEx, объединив название проекта DOWN с его предполагаемой целью (Exfiltration).

Между собранными нами образцами были небольшие различия - некоторые содержали больше отладочных строк, другие - строки, зашифрованные простым шифром XOR. Один простой образец (MD5:ae5d4b9c1038f6840b563c868692f2aa) не осуществлял эксфильтрацию данных путем прямого обращения к серверу C2, вместо этого он создал и выполнил VBScript C:\\\ProgramData\\\Temp\\\driver.vbs, отвечающий за эксфильтрацию. Все собранные образцы обращались к одному и тому же серверу C2, расположенному по адресу 84.32.188[.]123.

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

  • .doc, .docx, .rtf, .xlsx, .xls, .pdf, .ppt, .pptx, .~tm, .bmp, .rar, .jpg, .odt, .p12, .heic, .enc, .jpeg, .tiff, .tif, .zip, .crf, .enc, .cr, .lhz, .pem, .pgp, .sbx, .tlg.

Субъекты угроз интересуются конфиденциальными файлами, такими как файлы .pgp или .pem, а также финансовыми данными, такими как файлы журналов QuickBooks (расширение .tlg).

После того как файлы собраны, они распаковываются с помощью защищенного паролем zip-архива. Размер несжатых данных ограничен 30 МБ для каждого архива. При необходимости создается несколько архивных файлов. Чтобы ограничить размер эксфильтруемых файлов, DownEx хранит контрольные суммы уже эксфильтрованных файлов (CRC), чтобы избежать дублирования. Архивы передаются на сервер C2 путем выполнения POST-запроса на http[:]//84.32.188[.]123/hftqlbgtg.php.

В ходе расследования Bitdefender обнаружили версию DownEx на базе VBScript (MD5:f3474c17d8c33055c28cb45a04ab484f) с той же функциональностью, что и версия на C++. Это бесфайловая атака - сценарий DownEx выполняется в памяти и никогда не касается диска. Скриптовая версия DownEx была загружена закодированным VBscript-файлом slmgr.vbe с http[:]//206.166.251[.]216/www.php с использованием пользовательского агента (для идентификации кампании).

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

Indicators of Compromise

IPv4

  • 139.99.126.38
  • 84.32.188.123
  • 206.166.251.216

Domains

  • net-certificate.services

MD5

  • 1492b0079b04eb850279114b4361f10c
  • 14a8aad94b915831fc1d3a8e7e00a5df
  • 1e46ef362b39663ce8d1e14c49899f0e
  • 3ac42f25df0b600d6fc9eac73f011261
  • 457eca2f6d11dd04ccce7308c1c327b7
  • 5602da1f5b034c9d2d6105cdc471852b
  • 70e4305af8b00d04d95fba1f9ade222d
  • 89f15568bc19cc38caa8fd7efca977af
  • a45106470f946ea6798f7d42878cff51
  • ae5d4b9c1038f6840b563c868692f2aa
  • bb7cf346c7db1c518b1a63c83e30c602
  • c273cdfcfd808efa49ec0ed4f1c976e0
  • d11fcd39a30a23176337847e54d7268c
  • d20e4fffbac3f46340b61ab8f7d578b1
  • d310a9f28893857a0dc1f7c9b624d353

 

 

Комментарии: 0