перевод статьи:
Watch Your Containers: Doki Infecting Docker Servers in the Cloud Авторы:
Nicole Fishbein и
Michael Kajiloti - 28 July 2020
Следите за своими контейнерами: Doki заражает серверы Docker в облаке Основные выводы Ngrok Mining Botnet - это активная кампания, нацеленная на открытые серверы Docker в AWS, Azure и другие облачные платформы. Она активна как минимум два года. Мы обнаружили недавнюю атаку, которая включает в себя совершенно неизвестный вредоносный код Linux и ранее незадокументированный метод, использующий блокчейн-кошелек для генерации доменных имен C&C. Любой человек с публично открытым Docker API доступом подвергается высокому риску быть взломанным в течение всего лишь нескольких часов. Это, вероятно, связано с автоматизированным и непрерывным сканированием хакерами всего интернета в поисках уязвимых жертв.
Новая вредоносная программа, получившая название "
Doki", не была обнаружена ни одним из 60 механизмов обнаружения вредоносных программ в VirusTotal с тех пор, как она была впервые
проанализирована 14 января 2020 года. Злоумышленник использует зараженных жертв для поиска дополнительных уязвимых облачных серверов.
Введение Угрозы Linux становятся все более распространенными. Способствующим фактором является растущая зависимость от облачных сред, которые в основном базируются на Linux инфраструктуре. Поэтому злоумышленники соответствующим образом адаптируются с помощью новых инструментов и методов, разработанных специально для этой инфраструктуры. Одним из методов, ставших популярными, является использование неправильно настроенных портов Docker API, когда злоумышленники сканируют общедоступные Docker-серверы и используют их для
создания своих собственных контейнеров и запуска вредоносных программ в инфраструктуре жертвы.
Одной из самых продолжительных кампаний атак, использующих порты Docker API, является ботнет Ngrok, о котором ранее сообщали исследователи из
Netlab и
Trend MicroВ рамках атаки злоумышленники использует функции конфигурации Docker, чтобы избежать стандартных ограничений контейнера и выполнить различные вредоносные полезные нагрузки от хоста. Они также развертывают сетевой сканер и используют его для сканирования IP-диапазонов облачных провайдеров в поисках дополнительных потенциально уязвимых целей. Наши данные показывают, что для заражения этой кампанией требуется всего несколько часов с момента, когда новый неправильно настроенный сервер Docker был подключен к сети.
Недавно мы обнаружили новую полезную нагрузку вредоносных программ, которая отличается от стандартных крипто-майнеров, обычно развернутых в этой атаке. Вредоносная программа представляет собой не обнаруживаемый бэкдор, который мы назвали
Doki.
Doki использует ранее не документированный метод, для связи со своим оператором(злоумышленником), используя блокчейн криптовалюты Dogecoin, чтобы динамически генерировать адрес своего домена C2. Вредоносная программа смогла оставаться вне поле зрения более шести месяцев, несмотря на то, что ее образцы были публично доступны в VirusTotal. В этой статье мы расскажем об атаке и подробно рассмотрим методы, которые были применены необнаруженным бэкдором
Doki.
Атака Угроза нацелена на неправильно сконфигурированные контейнерные среды в облаке. Злоумышленники сканируют общедоступные порты Docker API и используют их для настройки своих собственных контейнеров и запуска вредоносных программ в инфраструктуре жертв. Во время этой атаки злоумышленники создают и удаляют несколько контейнеров. Каждый контейнер, созданный во время атаки, основан на alpine образе с установленным curl. Образ доступен на
Docker hub. Сам образ не является вредоносным, а используется для совершения вредоносных действий. Используя образ, содержащий программное обеспечение curl, команды curl выполняются сразу же после запуска контейнера.
Преимущество использования общедоступного образа заключается в том, что злоумышленнику не нужно прятать его в Docker hub или других хостингах. Вместо этого злоумышленники могут использовать существующий образ и запускать поверх него свою собственную логику и вредоносное ПО. Как уже упоминалось выше, злоумышленники могут создать любой контейнер, однако для выполнения кода с хост-машины они должны использовать метод экранирования контейнера. Этот метод основан на создании нового контейнера, выполняемого путем размещения API запроса
‘create’. Тело запроса содержит параметры конфигурации для контейнера. Одним из параметров является
bind, который позволяет пользователю настроить, какой файл или каталог на хост-машине монтировать в контейнер. Контейнеры, созданные во время атаки, настроены на привязку каталога /tmpXXXXXX к корневому каталогу хост-сервера. Это означает, что каждый файл в файловой системе сервера может быть доступен и даже изменен, с правильными разрешениями пользователя, из этих контейнеров.
Ngrok - это сервис, который предоставляет безопасные туннели для соединения между локальными серверами и общедоступным Интернетом. Злоумышленник использует Ngrok для создания уникальных URL-адресов с коротким временем жизни и использует их для загрузки полезных данных во время атаки, передавая их в образ на основе curl. Загруженная полезная нагрузка сохраняется в каталоге /tmpXXXXXX в контейнере.
команда, создавшая контейнер, как видно из системного журнала атакуемого сервераИспользуя конфигурацию привязки, злоумышленник может управлять утилитой cron хоста. Атакующий модифицирует cron хоста для выполнения загруженной полезной нагрузки каждую минуту. Мы наблюдали два типа полезных нагрузок: один - скрипт сетевого сканера, а другой - скрипт загрузчика.
Сетевой сканер использует
zmap zgrap и
jq для сканирования портов, связанных с Redis, Docker, SSH и HTTP. Используя список жестко заданных диапазонов IP-адресов, которые в основном принадлежат облачным серверам, таким как AWS и локальным облачным провайдерам в зарубежных регионах (мы видели провайдеров из Китая, Австрии и Великобритании). Скрипт загрузчика отвечает за загрузку и установку различных вредоносных двоичных файлов, часто одного из нескольких хорошо известных криптомайнеров. Мы заметили, что он также может установить полностью необнаруживаемый вредоносный компонент.Мы назвали эту вредоносную программу
Doki и предоставим технический анализ в следующем разделе. Злоумышленник имеет полный контроль над конфигурацией создаваемого им контейнера и файлами, которые попадают в него. Используя API команды, злоумышленник может выйти из созданного им контейнера и выполнить любой код на самом сервере.
Вредоносная Программа Doki Doki-это бэкдор для Linux, функция которого заключается в выполнении кода, полученного от его операторов. Вредоносная программа использует сервис
DynDNS и уникальный алгоритм генерации доменов (DGA), основанный на блокчейне
Dogecoin, чтобы найти свой домен C2 в режиме реального времени. Вредоносная программа представляет собой необнаруживаемый бэкдор. Ему удалось остаться незамеченным в течение более шести месяцев, несмотря на то, что он был загружен в базу
VirusTotal еще 14 января 2020 года и с тех пор несколько раз сканировался.
Doki является многопоточным и использует библиотеку embedTLS для криптографических функций и сетевого взаимодействия. При запуске вредоносная программа создаст отдельный поток для обработки всех сообщений C2.
Вредоносная программа начинается с создания домена C2 с использованием его уникального DGA. Для построения адреса C2 вредоносная программа выполняет следующие действия:
1. Посылает запрос dogechain.info API, проводника блоков Dogecoin, для значения, которое было отправлено (потрачено) с закодированного адреса кошелька, контролируемого злоумышленником.
Формат запроса таков:
https://dogechain.info/api/v1/address/sent / {адрес}
2. Выполняет SHA256 в отношении значения, возвращенного из строки "sent".
3. Сохраняет первые 12 символов из шестнадцатеричного значения SHA256 для использования в качестве поддомена.
4. Создает полный адрес, добавив поддомен к ddns.net. примером домена может служить: 6d77335c4f23[.]ddns[.]net
Используя этот метод, злоумышленник контролирует, с каким адресом вредоносная программа свяжется, переведя определенную сумму Dogecoin из своего кошелька. Поскольку только злоумышленник имеет контроль над кошельком, только он может контролировать, когда и сколько
Dogecoin перевести, и таким образом переключить домен соответствующим образом. Кроме того, поскольку блокчейн является одновременно неизменяемым и децентрализованным, этот новый метод может оказаться достаточно устойчивым как к разрушению инфраструктуры со стороны правоохранительных органов, так и к попыткам фильтрации доменов со стороны продуктов безопасности.