PointBlank: PyPI RAT skjuler C2 i en JSON-Bin-tjeneste

PointBlank: en fullfunksjonell Python RAT som kjørte kommandokanalen sin gjennom en gratis notathostingstjeneste

TL; DR

En PyPI-pakke med navnet gcli-kontroll leverte et komplett Windows-verktøy for fjerntilgang: tastetrykklogging, webkamera- og mikrofonopptak, utklippstavlovervåking, tilgang til nettleserlegitimasjon, skjermkontroll, persistens, rettighetsheving og en selvannonsert "140+ kommandoer." Den skjulte ikke hva den var: pakkens eget PyPI-sammendrag beskrev den som et "verktøy for fjerntilgang via npoint.io".

Detaljen det er verdt å stoppe opp ved er den frasen "via npoint.io." I stedet for å ringe hjem til en dedikert server, ble implantatet brukt npunkt[.]io (en gratis, legitim tjeneste for hosting av små JSON-dokumenter) som kommando- og kontrollrelé. Operatøren skriver kommandoer inn i en JSON-bin; implantatet avspør den binen, kjører og skriver resultatene tilbake. Ingen angriper-eid domene å blokkere, ingen ny IP å flagge: trafikken går til en tjeneste utviklere bruker hver dag.

Seks versjoner ble publisert på omtrent tretten og en halv time, hver mer dyktig enn den forrige. Hver og en av dem ble scoret. ml_predicted_safe av en automatisert klassifiserer før manuell gjennomgang omklassifiserte familien som ondsinnet.

Angrepsanatomi

gcli-kontroll installerer importpakken gcli, en Python-kodebase med 35 moduler. Det er ingen installasjonstid hooks – ingenting går i løpet av pip installasjonFunksjonen ligger i selve modulene, som aktiveres når verktøyet kjører, og moduloppsettet ser ut som et produktspesifikasjonsark:

KompetanseområdeModuler
Vertsovervåkingkeylog, webcam, audio, clipboard, desktop, monitoring
Legitimasjon og datatilgangbrowser, forensics, fileops, transfer, users
Fotfeste og eskaleringpersistence, elevator, registry, security
Vert- og nettverksgjenopprettingsystem, processes, network_config, wifi, bluetooth, netutils
Kommando og kontrollclient, host, session, protocol, npoint, crypto, encrypt

Kommandokanalen er den interessante delen. De fleste verktøyene for fjerntilgang når en server operatøren kontrollerer – en IP-adresse, et domene, en hostingleverandør som kan rapporteres og tas offline. gcli-kontroll behandler i stedet en gratis JSON-bin-tjeneste som en dead-drop. De npunkt modulen leser og skriver små JSON-dokumenter på npunkt[.]io over vanlig HTTPS; krypto/kryptere moduler pakker inn de utvekslede nyttelastene slik at bin-innholdet ikke er klartekstkommandoer. Effekten er et mediert, kryptert relé:

  • Operatøren legger en (kryptert) instruksjon i en JSON-bin.
  • Implantatet, som kjører på offerets vert, avspør den bin-en, dekrypterer, kjører en av kommandohåndtererne og skriver det (krypterte) resultatet tilbake.
  • Til en nettverksmonitor snakker offeret ganske enkelt med npunkt[.]io – en tjeneste med en legitim grunn til å vises i utviklertrafikk.

Det er ingen nedlasting i andre trinn og ingen tilslørt laster her: funksjonaliteten leveres i sin helhet, i lesbar Python, og det eneste «skjulet» er valget av videresending og krypteringen av de videresendte nyttelastene.

Hvorfor en JSON-bin dead-drop er operasjonelt attraktiv er verdt å utdype, fordi det forklarer hvorfor vi forventer å se mønsteret igjen:

  • Ingen operatøreid endepunkt. Det er ikke noe C2-domene å registrere, ingen VPS å leie, og ingenting for en forsvarer eller registrar å beslaglegge. Fjerning av pakke berører ikke kanalen; fjerning av kanal betyr å be en generell SaaS om å overvåke ett dokument blant millioner.
  • Hvitvasking av omdømme. Utgående HTTPS til en kjent utviklertjeneste har ingen av de omdømmestraffene et nytt domene eller en rå IP ville ha. Mange oppsett for utgående filtrering tillater det implisitt.
  • Asynkroni og fornektelse. En pollingmodell – implantatet henter et dokument med intervaller i stedet for å holde en åpen socket – produserer trafikk som ser ut som periodisk API-polling, ikke en interaktiv økt. Kryptering av dokumentinnholdet betyr at selv en analytiker som finner bin-en ser chiffertekst, ikke en kommandoliste.
  • Trivial rotasjonÅ flytte til en annen beholder, eller en helt annen notat-/limetjeneste, er en konfigurasjonsendring på én linje for operatøren. Enhver blokkeringsliste som er tastet inn til det spesifikke reléet, er foreldet i det øyeblikket den sendes.

Avveiningen operatøren aksepterer er gjennomstrømning og latens: et dead-drop-relé er tregere og har lavere båndbredde enn en direkte forbindelse. For et overvåkings- og kontrollimplantat som for det meste utsteder korte kommandoer og samler inn resultater over tid, er denne avveiningen enkel å gjøre.

Tidslinje

Familien eskalerte raskt. Tidsstempler for oppretting av saker for de flaggede versjonene plasserer hele den observerte buen innenfor omtrent tretten og en halv time, og skannerens eget bevisantall vokste i takt med koden – fra et par flaggede nettsteder i den første versjonen til fjorten i den siste.

VersjonFørst sett (UTC)Merknader
0.1.02026-07-21 12:59Første opplasting; minimalt flagget overflate
0.5.02026-07-21 18:01Kapasiteten utvides
0.2.02026-07-21 18:03(versjonsnummerering ikke monoton med opplastingsrekkefølge)
0.6.02026-07-22 00:44Bredere modulsett
0.7.02026-07-22 01:58Nesten komplett verktøysett
0.7.12026-07-22 02:28Siste; 35 moduler, full kapasitet

Versjonsnumrene ble ikke publisert i streng rekkefølge, men retningen er klar: en liten første kutt, deretter rask iterasjon mot den fullfunksjonelle 0.7.1. Dette er formen på et prosjekt under aktiv utvikling som sendes til et offentlig register etter hvert som det vokser, ikke en engangsutgivelse.

Indikatorer for kompromiss

Alle indikatorene nedenfor ble bekreftet mot innholdet i pakken på disken og en deterministisk indikatorskanning av versjon 0.7.1; ingen er spekulative.

typenIndikator
Pakke (PyPI)gcli-control, versjoner 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1
Importer pakkegcli
C2-relénpoint[.]io (JSON-bin dead-drop; krypterte nyttelaster)
Oppgitt depotgithub[.]com/gcli-control/gcli
Atferdsmessig fingeravtrykkSamlokaliserte overvåkingsmoduler: keylog, webcam, audio, clipboard, browser, pluss persistens, heis og et klient/vert/protokoll-kommandolag i én pakke
Install hooksIngen: funksjonen kjører under verktøykjøring, ikke under installasjon

Forsvarerens merknad: Det sterkeste varige signalet er ikke domenet (en relévert roterer trivielt), men formeen enkelt pakke som samler tre eller flere distinkte vertsovervåkingsprimitiver og ruter en kommando-/svarsløkke gjennom en offentlig innholdstjeneste. Blokkering npunkt[.]io er rett og slett upraktisk for de fleste butikker; varsling om en uventet prosess som både fanger opp inndataenheter og snakker med en JSON-bin-tjeneste er langt mer robust.

Observert atferd og innramming

To ting gjør dette utvalget uvanlig, og begge er observerbare fakta snarere enn slutninger om motiv.

Den annonserte seg selv. Pakkesammendraget som ble distribuert på PyPI listet opp funksjonene i et enkelt språk – fjerntilgang, skrivebordskontroll, brukeradministrasjon, webkamera, lyd, keylogger, persistens, nettleserdata, WiFi, register, «140+ kommandoer». Det ble ikke gjort noe forsøk på å utgi koden som en byggehjelper, en CLI-innpakning eller et AI-agentverktøy, som er den vanligste forkledningen vi ser på offentlige registre. Om denne åpenheten gjenspeiler et red-team-verktøy publisert uten tilgangskontroller eller noe annet, er et spørsmål pakkeinnholdet alene ikke avgjør; det som er sikkert er at et fungerende, generell verktøysett for fjerntilgang og overvåking kunne installeres av alle med pip.

Den lente seg på tillit til en godartet tjeneste. Ved hjelp av npunkt[.]io ettersom reléet er den definerende teknikken. Det er et eksempel på et bredere mønster – ruting av C2 gjennom en legitim SaaS (lim inn nettsteder, JSON-bins, chat webhooks, skydokumenter) slik at den ondsinnede trafikken blander seg inn i normal utvikleraktivitet og det ikke finnes noe operatøreid endepunkt å beslaglegge. Nyttelastene på reléet var kryptert, slik at innholdet i bin-mappen ikke ville leses som kommandoer for en tilfeldig observatør.

Utgiversignalene er tynne og generiske. Pakken erklærte en Forfatter av «gcli-bidragsytere» og en MIT-lisens, og pekte hjemmesiden og depotfeltene på github[.]com/gcli-control/gcliIngenting av dette er verifisering: en forfatterstreng er fritekst, en MIT-lisensheader koster ingenting, og en URL til et depot i pakkemetadata er et krav, ikke et bevis på opprinnelse. Mønsteret – et helt nytt navn, en generisk kollektiv forfatter og en selvrefererende organisasjon/depot opprettet rundt pakken – er hvordan et prosjekt ser ut når det er opprettet spesifikt for å bære koden, snarere enn et etablert verktøy som tilfeldigvis har utviklet en fjernkontrollfunksjon. Vi bemerker disse som observasjoner; de er konsistente med, men etablerer ikke i seg selv, en spesialbygd distribusjon.

Vi beskriver disposisjonen som ondsinnet basert på kapasitet og levering: et komplett, kjørbart implantat for fjerntilgang og overvåking, distribuert på en offentlig pakkeindeks med et skjult relé. Vi tildeler ikke et mål eller et motiv.

Innvirkning, trender og hva forsvarere kan gjøre

En blindsone for forkledningsorientert triage. Mange automatiserte pakkesorteringsnøkler på forkledning signaler av typisk registerskadevare — obfuskerte klatter, installasjonstid hooks, korte replikker om innsamling av legitimasjon. En pakke som rett og slett er åpenlyst en ROTTE, med ren lesbar kode og ingen installasjonshook, presenterer ingen av disse signalene og kan slippe forbi heuristikker som forventer skjuling. Signalene som pålitelig fanger opp denne klassen er strukturelle snarere enn kamuflasjebaserte: en kapasitetsopptelling (hvor mange forskjellige vertsovervåkingsprimitiver som sameksisterer i én pakke) og C2-formanalyse (en kommando-/svarsløkke rutet gjennom en generell innholdshostingstjeneste). Disse sjekkene utløses uavhengig av hvor ærlige eller uklar emballasjen er.

SaaS-som-C2-trenden. Det er ikke nytt å misbruke en legitim hostingtjeneste som en dead-drop, men det fortsetter å fungere fordi den defensive kostnaden ved å blokkere tjenesten er høy og den offensive kostnaden ved å bytte tjeneste er nær null. Forvent mer av det. Nettverksforsvar knyttet til spesifikke, dårlige domener eldes umiddelbart; atferdsregler («denne prosessen leser utklippstavlen og webkameraet og snakker deretter med et API for notathosting») gjør det ikke.

En skisse for betongdeteksjon. Den varige regelen nevner ikke npunkt[.]io i det hele tatt. Den kombinerer to observasjoner som er vanlige hver for seg, men sjeldne i fellesskap på en vanlig utvikler eller CI-vert:

varsle når en enkelt prosess, innenfor én økt, begge:
(A) får tilgang til en vertsovervåkingsprimitiv – en inndataenhet (tastatur-/muskrok), kamera, mikrofon, skjermbilde, leseløkke for utklippstavlen eller et nettleserlegitimasjonslager («Login Data" / "Lokal tilstand" / DPAPI); OG
(B) sender utgående forespørsler til en offentlig innholdshosting- / lime- / JSON-bin- / chat-webhook-tjeneste og sender deretter inn for gjennomgang, uavhengig av den spesifikke tjenesten i (B).

Ingen av delene er mistenkelige alene: mange skjermbilder av legitime verktøy, og mange legger ut JSON til et hosting-API. Konjunksjonen i en kortvarig prosess er signalet, og den overlever enhver relérotasjon.

Praktiske trinn for team:

  • Behandle installasjoner av offentlige pakker på utvikler- og CI-verter som en utførelsesgrense, ikke en bekvemmelighet – en RAT på en byggeagent er en RAT med dine hemmeligheter.
  • Foretrekk interne speil på tillatelseslisten; en pakke som bokstavelig talt heter fjernkontroll og beskriver en keylogger, skal aldri løses på en bedriftsindeks.
  • Varsel på kombinasjon — inndataenhet eller skjermbilde pluss utgående trafikk til en content/lime/JSON-bin-tjeneste — snarere enn på en enkelt primitiv, som har godartede bruksområder isolert sett.
  • Ikke stol på en automatisert «sikker» poengsum som en terminalvurdering for pakker med bred vertstilgangsmulighet; send dem til menneskelig gjennomgang.

Pakkefamilien har blitt klassifisert som skadelig og henvist til fjerning i registeret. Fordi en relébasert C2 ikke etterlater noen operatøreid vert i synkehull, ligger den varige defensive verdien i det atferdsmessige fingeravtrykket ovenfor, ikke i noen enkelt blokkeringslisteoppføring.

sca-tools-programvare-verktøy for komposisjonsanalyse
Prioriter, utbedre og sikre programvarerisikoene dine
Få din gratis konto.
Ingen kredittkort kreves.

Sikre programvareutviklingen og -leveringen din

med Xygeni-produktpakken