Специалисты Group-IB опубликовали результаты многолетнего исследования деятельности хакерской группировки UNC2891, которая с 2022 года проводит целевые атаки на финансовые учреждения Индонезии. Группа демонстрирует исключительную техническую подготовку и операционную дисциплину, используя кастомные вредоносные программы и нестандартные методы проникновения.
Описание
Согласно отчету, UNC2891 представляет собой финансово мотивированную группу, активную как минимум с ноября 2017 года. Особенностью группировки является глубокое понимание сред Linux, Unix и Oracle Solaris, что редко встречается даже среди продвинутых постоянных угроз. Эксперты отмечают, что после периода относительного затишья атак на банкоматы в конце 2010-х годов, UNC2891 знаменует тревожное возрождение этой угрозы в адаптированной и усовершенствованной форме.
Технический арсенал группировки впечатляет разнообразием. В частности, они используют руткит CAKETAP для манипуляции HSM и подделки транзакций, бэкдоры TINYSHELL и SLAPSTICK, кейлоггер WINGHOOK, а также утилиты для очистки логов LOGBLEACH и MIGLOGCLEANER. Все вредоносные программы тщательно маскируются под легитимные системные файлы и используют сложные техники обфускации.
Одним из наиболее примечательных случаев стало обнаружение устройства Raspberry Pi, физически подключенного к коммутатору банкомата в сети финансового учреждения. Это беспрецедентная тактика позволила злоумышленникам полностью обойти периметровые защиты. Устройство использовало 4G-модем для установления удаленного доступа и было обнаружено только в июле 2024 года, хотя первые подключения датировались февралем того же года.
Эксперты Group-IB исследовали три основных инцидента с участием UNC2891. В феврале 2022 года была обнаружена компрометация более 30 внутренних систем банка, включая производственные серверы и серверы коммутации банкоматов. Самое раннее свидетельство проникновения относилось к ноябрю 2017 года. В ноябре 2023 года была атакована другая финансовая организация, где злоумышленники использовали уникальные "магические пароли" для латерального перемещения. Третий инцидент в июле 2024 года подтвердил возвращение группировки к ранее атакованной организации.
Особый интерес представляет операция по обналичиванию средств через денежных мулов. Группа нанимала их через рекламу в Google и Telegram, используя самоуничтожающиеся сообщения через сервис Privnote для коммуникации. Мулы получали оборудование для клонирования карт и подробные инструкции через TeamViewer. Процесс обналичивания контролировался удаленно через голосовые и видео-звонки.
Эксперты подчеркивают сложность атрибуции из-за операционной безопасности группировки. Несмотря на сходства с другой известной группой UNC1945, ключевые различия в мотивации и инструментарии указывают на отдельную операционную единицу. Критическим доказательством стало обнаружение одинаковых криптографических ключей в образцах STEELCORGI из разных организаций, что свидетельствует либо об ошибке операторов, либо о том, что они не являются оригинальными разработчиками кода.
Group-IB предоставляет подробные рекомендации по защите, включая сегментацию сетей, мониторинг целостности файлов, развертывание MFA и регулярные оценки компрометации. Специалисты предупреждают, что кажущийся спад угроз для банкоматов в последние годы привел к ослаблению защиты этой критической инфраструктуры, что теперь используют современные группировки типа UNC2891.
Индикаторы компрометации
IPv4
- 180.250.112.188
- 185.243.114.26
- 69.172.229.249
Domains
- dvamh2h1abhlky.ddns.net
- dvsedcabc9lpd.webredirect.org
- mailer5nkdid.ddns.net
- rvhthaa1abc19lp.dyndns.org
- rvsoaisabwluddn.ddns.net
- wsmtp1d.webredirect.org
SHA256
- 018bfe5b9f34108424dd63365a14ab005e249fdd
- 0a082d60bcf9095c47b71c7bde3b20acabf5ddd2
- 0c59e8197ae767f8a755eaabe0a8f1d37c994d28
- 5412bd5e38f105a690dc738e2cb7eefb57a8955f
- 5d340d983f852bb7c0c8b89740bb030f28b617cf
- 6faf9ece21b8e5b990c038972ab9b3b4ed65ea6c
- 72beb2ca829899552401e19c615755139955091a
- a2d7ce164cd137b064bdf75ac8a3eb3ffb4b91a8
- a85b407e8ea23b9ca39db93ede52fe42bf0bd9ed
- b940d731a75e77b2204d7ab14d62fb646b852382
- caf5bb8a37365fe75f215ef06c5bd5416ad7a851
- ec7465ef5f87680e938b02dfe33ab82b1a744614
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule unc2891_tinyshell_client { meta: company = "Group-IB" family = "unc2891.tinyshell" description = "Detects unc2891 tinyshell client" strings: $s1 = { 54 45 52 4D 00 76 74 31 30 30 00 70 65 6C 5F 73 65 6E 64 5F 6D 73 67 00 } // TERM.vt100.pel_send_msg $s2 = { 25 38 73 00 25 33 37 73 00 25 73 36 00 25 64 36 00 } // %8s.%37s.%s6.%d6 condition: all of ($s*) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | rule unc2891_caketap { meta: company = "Group-IB" family = "unc2891.caketap" description = "Detects unc2891 caketap" strings: $s1 = ".caahGss187" ascii wide nocase $s2 = "%u.%u.%u.%u" ascii wide nocase $s3 = "%c %d\x0a\x00" ascii wide nocase $s4 = "%s:%d\x0a\x00" ascii wide nocase $s5 = "/sys\x00" ascii wide nocase $s6 = "ipstat\x00" ascii wide nocase condition: 5 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | rule unc2891_caketap_sys_mkdir_hook { meta: company = "Group-IB" family = "unc2891.caketap" description = "Detects unc2891 caketap" strings: $chunk1 = { 3C 52 0F 84 ?? ?? ?? ?? 3C 53 49 C7 C4 FE FF FF FF 75 ?? 48 8B 15 ?? ?? ?? ?? 4C 8B 2D ?? ?? ?? ?? 31 C0 BE 42 00 00 00 48 C7 C7 18 F0 5D A0 E8 ?? ?? ?? ?? 4C 89 EA BE 52 00 00 00 48 C7 C7 18 F0 5D A0 31 C0 E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? } $chunk_2 = { BA 00 10 00 00 48 89 E5 41 56 41 55 41 89 F5 BE D0 80 00 00 41 54 49 89 FC 48 8B 3D ?? ?? ?? ?? 53 E8 ?? ?? ?? ?? BA 00 10 00 00 4C 89 E6 48 89 C7 48 89 C3 E8 ?? ?? ?? ?? F0 48 FF 05 ?? ?? ?? ?? 48 85 DB 74 ?? } condition: 1 of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | rule logbleach { meta: company = "Group-IB" family = "logbleach" description = "Detects logbleach" strings: $s1 = "%-16s system-down %-20s %-10s %-20s %-32s" ascii wide nocase $s2 = "%-16s system-boot %-20s %-10s %-20s %-32s" ascii wide nocase $s3 = "%-16s %-12s %-20s %-10s %-20s %-32s" ascii wide nocase $s4 = "%-16s %-12s %-20s %-10s %-32s" ascii wide nocase 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 | rule unc2891_slapstick_config { meta: company = "Group-IB" family = "unc2891.slapstick" description = "Detects unc2891 slapstick config" strings: $enc_conf = { 70 61 60 00 [135] D0 93 96 9D C9 CB D0 [128] D0 93 96 9D C9 CB D0 [537] E4 A4 CF C4 CC C9 92 DF DF DF DF D1 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D1 E4 A4 CF 92 F5 E4 A4 CE C4 CC C9 92 DF DF DF DF DF D1 DF BE BC BC BA AC AC DF BB AD BE B1 AB BA BB DF D9 DF AB BA B3 BC B0 B2 BA DF D1 E4 A4 CF 92 F5 E4 A4 CF C4 CC C9 92 DF DF DF DF D1 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 D1 E4 A4 CF 92 FF 60 61 70 00 00 00 00 } condition: $enc_conf } |