ASEC (AhnLab Security Emergency response Center) недавно обнаружил установку вредоносного ПО PlugX через китайские программы удаленного управления Sunlogin и уязвимость удаленного выполнения кода Awesun.
PlugX Malware
Уязвимость удаленного выполнения кода Sunlogin (CNVD-2022-10270 / CNVD-2022-03672) по-прежнему используется для атак даже сейчас, с тех пор как был раскрыт ее код эксплойта. Ранее команда опубликовала сообщение о том, как Sliver C2, XMRig CoinMiner и Gh0st RAT распространяются через уязвимость Sunlogin RCE. Кроме того, поскольку Gh0st RAT был разработан в Китае, он является наиболее распространенным RAT, используемым субъектами угроз, базирующимися в Китае.
AweSun также является программой дистанционного управления, разработанной в Китае, и, хотя ее конкретная уязвимость не была идентифицирована, предполагается, что была раскрыта уязвимость RCE, аналогичная уязвимости Sunlogin. Одни и те же субъекты угроз использовали уязвимость RCE и в Sunlogin, и в AweSun для установки Sliver C2. В предыдущей записи блога рассказывалось о случаях, которые произошли позже, когда аналогичные уязвимости использовались для установки вымогательского ПО Paradise.
PlugX является одним из основных бэкдоров, используемых группами APT-угроз, которые базируются в Китае. Известно, что его распространение началось в 2008 году и продолжается до сих пор, поскольку для атак используются варианты с дополнительными функциями. Mustang Panda, Winnti, APT3 и APT41 - основные угрожающие APT-группы, которые использовали PlugX в своих атаках, и большинство из них, как известно, базируются в Китае. [1]
PlugX - это вредоносная программа на основе модулей, которая поддерживает различные плагины с разными функциями. Поэтому субъекты угроз могут выполнять такие вредоносные действия, как управление системой и кража информации, используя различные функции этих плагинов.
Еще одной особенностью PlugX является использование метода боковой загрузки DLL. Метод побочной загрузки DLL предполагает установку вредоносной DLL по тому же пути, что и обычная программа, и использование выполнения обычной программы для загрузки вредоносной DLL, которая, в свою очередь, запускает вредоносную процедуру. Это делается для того, чтобы избежать обнаружения продуктами безопасности. Нормальная программа становится субъектом, выполняющим вредоносные действия, и эти действия затем распознаются как действия нормальной программы.
PlugX обычно распространяется в виде сжатого файла или дроппера, но в любом случае обычный EXE-файл, вредоносная DLL-загрузчик, которая будет использоваться для побочной загрузки с тем же именем, и файлы закодированных данных в конечном итоге создаются в одном каталоге. Исполняемый файл загружает и запускает DLL-загрузчик по тому же пути, который, в свою очередь, считывает и расшифровывает файл данных в том же каталоге, прежде чем выполнить его в памяти. После этого процесса вредоносная программа, которая в конечном итоге работает в области памяти, является PlugX.
ASEC отслеживает атаки на системы с непропатченными уязвимостями или неправильно настроенными параметрами. Недавно команда подтвердила, что PlugX устанавливается через эксплуатацию уязвимости RCE в Sunlogin и AweSun.
Согласно журналу AhnLab ASD (AhnLab Smart Defense), команда подтвердила, что команда PowerShell, выполняемая при использовании этой уязвимости, создает файл с именем esetservice.exe.
esetservice.exe на самом деле является программой HTTP Server Service, созданной компанией ESET, то есть это обычный файл.
Дальнейшее изучение соответствующих журналов показало, что помимо файла esetservice.exe угрожающий агент также загрузил файл с именем http_dll.dll. Кроме того, ниже приведен журнал из другой системы, который показывает, что угрожающий агент использовал в своей атаке не только Sunlogin, но и уязвимость AweSun.
В процессе исследования связи между двумя файлами было обнаружено, что программа "esetservice.exe" имеет функцию, которая загружает файл "http_dll.dll" в том же каталоге, если он выполняется без дополнительного аргумента. Это классический метод побочной загрузки DLL, и PlugX наиболее известен тем, что использует этот метод.
PlugX распространяется в комплекте с обычной exe-программой, DLL, выполняющей роль загрузчика, и файлом данных, содержащим собственно закодированную вредоносную программу. Анализ фактического кода показал, что файл "http_dll.dll" содержит процедуру чтения файла "lang.dat", находящегося в том же каталоге, перед расшифровкой и выполнением.
В ходе анализа PlugX на VirusTotal было обнаружено вредоносное ПО, использующее в своей атаке те же файлы "esetservice.exe" и "http_dll.dll". Это вредоносное ПО является дроппером формата WinRar Sfx, который при выполнении создает файлы "esetservice.exe", "http_dll.dll" и "lang.dat". Затем он запускает "esetservice.exe" для окончательной установки и выполнения PlugX. Хотя этот дроппер не был найден в описанной выше эксплуатации уязвимости, учитывая, что C&C-адрес PlugX совпадает с URL-адресом загрузки, использованным в эксплуатации уязвимости, можно предположить, что за обеими атаками стоит один и тот же угрожающий агент.
Дроппер PlugX маскируется под пути обычных программ и создает вредоносные программы по пути "C:\ProgramData\Windows NT\Windows eset service". Они также скрываются через настройки свойств, чтобы сделать их менее заметными для пользователей.
Когда "esetservice.exe" выполняется, он загружает файл "http_dll.dll" в том же каталоге и, соответственно, выполняет функцию DllMain() файла "http_dll.dll". Вместо прямого выполнения функции загрузки файла "lang.dat", DllMain() изменяет код "esetservice.exe", как показано ниже, перед применением патча таким образом, что "esetservice.exe" загружает "http_dll.dll" и переходит в саму процедуру загрузчика "http_dll.dll".
Эта процедура отвечает за загрузку файла "lang.dat" в том же каталоге и его выполнение в памяти. Начальная часть файла "lang.dat" представляет собой шеллкод. Когда этот код выполняется, он расшифровывает PlugX, который был сохранен вместе с ним, и выполняет его в памяти.
Как объяснялось выше, PlugX - это вредоносная программа, которая постоянно обновляется уже более десяти лет, поэтому всевозможные варианты обнаруживаются и сейчас. В 2020 году на Dr.Web был опубликован отчет о классификации и анализе различных вариантов PlugX. [2] Security Joes рассказал о самых последних обнаруженных вариантах PlugX в 2022 году. Анализируемый в настоящее время PlugX практически идентичен варианту BackDoor.PlugX.38, о котором сообщалось на Dr.Web. Если не учитывать конфигурационные данные, можно предположить, что это тот же PlugX, что и в последнем отчете Security Joes.
PlugX, используемый в атаке, предлагает различные режимы в зависимости от приведенного аргумента. Ниже представлено дерево процессов, которое может быть обнаружено при выполнении PlugX, который в настоящее время анализируется. Можно сделать вывод, что 4 режима, "100", "200", "201" и "209", выполняются по порядку.
Когда дроппер PlugX выполняется в первый раз, он создает файлы "esetservice.exe", "http_dll.dll" и "lang.dat" в каталоге "%PUBLIC%\Downloads\" перед выполнением "esetservice.exe". После загрузки и выполнения процесса "esetservice.exe", PlugX использует метод create класса WMi's Win32_Process, чтобы дать аргумент "100" и снова выполнить себя.
При выполнении после предоставления "100" в качестве аргумента, процесс обхода UAC запускается после процесса инъекции. "runonce.exe" - это процесс, на который нацелен и в который внедряется шеллкод. Инжектированный шеллкод отвечает за использование интерфейса ICMLuaUtil для обхода UAC и запуска процесса с привилегиями администратора. Благодаря этому "esetservice.exe" может запускаться с привилегиями администратора. После этого он регистрирует себя в качестве службы и устанавливает аргумент "200". Когда процесс достигает этой точки, он передает процессу "runonce.exe", который снова является целью инъекции, аргумент "201", прежде чем выполнить и внедрить себя. Затем "runonce.exe" передает аргумент "209" процессу "msiexec.exe", отвечающему за плагины, перед тем как выполнить и внедрить его. Приведенная выше процедура означает, что в зависимости от переданного аргумента выполняется другой режим.
В файле "lang.dat" хранятся данные конфигурации, а также шеллкод и закодированный PlugX. Данные конфигурации также закодированы, но они декодируются PlugX при выполнении, чтобы получить адрес C&C и другую информацию о конфигурации.
Команды, поддерживаемые PlugX, почти такие же, как и у версии BackDoor.PlugX.38, рассмотренной в отчете Dr.Web, но их отличают 2 дополнительные команды, а именно записи 0x0B и 0x0C.
По сравнению с предыдущей версией BackDoor.PlugX.38, PlugX поддерживает 2 дополнительных плагина, один из которых крадет информацию, сохраненную в буфер обмена, а другой отвечает за распространение RDP. Более подробную информацию можно найти в отчете Security Joes, опубликованном в декабре 2022 года.
Кроме того, предполагается, что место сохранения украденных данных у каждой вредоносной программы разное. Например, в отличие от прошлого отчета, похищенные данные буфера обмена сохраняются в файле "clang.aif", а данные кейлоггинга - в файле "ksys.aif", оба из которых находятся в каталоге установки.
Недавно были подтверждены случаи, когда различные штаммы вредоносного ПО устанавливались на непропатченное и уязвимое программное обеспечение. Хотя Sliver, Paradise ransomware и CoinMiner - это вредоносные программы, которые обычно устанавливаются через эксплуатацию уязвимостей, недавно команда подтвердила распространение бэкдора PlugX.
PlugX - один из основных бэкдоров, используемых группами APT-угроз, базирующимися в Китае. Новые функции добавляются в него и по сей день, так как он продолжает постоянно использоваться в атаках. Когда бэкдор PlugX установлен, субъекты угроз могут получить контроль над зараженной системой без ведома пользователя. Это, в свою очередь, позволяет выполнять различные вредоносные действия, такие как регистрация вводимых клавиш, снятие скриншотов и установка дополнительного вредоносного ПО.
Indicators of Compromise
Domain Port Combinations
- api.imango.ink:443
- api.imango.ink:53
- cdn.imango.ink:443
- cdn.imango.ink:53
URLs
- http://api.imango.ink:8089/http_dll.dll
- http://api.imango.ink:8089/esetservice.exe
MD5
- 709303e2cf9511139fbb950538bac769
- d1a06b95c1d7ceaa4dc4c8b85367d673
- d973223b0329118de57055177d78817b