uz
KA
июня 23, 2025
Обновлено июня 23, 2025

Сканирование docker images и анализ

Linux

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

Они как раз и распространяются через такие площадки, как Docker Hub, GitHub, позволяющие установить нужно ПО, которое не проверяется на различного рода программные закладки и то самое ВПО. Как проверить, безопасно ли использовать контейнер?

Данный материал представлен в образовательных целях. Автор не несет ответственности за последствия использования информации из него.

Сканирование и анализ слоев в Dockerfile

Напомним, что сам контейнер это всего лишь изолированная среда, куда раскатывается базовый образ ОС и поверх уже него выполняется Dockerfile, который скорее может быть уже с вредоносными действиями. Возьмем для примера уже в заранее инфицированный контейнер, который наполнен майнерами и прочим ВПО. Скачаем его на нашу машину с уже предустановленным Docker:

sudo docker pull quay.io/petr_ruzicka/malware-cryptominer-container:1.4.0
Загрузка образа
Скриншот №1 — Загрузка образа

Обратите внимание, что мы лишь скачали образ в наш локальный репозиторий, но не запускали на ОС! И этого делать не нужно, для анализа будет достаточен сам файл! Если у вас не предустановлен Docker, то сделайте это следующей командой:

sudo apt install docker.io docker-compose -y

После чего нужно понять, что конкретно мы хотим исследовать и где будем детектировать вредоносную активность. Образ – это совокупность минимально базовой ОС, выполненного на ней Dockerfile и метаданных, которые используются, при развертывании. Поэтому обратим внимание на него, для начала нужно понять какие действия выполнены в образе, для этого будем использовать утилиту инспектирования dive. Для установки deb выполним команду:

  DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb

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

Установка
Скриншот №2 — Установка

После успешной установки пакета можем прописать команду, где укажем dive для запуска ПО инспектирования и пропишем название образа:

sudo dive quay.io/petr_ruzicka/malware-cryptominer-container:1.4.0
Меню сканера
Скриншот №3 — Меню сканера

Панель управления представляет собой четыре основных поля, где Layers это и есть Docker File, а точнее его слои. Ниже идут детали каждого из слоев и метаинформация об образе, где уже можно увидеть, что взаимодействовали с директориями веба. Разберем каждый слой и постараемся найти, что-то нелегитимное:

Подозрительный домен
Скриншот №4 — Подозрительный домен

В данном случае видим, что установка происходит с подозрительного домена nginx[.]so, после с помощью TAB переключимся к файловой системе справа и просмотрим изменения, которые внес Dockerfile. Дополнительно отфильтруем изменения комбинацией клавиш Ctrl+A и увидим скопление скопированных ранее файлов с подозрительными названиями:

Вредонос!
Скриншот №5 — Вредонос!

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

sudo docker create -- name temp_container quay. io/petr_ruzicka/malware-cryptominer-container :1.4.0 && \
sudo docker export temp_container -o filesystem.tar && \
sudo docker rm temp_container && \
ls
Файловая система
Скриншот №6 — Файловая система

Теперь у нас в домашней директории лежит файловая система контейнера с уже примененным Dockerfile! Осталось ее распаковать и проверить все файлы на ВПО, для этого пропишем команду, предварительно создав новую папку и перейдя в нее:

sudo tar -xf ~/filesystem.tar
Разархивирование
Скриншот №7 — Разархивирование

Помним, что вредоносы потенциально затронули несколько директорий, как раз их и будем сканировать антивирусом ClamAV, после чего видим результат, где обнаружены ВПО!

Результат
Скриншот №8 — Результат

С помощью инструмента инспектирования можно проводить подобные ручные анализы на более глубоком уровне и уже использовать в дополнении движки Yara правил, которые позволят детектировать и другие виды и варианты ВПО. Данное решение не замена автоматизированным инструментам, а лишь способ, позволяющий в ручную рассмотреть детали пакета внутри, на основе ручного/статического анализа.

При нехватке собственных мощностей можно воспользоваться облачными серверами от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:

Создание сервераСкриншот №9 — Создание сервера

 

Оценка:
4 из 5
Аverage rating : 4.8
Оценок: 5
100029 Ташкент Улица Якка Чинар, дом 2/1
ООО «ИТГЛОБАЛКОМ ЛАБС»

Вам также может быть интересно...