Специалисты подразделения Threat Response Unit (TRU) компании eSentire обнаружили новую вредоносную программу, написанную на языке Rust, которая использует легитимный сервис Discord в качестве канала управления. Бэкдор, получивший название ChaosBot, был выявлен в конце сентября 2025 года в инфраструктуре клиента из финансового сектора. Анализ демографии жертв указывает на то, что операторы вредоносной программы в основном нацелены на вьетнамоязычных пользователей, хотя географическая принадлежность не является исключительной.
Описание
Название ChaosBot было присвоено угрозе по имени профиля злоумышленника в Discord - "chaos_00019", который идентифицирован как ключевой исполнитель, отправляющий команды на зараженные устройства. Исследование показало, что для первоначального доступа в сеть злоумышленники использовали скомпрометированные учетные данные, связанные как с CiscoVPN, так и с чрезмерно привилегированной учетной записью Active Directory под именем "serviceaccount". С помощью этих учетных данных они применяли инструмент WMI для выполнения удаленных команд на системах сети, что позволило им развернуть и запустить ChaosBot.
Полезная нагрузка вредоносной программы (msedge_elf.dll) была внедрена через легитимный компонент Microsoft Edge identity_helper.exe из каталога Public user profile: C:\Users\Public\Libraries. После успешного внедрения ChaosBot использовался для проведения рекогносцировки системы и загрузки fast reverse proxy (frp) с целью установки обратного прокси в сети. Кроме того, злоумышленники экспериментировали с загрузкой Visual Studio Code и попытались настроить сервис VS Code Tunnel в качестве дополнительного бэкдора для обеспечения возможностей выполнения команд и скриптов.
По данным Szabolcs Schmidt в X, операторы ChaosBot также используют фишинговые кампании с вредоносными файлами ярлыков Windows для распространения вредоносной программы. Такой файл запускает команду PowerShell, которая загружает и выполняет ChaosBot, одновременно загружая и открывая безобидный PDF-документ, маскирующийся под официальную переписку от Государственного банка Вьетнама, чтобы ввести жертву в заблуждение.
ChaosBot написан на Rust и использует библиотеки reqwest или serenity для взаимодействия с API Discord в зависимости от варианта. Конфигурация вредоносной программы включает токен бота Discord, идентификатор сервера и идентификатор канала, через которые программа отправляет сообщения злоумышленникам при успешном заражении нового устройства. После проверки валидности токена бота ChaosBot создает новый канал с именем компьютера жертвы, после чего отправляет уведомление в канал "#general" о новом скомпрометированном устройстве. Все известные серверы Discord, аффилированные с ChaosBot, используют общий канал с названием "常规", что может указывать на использование злоумышленниками китайской версии Discord.
Основной функционал ChaosBot включает выполнение shell-команд через PowerShell с предварительной настройкой кодировки вывода на UTF8, что обеспечивает корректную обработку символов. Результаты выполнения команд, включая стандартный вывод и ошибки, скриншоты или файлы, отправляются обратно в канал Discord в виде файловых вложений. Среди поддерживаемых команд - выполнение произвольных команд, загрузка файлов на устройство жертвы, захват скриншотов и выгрузка файлов с зараженного устройства.
Новые варианты ChaosBot используют методы уклонения от обнаружения, включая патчинг функции ntdll!EtwEventWrite для обхода ETW, что препятствует сбору телеметрии системами защиты. Дополнительно вредоносная программа проверяет MAC-адреса системы на соответствие известным префиксам виртуальных машин VMWare и VirtualBox, завершая работу при обнаружении признаков анализа.
Для обеспечения устойчивого доступа злоумышленники использовали команду download для загрузки fast reverse proxy (frp) на устройство жертвы, что позволило им обходить периметровые средства безопасности и облегчило перемещение внутри сети. Конфигурация frp включала использование IP-адреса из региона AWS Asia Pacific (Гонконг). Также отмечались попытки использования Visual Studio Code Tunnels в качестве дополнительного бэкдора, хотя выполнение соответствующих команд завершилось неудачно из-за проблем с обработкой интерактивных выборов аутентификации.
На основе анализа более 12 образцов идентифицированы два аккаунта Discord, связанных с управлением ChaosBot: chaos_00019 и lovebb0024. С средней степенью уверенности предполагается, что разработчик вредоносной программы использует компьютер с именем ROSE0376, на что указывают строки в коде и наблюдаемые подключения к машинам жертв.
Обнаружение ChaosBot подчеркивает растущую тенденцию использования легитимных сервисов для организации каналов управления, что требует усиления мониторинга сетевой активности и применения многофакторной аутентификации для критически важных учетных записей.
Индикаторы компрометации
URLs
- https://cdn.discordapp.com/attachments/1418576301236686928/1419510506380722229/node.exe?ex=68d205ad&is=68d0b42d&hm=12fc1ef2525834019505a2830ae2c200d0a2f37c34e9a141ee2488751c42a377&
- https://cdn.discordapp.com/attachments/1418576301236686928/1419510525158621295/node?ex=68d205b2&is=68d0b432&hm=f8f4d85c862efec8b1b9f9a519da1f3472070fd3a171aca4936a9d037965374b&
- https://cdn.discordapp.com/attachments/1418576301236686928/1419525117595095080/UltraViewer.exe?ex=68d21349&is=68d0c1c9&hm=0b8afb1e51f7aa78cb5d7de7c42d5834bae9cf1ed7beb4f4e3473c22bb4f6eac&
- https://erspce-all.s3.dualstack.ap-southeast-1.amazonaws.com/fileserver/vncviewer.zip
- https://erspce-all.s3.dualstack.ap-southeast-1.amazonaws.com/fileserver/VPNupdate.pdf
- https://erspce-all.s3.dualstack.ap-southeast-1.amazonaws.com/fileserver/VPNupdate.zip
- https://transferai-all.s3.dualstack.ap-southeast-1.amazonaws.com/app/index/code.exe
- https://transferai-all.s3.dualstack.ap-southeast-1.amazonaws.com/app/index/edge/identity_helper.exe
- https://transferai-all.s3.dualstack.ap-southeast-1.amazonaws.com/app/index/edge/msedge_elf.dll
SHA256
- 04ac59051a7d9f7a6e1b43b82bd02b609a90674eb42a91a26caa1382912a5f9f
- 08c14bc1ddc1742d1c170ef44305651a97c69d57f6b9910250caa71dc4b4cb82
- 09c43ed814e1ffa520f1e84511fb11df3ac7e42be799fef5b29c7e3f7e6170fb
- 0f873d999bcc3cafe9630e68a36c4e754b89297afb73ffd1189b8e9739b203b7
- 14f4af20ebc25de51b91017510922a05ab4b82f04271ede2298a64e4aebec65d
- 20762ce45b7d4f2e59f8adf1fd91b3bc3e31c922c8ae04a92aed8529e3d15926
- 2b2bdd167a27f642d5826afe3bcc4e293dffbfee7ac58d3195dfa2b9b9fac41e
- 32fbc9ee81f0538e8b2d1427f8a7bb2c20e698a0a9004964a39fd229f4245615
- 4d5f3690cdff840ceba70c1b1630ceadd0d3dcf23c8e0add0257cba2f166f5e6
- 585ee0f329d7feb94d9b329b5d1ce5752fb07146e93fe518018dbb94b82032ec
- 5a415f0b86c296e785b173a4e1525571b9fdd927f46f58c337b9de25d8bfebff
- 5c516dd8918aa0fb96d735095b2a42968cce67541ce483ddc238503b318fc1dd
- 5dd508292f41f44dea982eeea720466552bf44e4c7b9d446a61a051feb304223
- 612210b976d365bf251ff9b0660f346ecb1b913fb2a7d129e643e3f739d5b4aa
- 6445e4e9789a3413c19a6b80c1419f55b1144a83f38a8beed033c2850c470820
- 6903c1d509c843a53e03bb04d09b35d144bce527d7e6361f241cc00161c7c837
- 6c118470b018a275ffad889bab5db45902ef8d0a0da17da6b09f5134e13a5372
- 6c9a316e7cf8f12c72c4bd2a5d5333a80f68817a058eb0edbc21a1a89e58d6f5
- 75c82147287041df1fa3628b54ea06e2eb5b3aed6b9250b02945a29bac5f9070
- 7e074d667bd4135237c2d0d0789ba8e3d777dbecc964e5090b5d2347fbcc8d38
- 8c00fc8110bb61d925cddedf355f0bf54a924bed7c92324b12797c99f172dd08
- a118b24f3b299c7f94f8e2833e98afd19d638b5aa4008e9de1e9667fe9b2b8c6
- a8897a90266df6aebe6a1b8ab191fecad49ecdfb2889230c21cc8eeba115d23e
- b6e215982cea2c9e2759dcde1f41c6b78fe424ecbb4930f4eafe6c98bebf1920
- b721ae3c71fb898a0876d6f2fde67628957d067110c0e0de35d74064a4d7f150
- b774fd6aebbc77f02c8feceee2e70ceedf74061b5dcfc7061732dcd77a9122a2
- c0a13c772b43458c1cd9f19806a93805c7d6c65dc06bc3c36d634093138ae046
- c8e50e9319753a9200e86387a8c05b2d2a4a795b5019496ffb5d9f38749ec629
- c98d5618e361797ced9f06f6febfc2c25c2d923105a9ba84465909db7b72d0e3
- cbea673af6bb1e1d33b27b763513e92053e4f3ae34874a84e0fc2afd351fd2b4
- cc7cd6f43f862528fc1ec72cbb17fe040eec61f1e84118c73ec586fd634c538d
- cdc73afb92617d9e2e0b6f2f22587f5f57316250a25b7bb8477a80628703e7b7
- e6faa8dfcac72b506105d43ca037d599fbe4df531730553689492f153677537f
- ed220bab22cee1752d432e15c8d086fcb78393d3ef00532c435b45a160d9aef4
- f4f9e105a27bcfbaef2449b340dd9ff6f28d1ecb42a74c8f4d1b7571355da3eb
Yara
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | rule ChaosBot { meta: author = "YungBinary" description = "ChaosBot detection in memory or on disk" strings: $s1 = { 48 6f 73 74 20 20 63 6f 6e 6e 65 63 74 65 64 2c 20 63 68 61 6e 6e 65 6c 20 63 72 65 61 74 65 64 3a 20 3c } $s2 = { 73 68 65 6c 6c 20 64 6f 77 6e 6c 6f 61 64 20 63 64 20 46 61 69 6c 65 64 20 74 6f 20 63 68 61 6e 67 65 20 64 69 72 65 63 74 6f 72 79 3a } $s3 = { 56 69 72 74 75 61 6c 50 72 6f 74 65 63 74 41 6d 73 69 53 63 61 6e 42 75 66 66 65 72 45 74 77 45 76 65 6e 74 57 72 69 74 65 43 4f 4d 50 55 54 45 52 4e 41 4d 45 } $s4 = { 43 3a 5c 55 73 65 72 73 5c 50 75 62 6c 69 63 5c 6d 65 73 73 61 67 65 5f 2e 74 78 74 } $bypass = { 74 ?? 66 C7 03 31 C0 C6 43 02 C3 } $antivm = { 48 ?? 30 30 3A 30 43 3A 32 39 49 39 ?? 00 } condition: uint16(0) == 0x5a4d and (1 of ($s*) or ($antivm and $bypass)) } |
1 2 3 4 5 6 7 8 9 10 | rule ChaosBot_Lnk_Dropper { meta: author = "YungBinary" description = "ChaosBot dropper shortcut file" strings: $s1 = "$localPath = (Get-Location).Path;Start-Sleep -Milliseconds 500;Remove-Item -Path" wide condition: $s1 } |
1 2 3 4 5 6 7 8 9 10 | rule ChaosBot_Lnk_Dropper { meta: author = "YungBinary" description = "ChaosBot dropper shortcut file" strings: $s1= "$localPath = (Get-Location).Path;Start-Sleep -Milliseconds 500;Remove-Item -Path" wide condition: $s1 } |