23 апреля 2018

Energetic Bear / Crouching Yeti: атаки на серверы

Energetic Bear/Crouching Yeti — широко известная APT-группа, действующая по крайней мере с 2010 года. Как правило, участники группы атакуют различные компании с явным фокусом на энергетику и промышленность. Атакованные Energetic Bear/Crouching Yeti компании разбросаны по всему миру с заметным преобладанием Европы и США. В 2016 — 2017 годах значительно выросло количество атак на компании в Турции.

Основная тактика группы включает рассылку фишинговых писем с вредоносными документами, а также заражение различных серверов. Некоторые зараженные серверы используются группой как вспомогательные — только для размещения различного инструментария и его логов. Другие заражаются специально для того, чтобы использовать их в waterhole-атаках и добраться с их помощью до основных целей.

О недавней активности этой группировки, направленной против целей в США, говорится в опубликованном US-CERT документе, в котором, в частности, утверждается, что группа связана с российским правительством, а также в бюллетене Национального центра кибербезопасности Великобритании (UK National Cyber Security Centre).

В этом отчете Kaspersky Lab ICS CERT представлены сведения об обнаруженных серверах, зараженных и используемых группировкой, а также приведены результаты анализа нескольких веб-серверов, скомпрометированных группой Energetic Bear в течение 2016 — в начале 2017 года.

Жертвы атаки

Ниже представлена таблица с разделением скомпрометированных серверов (в соответствии с языком контента веб-сайта и/или принадлежностью компании, арендующей сервер, на время компрометации) по странам, типам атакованных компаний и роли сервера в общей схеме атаки. Жертвами атаки злоумышленников стали не только промышленные компании.

Страна Описание Роль в атаке
Россия Оппозиционный политический сайт Waterhole
Риэлтерское агентство Вспомогательный (сбор данных пользователей в атаке waterhole)
Футбольный клуб Waterhole
Разработчик и интегратор защищённых систем автоматизации и консультант по ИБ Waterhole
Разработчики промышленного ПО и оборудования Вспомогательный (сбор данных пользователей в атаке waterhole)
Инвестиционный сайт Вспомогательный (сбор данных пользователей в атаке waterhole)
Украина Электроэнергетическая компания Waterhole
Банк Waterhole
Великобритания Аэрокосмическая компания Waterhole
Германия Разработчик и интегратор ПО Waterhole
Неизвестно Вспомогательный (сбор данных пользователей в атаке waterhole)
Турция Нефтегазовое предприятие Waterhole
Промышленный холдинг Waterhole
Инвестиционный холдинг Waterhole
Греция Server of a university Вспомогательный (сбор данных пользователей в атаке waterhole)
США Нефтегазовое предприятие Waterhole
Неизвестно Сеть партнерских программ Вспомогательный (сбор данных пользователей в атаке waterhole)

Таблица 1. Скомпрометированные серверы

Waterhole

Заражение серверов Waterhole осуществляется по одному и тому же шаблону: на веб-страницу или в JS-файл внедряется ссылка со схемой file следующего вида: file://IP/filename.png.

Пример внедренной ссылки со схемой file

По ссылке инициируется запрос картинки, в результате которого пользователь подключается к удаленному серверу по протоколу SMB. В данном типе атаки целью злоумышленников является извлечение из сессии следующих данных:

  • IP пользователя,
  • имя пользователя,
  • имя домена
  • NTLM-хеш пароля пользователя.

Отметим, что картинка, которая запрашивается по ссылке, физически на удаленном сервере не присутствует.

Сканируемые ресурсы

Скомпрометированные серверы в некоторых случаях используются для совершения атак на другие ресурсы. В ходе исследования зараженных серверов были выявлены многочисленные сайты и серверы, которые атакующие сканировали различными инструментами, такими как nmap, dirsearch, sqlmap и другими (описание утилит дано ниже).

Страна
(в соответствии с контентом)
Описание
Россия Некоммерческая организация
Продажа наркотиков
Туризм/карты
Ресурсы, созданные на платформе Bump (платформа для корпоративной социальной сети), — некоммерческая организация, социальная сеть для выпускников ВУЗов, коммуникационная платформа для общественных организаций и другие
Бизнес-фотостудия
Промышленное предприятие, строительная компания
Производство дверей
Обмен криптовалюты
Информационно-аналитический строительный портал
Личный веб-сайт веб-девелопера
Vainah Telecom IPs and Subnets (Чеченская республика)

Различные чеченские ресурсы (государственные организации, университеты, промышленные предприятия и др.)

Веб-сервер со множеством сайтов (сайты выпускников, промышленных, инженерных компаний и др.)
Мусульманский сайт знакомств
Бразилия Очистка и переработка воды
Турция Отели
Посольство в Турции
Разработчик ПО
Сайт аэропорта
Сайт городского совета
Производитель косметики
Религиозный сайт
Подсеть turktelekom со множеством сайтов
Подсеть telnet telecom со множеством сайтов
Грузия Личный сайт журналиста
Казахстан Неизвестный веб-сервер
Украина Интернет-магазин канцтоваров
Цветочный бизнес
Фотохостинг
Онлайн-курс по продажам
Дилер агротехники и запчастей
Личный сайт госслужащего Украины
Онлайн-магазин деталей для ремонта бытовой техники
Продажа древесины, строительство
Сайт теннисного клуба
Интернет-магазин для фермеров
Интернет-магазин массажного оборудования
Интернет-магазин одежды
Создание и продвижение сайтов
Швейцария Аналитическая компания
США Веб-сервер со множеством доменов
Франция Веб-сервер со множеством доменов
Вьетнам Неизвестный сервер
Международный Трекер полетов

Таблица 2. Ресурсы, которые сканировались с одного из зараженных серверов

Сайты и серверы в этом списке не объединены никакой тематикой. Системы при выборе потенциальных жертв на первый взгляд не прослеживается. Вероятнее всего, сканирование большей части ресурсов происходило с целью получения сервера-«плацдарма» для размещения инструментария атакующих и использования этого «плацдарма» для развития атаки.

Часть из сканированных сайтов могла интересовать атакующих с целью размещения на них waterhole.

Некоторые сканируемые домены размещались на одном сервере, иногда атакующие перебирали список возможных доменов, соответствующих заданному IP.

В большинстве случаев не было выявлено множественных попыток компрометации какой-то определенной цели. Исключение, пожалуй, составили сайты на платформе Bump, серверы Flight tracker и серверы турецкой сети отелей.

Среди сканированных сайтов присутствует личный сайт веб-девелопера kashey.ru, а также ресурсы, ссылки на которые были размещены на этом сайте (возможно, ссылки на его разработки): www.esodedi.ru, www.i-stroy.ru, www.saledoor.ru.

Используемый инструментарий

Утилиты

Найденные на скомпрометированных серверах утилиты имеют открытый исходный код и находятся в свободном доступе на GitHub:

  • Nmap — утилита с открытым исходным кодом для исследования сети и проверки безопасности.
  • Dirsearch — простой инструмент командной строки, предназначенный для брутфорса (поиска путём полного перебора) директорий и файлов на веб-сайтах.
  • Sqlmap — инструмент с открытым исходным кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатации уязвимости SQL-инъекции и захват серверов баз данных
  • Sublist3r — инструмент на python для перечисления поддоменов веб-сайтов. Использует разведку на основе открытых источников (OSINT). Sublist3r поддерживает многие поисковые движки, такие как Google, Yahoo, Bing, Baidu и Ask. Sublist3r, а также сервисы Netcraft, Virustotal, ThreatCrowd, DNSdumpster и Инструмент помогает тестерам на проникновение собрать информацию по поддоменам для домена, который они исследуют.
  • Wpscan — сканер уязвимостей WordPress, работающий по принципу «чёрного ящика», т. е. без доступа к исходному коду. Он может быть использован для сканирования удалённых сайтов WordPress в поисках проблем безопасности.
  • Impacket — инструментарий для работы с различными сетевыми протоколами, необходим для SMBTrap.
  • SMBTrap — инструмент для логирования данных, полученных по протоколу SMB (IP-адрес пользователя, имя пользователя, имя домена, NTLM-хеш пароля).
  • Commix — инструмент на python, предназначенный для поиска и эксплуатации уязвимостей веб-приложений типа инъекции команд (command injection and exploitation tool).
  • Subbrute — инструмент для перечисления поддоменов для Python и Windows, который использует открытый определитель имен в качестве прокси и не отправляет трафик на целевой DNS-сервер.
  • PHPMailer — инструмент для отправки почты.

Также на одном из серверов был обнаружен самописный python скрипт с именем ftpChecker.py для проверки FTP-хостов из входного списка.

Вредоносные php-файлы

В различных директориях папки nginx, а также в рабочей директории, созданной атакующими на зараженных веб-серверах, были найдены следующие зловредные php-файлы:

Наименова-ние файла Краткое описание md5sum Время последнего изменения файла (МСК) Размер, байт
ini.php wso шелл + mail f3e3e25a822012023c6e81b206711865 2016-07-01 15:57:38 28786
mysql.php wso шелл + mail f3e3e25a822012023c6e81b206711865 2016-06-12 13:35:30 28786
opts.php wso шелл c76470e85b7f3da46539b40e5c552712 2016-06-12 12:23:28 36623
error_log.php wso шелл 155385cc19e3092765bcfed034b82ccb 2016-06-12 10:59:39 36636
code29.php web шелл 1644af9b6424e8f58f39c7fa5e76de51 2016-06-12 11:10:40 10724
proxy87.php web шелл 1644af9b6424e8f58f39c7fa5e76de51 2016-06-12 14:31:13 10724
theme.php wso шелл 2292f5db385068e161ae277531b2e114 2017-05-16 17:33:02 133104
sma.php PHPMailer 7ec514bbdc6dd8f606f803d39af8883f 2017-05-19 13:53:53 14696
media.php wso шелл 78c31eff38fdb72ea3b1800ea917940f 2017-04-17 15:58:41 1762986

В таблице выше:

  • Web шелл — это скрипт для удаленного администрирования машины
  • WSO — это популярный веб шелл и файловый менеджер (означает “Web Shell by Orb”), который имеет возможность маскироваться под страницу с ошибкой, содержащую скрытую форму для логина. Он доступен на GitHub: https://ics-cert.kaspersky.ru/away?url=https%3A%2F%2Fgithub.com%2Fwso-shell%2FWSO

Два найденных php-скрипта — ini.php и mysql.php — содержали WSO шелл, объединенный со следующим почтовым скриптом: https://ics-cert.kaspersky.ru/away?url=https%3A%2F%2Fgithub.com%2Fbediger4000%2Fphp-malware-analysis%2Ftree%2Fmaster%2Fdb-config.php

Все найденные скрипты обфусцированы:

wso шелл — error_log.php

Деобфусцированный wso шелл — error_log.php

Один из веб шеллов был найден на сервере под двумя различными именами — proxy87.php и code29.php. Он использует функцию eval для выполнения команды, посланной через HTTP cookies или POST-запрос:

Веб шелл — proxy87.php

Деобфусцированный веб шелл — proxy87.php

Модифицированный sshd

В ходе анализа сервера был обнаружен модифицированный sshd с предустановленным бэкдором.

Патчи с бэкдором для sshd в некоторых вариантах, похожих на найденный, доступны на github, например: https://ics-cert.kaspersky.ru/away?url=https%3A%2F%2Fgithub.com%2Fjivoi%2Fopenssh-backdoor-kit

Компиляция может быть произведена на любой ОС с бинарной совместимостью.

В результате подмены файла sshd на зараженном сервере злоумышленник с помощью «мастер-пароля» может авторизоваться на удаленном сервере, оставляя при этом минимальное количество следов (по сравнению с обычным пользователем, подключившимся по ssh).

Кроме того, модифицированный sshd ведет лог всех легитимных подключений по ssh (кроме подключения по «мастер-паролю») и записывает время подключения, имя учетной записи и пароль. Лог программы зашифрован и находится по пути /var/tmp/.pipe.sock.

Расшифрованный лог /var/tmp/.pipe.sock

Поведение злоумышленников на скомпрометированных серверах

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

После получения доступа к серверу, злоумышленники в разные периоды времени устанавливали необходимый им инструментарий. В частности, на одном из серверов были выявлены следующие сторонние установки:

  • apt install traceroute
  • apt-get install nmap
  • apt-get install screen
  • git clone https://github.com/sqlmapproject/sqlmap.git

Также устанавливались необходимые пакеты и инструменты для python.

Ниже представлен график нелегитимного входа на один из скомпрометированных серверов в течение одного месяца. Проверка лог-файла smbtrap осуществлялась атакующими в рабочие дни. В большинстве случаев они заходили на сервер примерно в один и тот же промежуток времени — вероятно, в утренние часы:

Время нелегитимного входа на сервер (GMT+3)

Во время проведения анализа был также обнаружен активный процесс, который эксплуатировал SQL-инъекцию и собирал данные из БД одной из жертв.

Заключение

Результаты анализа скомпрометированных серверов и действий на них атакующих:

  1. За исключением редких случаев, участники группы довольствуются публичным инструментарием. Использование группой для реализации атак публично доступных утилит делает задачу атрибуции атак без дополнительных «маркеров» группы весьма сложной.
  2. Потенциально любой уязвимый сервер в интернете представляет для атакующих интерес в качестве «плацдарма» для развития дальнейших атак на целевые объекты.
  3. В большинстве наблюдаемых нами случаев группа выполняла задачи по поиску уязвимостей, закреплению на различных узлах, краже данных аутентификации.
  4. Разнообразие списка жертв может говорить о разнообразии интересов атакующих.
  5. С некоторой долей уверенности можно предположить, что группа работает в интересах или по заданиям от внешних по отношению к ней заказчиков, выполняя первоначальный сбор данных, кражу данных аутентификации и закрепление на подходящих ресурсах для обеспечения возможности дальнейшего развития атаки.

Приложение I — индикаторы заражения

Имена файлов и пути

Инструменты*

/usr/lib/libng/ftpChecker.py
/usr/bin/nmap/
/usr/lib/libng/dirsearch/
/usr/share/python2.7/dirsearch/
/usr/lib/libng/SMBTrap/
/usr/lib/libng/commix/
/usr/lib/libng/subbrute-master/
/usr/share/python2.7/sqlmap/
/usr/lib/libng/sqlmap-dev/
/usr/lib/libng/wpscan/
/usr/share/python2.7/wpscan/
/usr/share/python2.7/Sublist3r/

* Отметим, что данные инструменты могут использоваться и другими злоумышленниками.

PHP файлы

/usr/share/python2.7/sma.php
/usr/share/python2.7/theme.php
/root/theme.php
/usr/lib/libng/media.php

Журналы

/var/tmp/.pipe.sock

Хеши PHP файлов

f3e3e25a822012023c6e81b206711865
c76470e85b7f3da46539b40e5c552712
155385cc19e3092765bcfed034b82ccb
1644af9b6424e8f58f39c7fa5e76de51
2292f5db385068e161ae277531b2e114
7ec514bbdc6dd8f606f803d39af8883f
78c31eff38fdb72ea3b1800ea917940f

Правила Yara

rule Backdoored_ssh {
strings:
	$a1 = "OpenSSH"
	$a2 = "usage: ssh"
	$a3 = "HISTFILE"
condition:
	uint32(0) == 0x464c457f and filesize<1000000 and all of ($a*)
}

Приложение II — шелл-скрипт для проверки сервера на наличие на нем инструментов

Шелл-скрипт для Debian

cd /tmp
workdir=428c5fcf495396df04a459e317b70ca2
mkdir $workdir
cd $workdir
find / -type d -iname smbtrap > find-smbtrap.txt 2>/dev/null
find / -type d -iname dirsearch > find-dirsearch.txt 2>/dev/null
find / -type d -iname nmap > find-nmap.txt 2>/dev/null
find / -type d -iname wpscan > find-wpscan.txt 2>/dev/null
find / -type d -iname sublist3r > find-sublist3r.txt 2>/dev/null
dpkg -l | grep -E (\impacket\pcapy\nmap\) > dpkg-grep.txt
cp /var/lib/dpkg/info/openssh-server.md5sums . #retrieve initial hash for sshd
md5sum /usr/sbin/sshd > sshd.md5sum #calculate actual hash for sshd

Шелл-скрипт для Centos

cd /tmp
workdir=428c5fcf495396df04a459e317b70ca2
mkdir $workdir
cd $workdir
find / -type d -iname smbtrap > find-smbtrap.txt 2>/dev/null
find / -type d -iname dirsearch > find-dirsearch.txt 2>/dev/null
find / -type d -iname nmap > find-nmap.txt 2>/dev/null
find / -type d -iname wpscan > find-wpscan.txt 2>/dev/null
find / -type d -iname sublist3r > find-sublist3r.txt 2>/dev/null
rpm -qa | grep -E (\impacket\pcapy\nmap\) > rpm-grep.txt
rpm -qa --dump | grep ssh > rpm-qa-dump.txt #retrieve initial hash for sshd
sha256sum /usr/sbin/sshd > sshd.sha256sum #calculate actual sha256 hash for sshd
md5sum /usr/sbin/sshd > sshd.md5sum #calculate actual md5 hash for sshd