PointBlank: PyPI RAT хавае C2 у сэрвісе JSON-Bin

PointBlank: паўнафункцыянальны Python RAT, які кіраваў сваім камандным каналам праз бясплатны сэрвіс хостынгу нататак

TL, д-р

Пакет PyPI пад назвай gcli-control пастаўляла поўны набор інструментаў для аддаленага доступу для Windows: рэгістрацыя націсканняў клавіш, захоп вэб-камеры і мікрафона, маніторынг буфера абмену, доступ да ўліковых дадзеных браўзера, кіраванне экранам, захаванне доступу, павышэнне прывілеяў і самарэкламаваныя «140+ каманд». Пры гэтым не хавалася, што гэта такое: у ўласным апісанні PyPI пакета ён апісваўся як «інструмент аддаленага доступу праз npoint.io".

Дэталь, на якой варта спыніцца, — гэта фраза праз npoint.io. Замест таго, каб тэлефанаваць дадому на спецыяльны сервер, імплантат выкарыстоўваўся npoint[.]io (бясплатны, легітымны сэрвіс для размяшчэння невялікіх JSON-дакументаў) у якасці свайго камандна-кантрольнага рэтранслятара. Аператар запісвае каманды ў кантэйнер JSON; імплант апытвае гэты кантэйнер, выконвае яго і запісвае вынікі назад. Няма дамена, які належыць зламысніку, які трэба блакаваць, няма новага IP-адраса, які трэба пазначаць: трафік ідзе да сэрвісу, якім распрацоўшчыкі карыстаюцца кожны дзень.

Шэсць версій былі апублікаваныя прыкладна за трынаццаць з паловай гадзін, кожная з якіх была больш якаснай за папярэднюю. Кожная з іх была ацэненая. ml_predicted_safe аўтаматызаваным класіфікатарам перад ручным праверкай, якая перакласіфікавала сямейства як шкоднаснае.

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

gcli-control усталёўвае пакет імпарту gcli, кодавая база Python з 35 модуляў. Няма часу ўстаноўкі 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 замест гэтага лечыць бясплатны сэрвіс JSON-bin у якасці тупіковага месца. кропка Модуль чытае і запісвае невялікія JSON-дакументы на npoint[.]io праз звычайны HTTPS; крипто-/шыфраваць Модулі абгортваюць абменьваныя карысныя нагрузкі, таму змесціва кантэйнера не з'яўляецца камандамі ў адкрытым тэксце. Эфект заключаецца ў апасродкаванай, зашыфраванай рэтрансляцыі:

  • Аператар змяшчае (зашыфраваную) інструкцыю ў кантэйнер JSON.
  • Імплантат, які працуе на хасце-ахвяры, апытвае гэты кантэйнер, расшыфроўвае яго, выконвае адзін са сваіх апрацоўшчыкаў каманд і запісвае (зашыфраваны) вынік назад.
  • Для сеткавага манітора ахвяра проста размаўляе з npoint[.]io — сэрвіс, які мае законную падставу з'яўляцца ў трафіку распрацоўшчыкаў.

Тут няма загрузкі другога этапу і няма заблытанага загрузніка: функцыя пастаўляецца цалкам, на чытэльнай мове Python, і адзіным «схаваннем» з'яўляецца выбар рэтрансляцыі і шыфраванне перадаемых карысных нагрузак.

Варта растлумачыць, чаму тупіковая кропка JSON-bin з'яўляецца аперацыйна прывабнай, бо гэта тлумачыць, чаму мы чакаем зноў убачыць гэтую заканамернасць:

  • Няма канчатковай кропкі, якая належыць аператару. Няма неабходнасці рэгістраваць дамен C2, арандаваць VPS і нічога канфіскаваць абаронцу ці рэгістратару. Знішчэнне пакет не дакранаецца канала; дэмантаж канал азначае просьбу да універсальнага SaaS кантраляваць адзін дакумент сярод мільёнаў.
  • Адмыванне рэпутацыі. Выходны HTTPS-трафік да вядомага сэрвісу распрацоўшчыка не мае такіх страт для рэпутацыі, як новы дамен або неапрацаваны IP-адрас. Многія налады фільтрацыі выходнага трафіку дазваляюць гэта няяўна.
  • Асінхроннасць і адмаўленне. Мадэль апытання — імплант атрымлівае дакумент праз пэўны інтэрвал, а не захоўвае адкрыты сокет — стварае трафік, які выглядае як перыядычны апытанне API, а не як інтэрактыўны сеанс. Шыфраванне змесціва дакумента азначае, што нават аналітык, які знаходзіць кантэйнер, бачыць зашыфраваны тэкст, а не спіс каманд.
  • Трывіяльнае кручэннеПераход у іншы кантэйнер або цалкам у іншы сэрвіс нататак/устаўкі — гэта змяненне канфігурацыі ў адзін радок для аператара. Любы спіс блокаў, прывязаны да канкрэтнага рэтранслятара, састарэе з моманту адпраўкі.

Аператар прымае кампраміс паміж прапускной здольнасцю і затрымкай: рэтрансляцыя з адсутнасцю сувязі павольнейшая і мае меншую прапускную здольнасць, чым прамое злучэнне. Для імплантата назірання і кантролю, які ў асноўным выдае кароткія каманды і збірае вынікі з цягам часу, такі кампраміс лёгка зрабіць.

Timeline

Сямейныя справы хутка павялічыліся. Часовыя меткі стварэння заявак для пазначаных версій размяшчаюць усю назіраную дугу прыкладна ў трынаццаці з паловай гадзінах, а колькасць доказаў сканера расла разам з кодам — з некалькіх пазначаных сайтаў у першай версіі да чатырнаццаці ў апошняй.

версіяУпершыню бачылі (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
Рэле C2npoint[.]io (Мёртвае месца JSON-bin; зашыфраваныя карысныя нагрузкі)
Заяўлены рэпазітарgithub[.]com/gcli-control/gcli
Паводніцкі адбітак пальцаСумесна размешчаныя модулі відэаназірання: keylog, webcam, audio, clipboard, browser, а таксама захаванне, ліфт і камандны ўзровень кліент/хост/пратакол у адным пакеце
Усталёўваць hooksНяма: функцыя працуе падчас выканання інструмента, а не падчас усталёўкі

Заўвага абаронцы: Наймацнейшы ўстойлівы сігнал — гэта не дамен (хост рэтрансляцыі змяняецца нязначна), а фарміравацьадзіны пакет, які аб'ядноўвае тры ці больш розных прымітываў відэаназірання за хостам і накіроўвае цыкл каманд/адказаў праз публічны сэрвіс размяшчэння кантэнту. Блакіроўка npoint[.]io наўпрост непрактычна для большасці крам; значна больш надзейнае папярэджанне аб нечаканым працэсе, які адначасова захоплівае дадзеныя з прылад уводу і ўзаемадзейнічае са службай JSON-bin.

Назіраная паводзіны і фармулёўка

Дзве рэчы робяць гэты ўзор незвычайным, і абедзве з'яўляюцца назіранымі фактамі, а не высновамі пра матыў.

Яно рэкламавала сябе. У апісанні пакета, распаўсюджаным на PyPI, магчымасці пералічваліся простай мовай — аддалены доступ, кіраванне працоўным сталом, кіраванне карыстальнікамі, вэб-камера, аўдыё, кейлоггер, захаванасць, дадзеныя браўзера, Wi-Fi, рэестр, «больш за 140 каманд». Не было ніякіх спроб выдаць код за памочніка зборкі, абгортку CLI або ўтыліту агента штучнага інтэлекту, што з'яўляецца больш распаўсюджанай маскіроўкай, якую мы бачым у публічных рэестрах. Ці адлюстроўвае гэтая адкрытасць інструмент чырвонай каманды, апублікаваны без кантролю доступу, ці нешта іншае, — пытанне, якое не вырашае сам змест пакета; адно можна сказаць дакладна: працоўны універсальны набор інструментаў для аддаленага доступу і назірання мог усталяваць кожны, хто мае зярнятка.

Гэта абапіралася на давер да добразычлівай службы. Выкарыстанне npoint[.]io паколькі рэтрансляцыя з'яўляецца вызначальным метадам. Гэта прыклад больш шырокага шаблону — маршрутызацыя C2 праз легітымную SaaS (сайты ўстаўкі, кантэйнеры JSON, вэб-чатыhooks, воблачная дакументацыя), каб шкоднасны трафік зліваўся са звычайнай дзейнасцю распрацоўшчыка і не было канчатковай кропкі, якая належыць аператару, для захопу. Карысныя нагрузкі на рэтранслятары былі зашыфраваны, таму змесціва кантэйнера не чыталася б як каманды для звычайнага назіральніка.

Сігналы выдаўца слабыя і агульныя. У пакеце аб'яўлена аўтар «удзельнікаў gcli» і ліцэнзію MIT, а таксама паказаў палі галоўнай старонкі і рэпазітара на github[.]com/gcli-control/gcliНічога з гэтага не з'яўляецца праверкай: радок аўтара — гэта свабодны тэкст, загаловак ліцэнзіі MIT нічога не каштуе, а URL-адрас рэпазітара ў метададзеных пакета — гэта сцвярджэнне, а не доказ паходжання. Шаблон — зусім новая назва, агульны калектыўны аўтар і самаспасылачная арганізацыя/рэпазітар, створаная вакол пакета — гэта тое, як выглядае праект, калі ён спецыяльна распрацаваны для размяшчэння кода, а не як усталяваны інструмент, які выпадкова развіў функцыю дыстанцыйнага кіравання. Мы адзначаем гэта як назіранні; яны адпавядаюць, але самі па сабе не ўстанаўліваюць мэтанакіраваны дыстрыбутыў.

Мы апісваем гэтае распараджэнне як зламыснае на падставе магчымасцей і спосабу пастаўкі: поўнафункцыянальны, працаздольны імплантат дыстанцыйнага доступу і назірання, распаўсюджваны па публічным індэксе пакетаў са схаванай рэтрансляцыяй. Мы не называем мэту або матыў.

Уплыў, тэндэнцыі і што могуць зрабіць абаронцы

Сляпая пляма для трыяжу, арыентаванага на маскіроўку. Значна больш аўтаматызаваных ключоў для сартавання пасылак хаваць сігналы тыповае шкоднаснае праграмнае забеспячэнне для рэестра — заблытаныя блобы, час усталёўкі hooks, аднарадковыя фразы для збору паўнамоцтваў. Пакет, які проста адкрыта ПАЦУК, з чыстым чытэльным кодам і адсутнасцю перахопніка ўстаноўкі, не ўтрымлівае ніякіх падказак і можа праслізнуць міма эўрыстык, якія чакаюць маскіроўкі. Сігналы, якія надзейна выяўляюць гэты клас, з'яўляюцца структурнымі, а не заснаванымі на маскіроўцы: перапіс магчымасцей (колькі розных прымітываў назірання за хостам суіснуе ў адным пакеце) і аналіз C2-вобразнай формы (цыкл каманд/адказаў, які праходзіць праз універсальную службу размяшчэння кантэнту). Гэтыя праверкі спрацоўваюць незалежна ад таго, наколькі сумленныя або... прыцемненыя ўпакоўка ёсць.

Трэнд SaaS як C2. Злоўжыванне легітымным хостынгам як тупіковым сэрвісам не з'яўляецца чымсьці новым, але яно працягвае працаваць, бо абарончыя выдаткі на блакаванне сэрвісу высокія, а наступальныя выдаткі на пераключэнне сэрвісаў блізкія да нуля. Чакайце большага. Сеткавая абарона, прывязаная да пэўных дрэнных даменаў, імгненна старэе; правілы паводзін («гэты працэс чытае буфер абмену і вэб-камеру, а затым узаемадзейнічае з API хостынгу нататак») не старэюць.

Эскіз выяўлення бетону. Трывалае правіла не называе npoint[.]io наогул. Гэта спалучае ў сабе два назіранні, якія паасобку распаўсюджаныя, але разам рэдкія ў звычайных распрацоўшчыкаў або хостаў неперасягненай інфраструктуры:

папярэджваць, калі адзін працэс, на працягу адной сесіі, абодва:
(A) атрымлівае доступ да прымітыву назірання за хостам — прылады ўводу (перахопніка клавіятуры/мышы), камеры, мікрафона, захопу экрана, цыкла чытання з буфера абмену або сховішча ўліковых дадзеных браўзера ("Login «Дадзеныя» / «Лакальны стан» / DPAPI); І
(B) робіць выходныя запыты да публічнага сэрвісу размяшчэння кантэнту / устаўкі / JSON-bin / chat-webhook, а затым падымае іх на разгляд, незалежна ад канкрэтнага сэрвісу ў (B).

Ні адна з гэтых паловак не выклікае падазрэнняў: мноства скрыншотаў з легітымных інструментаў і мноства адпраўкі JSON у API хостынгу. Злучэнне ўнутры аднаго кароткачасовага працэсу з'яўляецца сігналам, і яно перажывае любую ратацыю рэтрансляцыі.

Практычныя крокі для каманд:

  • Разглядайце ўсталёўкі публічных пакетаў на хостах распрацоўшчыкаў і CI як мяжу выканання, а не як зручнасць — RAT на агенце зборкі — гэта RAT з вашымі сакрэтамі.
  • Аддавайце перавагу ўнутраным люстэркам з белага спісу; пакет, літаральна названы для дыстанцыйнага кіравання і апісаны кейлогерам, ніколі не павінен размяшчацца ў карпаратыўным індэксе.
  • Папярэджанне аб спалучэнне — прылада ўводу або захоп экрана плюс выходны трафік да службы кантэнту/ўстаўкі/JSON-bin — а не на якім-небудзь асобным прымітыве, які мае бяскрыўднае прымяненне сам па сабе.
  • Не спадзявайцеся на аўтаматызаваную ацэнку «бяспекі» як канчатковы вердыкт для пакетаў з шырокімі магчымасцямі доступу да хоста; накіроўвайце іх на праверку чалавекам.

Сямейства пакетаў было класіфікавана як шкоднаснае і накіравана на выдаленне з рэестра. Паколькі C2 на аснове рэтрансляцыі не пакідае ніводнага хоста, які належыць аператару, для пранікнення ў сістэму, трывалая абарончая каштоўнасць заключаецца ў паводніцкім адбітку вышэй, а не ў асобным запісе чорнага спісу.

інструменты-для-аналізу-складання-праграмнага ...
Прыярытэзуйце, ліквідуйце і абараняйце свае праграмныя рызыкі
Атрымайце свой бясплатны рахунак.
Не патрабуецца крэдытная карта.

Забяспечце распрацоўку і пастаўку праграмнага забеспячэння

з пакетам прадуктаў Xygeni