Анализ инцидентов с программами-вымогателями, на которые реагировали эксперты Mandiant в 2025 году, рисует противоречивую картину. С одной стороны, экосистема цифрового вымогательства демонстрирует невероятную устойчивость и адаптивность, устанавливая новые рекорды по активности. С другой - появляются убедительные признаки того, что прибыльность этого преступного бизнеса снижается, вынуждая злоумышленников менять стратегии, цели и тактики. Ключевыми трендами года стали беспрецедентный рост числа жертв, публикуемых на сайтах утечек данных, резкое увеличение атак на инфраструктуру виртуализации и почти повсеместное хищение информации перед шифрованием.
Описание
Парадокс 2025 года заключается в том, что, несмотря на беспрецедентные усилия правоохранительных органов и заметный прогресс в киберзащите организаций, общее число публикаций о жертвах на специализированных «позорящих» сайтах выросло почти на 50% по сравнению с 2024 годом. Этот рост, однако, не обязательно отражает увеличение количества успешных атак. Скорее, он свидетельствует о снижении доли выплат выкупов. Когда организации отказываются платить, преступникам остаётся лишь публично выкладывать украденные данные для давления. Более того, значительная часть этих публикаций связана с операциями, где шифрование данных вообще не применялось, а монетизация строилась исключительно на угрозе их обнародования. Яркий пример - группа CL0P, чья площадка стала третьей по активности, хотя сама программа-вымогатель CLOP в инцидентах Mandiant была замечена лишь единожды.
Финансовая эффективность бизнеса программ-вымогателей, судя по открытым отчётам, снижается. Средний размер требований выкупа упал примерно на треть, а процент организаций, соглашающихся на оплату, достиг исторического минимума к концу 2025 года. Одновременно жертвы стали лучше подготовлены: почти половина компаний смогла восстановиться из резервных копий в 2024 году, что в четыре раза больше показателя 2022 года. Эти факторы заставляют преступников искать новые пути монетизации. Ответом стал заметный крен в сторону хищения данных, которое наблюдалось в 77% инцидентов с программами-вымогателями в 2025 году против 57% годом ранее. Данные стали более надёжным рычагом давления, особенно когда восстановление из бэкапов сводит на нет эффект от шифрования.
Вторым стратегическим изменением стало смещение фокуса на организации меньшего размера. Анализ жертв, чьи данные публиковались на сливных сайтах, показывает, что злоумышленники всё чаще выбирают цели с численностью сотрудников менее 200 человек. Вероятно, это связано с менее зрелыми программами безопасности в таких компаниях и, как следствие, с более низким порогом входа. В утекших чатах операторов программы-вымогателя Basta прямо упоминается, что атаки на небольшие сети считаются более эффективными.
Тактическая картина атак также претерпела значительные изменения. Наиболее распространённым вектором начального доступа стало использование уязвимостей, которое подтвердилось или подозревалось в трети расследованных инцидентов. Излюбленными мишенями для эксплуатации остаются VPN-шлюзы и межсетевые экраны таких вендоров, как Fortinet, SonicWall, Palo Alto Networks и Citrix. При этом эксперты отмечают, что несколько групп, включая UNC2165, успешно применяли для начального доступа уязвимости нулевого дня, что указывает на высокий уровень технической подготовки части акторов.
Наиболее значимым трендом внутри корпоративных сетей стал беспрецедентный рост атак на системы виртуализации. В 43% инцидентов 2025 года злоумышленники целенаправленно атаковали виртуальную инфраструктуру, по сравнению с 29% в 2024 году. Это не просто случайные атаки на ESXi-хосты. Преступники демонстрируют растущую зрелость: они активно проводят разведку виртуальных сред через VMware vSphere, автоматизируют массовое развёртывание вредоносного ПО с помощью скриптов, а перед шифрованием целенаправленно останавливают виртуальные машины и удаляют снапшоты. Такая тактика направлена на максимальное увеличение ущерба и усложнение восстановления.
Доминирующим семейством программ-вымогателей в расследованиях Mandiant за 2025 год стала Redbike, ответственная почти за 30% инцидентов. Её активность затмила даже былые показатели LockBit и ALPHV. Примечательно, что экосистема демонстрирует живучесть: несмотря на силовые операции против LockBit и внезапное прекращение деятельности RansomHub, их место быстро заняли давно существующие бренды Qilin и Akira, которые и обеспечили рекордное число публикаций на сайтах утечек.
В техническом арсенале преступников продолжают доминировать легитимные инструменты и публично доступные утилиты. Для разведки сети в половине случаев используются сканеры вроде Advanced IP Scanner, для хищения данных - Rclone и клиенты для облачных хранилищ, для удалённого доступа - AnyDesk и ScreenConnect. Однако наметился спад в использовании некоторых «классических» инструментов, таких как фреймворк Cobalt Strike BEACON и утилита Mimikatz, что может быть связано с улучшением их детектирования системами защиты.
Одновременно злоумышленники начинают экспериментировать с новыми технологиями. Отдельные группы, такие как Cry0 и DEADLOCK, интегрируют в свою инфраструктуру Web3-решения на базе блокчейна, чтобы повысить её устойчивость к блокировкам. Некоторые операторы моделей Ransomware-as-a-Service заявляют о внедрении элементов искусственного интеллекта для анализа жертв и ведения переговоров.
В 2026 году программы-вымогатели останутся одной из самых серьёзных киберугроз. Однако снижение доходности будет вынуждать преступников дальше адаптироваться: ужесточать отбор партнёров-аффилиатов, активнее использовать агрессивные тактики шантажа, чаще обходиться без шифрования, делая ставку только на кражу данных, и искать возможности для вторичной монетизации уже полученного доступа к сетям жертв. Для защищающихся организаций это означает необходимость комплексного подхода: своевременное обновление ПО, особенно периметровых устройств, строгий контроль учётных записей и привилегий, сегментация сетей с особой защитой систем виртуализации и резервного копирования, а также наличие и регулярная проверка надёжных, изолированных резервных копий, которые являются последней линией обороны в случае успешной атаки.
YARA
| 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 | rule M_APTFIN_Ransom_AGENDA_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $conf1 = "public_rsa_pem" fullword $conf2 = "private_rsa_pem" fullword $conf3 = "directory_black_list" fullword $conf4 = "file_black_list" fullword $conf5 = "file_pattern_black_list" fullword $conf6 = "process_black_list" fullword $conf7 = "win_services_black_list" fullword $conf8 = "company_id" fullword $conf9 = "note" fullword $load_const1 = { 21 B7 F6 F7 } $load_const2 = { F6 36 A4 69 } $load_s1 = "run_portable_executable" fullword $load_s2 = "MemoryLoadLibrary" fullword $load_s3 = "_ZN9morph_poc4main" $note1 = "Extension: " $note2 = "Domain: " $note3 = "login: " $note4 = "password: " $note5 = "Enter credentials-- Credentials" $note6 = "-- Qilin" $note7 = "-- Recovery" $note8 = "www.torproject.org" $note9 = ".onion" $note10 = "Employees personal data, CVs, DL , SSN." $note11 = "%s/%s_RECOVER.txt" condition: uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and (7 of ($conf*) or 7 of ($note*) or all of ($load*)) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | rule M_Hunting_Win_Ransomware_AGENDA_RUST_2_MBeta { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $rust = "/rust/" $conf1 = "\"public_rsa_pem\":" $conf2 = "\"private_rsa_pem\":" $conf3 = "\"directory_black_list\":" $conf4 = "\"file_black_list\":" $conf5 = "\"file_pattern_black_list\":" $conf6 = "\"process_black_list\":" $conf7 = "\"win_services_black_list\":" $conf8 = "\"company_id\":" $conf9 = "\"n\":" $conf10 = "\"p\":" $conf11 = "\"fast\":" $conf12 = "\"skip\":" $conf13 = "\"step\":" $conf14 = "\"accounts\":" $conf15 = "\"note\":" condition: uint16(0) == 0x5a4d and uint32(uint32(0x3C)) == 0x00004550 and filesize < 5MB and (($rust and 8 of ($conf*)) or (13 of ($conf*))) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule M_Ransom_REDBIKE_2 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $a1 = ".akira" $a2 = "akira_readme.txt" $a3 = "akiralkzxzq2dsrzsrvbr2xgbbu2wgsmxryd4csgfameg52n7efvr2id" $s1 = "--encryption_percent" ascii wide nocase $s2 = "--encryption_path" ascii wide nocase $s3 = "--share_file" ascii wide nocase condition: ((all of ($s*)) and (any of ($a*))) and (uint16(0) == 0x5A4D) and filesize > 500KB and filesize < 2MB } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule M_APTFIN_Ransom_REDBIKE_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $a = "akira_readme.txt" $b = "save your TIME, MONEY, EFFORTS" $c = "akiral2iz6a7qgd3ayp3l6yub7xx2uep76idk3u2kollpj5z3z636bad.onion" $d = "--encryption_percent" $e = "--encryption_path" $f = "--share_file" condition: all of them and (uint32be(0) == 0x7F454C46) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | rule M_Hunting_CLOP_rol7XorHash32_ConfigHashes_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $hex_asm_literal_a = { 92 F7 53 7A } $hex_asm_literal_b = { 43 29 79 71 } $hex_asm_literal_c = { 2A 81 C4 E2 } $hex_asm_literal_d = { 2E F4 FA 7E } $hex_asm_literal_e = { 31 E5 7F 91 } $hex_asm_literal_f = { 16 24 45 D6 } $hex_asm_literal_g = { 56 22 93 EA } condition: all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | rule M_Ransom_CLOP_3 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $str_jobmessage_a = "Successfully started daemon-name" $str_jobmessage_b = "Could not change working directory to /" $str_jobmessage_c = "Could not generate session ID for child process" $asm_code_fileordirectory = { 25 00 F0 00 00 3D 00 40 00 00 75 } $asm_functioncall_open64_readfile = { 80 01 00 00 C7 44 ( 2? | 6? | A? | E? ) ?? 02 00 00 00 } $asm_functioncall_open64_writebytes = { B4 01 00 00 C7 44 ( 2? | 6? | A? | E? ) ?? 42 00 00 00 } $asm_encryption_filebuffersize = { 00 E1 F5 05 76 ?? C7 45 ?? 00 E1 F5 05 } $asm_encryption_generatekey = { 1F 89 ( C? | D? | E? | F? ) C1 ( C? | D? | E? | F? ) 18 8D ( 0? | 1? ) ( 0? | 1? ) 25 FF 00 [0-2] 29 ( C? | D? | E? | F? ) 83 ( C? | D? | E? | F? ) 01 C9 } condition: uint32(0) == 0x464C457F and all of ($str_*) or (#asm_code_fileordirectory == 2 and #asm_functioncall_open64_writebytes == 2 and ($asm_encryption_generatekey and $asm_functioncall_open64_readfile and $asm_encryption_filebuffersize)) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | rule M_Ransomware_PLAYCRYPT_1 { meta: author = "Google Threat Intelligence Group (GTIG)" date_created = "2022-12-21" date_modified = "2022-12-21" rev = "1" strings: $c1 = { 8A CB 0F B6 D0 8B F2 8B FA D3 EE 8D 4B 01 D3 EF 83 E6 01 83 E7 01 } $c2 = { 8D 45 F0 C7 85 D0 FD FF FF 00 00 00 00 50 83 EC 08 } $c3 = { 8B 14 0A 8B 4C 32 20 03 D6 89 55 E0 03 CE } $c4 = { 8D 8D 80 ?? FF FF E8 C8 ?? FF FF 85 C0 75 61 83 BD [2] FF FF 05 76 58 } $c5 = { FF 76 ?? C6 45 EE 00 E8 [2] 00 00 8B F0 8B CF 33 C0 85 F6 0F 48 F0 E8 } $c6 = { FF D0 8B F8 83 FF 05 0F [2] 01 00 00 83 FF 06 0F [2] 01 00 00 8B 0E 3B 4E 04 0F [2] 01 00 00 83 FF 04 74 6D 83 FF 01 } $s1 = "OpaqueKeyBlob" wide $s2 = "AppPolicyGetProcessTerminationMethod" condition: uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize > 100KB and filesize < 200KB and ((2 of ($c*) and all of ($s*)) or (4 of ($c*))) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | rule G_Ransom_PLAYCRYPT_LINUX_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "First step is done." $s2 = "/dev/urandom" $s3 = "esxcli storage filesystem list > storage" $s4 = "hosts in exclusion:" $s5 = "encrypt: " $s6 = ".PLAY" fullword condition: uint32(0) == 0x464C457F and all of them } |
| 1 2 3 4 5 6 7 8 9 10 | import "pe" rule G_Ransom_SAFEPAY_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $hex_asm_snippet = { 10 27 00 00 [0-4] 10 27 00 00 } condition: pe.imphash() == "ff67c703589f775db9aed5a03e4489b0" and ($hex_asm_snippet) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | rule G_Ransom_SAFEPAY_2 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $code_string_decode = { 8A C2 32 C1 32 44 0D ?? 34 ?? 88 44 0D ?? 41 83 F9 04 [4-64] B? 4D 5A 00 00 } $code_hardware_aes_check = { 0F A2 8B F3 5B 89 07 89 77 ?? 89 4F ?? 89 57 [0-12] ( 00 00 00 02 | C1 ?? 19 ) } $code_encrypt_file = { 14 00 10 00 [2-24] 14 00 10 00 [2-32] 00 10 00 5? [0-8] FF ( 15 | D? ) } $enc_str1 = { C7 45 ?? 67 4B 3D 49 C7 45 ?? 2F 4F 2F 4D } $enc_str2 = { C7 45 ?? 10 3C 51 3E C7 45 ?? 5C 38 4F 3A C7 45 ?? 42 34 58 36 C7 45 ?? 43 30 58 32 66 C7 45 ?? 2D 2C } $enc_str3 = { C7 45 ?? A3 8F FF 8D C7 45 ?? EF 8B E4 89 C7 45 ?? E0 87 E0 85 C7 45 ?? E7 83 EC 81 C7 45 ?? FB 9F E8 9D C7 45 ?? FF 9B 98 99 } $enc_str4 = { C7 45 ?? 44 40 51 47 C7 45 ?? 51 49 10 10 C7 45 ?? 03 48 43 42 C6 45 ?? 29 } $enc_str5 = { C7 45 ?? 77 77 73 74 C7 45 ?? 75 6D 64 70 C7 45 ?? 23 68 63 62 C6 45 ?? 09 } condition: uint16(0) == 0x5a4d and (all of ($code*) or (any of ($code*) and any of ($enc*)) or (2 of ($enc*))) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | rule M_Ransom_INC_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "[*] Count of arguments: %d" wide $s2 = "[-] Failed" wide $s3 = "[+] Start" wide $s4 = "INC-README" wide $s5 = "--debug" wide $s6 = "RECYCLE" wide condition: all of them and (uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule M_Ransom_INC_2 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "[+] Proccess %s with PID: %d was killed succesffully" wide $s2 = "[*] Sending note to printer:" wide $s3 = "[+] Recycling bin..." wide $s4 = "[*] Starting full encryption in 5s" wide $s5 = "[+] Successfully decoded readme!" wide $s6 = "[-] Failed" wide $lynx = "lynx" ascii wide nocase condition: $lynx and 4 of ($s*) and (uint16(0) == 0x5A4D) and filesize < 300KB and filesize > 50KB } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule G_Ransom_INC_3 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "[+] Proccess %s with PID: %d was killed succesffully" wide $s2 = "[*] Sending note to printer:" wide $s3 = "[+] Recycling bin..." wide $s4 = "[*] Starting full encryption in 5s" wide $s5 = "[+] Successfully decoded readme!" wide $s6 = "[-] Failed" wide $sin = "sinobi" ascii wide nocase condition: $sin and 4 of ($s*) and (uint16(0) == 0x5A4D) and filesize < 400KB and filesize > 50KB } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | rule M_Ransom_INC_2 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "[*] Count of arguments: %d" $s2 = "[-] Failed" $s3 = "[+] Start" $s4 = "INC-README" $s5 = "--debug" $s6 = "vmsvc" condition: all of them and uint32(0) == 0x464c457f } |
| 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 | rule M_Ransom_RANSOMHUB_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $str1 = "json:\"settings\"" $str2 = "json:\"extension\"" $str3 = "json:\"net_spread\"" $str4 = "json:\"local_disks\"" $str5 = "json:\"running_one\"" $str6 = "json:\"self_delete\"" $str7 = "json:\"white_files\"" $str8 = "json:\"white_hosts\"" $str9 = "json:\"credentials\"" $str10 = "json:\"kill_services\"" $str11 = "json:\"set_wallpaper\"" $str12 = "json:\"white_folders\"" $str13 = "json:\"note_file_name\"" $str14 = "json:\"note_full_text\"" $str15 = "json:\"kill_processes\"" $str16 = "json:\"network_shares\"" $str17 = "json:\"note_short_text\"" $str18 = "json:\"master_public_key\"" condition: 14 of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | rule G_Ransom_FURYSTORM_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "Whitelist VM id" $s2 = "gwfn6l3bk45o2zecvi7xtyqrpsudmahj" $s3 = "Dry-run" $s4 = "-paths" $s5 = "-vmsvc" $s6 = "Note: motd=%d login=%d clean=%d" $s7 = "Cryptor args" $s8 = "VMX found" $s9 = "Keys: %016l" $s10 = "vim-cmd" $s11 = "Dropping readme" $s12 = "Encryption params" condition: uint32(0) == 0x464c457f and filesize > 50KB and filesize < 700KB and 6 of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | rule G_Ransom_FURYSTORM_2 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = "Failed decrypt file:" $s2 = "Decryptor args:" $s3 = "Private key loaded" $s4 = "Keys: %016l" $s5 = "Dry-run" $s6 = "Encryption params" $s7 = "Whitelist paths" $s8 = "Note: motd=%d" condition: uint32(0) == 0x464c457f and filesize > 50KB and filesize < 300KB and 6 of them } |
| 1 2 3 4 5 6 7 8 9 | rule M_Autopatt_Ransom_FIREFLAME_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $p00_0 = { 8B CE 8D 5F ?? 8A 01 8D 49 ?? 0F B6 C0 83 E8 ?? 8D 04 40 C1 E0 ?? 99 } $p00_1 = { 55 8B EC FF 75 ?? E8 [4] 59 8B 4D ?? 89 01 F7 D8 1B C0 } condition: uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and (($p00_0 in (0 .. 380000) and $p00_1 in (260000 .. 280000))) } |