PointBlank: PyPI RAT скрива C2 в JSON-Bin услуга

PointBlank: пълнофункционален Python RAT, който управляваше командния си канал чрез безплатна услуга за хостинг на бележки

TL; DR

PyPI пакет с име gcli-control достави пълен инструмент за отдалечен достъп за Windows: регистриране на натискания на клавиши, заснемане на уеб камера и микрофон, наблюдение на клипборда, достъп до идентификационни данни на браузъра, контрол на екрана, постоянство, повишаване на привилегиите и саморекламирани „140+ команди“. Не скри какво представлява: собственото резюме на PyPI на пакета го описва като „инструмент за отдалечен достъп чрез npoint.io".

Детайлът, върху който си струва да се спрем, е тази фраза „чрез npoint.io.“ Вместо да се обажда на специален сървър, имплантът използва npoint[.]io (безплатна, легитимна услуга за хостване на малки JSON документи) като свое реле за командване и контрол. Операторът записва команди в JSON контейнер; имплантът анкетира този контейнер, изпълнява го и записва резултати обратно. Няма домейн, собственост на атакуващия, който да блокира, няма нов IP адрес, който да маркира: трафикът отива към услуга, която разработчиците използват всеки ден.

Шест версии бяха публикувани за приблизително тринадесет часа и половина, всяка по-добра от предишната. Всяка една от тях беше оценена. ml_predicted_safe от автоматизиран класификатор, преди ръчният преглед да прекласифицира семейството като злонамерено.

Анатомия на атаката

gcli-control инсталира пакета за импортиране gcli, 35-модулна кодова база на Python. Няма време за инсталиране hooks — нищо не работи по време на pip инсталиранеВъзможността се намира в самите модули, извиква се след стартиране на инструмента, а оформлението на модула изглежда като спецификация на продукта:

Област на способноститеМодули
Наблюдение на домакинаkeylog, webcam, audio, clipboard, desktop, monitoring
Достъп до удостоверения и данниbrowser, forensics, fileops, transfer, users
Опорна точка и ескалацияpersistence, elevator, registry, security
Разузнаване на хост и мрежаsystem, processes, network_config, wifi, bluetooth, netutils
Командване и контролclient, host, session, protocol, npoint, crypto, encrypt

Командният канал е интересната част. Повечето инструменти за отдалечен достъп достигат до сървър, контролиран от оператора – IP адрес, домейн, доставчик на хостинг услуги, които могат да бъдат докладвани и изключени от мрежата. gcli-control вместо това третира a безплатна JSON-bin услуга като деад-дроп, Най- npoint модулът чете и записва малки JSON документи на npoint[.]io през обикновения HTTPS; крипто/криптиране Модулите обгръщат обменените полезни товари, така че съдържанието на контейнера да не е команди в открит текст. Ефектът е медиирано, криптирано реле:

  • Операторът поставя (криптирана) инструкция в JSON контейнер.
  • Имплантът, работещ на хоста-жертва, проверява този bin, декриптира го, изпълнява един от своите обработчици на команди и записва (криптирания) резултат обратно.
  • За мрежовия монитор жертвата просто говори с npoint[.]io — услуга с основателна причина да се появява в трафика на разработчици.

Тук няма изтегляне на втори етап и няма обфусциран зареждащ механизъм: възможността се доставя цяла, на четим Python, а единственото „скрито“ е изборът на реле и криптирането на препредаваните полезни товари.

Струва си да се обясни защо JSON-bin deaddrop е оперативно привлекателен, защото обяснява защо очакваме да видим модела отново:

  • Няма крайна точка, собственост на оператор. Няма C2 домейн за регистрация, няма VPS за наемане и нищо, което защитник или регистратор да изземе. Премахване на пакет не докосва канала; сваляне на канал означава да поискате от SaaS с общо предназначение да контролира един документ сред милиони.
  • Пране на репутация. Изходящият HTTPS към добре позната услуга за разработчици не носи никакви нарушени репутационни характеристики, каквито би направил нов домейн или суров IP адрес. Много настройки за филтриране на изходящия трафик го позволяват имплицитно.
  • Асинхронност и отричаемост. Модел на запитване – имплантът извлича документ на интервал, вместо да държи отворен сокет – генерира трафик, който изглежда като периодично запитване на API, а не като интерактивна сесия. Криптирането на съдържанието на документа означава, че дори анализатор, който намери контейнера, вижда шифрован текст, а не списък с команди.
  • Тривиално въртенеПреместването в различен контейнер или изцяло в различна услуга за бележки/поставяне е промяна в конфигурацията на един ред за оператора. Всеки списък с блокирани елементи, свързан с конкретното реле, е остарял в момента на изпращането му.

Компромисът, който операторът приема, е пропускателна способност и латентност: релето за връзка с прекъсване е по-бавно и с по-ниска пропускателна способност от директната връзка. За имплант за наблюдение и контрол, който издава предимно кратки команди и събира резултати с течение на времето, този компромис е лесен за осъществяване.

История

Семейството ескалира бързо. Времевите марки за създаване на билети за маркираните версии поставят цялата наблюдавана дъга в рамките на около тринадесет часа и половина, а броят на доказателствата на скенера нараства заедно с кода - от няколко маркирани сайта в първата версия до четиринадесет в последната.

версияЗа първи път видян (UTC)Забележка
0.1.02026-07-21 12:59Първоначално качване; минимално маркирана повърхност
0.5.02026-07-21 18:01Възможностите се разширяват
0.2.02026-07-21 18:03(номерирането на версиите не е монотонно спрямо реда на качване)
0.6.02026-07-22 00:44По-широк набор от модули
0.7.02026-07-22 01:58Почти пълен набор от инструменти
0.7.12026-07-22 02:28Най-ново; 35 модула, пълен капацитет

Номерата на версиите не бяха публикувани в строг ред, но посоката е ясна: малко първоначално съкращение, след това бърза итерация към пълнофункционалната версия 0.7.1. Това е формата на проект в активна разработка, който се публикува в публичен регистър с нарастването си, а не еднократно премахване.

Индикатори за компромис

Всички индикатори по-долу са потвърдени спрямо съдържанието на пакета на диска и детерминистично сканиране на индикатори от версия 0.7.1; нито един от тях не е спекулативен.

Типиндикатор
Пакет (PyPI)gcli-control, версии 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1
Импортиране на пакетgcli
C2 релеnpoint[.]io (JSON-bin deaddrop; криптирани полезни товари)
Заявено хранилищеgithub[.]com/gcli-control/gcli
Поведенчески пръстов отпечатъкСъвместно разположени модули за наблюдение: keylog, webcam, audio, clipboard, browser, плюс персистентност, асансьор и команден слой клиент/хост/протокол в един пакет
Инсталирайте hooksНяма: функцията се изпълнява по време на изпълнение на инструмента, а не по време на инсталирането

Бележка на защитника: Най-силният траен сигнал не е домейнът (релейният хост се редува тривиално), а оформянетоедин пакет, който обединява три или повече отделни примитива за наблюдение на хоста намлява пренасочва цикъл от команди/отговори през публична услуга за хостинг на съдържание. Блокиране npoint[.]io директното предупреждаване е непрактично за повечето магазини; предупреждаването за неочакван процес, който едновременно записва входни устройства и комуникира с JSON-bin услуга, е далеч по-надеждно.

Наблюдавано поведение и рамкиране

Две неща правят тази извадка необичайна и двете са наблюдаеми факти, а не изводи за мотива.

То се рекламираше само. Резюмето на пакета, разпространявано в PyPI, изброява възможностите на разбираем език – отдалечен достъп, контрол на работния плот, управление на потребители, уеб камера, аудио, кейлогър, персистентност, данни от браузъра, WiFi, регистър, „140+ команди“. Нямаше опит кодът да се представи като помощник за изграждане, CLI обвивка или помощна програма с AI-агент, което е по-често срещаната маскировка, която виждаме в публичните регистри. Дали тази откритост отразява инструмент на „червен екип“, публикуван без контрол на достъпа, или нещо друго, е въпрос, който само съдържанието на пакета не може да реши; сигурно е, че работещ, универсален инструментариум за отдалечен достъп и наблюдение е бил инсталиран от всеки с... пиукам.

То се основаваше на доверие в доброкачествена услуга. Използването на npoint[.]io тъй като релето е определящата техника. Това е пример за по-широк модел — маршрутизиране на C2 през легитимен SaaS (сайтове за поставяне, JSON контейнери, уеб чат)hooks, облачна документация), така че злонамереният трафик да се слее с нормалната дейност на разработчиците и да няма крайна точка, собственост на оператора, която да се изземе. Полезните товари на релето бяха криптирани, така че съдържанието на контейнера не би се четело като команди за случаен наблюдател.

Сигналите на издателите са слаби и общи. Пакетът обяви автор на „gcli contributors“ и лиценз на MIT, и посочи полетата на началната страница и хранилището към github[.]com/gcli-control/gcliНищо от това не е проверка: низът за автор е свободен текст, заглавката на MIT лиценз не струва нищо, а URL адресът на хранилище в метаданните на пакета е твърдение, а не доказателство за произход. Моделът – чисто ново име, общ колективен автор и самореферентна org/repo, създадена около пакета – е как изглежда един проект, когато е създаден специално за носене на кода, а не като установен инструмент, който е развил функция за дистанционно управление. Отбелязваме това като наблюдения; те са в съответствие с, но сами по себе си не установяват, целенасочено изградена дистрибуция.

Описваме разпореждането като злонамерено въз основа на възможностите и начина на доставка: цялостен, работещ имплант за отдалечен достъп и наблюдение, разпространяван в публичен индекс на пакети със скрито реле. Не посочваме цел или мотив.

Въздействие, тенденции и какво могат да направят защитниците

Сляпо петно ​​за триаж, ориентиран към маскировка. Много автоматизирани ключове за сортиране на пратки на дегизирам сигнали на типичен зловреден софтуер в системния регистър — обфускирани блобове, по време на инсталиране hooks, едноредови фрази за събиране на удостоверения. Пакет, който е просто открито ПЛЪХ, с чист, четим код и без инсталационен кук, не представя нито едно от тези съобщения и може да се промъкне покрай евристики, които очакват скриване. Сигналите, които надеждно улавят този клас, са структурни, а не базирани на маскиране: преброяване на възможностите (колко различни примитиви за наблюдение на хоста съществуват едновременно в един пакет) и C2-образен анализ (цикъл команда/отговор, маршрутизиран през услуга за хостинг на съдържание с общо предназначение). Тези проверки се задействат независимо от това колко честни или завоалира опаковката е.

Тенденцията SaaS-като-C2. Злоупотребата с легитимна хостинг услуга като „мъртва точка“ не е нова, но продължава да работи, защото защитната цена на блокирането на услугата е висока, а офанзивната цена на смяната на услуги е близо до нула. Очаквайте още от това. Мрежовите защити, свързани с конкретни лоши домейни, остаряват незабавно; правилата за поведение („този процес чете клипборда и уеб камерата и след това комуникира с API за хостване на бележки“) не го правят.

Скица за откриване на бетон. Трайното правило не посочва името npoint[.]io изобщо. Това съчетава две наблюдения, които са поотделно често срещани, но същевременно рядко срещани при нормален разработчик или CI хост:

предупреждава, когато един процес, в рамките на една сесия, едновременно:
(A) осъществява достъп до примитив за наблюдение на хоста — входно устройство (клавиатура/мишка), камера, микрофон, заснемане на екрана, цикъл на четене от клипборда или хранилище за идентификационни данни на браузъра („Login „Данни“ / „Локално състояние“ / DPAPI); И
(Б) отправя изходящи заявки към публична услуга за хостинг на съдържание / поставяне / JSON-bin / chat-webhook, след което ги повдига за преглед, независимо от конкретната услуга в (Б).

Нито една от двете не е подозрителна сама по себе си: много легитимни инструменти правят скрийншот снимки, а много от тях публикуват JSON към хостинг API. Конюнкцията в рамките на един краткотраен процес е сигналът и тя оцелява при всяка ротация на релето.

Практически стъпки за екипите:

  • Третирайте инсталирането на публични пакети на хостове за разработчици и CI като граница на изпълнение, а не като удобство — RAT на агент за изграждане е RAT с вашите тайни.
  • Предпочитайте вътрешни огледала в списъка с разрешени сървъри; пакет, буквално наречен за дистанционно управление и описващ кейлогър, никога не трябва да се разрешава в корпоративен индекс.
  • Сигнал за съчетание — входно устройство или заснемане на екрана плюс изходящ трафик към услуга за съдържание/поставяне/JSON-bin — а не върху отделен примитив, който има благоприятни приложения сам по себе си.
  • Не разчитайте на автоматизирана оценка „безопасност“ като окончателно решение за пакети с широки възможности за достъп до хоста; насочете ги към човешка проверка.

Семейството пакети е класифицирано като злонамерено и е насочено към премахване от регистъра. Тъй като C2, базиран на реле, не оставя никой хост, собственост на оператор, за да се провали, трайната защитна стойност се крие в поведенческия отпечатък по-горе, а не в отделен запис в списъка с блокирани данни.

инструменти за анализ на състава на софтуера SCA Tools
Приоритизирайте, отстранете и защитете софтуерните си рискове
Вземете своя безплатен акаунт.
Не е необходима кредитна карта.

Осигурете си разработването и доставката на софтуер

с продуктовия пакет Xygeni