PointBlank: A PyPI RAT elrejti a C2-t egy JSON-Bin szolgáltatásban

PointBlank: egy teljes funkcionalitású Python RAT, amely a parancscsatornáját egy ingyenes jegyzettárhely-szolgáltatáson keresztül futtatta

TL, DR

Egy PyPI csomag, melynek neve gcli-vezérlés egy komplett Windows távoli hozzáférési eszközt szállított: billentyűleütés-naplózás, webkamera és mikrofon rögzítése, vágólap-figyelés, böngésző-hitelesítő adatokkal való hozzáférés, képernyővezérlés, jogosultságmegőrzés, jogosultságemelések, és egy önmagát hirdető „140+ parancs”. Nem rejtette véka alá, hogy mi is ez valójában: a csomag saját PyPI-összefoglalója „Távoli hozzáférési eszközként” írta le npoint.io".

Az a részlet, amelyen érdemes elidőzni, az a kifejezés „az npoint.io-n keresztül.” Ahelyett, hogy egy dedikált szerverhez hívta volna otthonát, az implantátumot npont[.]io (egy ingyenes, legitim szolgáltatás kis JSON dokumentumok tárolására) parancs- és vezérlőreléként. Az operátor a parancsokat egy JSON tárolóba írja; a beültetett eszköz lekérdezi a tárolóba helyezett objektumot, végrehajtja azt, és visszaírja az eredményeket. Nincs támadó tulajdonában lévő domain, amit blokkolni kellene, nincs friss IP-cím, amit jelezni kellene: a forgalom egy olyan szolgáltatáshoz jut, amelyet a fejlesztők nap mint nap használnak.

Nagyjából tizenhárom és fél óra alatt hat változat jelent meg, mindegyik tehetségesebb az előzőnél. Mindegyikhez zene készült ml_előrejelzett_biztonságos egy automatizált osztályozó által, mielőtt a manuális felülvizsgálat újra besorolta volna a családot rosszindulatúként.

Támadás anatómiája

gcli-vezérlés telepíti az importcsomagot gcli, egy 35 modulból álló Python kódbázis. Nincsenek telepítési idejű hooks — semmi sem fut közben pip telepítésA képesség magukban a modulokban található, az eszköz futtatásakor hívódik meg, a modul elrendezése pedig egy termékspecifikációs laphoz hasonlít:

KépességterületModulok
Gazdafelügyeletkeylog, webcam, audio, clipboard, desktop, monitoring
Hitelesítő adatok és adatokhoz való hozzáférésbrowser, forensics, fileops, transfer, users
Megtámasztás és eszkalációpersistence, elevator, registry, security
Gazdagép és hálózat felderítésesystem, processes, network_config, wifi, bluetooth, netutils
Parancsnokság és irányításclient, host, session, protocol, npoint, crypto, encrypt

A parancscsatorna az érdekes rész. A legtöbb távoli hozzáférésű eszköz egy olyan szervert ér el, amelyet az operátor kezel – egy IP-címet, egy domaint, egy tárhelyszolgáltatót, amelyről jelentést lehet készíteni és le lehet venni a rendszerről. gcli-vezérlés ehelyett egy ingyenes JSON-bin szolgáltatás dead-drop formátumban Az npont modul kis JSON dokumentumokat olvas és ír npont[.]io hagyományos HTTPS-en keresztül; a crypto/titkosítani A modulok becsomagolják a kicserélt hasznos adatokat, így a tároló tartalma nem sima szöveges parancs. A hatás egy közvetített, titkosított továbbítás:

  • Az operátor egy (titkosított) utasítást helyez egy JSON tárolóba.
  • Az áldozat gépén futó implantátum lekérdezi a bin állapotot, dekódolja a kódot, végrehajtja az egyik parancskezelőjét, és visszaírja a (titkosított) eredményt.
  • Egy hálózati monitor számára az áldozat egyszerűen csak beszél npont[.]io — egy olyan szolgáltatás, amelynek jogos oka van megjelenni a fejlesztői forgalomban.

Nincs második szintű letöltés és nincs obfuszkált betöltő: a képesség teljes egészében, olvasható Pythonban érkezik, és az egyetlen „rejtés” a továbbított adatátvitel megválasztása és a továbbított hasznos adatok titkosítása.

Érdemes kifejteni, hogy miért vonzó egy JSON-bin deaddrop működési szempontból, mert ez megmagyarázza, miért várjuk, hogy újra látni fogjuk a mintát:

  • Nincs operátor tulajdonában lévő végpont. Nincs regisztrálandó C2 domain, nincs bérelhető VPS, és nincs semmi, amit a védő vagy a regisztrátor lefoglalhatna. csomag nem érinti a csatornát; a eltávolítása csatorna azt jelenti, hogy egy általános célú SaaS-t kérünk meg, hogy több millió dokumentum közül egyet felügyeljen.
  • Hírnévmosás. Egy jól ismert fejlesztői szolgáltatáshoz kimenő HTTPS protokoll esetén nincsenek olyan hírnévbeli hátrányok, mint egy új domain vagy egy nyers IP-cím esetében. Sok kimenő forgalom szűrésére szolgáló beállítás implicit módon engedélyezi ezt.
  • Aszinkronitás és tagadhatóság. Egy lekérdezési modell – amelyben a beültetett rendszer egy adott időközönként kéri le a dokumentumot ahelyett, hogy egy nyitott socketet tartana fenn – olyan forgalmat generál, amely periodikus API-lekérdezésnek tűnik, nem pedig interaktív munkamenetnek. A dokumentum tartalmának titkosítása azt jelenti, hogy még az elemző, aki megtalálja a mappát, titkosított szöveget lát, nem pedig parancslistát.
  • Triviális forgatásEgy másik tárolóba, vagy egy teljesen másik jegyzet/beillesztés szolgáltatásba való áthelyezés egyetlen soros konfigurációmódosítást jelent az operátor számára. Az adott reléhez tartozó tiltólista a kiszállítás pillanatában elavult.

Az operátor által elfogadott kompromisszum az átviteli sebesség és a késleltetés: egy közvetlen kapcsolatú relé lassabb és kisebb sávszélességű, mint egy közvetlen kapcsolat. Egy olyan megfigyelő és vezérlő implantátum esetében, amely többnyire rövid parancsokat ad ki és idővel gyűjti az eredményeket, ez a kompromisszum könnyen megvalósítható.

Network TwentyOne Global

A család gyorsan eszkalálódott. A megjelölt verziók jegylétrehozási időbélyegei a teljes megfigyelt ívet körülbelül tizenhárom és fél órára teszik, és a szkenner saját bizonyítékainak száma a kóddal együtt nőtt – az első verzióban néhány megjelölt helyről a legújabbra tizennégyre.

VáltozatElső látottság (UTC)Megjegyzések
0.1.02026-07-21 12:59Kezdeti feltöltés; minimálisan megjelölt felület
0.5.02026-07-21 18:01A képesség bővül
0.2.02026-07-21 18:03(a verziószámozás nem monoton a feltöltési sorrenddel)
0.6.02026-07-22 00:44Szélesebb modulkészlet
0.7.02026-07-22 01:58Majdnem teljes eszköztár
0.7.12026-07-22 02:28Legújabb; 35 modul, teljes funkcionalitás

A verziószámokat nem szigorú sorrendben tették közzé, de az irány egyértelmű: egy kis első vágás, majd gyors iteráció a teljes funkcionalitású 0.7.1 felé. Ez egy aktív fejlesztés alatt álló projekt felépítése, amelyet növekedésével egy nyilvános nyilvántartásba helyeznek át, nem pedig egy egyszeri eldobásként.

A kiegyezés mutatói

Az alábbi indikátorokat a lemezen lévő csomag tartalmával és a 0.7.1-es verzió determinisztikus indikátor-szkennelésével ellenőriztük; egyik sem spekulatív.

típusMutató
Csomag (PyPI)gcli-control, 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1 verziók
Csomag importálásagcli
C2 relénpoint[.]io (JSON-bin dead-drop; titkosított hasznos adatok)
Meghatározott adattárgithub[.]com/gcli-control/gcli
Viselkedési ujjlenyomatEgyüttesen elhelyezett megfigyelő modulok: keylog, webcam, audio, clipboard, browser, plusz perzisztencia, lift és kliens/hoszt/protokoll parancsréteg egyetlen csomagban
Telepítés hooksNincs: a funkció az eszköz futásidejű szakaszában fut, nem a telepítés során

Védő megjegyzése: a legerősebb tartós jel nem a tartomány (egy reléhoszt triviálisan rotálódik), hanem a formálják: egyetlen csomag, amely három vagy több különálló gazdamegfigyelési primitívet tartalmaz és a egy parancs/válasz ciklust irányít át egy nyilvános tartalom-tárhely szolgáltatáson keresztül. npont[.]io A legtöbb üzlet számára a közvetlen riasztás nem praktikus; sokkal robusztusabb egy váratlan folyamatra reagálni, amely egyszerre rögzíti a bemeneti eszközöket és kommunikál egy JSON-bin szolgáltatással.

Megfigyelt viselkedés és keretezés

Két dolog teszi ezt a mintát szokatlanná, és mindkettő megfigyelhető tény, nem pedig az indítékra vonatkozó következtetés.

Hirdette magát. A PyPI-n terjesztett csomagösszefoglaló egyszerű nyelven sorolta fel a képességeket – távoli hozzáférés, asztali vezérlés, felhasználókezelés, webkamera, hang, billentyűnaplózó, perzisztencia, böngészőadatok, WiFi, beállításjegyzék, „140+ parancs”. Nem volt kísérlet arra, hogy a kódot build helperként, CLI-csomagolóként vagy AI-ügynök segédprogramként adják át, ami a nyilvános beállításjegyzékekben gyakoribb álcázás. Hogy ez a nyitottság egy hozzáférés-vezérlés nélkül közzétett red team eszközt vagy valami mást tükröz, az a kérdés, hogy a csomag tartalma önmagában nem dönt; az biztos, hogy egy működőképes, általános célú távoli hozzáférési és megfigyelési eszközkészletet bárki telepíthetett, aki rendelkezett… gyümölcsmag.

A jóindulatú szolgáltatásba vetett bizalomra támaszkodott. <p></p> npont[.]io mivel a relay a meghatározó technika. Ez egy tágabb mintára példa – a C2 útvonalát egy legitim SaaS-en keresztül irányítjuk (beillesztési webhelyek, JSON-tárolók, csevegőweb).hooks, felhőalapú dokumentációk), így a rosszindulatú forgalom beleolvad a normál fejlesztői tevékenységbe, és nincs lefoglalható, operátor tulajdonában lévő végpont. A továbbító csatornán lévő hasznos adatok titkosítottak voltak, így a kukában lévő tartalom nem olvasható parancsként egy laikus megfigyelő számára.

A kiadói jelzések vékonyak és általánosak. A csomag kijelentette, hogy Szerző „gcli közreműködők” és MIT licenccel rendelkező személyekből áll, és a honlapját és a tárhely mezőit a következőre irányította: github[.]com/gcli-control/gcliEzek egyike sem ellenőrzés: a szerzői karakterlánc szabad szöveg, az MIT licenc fejléce nem kerül semmibe, és a csomag metaadataiban található repository URL egy igény, nem pedig a származás bizonyítéka. A minta – egy vadonatúj név, egy általános kollektív szerző és egy a csomag köré létrehozott önhivatkozó org/repo – az, ahogyan egy projekt néz ki, amikor kifejezetten a kód hordozására állítják fel, nem pedig egy bevált eszköz, amely történetesen egy távoli vezérlési funkciót fejlesztett ki. Ezeket megfigyelésként jegyezzük meg; összhangban vannak, de önmagukban nem alapozzák meg a célzottan épített disztribúciót.

A diszpozíciót a képesség és a kézbesítési mód alapján rosszindulatúnak minősítjük: egy teljes, futtatható távoli hozzáférést és megfigyelést biztosító implantátum, amelyet nyilvános csomagindexen, titkos továbbító rendszeren terjesztenek. Nem határozunk meg célpontot vagy indítékot.

Hatás, trendek és mit tehetnek a védők

Vakfolt az álcázásra irányuló triázs számára. Sok automatizált csomagtriage kulcs a álcázza jelek tipikus rendszerleíró adatbázis-malware — obfuszkált blobok, telepítési idő hooks, hitelesítő adatok gyűjtésére irányuló egysoros üzenetek. Egy csomag, amely egyszerűen nyíltan egy PATKÁNY, tisztán olvasható kóddal és telepítési hook nélkül, nem mutatja be ezeket az jelzéseket, és átsiklahat az elrejtésre számító heurisztikákon. Azok a jelek, amelyek megbízhatóan elkapják ezt az osztályt, inkább strukturálisak, mintsem álcázáson alapulóak: egy képességszámlálás (hány különböző host-felügyeleti primitív létezik együtt egy csomagban) és C2-alakú elemzés (egy parancs/válasz ciklus, amely egy általános célú tartalomtárhely-szolgáltatáson keresztül van irányítva). Ezek az ellenőrzések attól függetlenül aktiválódnak, hogy mennyire őszinte vagy Elbonyolított a csomagolás az.

A SaaS mint C2 trend. Egy legitim tárhelyszolgáltatás blokkolásának célpontjaként való visszaélés nem új keletű jelenség, de továbbra is működik, mivel a szolgáltatás blokkolásának védekezési költsége magas, a szolgáltatásváltás támadó költsége pedig közel nulla. Számítsunk rá, hogy még több ilyen eset lesz. Az adott rosszindulatú domainekhez kapcsolódó hálózati védelem azonnal érvényét veszti; a viselkedési szabályok („ez a folyamat beolvassa a vágólapot és a webkamerát, majd kommunikál egy jegyzettárhely-API-val”) nem.

Betonészlelési vázlat. A tartós szabály nem nevezi meg npont[.]io egyáltalán. Két olyan megfigyelést egyesít, amelyek önmagukban gyakoriak, de együttesen ritkák egy normál fejlesztői vagy CI-hoszton:

riasztás, ha egyetlen folyamat, egy munkameneten belül, mindkettő:
(A) hozzáfér egy host-surveillance primitívhez — beviteli eszközhöz (billentyűzet/egér hook), kamerához, mikrofonhoz, képernyőképhez, vágólap olvasási ciklushoz vagy böngésző hitelesítőadat-tárolójához ("Login „Adatok” / „Helyi állapot” / DPAPI); ÉS
(B) kimenő kéréseket küld egy nyilvános tartalom-tárhely / beillesztés / JSON-bin / chat-webhook szolgáltatásnak, majd felteszi azokat felülvizsgálatra, függetlenül a (B) pontban szereplő konkrét szolgáltatástól.

Egyik fele sem gyanús önmagában: rengeteg legitim eszköz képernyőképet készít, és rengeteg JSON-t küld egy tárhely API-ra. Az egyik rövid életű folyamaton belüli összeköttetés a jel, és ez túléli a továbbítási váltást.

Gyakorlati lépések csapatok számára:

  • A fejlesztői és CI-hosztokon történő nyilvános csomagtelepítéseket végrehajtási határként kezeld, ne kényelmi szempontként – egy build ügynökön lévő RAT egy RAT a te titkaiddal.
  • Engedélyezett belső tükröket előnyben részesítünk; egy szó szerint távvezérlésnek nevezett és billentyűnaplózót leíró csomagnak soha nem szabadna vállalati indexen feloldania a hibákat.
  • Figyelmeztetés a következőn: kombináció — bemeneti eszköz vagy képernyőkép, plusz a kimenő forgalom egy tartalom/beillesztés/JSON-bin szolgáltatásba — ahelyett, hogy egyetlen primitíven lenne, amelynek önmagában is jóindulatú felhasználási lehetőségei vannak.
  • Ne hagyatkozz az automatikus „biztonságos” pontszámra termináldöntésként a széleskörű hoszt-hozzáférési képességgel rendelkező csomagok esetében; irányítsd át őket emberi felülvizsgálatra.

A csomagcsaládot rosszindulatúnak minősítették, és regisztrációs adatbázis eltávolítására utalták. Mivel egy relé alapú C2 nem hagy operátor tulajdonában lévő hosztot a rendszerleíró adatbázisból kifolyólag, a tartós védelmi érték a fenti viselkedési ujjlenyomatban rejlik, nem pedig egyetlen blokklista-bejegyzésben.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal