PointBlank: PyPI RAT skriva C2 ​​u JSON-Bin usluzi

PointBlank: potpuno opremljeni Python RAT koji je pokretao svoj komandni kanal putem besplatne usluge hostinga bilješki

TL; DR

PyPI paket pod nazivom gcli-control isporučio je kompletan alat za udaljeni pristup sustavu Windows: zapisivanje pritisaka tipki, snimanje web kamere i mikrofona, praćenje međuspremnika, pristup vjerodajnicama preglednika, upravljanje zaslonom, perzistenciju, podizanje privilegija i samoreklamiranih "140+ naredbi". Nije skrivao što je to: vlastiti sažetak PyPI-ja paketa opisao ga je kao "Alat za udaljeni pristup putem npoint.io".

Detalj na kojem vrijedi zastati je ta fraza "putem npoint.io." Umjesto pozivanja namjenskog poslužitelja, implantat je koristio npoint[.]io (besplatna, legitimna usluga za hosting malih JSON dokumenata) kao svoj relej za naredbe i kontrolu. Operater zapisuje naredbe u JSON spremnik; implantat ispituje taj spremnik, izvršava ga i zapisuje rezultate natrag. Nema domene u vlasništvu napadača za blokiranje, nema nove IP adrese za označavanje: promet ide na uslugu koju programeri koriste svaki dan.

Šest verzija objavljeno je u otprilike trinaest i pol sati, svaka sposobnija od prethodne. Svaka od njih je bila ocjenjena ml_predicted_safe od strane automatiziranog klasifikatora prije nego što je ručni pregled reklasificirao obitelj kao zlonamjernu.

Anatomija napada

gcli-control instalira paket za uvoz gcli, Python kodna baza od 35 modula. Nema vremena instalacije hooks — ništa ne radi tijekom pip instaliratiMogućnost se nalazi u samim modulima, poziva se nakon pokretanja alata, a raspored modula izgleda kao specifikacija proizvoda:

Područje sposobnostiModuli
Nadzor domaćinakeylog, webcam, audio, clipboard, desktop, monitoring
Pristup vjerodajnicama i podacimabrowser, forensics, fileops, transfer, users
Uporište i eskalacijapersistence, elevator, registry, security
Izviđanje domaćina i mrežesystem, processes, network_config, wifi, bluetooth, netutils
Zapovijedanje i upravljanjeclient, host, session, protocol, npoint, crypto, encrypt

Kanal naredbi je zanimljiv dio. Većina alata za udaljeni pristup dolazi do poslužitelja kojim upravlja operater - IP adrese, domene, pružatelja hostinga koji se može prijaviti i isključiti iz mreže. gcli-control umjesto toga tretira a besplatna JSON-bin usluga kao dead-drop, npoint modul čita i zapisuje male JSON dokumente na npoint[.]io preko običnog HTTPS-a; kripto/šifriranje moduli omotavaju razmijenjene korisne terete tako da sadržaj spremnika nije naredba u obliku čistog teksta. Učinak je posredovani, šifrirani relej:

  • Operator ubacuje (šifriranu) instrukciju u JSON spremnik.
  • Implantat, koji se izvodi na zaraženom hostu, ispituje taj bin, dešifrira ga, izvršava jedan od svojih rukovatelja naredbama i zapisuje (šifrirani) rezultat natrag.
  • Za mrežnog monitora, žrtva jednostavno razgovara s npoint[.]io — usluga s legitimnim razlogom za pojavljivanje u prometu programera.

Ovdje nema preuzimanja druge faze niti obfusiranog programa za učitavanje: mogućnost se isporučuje u cijelosti, u čitljivom Pythonu, a jedino „skrivanje“ je izbor releja i enkripcija prenesenih korisnih podataka.

Vrijedi navesti zašto je JSON-bin deaddrop operativno privlačan, jer objašnjava zašto očekujemo da ćemo ponovno vidjeti taj obrazac:

  • Nema krajnje točke u vlasništvu operatera. Nema C2 domene za registraciju, nema VPS-a za najam, niti išta što bi branitelj ili registrar mogao oduzeti. Uklanjanje paket ne dodiruje kanal; uklanjanje kanal znači tražiti od SaaS-a opće namjene da nadzire jedan dokument među milijunima.
  • Pranje ugleda. Odlazni HTTPS prema poznatoj usluzi za razvojne programere ne nosi nikakve posljedice za reputaciju koje bi imala nova domena ili sirova IP adresa. Mnoge postavke filtriranja izlaznog prometa to implicitno dopuštaju.
  • Asinkronost i poricanje. Model prozivanja — implantat dohvaća dokument u određenom intervalu umjesto da drži otvoreni socket — stvara promet koji izgleda kao periodično API prozivanje, a ne kao interaktivna sesija. Šifriranje sadržaja dokumenta znači da čak i analitičar koji pronađe spremnik vidi šifrirani tekst, a ne popis naredbi.
  • Trivijalna rotacijaPremještanje u drugu kutiju ili potpuno drugu uslugu bilješki/lijepljenja promjena je konfiguracije u jednom retku za operatera. Bilo koja lista blokiranih vezana uz određeni relej je zastarjela u trenutku slanja.

Kompromis koji operater prihvaća je propusnost i latencija: relej s mrtvim dijelom je sporiji i ima manju propusnost od izravne veze. Za implantat za nadzor i kontrolu koji uglavnom izdaje kratke naredbe i prikuplja rezultate tijekom vremena, taj je kompromis lako napraviti.

Timeline

Obitelj se brzo proširila. Vremenske oznake kreiranja tiketa za označene verzije smještaju cijeli promatrani luk unutar otprilike trinaest i pol sati, a broj dokaza samog skenera rastao je zajedno s kodom - od nekoliko označenih mjesta u prvoj verziji do četrnaest u najnovijoj.

VerzijaPrvi put viđen (UTC)bilješke
0.1.02026-07-21 12:59Početno učitavanje; minimalno označena površina
0.5.02026-07-21 18:01Mogućnosti se proširuju
0.2.02026-07-21 18:03(numeriranje verzija nije monotono s redoslijedom prijenosa)
0.6.02026-07-22 00:44Širi skup modula
0.7.02026-07-22 01:58Gotovo kompletan set alata
0.7.12026-07-22 02:28Najnovije; 35 modula, pune mogućnosti

Brojevi verzija nisu objavljeni strogim redoslijedom, ali smjer je jasan: prvo malo smanjenje, zatim brza iteracija prema potpuno funkcionalnoj verziji 0.7.1. Ovo je oblik projekta u aktivnom razvoju koji se javno registrira kako raste, a ne jednokratno uklanjanje.

Pokazatelji kompromisa

Svi dolje navedeni indikatori potvrđeni su u odnosu na sadržaj paketa na disku i determinističko skeniranje indikatora verzije 0.7.1; nijedan nije spekulativan.

TipPokazatelj
Paket (PyPI)gcli-control, verzije 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1
Uvoz paketagcli
C2 relejnpoint[.]io (JSON-bin dead-drop; šifrirani korisni tereti)
Navedeno spremištegithub[.]com/gcli-control/gcli
Bihevioralni otisak prstaKolokirani nadzorni moduli: keylog, webcam, audio, clipboard, browser, plus perzistencija, lift i sloj naredbi klijent/domaćin/protokol u jednom paketu
Instalirati hooksNišta: mogućnost se izvršava za vrijeme izvođenja alata, a ne tijekom instalacije

Napomena branitelja: Najjači trajni signal nije domena (glavni relej se trivijalno rotira), već oblikovatijedan paket koji objedinjuje tri ili više različitih primitiva za nadzor hosta i usmjerava petlju naredbi/odgovora kroz javnu uslugu hostinga sadržaja. Blokiranje npoint[.]io Izravno upozorenje je nepraktično za većinu trgovina; upozorenje na neočekivani proces koji i bilježi ulazne uređaje i komunicira s JSON-bin uslugom je daleko robusnije.

Opaženo ponašanje i okvir

Dvije stvari čine ovaj uzorak neobičnim, a obje su uočljive činjenice, a ne zaključci o motivu.

Samo se reklamiralo. Sažetak paketa distribuiran na PyPI-ju nabrajao je mogućnosti jednostavnim jezikom - udaljeni pristup, upravljanje radnom površinom, upravljanje korisnicima, web kamera, zvuk, keylogger, perzistencija, podaci preglednika, WiFi, registar, „140+ naredbi“. Nije bilo pokušaja da se kod predstavi kao pomoćnik za izgradnju, CLI omotač ili uslužni program AI-agenta, što je češća maska ​​koju viđamo u javnim registrima. Odražava li ta otvorenost alat crvenog tima objavljen bez kontrola pristupa ili nešto drugo, pitanje je koje sam sadržaj paketa ne rješava; ono što je sigurno jest da je funkcionalan, opći alat za daljinski pristup i nadzor mogao instalirati svatko s... zvjezdica.

Oslanjalo se na povjerenje u dobroćudnu uslugu. Korištenje npoint[.]io budući da je relej definirajuća tehnika. To je primjer šireg obrasca - usmjeravanje C2 putem legitimnog SaaS-a (stranice za lijepljenje, JSON spremnike, web chathooks, dokumentacija u oblaku) tako da se zlonamjerni promet stapa s normalnom aktivnošću programera i da nema krajnje točke u vlasništvu operatera koju bi se mogla preuzeti. Korisni tereti na releju bili su šifrirani, tako da sadržaj spremnika ne bi bio očitan kao naredbe slučajnom promatraču.

Signali izdavača su slabi i generički. Paket je proglasio Autor „gcli suradnika“ i MIT licence te je usmjerio svoju početnu stranicu i polja repozitorija na github[.]com/gcli-control/gcliNišta od toga nije verifikacija: niz autora je slobodan tekst, zaglavlje MIT licence ne košta ništa, a URL repozitorija u metapodacima paketa je tvrdnja, a ne dokaz podrijetla. Uzorak - potpuno novo ime, generički kolektivni autor i samoreferencijalna org/repozitorij stvorena oko paketa - prikazuje kako projekt izgleda kada je posebno postavljen za nošenje koda, a ne kao uspostavljeni alat koji je slučajno razvio značajku daljinskog upravljanja. Ovo bilježimo kao zapažanja; ona su u skladu s, ali sama po sebi ne uspostavljaju, namjenski izgrađenu distribuciju.

Opisujemo dispoziciju kao zlonamjernu na temelju mogućnosti i načina isporuke: potpuni, izvodivi implantat za daljinski pristup i nadzor, distribuiran na javnom indeksu paketa s tajnim relejem. Ne navodimo metu niti motiv.

Utjecaj, trendovi i što branitelji mogu učiniti

Slijepa točka za trijažu orijentiranu na prerušavanje. Mnogo automatiziranih ključeva za trijažu paketa na maskirati signali tipični zlonamjerni softver registra — obfusirani blobovi, vrijeme instalacije hooks, jednolinijske rečenice za prikupljanje vjerodajnica. Paket koji je jednostavno otvoreno RAT, s čistim i čitljivim kodom i bez instalacijske hook-a, ne prikazuje nijedan od tih znakova i može promaknuti heuristikama koje očekuju prikrivanje. Signali koji pouzdano hvataju ovu klasu su strukturni, a ne temeljeni na prikrivanju: popis sposobnosti (koliko različitih primitiva za nadzor hosta koegzistira u jednom paketu) i analiza C2-oblika (petlja naredbi/odgovora usmjerava se kroz uslugu hostinga sadržaja opće namjene). Te se provjere aktiviraju bez obzira na to koliko su iskrene ili maskirani ambalaža je.

Trend SaaS-kao-C2. Zlouporaba legitimne usluge hostinga kao slijepe točke nije nova, ali i dalje funkcionira jer je obrambeni trošak blokiranja usluge visok, a ofenzivni trošak promjene usluge gotovo nula. Očekujte još toga. Mrežne obrane vezane uz određene loše domene odmah zastarevaju; pravila ponašanja („ovaj proces čita međuspremnik i web kameru, a zatim komunicira s API-jem za hosting bilješki“) ne.

Skica za detekciju betona. Trajno pravilo ne imenuje npoint[.]io uopće. Kombinira dva zapažanja koja su pojedinačno uobičajena, ali zajedno rijetka na normalnom razvojnom programeru ili CI hostu:

upozorenje kada jedan proces, unutar jedne sesije, oboje:
(A) pristupa primitivu za nadzor hosta — ulaznom uređaju (tipkovnica/miš), kameri, mikrofonu, snimanju zaslona, ​​petlji čitanja međuspremnika ili pohrani vjerodajnica preglednika ("Login "Podaci" / "Lokalna država" / DPAPI); I
(B) šalje odlazne zahtjeve javnoj usluzi za hosting sadržaja / lijepljenje / JSON-bin / chat-webhook, a zatim ih podiže na pregled, bez obzira na specifičnu uslugu u (B).

Nijedna polovica nije sama po sebi sumnjiva: mnoštvo snimki zaslona legitimnih alata i mnoštvo objavljuje JSON na API za hosting. Konjunkcija unutar jednog kratkotrajnog procesa je signal i preživljava bilo kakvu rotaciju releja.

Praktični koraci za timove:

  • Javne instalacije paketa na developerskim i CI hostovima tretirajte kao granicu izvršavanja, a ne kao pogodnost - RAT na agentu za izgradnju je RAT s vašim tajnama.
  • Preferirajte interne mirrore s popisa dopuštenih; paket koji doslovno nosi ime za daljinsko upravljanje i opisuje keylogger nikada se ne bi trebao rješavati na korporativnom indeksu.
  • Upozorenje na kombinacija — ulazni uređaj ili snimka zaslona plus odlazni promet prema usluzi content/paste/JSON-bin — umjesto na bilo kojem pojedinačnom primitivu, koji sam po sebi ima benignu upotrebu.
  • Ne oslanjajte se na automatiziranu ocjenu "sigurnosti" kao konačnu presudu za pakete sa širokim mogućnostima pristupa hostu; usmjerite ih na ljudski pregled.

Obitelj paketa klasificirana je kao zlonamjerna i poslana je na uklanjanje iz registra. Budući da C2 temeljen na releju ne ostavlja nijedan host u vlasništvu operatera bez kontrole, trajna obrambena vrijednost leži u gornjem bihevioralnom otisku, a ne u bilo kojem pojedinačnom unosu na popisu blokiranih.

alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda