Специалисты по кибербезопасности сталкиваются с новой сложной угрозой, нацеленной на критическую инфраструктуру. Агентство по кибербезопасности и безопасности инфраструктуры США (CISA) опубликовало детальный анализ ранее неизвестного семейства вредоносного программного обеспечения под названием RESURGE. Этот зловред активно эксплуатирует уязвимость нулевого дня в продуктах Ivanti Connect Secure, Policy Secure и ZTA Gateway, заставляя организации по всему миру срочно пересматривать свои меры защиты периметра. Угроза представляет особую опасность из-за своей скрытности и способности глубоко закрепляться в системе, оставаясь незамеченной стандартными средствами мониторинга.
Описание
Согласно отчёту CISA, опубликованному 26 февраля 2026 года, RESURGE является эволюционным развитием известного семейства SPAWNCHIMERA. Однако новая версия демонстрирует качественный скачок в сложности. Её ключевая особенность - пассивная модель работы. Вредоносная программа не устанавливает постоянное соединение с командным сервером злоумышленников, а остаётся в спящем режиме на скомпрометированном устройстве Ivanti, ожидая инициации связи от внешнего оператора. Это значительно усложняет её обнаружение сетевыми системами обнаружения вторжений (IDS). Основная функциональность RESURGE сосредоточена на обеспечении максимальной скрытности и предоставлении злоумышленнику полного контроля над устройством.
Технический анализ выявил три основных компонента в образцах RESURGE. Основной модуль, "libdsupgrade.so", действует как руткит, буткит и бэкдор, отвечая за закрепление в системе и удалённый доступ. Второй компонент, "liblogblock.so", является вариантом известного вредоносного ПО SPAWNSLOTH и предназначен для манипуляций с системными журналами с целью сокрытия следов активности. Третий файл, "dsmain", представляет собой статически скомпилированный исполняемый файл, содержащий утилиты BusyBox и скрипт для извлечения ядра Linux, что указывает на глубокий уровень взаимодействия злоумышленника с операционной системой устройства. Уникальность RESURGE заключается в использовании изощрённой схемы аутентификации на сетевом уровне.
Для установления связи вредоносная программа внедряется в процесс веб-сервера Ivanti с именем "web" и перехватывает входящие TLS-соединения. RESURGE анализирует каждый пакет "ClientHello", вычисляя контрольную сумму CRC32 от поля случайных байт в рукопожатии. Если полученный хэш совпадает с заранее заданным значением, соединение считается авторизованным и перенаправляется на скрытый сокет-файл на диске. В противном случае трафик передаётся легитимному веб-серверу Ivanti. Для ответа оператору RESURGE генерирует поддельный пакет "ServerHello" со сфальсифицированным TLS-сертификатом, имитирующим сертификат Ivanti, что позволяет злоумышленнику убедиться, что он взаимодействует именно с вредоносным имплантом. После этой начальной проверки следует уже полноценное взаимное TLS-соединение (mTLS) с использованием стойкого шифрования на эллиптических кривых (Elliptic-curve cryptography), обеспечивающее защищённый канал для удалённого управления.
Эксперты CISA напрямую связывают эти атаки с эксплуатацией уязвимости CVE-2025-0282. Эта уязвимость, представляющая собой переполнение буфера в стеке, позволяет удалённому злоумышленнику выполнить произвольный код на целевой системе. Она была добавлена в каталог активно эксплуатируемых уязвимостей CISA (Known Exploited Vulnerabilities) ещё 8 января 2025 года, что подчёркивает её серьёзность и актуальность. Уязвимость затрагивает не только Ivanti Connect Secure, но и смежные продукты Policy Secure и ZTA Gateway, потенциально расширяя поверхность атаки для угрозовых акторов. Установив начальное присутствие через эту уязвимость, злоумышленники развёртывают RESURGE для долгосрочного закрепления.
Для обеспечения персистентности RESURGE выполняет серию сложных команд, модифицирующих ключевые компоненты системы. Вредоносная программа встраивает веб-шелл в CGI-скрипт устройства для удалённого выполнения команд, отключает или подменяет проверки целостности файлов, а также напрямую модифицирует образ загрузочного диска ("coreboot.img"). Последняя техника особенно опасна: RESURGE расшифровывает образ оперативной памяти, встраивает в него свои компоненты и повторно шифрует, обеспечивая выживание даже после перезагрузки устройства или попыток частичного восстановления. Такие глубокие изменения делают стандартные процедуры исправления, такие как простое применение патча, неэффективными.
Последствия успешного внедрения RESURGE могут быть катастрофическими, особенно для организаций критической инфраструктуры, где устройства Ivanti часто используются в качестве VPN-шлюзов. Злоумышленники получают возможность красть учётные данные, повышать привилегии, создавать новые учётные записи и перемещаться по внутренней сети. Встроенный сервер Secure Shell (SSH) предоставляет операторам практически полный доступ к командной строке устройства, открывая путь для установки дополнительных вредоносных нагрузок, слежки или саботажа. Скрытный характер атаки, при котором вредоносный трафик практически неотличим от легитимного TLS/SSH, позволяет угрозе существовать месяцами без обнаружения.
В свете этих рисков CISA выпустило строгие рекомендации по восстановлению. Агентство подчёркивает, что установка официального патча от Ivanti для CVE-2025-0282 необходима, но недостаточна для удаления самого импланта RESURGE. Для полного обезвреживания заражённых систем администраторам настоятельно рекомендуется выполнить полный сброс устройств до заводских настроек. Для виртуальных или облачных инстансов следует использовать заранее подготовленный чистый образ. Кроме того, критически важно сбросить пароли для всех учётных записей, как привилегированных, так и обычных, включая ключевую учётную запись "krbtgt" в Active Directory, ответственную за шифрование билетов Kerberos. CISA также предоставило сигнатуры YARA для выявления активности RESURGE в сетях, которые доступны для загрузки всеми заинтересованными командами безопасности. Текущая ситуация служит суровым напоминанием о необходимости многослойной защиты, проактивного мониторинга и готовности к выполнению комплексных, а не точечных, процедур реагирования на инциденты.
Индикаторы компрометации
MD5
- 44d09ca5b989e24ff5276d5b5ee1d394
- 6e01ef1367ea81994578526b3bd331d6
- cfb263a731d51ff489168bbca0d3bd2f
SHA1
- 09eb513f284771461bcdc16ee28d31ce8bbe74e0
- 5309f9082da0fc24ebf03cb1741fa71335224e5a
- 87bcbbcb878aeee6ad4463464745770e95c6a937
SHA256
- 3526af9189533470bc0e90d54bafb0db7bda784be82a372ce112e361f7c7b104
- 366635c00b8e6f749a4d948574a0f1e7b4c842ca443176de27af45debbc14f71
- 52bbc44eb451cb5e16bf98bc5b1823d2f47a18d71f14543b460395a1c1b1aeda
- b1221000f43734436ec8022caaa34b133f4581ca3ae8eccd8d57ea62573f301d
- caab341a35badbc65046bd02efa9ad2fe2671eb80ece0f2fa9cf70f5d7f4bedc
SHA512
- 3d12fdb707c188eb2e94cbf2dd42a50cfe343128652bab9245a54b887e35bc32c6a88c8faa5001a045df3991b387fcd6a27719ecbf84f6ce893163b040c2e0dd
- 63ded8e7294ee9a0d4181310d25c348d0d657d35e57740234cb98c9abfd8eb18bb3cd35a28bca3013f3e141b41131b923b39717c7ae864019287c2d85a36ae63
- ecbda91571b0429be42017dddd2cb687ce696dd601cd02f2502119b8b732376cee2097069ca35ba0089387d58213c6140c2caf8e6c2e05733d21c309b51e2b9b
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | rule CISA_25993211_02 : SPAWNSLOTH trojan compromises_data_integrity { meta: author = "CISA Code & Media Analysis" incident = "25993211" date = "2025-03-04" last_modified = "20250304_0906" actor = "n/a" family = "SPAWN" capabilities = "compromises-data-integrity" malware_type = "trojan" tool_type = "unknown" description = "Detects SPAWNSLOTH malware samples" sha256_1 = "3526af9189533470bc0e90d54bafb0db7bda784be82a372ce112e361f7c7b104" strings: $s1 = "dslogserver" $s2 = "g_do_syslog_servers_exist" $s3 = "_ZN5DSLog4File3addEPKci" $s4 = "dlsym" condition: 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 31 32 | rule CISA_10454006_13 : SALTWATER backdoor exploit_kit communicates_with_c2 determines_c2_server hides_executing_code exploitation { meta: author = "CISA Code & Media Analysis" incident = "10454006" date = "2023-08-10" last_modified = "20230905_1500" actor = "n/a" family = "SALTWATER" capabilities = "communicates-with-c2 determines-c2-server hides-executing-code" malware_type = "backdoor exploit-kit" tool_type = "exploitation" description = "Detects SALTWATER samples" sha256 = "caab341a35badbc65046bd02efa9ad2fe2671eb80ece0f2fa9cf70f5d7f4bedc" strings: $s1 = { 70 74 68 72 65 61 64 5f 63 72 65 61 74 65 } $s2 = { 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 } $s3 = { 54 72 61 6d 70 6f 6c 69 6e 65 } $s4 = { 64 73 65 6c 64 73 } $s5 = { 25 30 38 78 20 28 25 30 32 64 29 20 25 2d 32 34 73 20 25 73 25 73 25 73 0a } $s6 = { 45 6e 74 65 72 20 6f 75 73 63 64 6f 6f 65 7c 70 72 65 64 61 72 65 28 25 70 2c 20 25 70 2c 20 25 70 29 } $s7 = { 45 6e 74 65 72 20 61 75 74 63 63 6f 6f 71 38 63 72 65 61 74 65 } $s8 = { 74 6e 6f 72 6f 74 65 63 74 6a 73 65 6d 6f 72 79 } $s9 = { 56 55 43 4f 4d 49 53 53 } $s10 = { 56 43 4f 4d 49 53 53 } $s11 = { 55 43 4f 4d 49 53 44 } $s12 = { 41 45 53 4b 45 59 47 45 4e 41 53 53 49 53 54 } $s13 = { 46 55 43 4f 4d 50 50 } $s14 = { 55 43 4f 4d 49 53 53 } condition: uint16(0) == 0x457f and filesize < 1800KB and 8 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 31 | rule CISA_25239228_04 : SPAWNSNAIL backdoor dropper trojan communicates_with_c2 infects_files { meta: author = "CISA Code & Media Analysis" incident = "25239228" date = "2025-03-04" last_modified = "20250304_1144" actor = "n/a" family = "SPAWN" capabilities = "communicates-with-c2 infects-files" malware_type = "backdoor dropper trojan" tool_type = "unknown" description = "Detects SPAWNSNAIL malware samples" sha256_1 = "366635c00b8e6f749a4d948574a0f1e7b4c842ca443176de27af45debbc14f71" strings: $s1 = { 64 73 6D 64 6D 00 } $s2 = { 2F 74 6D 70 2F 2E 6C 69 62 6C 6F 67 62 6C 6F 63 6B 2E 73 6F 00 } $s3 = { 66 75 6E 63 68 6F 6F 6B 5F } $s4 = { 2F 70 72 6F 63 2F 25 64 2F 6D 61 70 73 00 } $p1 = { 50 54 52 41 43 45 5F 41 54 54 41 43 48 00 } $p2 = { 50 54 52 41 43 45 5F 50 4F 4B 45 54 45 58 54 00 } $p3 = { 50 54 52 41 43 45 5F 50 45 45 4B 54 45 58 54 00 } $pk = { 2D 42 45 47 49 4E 20 4F 50 45 4E 53 53 48 20 50 52 49 56 41 54 45 20 4B 45 59 2D } $ssh1 = { 73 73 68 5F 62 69 6E 64 5F 6C 69 73 74 65 6E 00 } $ssh2 = { 73 73 68 5F 68 61 6E 64 6C 65 5F 6B 65 79 5F 65 78 63 68 61 6E 67 65 00 } $ssh3 = { 73 73 68 5F 61 64 64 5F 73 65 74 5F 63 68 61 6E 6E 65 6C 5F 63 61 6C 6C 62 61 63 6B 73 00 } $ssh4 = { 73 73 68 5F 70 6B 69 5F 69 6D 70 6F 72 74 5F 70 72 69 76 6B 65 79 5F 62 61 73 65 36 34 00 } $ssh5 = { 73 73 68 5F 63 68 61 6E 6E 65 6C 5F 72 65 71 75 65 73 74 5F 65 78 65 63 } condition: uint32(0) == 0x464c457f and any of ($s*) and 2 of ($p*) and $pk and 2 of ($ssh*) } |
| 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 | rule CISA_25993211_01 : RESURGE backdoor dropper rootkit bootkit { meta: author = "CISA Code & Media Analysis" incident = "25993211" date = "2025-03-03" last_modified = "20250303_1446" actor = "n/a" family = "SPAWN" capabilities = "n/a" malware_type = "backdoor dropper rootkit bootkit" tool_type = "unknown" description = "Detects RESURGE malware samples" sha256_1 = "52bbc44eb451cb5e16bf98bc5b1823d2f47a18d71f14543b460395a1c1b1aeda" strings: $s1 = "snprintf" $s2 = "CGI::param" $s3 = "coreboot.img" $s4 = "scanner.py" $s5 = { 6C 6F 67 73 } $s6 = "accept" $s7 = "strncpy" $s8 = "dsmdm" $s9 = "funchook_create" $s10 = { 20 83 B8 ED } condition: all of them } |