С момента первоначального раскрытия CVE-2023-46805 и CVE-2024-21887 10 января 2024 года компания Mandiant провела множество мероприятий по реагированию на инциденты в различных отраслях и географических регионах.
Mandiant отслеживает многочисленные кластеры активности, эксплуатирующие CVE-2023-46805, CVE-2024-21887 и CVE-2024-21893 в рамках наших расследований инцидентов. Помимо предполагаемых групп шпионажа, связанных с Китаем, Mandiant также выявила финансово мотивированных субъектов, эксплуатирующих CVE-2023-46805 и CVE-2024-21887, которые, вероятно, используют их для таких операций, как криптодобыча. С момента публичного раскрытия информации 10 января 2024 года Mandiant обнаружила восемь отдельных кластеров, вовлеченных в эксплуатацию одного или нескольких из этих CVE Ivanti. Из них мы выделяем пять кластеров China-nexus, которые осуществляли вторжения.
В феврале 2024 года Mandiant выявила кластер активности, отслеживаемый как UNC5291, который, по нашей оценке, со средней степенью уверенности является Volt Typhoon, нацеленным на энергетический и оборонный секторы США. Кампания UNC5291 нацелилась на Citrix Netscaler ADC в декабре 2023 года и прощупывала устройства Ivanti Connect Secure в середине января 2024 года, однако Mandiant не наблюдала, чтобы Volt Typhoon успешно скомпрометировал Ivanti Connect Secure.
UNC5221
UNC5221 - это подозреваемый агент Chinanexus, которого Mandiant отслеживает как единственную группу, эксплуатирующую CVE-2023-46805 и CVE-2024-21887 в период до раскрытия информации с начала декабря 2023 года. Как указано в нашей предыдущей записи в блоге, UNC5221 также широко эксплуатировал CVE-2023-46805 и CVE-2024-21887 после публичного раскрытия 10 января 2024 года.
UNC5266
Mandiant создала UNC5266 для отслеживания эксплуатации после раскрытия информации, которая привела к развертыванию имплантационной структуры SLIVER Бишопа Фокса, варианта WARPWIRE и нового семейства вредоносных программ, которое Mandiant назвала TERRIBLETEA. На данный момент, основываясь на сходстве использования инфраструктуры, Mandiant с умеренной уверенностью подозревает, что UNC5266 частично совпадает с UNC3569, агентом шпионажа из Китая, который был замечен в использовании уязвимостей в Aspera Faspex, Microsoft Exchange и Oracle Web Applications Desktop Integrator, среди прочих, для получения первоначального доступа к целевым средам.
UNC5330
UNC5330 - подозреваемый в шпионаже между Китаем и Неаполем. UNC5330 был замечен в использовании цепочки CVE-2024-21893 и CVE-2024-21887 для компрометации устройств Ivanti Connect Secure VPN еще в феврале 2024 года. Посткомпрометирующая деятельность UNC5330 включает развертывание PHANTOMNET и TONERJAM. UNC5330 использовала инструменты управления Windows Management Instrumentation (WMI) для проведения разведки, перемещения в пространстве, манипулирования записями реестра и установления постоянства.
Mandiant заметила, что UNC5330 эксплуатирует сервер с 6 декабря 2021 года, который группа использовала в качестве прокси-сервера GOST, чтобы облегчить развертывание вредоносных инструментов на конечных устройствах. Сертификат по умолчанию для прокси-сервера GOST наблюдался с 1 сентября 2022 года по 1 января 2024 года. UNC5330 также пыталась загрузить Fast Reverse Proxy (FRP) с этого сервера 3 февраля 2024 года со взломанного устройства Ivanti Connect Secure. Учитывая повторное использование ключей SSH и временную близость этих событий, Mandiant с умеренной уверенностью считает, что UNC5330 работал через этот сервер как минимум с 2021 года.
UNC5330
UNC5337 - предполагаемый агент шпионажа из Китая, который взломал устройства Ivanti Connect Secure VPN еще в январе 2024 года. UNC5337 подозревается в использовании CVE-2023-46805 (обход аутентификации) и CVE-2024-21887 (внедрение команд) для заражения устройств Ivanti Connect Secure. UNC5337 использовал несколько семейств пользовательских вредоносных программ, включая пассивный бэкдор SPAWNSNAIL, туннелер SPAWNMOLE, установщик SPAWNANT и утилиту для подделки журналов SPAWNSLOTH. Mandiant со средней степенью уверенности подозревает, что UNC5337 - это UNC5221.
UNC5291
UNC5291 - это кластер целевой зондирующей активности, который, по нашим оценкам, с умеренной уверенностью связан с UNC3236, также известным под публичным названием Volt Typhoon. Активность в этом кластере началась в декабре 2023 года и была сосредоточена на Citrix Netscaler ADC, а затем переключилась на устройства Ivanti Connect Secure после того, как в середине января 2024 года были обнародованы подробности. Зондирование наблюдалось в академическом, энергетическом, оборонном и медицинском секторах, что соответствует прошлому интересу Volt Typhoon к критической инфраструктуре. В феврале 2024 года Агентство кибербезопасности и защиты инфраструктуры (CISA) выпустило предупреждение о том, что Volt Typhoon нацелен на критическую инфраструктуру и потенциально заинтересован в устройствах Ivanti Connect Secure для первоначального доступа.
Новые ТТП и вредоносные программы
Компания Mandiant выявила новые методы, используемые злоумышленниками для атаки на устройства Ivanti Connect Secure. С помощью анализа компрометированного устройства, Mandiant обнаружила четыре различных семейств вредоносных программ, которые работают вместе для создания незаметного бэкдора и обеспечения долгосрочного доступа. Эти семейства включают программу установки SPAWNANT, туннель SPAWNMOLE и бэкдор SPAWNSNAIL, который имеет возможность запуска другой утилиты, называемой SPAWNSLOTH. SPAWNSLOTH фальсифицирует журналы и блокирует их пересылку на внешний сервер syslog. Mandiant также обнаружила новую веб-оболочку, названную ROOTROT, которая внедряется в легитимный файл Connect Secure и может быть использована для получения доступа к системе. Эта веб-оболочка использует известные уязвимости CVE-2023-46805 и CVE-2024-21887.
Indicators of Compromise
IPv4
- 103.13.28.40
- 103.27.110.83
- 103.73.66.37
- 193.149.129.191
- 206.188.196.199
- 8.218.240.85
- 98.142.138.21
Domains
- akapush.us.to
- cpanel.netbar.org
- oast.fun
- opra1.oprawh.workers.dev
- pan.xj.hk
MD5
- 08a817e0ae51a7b4a44bc6717143f9c2
- 3ef30bc3a7e4f5251d8c6e1d3825612d
- 4645f2f6800bc654d5fa812237896b00
- 4acfc5df7f24c2354384f7449280d9e0
- 4f68862d3170abd510acd5c500e43548
- 4f79c70cce4207d0ad57a339a9c7f43c
- 71b4368ef2d91d49820c5b91f33179cb
- 846369b3a3d4536008a6e1b92ed09549
- 8e429d919e7585de33ea9d7bb29bc86b
- 9d0b6276cbc4c8b63c269e1ddc145008
- 9d684815bc96508b99e6302e253bc292
- b210a9a9f3587894e5a0f225b3a6519f
- bb3b286f88728060c80ea65993576ef8
- c251afe252744116219f885980f2caea
- cfca610934b271c26437c4ce891bad00
- d88bbed726d79124535e8f4d7de5592e
- e72efc0753e6386fbca0a500836a566e
- e7d24813535f74187db31d4114f607a1
- e7fdbed34f99c05bb5861910ca4cc994
- fc1a8f73010f401d6e95a42889f99028
YARA Rules
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | rule M_Hunting_Webshell_ROOTROT_1 { meta: author = "Mandiant" description = "This rule detects ROOTROT, a web shell written in Perl that is embedded into a legitimate Pulse Secure .ttc file to enable arbitrary command execution." md5 = "c7ffd2c06e9b7e8e0b7ac92a0dbe3294" strings: $s1 = "use MIME::Base64" ascii $s2 = {6d 79 20 24 61 72 67 3d 64 65 63 6f 64 65 5f 62 61 73 65 36 34 28 22 24 6b 65 79 22 29} $s3 = {24 6f 75 74 70 75 74 20 2e 3d 20 22 3c 21 2d 2d 5c 6e 22 3b} $s4 = {22 3c 2f 62 6f 64 79 3e 5c 6e 5c 6e 3c 2f 68 74 6d 6c 3e 5c 6e 22} condition: filesize < 4KB and all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | rule M_Hunting_Backdoor_BRICKSTORM_1 { meta: author = "Mandiant" created = "2024-01-30" md5 = "4645f2f6800bc654d5fa812237896b00" descr = "Hunting rule looking for BRICKSTORM golang backdoor samples" strings: $v1 = "/home/vsphere-ui/vcli" ascii wide $v2 = "/opt/vmware/sbin" ascii wide $v3 = "/opt/vmware/sbin/vami-httpd" ascii wide $s1 = "github.com/gorilla/mux" ascii wide $s2 = "WRITE_LOG=true" ascii wide $s3 = "wssoft" ascii wide condition: uint32(0) == 0x464c457f and filesize < 6MB and 1 of ($v*) and 2 of ($s*) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | import "pe" rule M_APT_Backdoor_Win_PHANTOMNET_1 { meta: author = "Mandiant" md5 = "59f4d38a5caafbc94673c6d488bf37e3" strings: $phantomnet = /\\PhantomNet-\w{1,10}\.pdb/ ascii nocase condition: (uint16(0) == 0x5A4D) and (uint32(uint32(0x3C)) == 0x00004550) and all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | rule M_APT_Backdoor_SLIVER_1 { meta: Author = “Mandiant” description = "Detects Windows, MacOS and ELF variants of the Sliver implant framework" md5 = "5ecd0c38501dfb02b682cec0a2d93aa9" strings: $s1 = ".InvokeSpawnDllReq" $s2 = ".(*InvokeSpawnDllReq).Reset" $s3 = ".(*InvokeSpawnDllReq).ProtoMessage" $s4 = ".(*InvokeSpawnDllReq).ProtoReflect" $s5 = ".(*InvokeSpawnDllReq).Descriptor" $s6 = ".(*InvokeSpawnDllReq).GetData" $s7 = ".(*InvokeSpawnDllReq).GetProcessName" $s8 = ".(*InvokeSpawnDllReq).GetArgs" $s10 = ".(*InvokeSpawnDllReq).GetKill" $s11 = ".(*InvokeSpawnDllReq).GetPPid" $s12 = ".(*InvokeSpawnDllReq).GetProcessArgs" $s13 = ".(*InvokeSpawnDllReq).GetRequest" $s14 = ".(*InvokeSpawnDllReq).String" $s15 = ".(*InvokeSpawnDllReq).GetEntryPoint" condition: ((uint16(0) == 0x5a4d and uint32(uint32(0x3C)) == 0x00004550) or uint32(0) == 0x464c457f or (uint32(0) == 0xBEBAFECA or uint32(0) == 0xFEEDFACE or uint32(0) == 0xFEEDFACF or uint32(0) == 0xCEFAEDFE)) and 5 of ($s*) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | rule M_APT_Backdoor_TERRIBLETEA_1 { meta: author = "Mandiant" description = "This rule is designed to detect on events related to terribletea. TERRIBLETEA is a backdoor written in Go that communicates over HTTP. Its many capabilities include shell command execution, capturing screens, keystroke logging, port scanning, enumerating files, starting a SOCKS5 proxy and new SSH session, downloading files, and executing SQL queries." md5 = "bb3b286f88728060c80ea65993576ef8" strings: $code_part_of_getcommand = {48 BA 44 61 74 61 31 73 33 6E [1-12] 80 7B ?? 64} $code_get_task = { 48 8D [5] B9 04 00 00 00 48 8B ?? 24 [4] 48 8D [5] 41 B8 03 00 00 00 E8} $func1 = "SendRequest" fullword $func2 ="UploadResult" $func3 ="Online" $func4 ="GetCommond" condition: all of ($code*) and any of ($func*) and filesize<20MB } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | rule M_Launcher_TONERJAM_1 { meta: author = "Mandiant" description = "This rule detects TONERJAM, a launcher that decrypts and executes a shellcode payload stored as an encrypted local file and decrypts it using an AES key derived from a SHA hash of the final 16 bytes of the encrypted payload." strings: $p00_0 = {e9[4]488b41??668338??75??4883c0??488941??b8[4]eb??b8} $p00_1 = {8030??488d40??41ffc14183f9??72??ba[4]488d4c24??e8[4]488d0d} condition: uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and ( ($p00_0 in (17000..28000) and $p00_1 in (3700..14000)) ) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | rule M_APT_Installer_SPAWNSNAIL_1 { meta: author = "Mandiant" description = "Detects SPAWNSNAIL. SPAWNSNAIL is an SSH backdoor targeting Ivanti devices. It has an ability to inject a specified binary to other process, running local SSH backdoor when injected to dsmdm process, as well as injecting additional malware to dslogserver" md5 = "e7d24813535f74187db31d4114f607a1" strings: $priv = "PRIVATE KEY-----" ascii fullword $key1 = "%d/id_ed25519" ascii fullword $key2 = "%d/id_ecdsa" ascii fullword $key3 = "%d/id_rsa" ascii fullword $sl1 = "[selinux] enforce" ascii fullword $sl2 = "DSVersion::getReleaseStr()" ascii fullword $ssh1 = "ssh_set_server_callbacks" ascii fullword $ssh2 = "ssh_handle_key_exchange" ascii fullword $ssh3 = "ssh_add_set_channel_callbacks" ascii fullword $ssh4 = "ssh_channel_close" ascii fullword condition: uint32(0) == 0x464c457f and $priv and any of ($key*) and any of ($sl*) and any of ($ssh*) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | rule M_APT_Installer_SPAWNANT_1 { meta: author = "Mandiant" description = "Detects SPAWNANT. SPAWNANT is an Installer targeting Ivanti devices. Its purpose is to persistently install other malware from the SPAWN family (SPAWNSNAIL, SPAWNMOLE) as well as drop additional webshells on the box." strings: $s1 = "dspkginstall" ascii fullword $s2 = "vsnprintf" ascii fullword $s3 = "bom_files" ascii fullword $s4 = "do-install" ascii $s5 = "ld.so.preload" ascii $s6 = "LD_PRELOAD" ascii $s7 = "scanner.py" ascii condition: uint32(0) == 0x464c457f and 5 of ($s*) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | rule M_APT_Tunneler_SPAWNMOLE_1 { meta: author = "Mandiant" description = "Detects a specific comparisons in SPAWNMOLE tunneler, which allow malware to filter put its own traffic . SPAWNMOLE is a tunneler written in C and compiled as an ELF32 executable. The sample is capable of hijacking a process on the compromised system with a specific name and hooking into its communication capabilities in order to create a proxy server for tunneling traffic." md5 = "4f79c70cce4207d0ad57a339a9c7f43c" strings: /* 3C 16 cmp al, 16h 74 14 jz short loc_5655C038 0F B6 45 C1 movzx eax, [ebp+var_3F] 3C 03 cmp al, 3 74 0C jz short loc_5655C038 0F B6 45 C5 movzx eax, [ebp+var_3B] 3C 01 cmp al, 1 0F 85 ED 00 00 00 jnz loc_5655C125 */ $comparison1 = { 3C 16 74 [1] 0F B6 [2] 3C 03 74 [1] 0F B6 [2] 3C 01 0F 85 } /* 81 7D E8 E2 E3 49 FB cmp [ebp+var_18], 0FB49E3E2h 0F 85 CD 00 00 00 jnz loc_5655C128 81 7D E4 61 83 C3 1B cmp [ebp+var_1C], 1BC38361h 0F 85 C0 00 00 00 jnz loc_5655C128 */ $comparison2 = { 81 [2] E2 E3 49 FB 0F 85 [4] 81 [2] 61 83 C3 1B 0F 85} condition: uint32(0) == 0x464c457f and all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | rule M_APT_Utility_SPAWNSLOTH_1 { meta: author = "Mandiant" description = "Detects SPAWNSLOTH. SPAWNSLOTH is an Utility targeting Ivanti devices. Its purpose is to work together with SPAWNSNAIL and block logging via dslogserver process when SPAWNSNAIL backdoor is active." md5 = "4acfc5df7f24c2354384f7449280d9e0" strings: $dslog = "dslogserver" ascii fullword $hook1 = "g_do_syslog_servers_exist" ascii fullword $hook2 = "_ZN5DSLog4File3addEPKci" ascii fullword $hook3 = "funchook_create" ascii fullword condition: uint32(0) == 0x464c457f and all of them } |