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 փոխարենը վերաբերվում է անվճար JSON-bin ծառայություն որպես dead-drop. The n կետ մոդուլը կարդում և գրում է փոքր JSON փաստաթղթեր npoint[.]io սովորական HTTPS-ի միջոցով; ծպտյալ/encrypt Մոդուլները փաթեթավորում են փոխանակված բեռները, որպեսզի արկղի պարունակությունը չլինի պարզ տեքստային հրամաններ։ Արդյունքը միջնորդավորված, կոդավորված փոխանցում է։
- Օպերատորը (կոդավորված) հրահանգը գցում է JSON արկղի մեջ։
- Իմպլանտը, որը աշխատում է զոհ հոսթի վրա, հարցում է անում bin-ի մասին, վերծանում է, կատարում է իր հրամանների մշակիչներից մեկը և հետ է գրում (կոդավորված) արդյունքը։
- Ցանցի մոնիտորի համար զոհը պարզապես խոսում է npoint[.]io — ծառայություն, որն ունի օրինական պատճառ մշակողների տրաֆիկում հայտնվելու համար։
Այստեղ երկրորդ փուլի ներբեռնում և խճճված բեռնիչ չկա. հնարավորությունը առաքվում է ամբողջությամբ, ընթեռնելի Python-ով, և միակ «թաքնվածը» փոխանցման ընտրությունն է և փոխանցվող բեռների կոդավորումը։
Արժե մանրամասնել, թե ինչու է JSON-bin dead-drop-ը գործառնական առումով գրավիչ, քանի որ դա բացատրում է, թե ինչու ենք մենք ակնկալում կրկին տեսնել այս օրինաչափությունը։
- Օպերատորին պատկանող վերջնակետ չկա։ Գրանցելու C2 դոմեյն չկա, վարձակալելու VPS չկա, և պաշտպանի կամ գրանցողի համար բռնագրավելու բան չկա։ փաթեթ չի դիպչում ալիքին; հանում է Արխիվ նշանակում է խնդրել ընդհանուր նշանակության SaaS-ից վերահսկել միլիոնավոր փաստաթղթերից մեկը։
- Հեղինակության լվացում։ Հայտնի մշակողի ծառայությանը ուղղված HTTPS-ի ելքային հաղորդագրությունները չեն կրում այնպիսի հեղինակության հետ կապված խնդիրներ, ինչպիսիք կարող են կրել նոր դոմեյնը կամ հում IP-ն։ Շատ ելքային ֆիլտրացման կարգավորումներ դա անուղղակիորեն թույլ են տալիս։
- Ասինխրոնություն և ժխտելիություն։ Հարցման մոդելը, որտեղ իմպլանտը փաստաթուղթը ստանում է որոշակի ժամանակահատվածում, այլ ոչ թե բաց socket է պահում, ստեղծում է երթևեկություն, որը նման է պարբերական API հարցման, այլ ոչ թե ինտերակտիվ սեսիայի: Փաստաթղթի բովանդակության կոդավորումը նշանակում է, որ նույնիսկ վերլուծաբանը, որը գտնում է աղբամանը, տեսնում է գաղտնագրված տեքստ, այլ ոչ թե հրամանների ցանկ:
- Թրիվիալ պտույտԱյլ արկղ կամ բոլորովին այլ նշումների/տեղադրման ծառայություն անցնելը օպերատորի համար մեկ տողի կարգավորում է։ Կոնկրետ ռելեին կոդավորված ցանկացած արգելափակված ցուցակ հնացած է առաքման պահին։
Օպերատորի կողմից ընդունվող փոխզիջումը թողունակությունն ու լատենտությունն է. անորոշ ժամանակով փոխանցվող ռելեն ավելի դանդաղ է և ունի ավելի ցածր թողունակություն, քան ուղիղ միացումը: Հսկողության և կառավարման իմպլանտի համար, որը հիմնականում կարճ հրամաններ է տալիս և ժամանակի ընթացքում արդյունքներ է հավաքում, այդ փոխզիջումը հեշտ է կատարել:
Խրոնոլոգիա
Ընտանիքը արագորեն սրվեց։ Նշված տարբերակների համար տոմսերի ստեղծման ժամանակային դրոշմանիշները ամբողջ դիտարկվող աղեղը տեղադրում են մոտ տասներեքուկես ժամվա ընթացքում, իսկ սկաների սեփական ապացույցների քանակը աճել է կոդի հետ մեկտեղ՝ առաջին տարբերակում մի քանի նշված վայրերից մինչև վերջինում՝ տասնչորս։
| տարբերակ | Առաջին անգամ տեսնված (UTC) | Նշում |
|---|---|---|
0.1.0 | 2026-07-21 12:59 | Սկզբնական վերբեռնում; նվազագույն նշագրված մակերես |
0.5.0 | 2026-07-21 18:01 | Հնարավորությունները ընդլայնվում են |
0.2.0 | 2026-07-21 18:03 | (տարբերակի համարակալումը միատարր չէ վերբեռնման հերթականության հետ) |
0.6.0 | 2026-07-22 00:44 | Ավելի լայն մոդուլների հավաքածու |
0.7.0 | 2026-07-22 01:58 | Գրեթե ամբողջական գործիքակազմ |
0.7.1 | 2026-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 dead-drop; կոդավորված օգտակար բեռներ) |
| Նշված պահոց | github[.]com/gcli-control/gcli |
| Վարքային մատնահետք | Համատեղ տեղակայված հսկողության մոդուլներ՝ keylog, webcam, audio, clipboard, browser, գումարած persistence, elevator և client/host/protocol հրամանի շերտ մեկ փաթեթում |
| Տեղադրեք hooks | Ոչ մեկը. հնարավորությունը գործարկվում է գործիքի աշխատանքի ընթացքում, այլ ոչ թե տեղադրման ընթացքում |
Պաշտպանի նշում. ամենաուժեղ, կայուն ազդանշանը տիրույթը չէ (ռելե հոսթը պտտվում է աննշանորեն), այլ ձեւավորումմեկ փաթեթ, որը միավորում է երեք կամ ավելի տարբեր հոսթի հսկողության պրիմիտիվներ և ուղղորդում է հրամանի/պատասխանի ցիկլը հանրային բովանդակության հոսթինգի ծառայության միջոցով։ Բլոկավորում npoint[.]io Բացարձակապես անիրագործելի է խանութների մեծ մասի համար. անսպասելի գործընթացի մասին ահազանգելը, որը և՛ գրանցում է մուտքային սարքերը, և՛ կապ է հաստատում JSON-bin ծառայության հետ, շատ ավելի հուսալի է։
Դիտարկված վարքագիծ և շրջանակում
Երկու բան այս նմուշը դարձնում են անսովոր, և երկուսն էլ դիտարկելի փաստեր են, այլ ոչ թե դրդապատճառի մասին եզրակացություններ:
Այն գովազդում էր ինքն իրեն։ PyPI-ում տարածված փաթեթի ամփոփագրում պարզ լեզվով թվարկված էին հնարավորությունները՝ հեռակա մուտք, աշխատասեղանի կառավարում, օգտատերերի կառավարում, վեբ տեսախցիկ, աուդիո, ստեղնաշարի գրանցող, համառություն, զննարկչի տվյալներ, WiFi, գրանցամատյան, «140+ հրամաններ»: Ոչ մի փորձ չի եղել կոդը ներկայացնել որպես կառուցման օգնական, CLI փաթաթան կամ արհեստական բանականության գործակալի գործիք, որը հանրային գրանցամատյաններում տեսնվող ավելի տարածված քողարկումն է: Արդյո՞ք այդ բացությունը արտացոլում է առանց մուտքի վերահսկողության հրապարակված կարմիր թիմի գործիք, թե՞ ինչ-որ այլ բան, հարց է, որին միայն փաթեթի պարունակությունը չի պատասխանում. հաստատ է, որ աշխատող, ընդհանուր նշանակության հեռակա մուտքի և հսկողության գործիքակազմը կարող էր տեղադրվել ցանկացած մեկի կողմից, ով ուներ... ծվծվալ.
Այն հիմնված էր բարեխիղճ ծառայության նկատմամբ վստահության վրա։ Օգտագործելով npoint[.]io քանի որ ռելեը որոշիչ տեխնիկա է։ Այն ավելի լայն օրինաչափության օրինակ է՝ C2-ի ուղղորդումը օրինական SaaS-ի միջոցով (տեղադրման կայքեր, JSON բիններ, չաթ վեբhooks, ամպային փաստաթղթեր) որպեսզի վնասակար երթևեկությունը միաձուլվի մշակողի բնականոն գործունեության հետ և չլինի օպերատորի սեփականություն հանդիսացող վերջնակետ, որը կարելի է բռնագրավել: Ռելեի վրա բեռնվածությունը կոդավորված էր, ուստի արկղի պարունակությունը պատահական դիտորդի համար հրամաններ չէր կարդացվի:
Հրատարակչի ազդանշանները թույլ և ընդհանուր են։ Փաթեթը հայտարարում էր, որ հեղինակ «gcli-ի մասնակիցների» և MIT լիցենզիայի, և մատնանշեց դրա գլխավոր էջի և պահոցի դաշտերը դեպի github[.]com/gcli-control/gcliՍրանցից ոչ մեկը ստուգում չէ. հեղինակի տողը ազատ տեքստ է, MIT լիցենզիայի վերնագիրը անվճար է, իսկ փաթեթի մետատվյալներում պահոցի URL-ը պնդում է, այլ ոչ թե ծագման ապացույց: Շաբլոնը՝ նոր անուն, ընդհանուր կոլեկտիվ հեղինակ և փաթեթի շուրջ ստեղծված ինքնահղումային կազմակերպություն/պահոց, ցույց է տալիս, թե ինչ տեսք ունի նախագիծը, երբ այն ստեղծվում է հատուկ կոդը կրելու համար, այլ ոչ թե հաստատված գործիք, որը պատահաբար զարգացրել է հեռակառավարման գործառույթ: Մենք սրանք նշում ենք որպես դիտարկումներ. դրանք համապատասխանում են, բայց ինքնին չեն հաստատում նպատակային բաշխում:
Մենք նկարագրում ենք տեղադրումը որպես չարամիտ՝ հիմնվելով կարողությունների և առաքման վրա. ամբողջական, գործարկելի հեռակառավարման մուտքի և հսկողության իմպլանտ, որը տարածվում է հանրային փաթեթի ինդեքսի վրա՝ գաղտնի փոխանցման միջոցով: Մենք չենք նշում թիրախ կամ դրդապատճառ:
Ազդեցությունը, միտումները և պաշտպանների կարողությունները
Կույր կետ քողարկման վրա կենտրոնացած տեսակավորման համար։ Շատ ավտոմատացված փաթեթների տեսակավորման բանալիներ քողարկել ազդանշաններ տիպիկ գրանցամատյանի վնասակար ծրագրեր — մշուշոտված բշտիկներ, տեղադրման ժամանակ hooks, վկայագրեր հավաքող միատող նախադասություններ։ Փաթեթ, որը պարզապես բացահայտորեն RAT, մաքուր ընթեռնելի կոդով և առանց տեղադրման կեռիկի, չի ներկայացնում այդ ազդանշաններից ոչ մեկը և կարող է շրջանցել թաքցնում սպասող էվրիստիկաները: Այս դասը հուսալիորեն որսացող ազդանշանները կառուցվածքային են, այլ ոչ թե քողարկման վրա հիմնված. կարողությունների մարդահամար (քանի՞ տարբեր հոսթինգի հսկողության պրիմիտիվներ են համակեցության մեջ) և C2-ձևի վերլուծություն (հրամանի/պատասխանի ցիկլ, որն ուղղորդվում է ընդհանուր նշանակության բովանդակության հոսթինգի ծառայության միջոցով): Այդ ստուգումները գործարկվում են անկախ նրանից, թե որքան ազնիվ կամ փչացած փաթեթավորումն է։
SaaS-as-C2 միտումը։ Օրինական հոսթինգի ծառայության չարաշահումը որպես փակուղի նորություն չէ, բայց այն շարունակում է աշխատել, քանի որ ծառայության արգելափակման պաշտպանական արժեքը բարձր է, իսկ ծառայությունների միացման վիրավորական արժեքը՝ գրեթե զրոյական։ Ակնկալեք ավելին։ Ցանցային պաշտպանությունները, որոնք ուղղված են որոշակի վատ դոմեյնների վրա, անմիջապես հնանում են, իսկ վարքային կանոնները («այս գործընթացը կարդում է սեղմատախտակը և վեբ տեսախցիկը, ապա շփվում է նշումների հոսթինգի API-ի հետ»)՝ ոչ։
Բետոնե հայտնաբերման ուրվագիծ։ Երկարակյաց կանոնը չի անվանում npoint[.]io ընդհանրապես։ Այն համատեղում է երկու դիտարկում, որոնք անհատապես տարածված են, բայց համատեղ հազվադեպ են սովորական մշակողի կամ CI հոսթի վրա.
զգուշացում, երբ մեկ պրոցես, մեկ սեսիայի ընթացքում, երկուսն էլ՝
(Ա) մուտք է գործում հոսթի հսկողության պրիմիտիվ՝ մուտքագրման սարք (ստեղնաշարի/մկնիկի կեռիկ), տեսախցիկ, միկրոֆոն, էկրանի նկարահանում, սեղմատախտակի ընթերցման ցիկլ կամ դիտարկիչի հավատարմագրերի պահեստ ("Login «Տվյալներ» / «Տեղական նահանգ» / DPAPI); ԵՎ
(Բ) կատարում է ելքային հարցումներ հանրային բովանդակության հոսթինգի / paste / JSON-bin / chat-webhook ծառայությանը, ապա բարձրացնում է դրանք վերանայման համար՝ անկախ (Բ)-ում նշված կոնկրետ ծառայությունից։
Երկու կեսերն էլ առանձին կասկածելի չեն. բազմաթիվ օրինական գործիքների էկրանի լուսանկարներ և բազմաթիվ JSON-ներ հոսթինգային API-ում: Մեկ կարճատև պրոցեսի ներսում կապը ազդանշանն է, և այն գոյատևում է ցանկացած ռելեի պտույտի դեպքում:
Գործնական քայլեր թիմերի համար.
- Մշակողի և CI հոսթերի վրա հանրային փաթեթների տեղադրումները դիտարկեք որպես կատարման սահման, այլ ոչ թե հարմարություն. կառուցման գործակալի վրա գտնվող RAT-ը ձեր գաղտնիքներով RAT է։
- Նախապատվությունը տվեք թույլատրվածների ցանկում գտնվող ներքին հայելիներին. փաթեթը, որը բառացիորեն անվանվել է հեռակառավարման համար և նկարագրում է ստեղնաշարի գրանցող, երբեք չպետք է լուծվի կորպորատիվ ինդեքսում։
- Զգուշացում համակցություն — մուտքագրման սարք կամ էկրանի նկարահանում գումարած content/paste/JSON-bin ծառայությանը ուղղված ելքային երթևեկությունը՝ այլ ոչ թե որևէ մեկ պրիմիտիվով, որն առանձին-առանձին ունի բարորակ կիրառություն։
- Լայն հոսթինգային մուտքի հնարավորություն ունեցող փաթեթների համար մի՛ հույսը դրեք ավտոմատացված «անվտանգ» գնահատականի վրա որպես վերջնական վճիռ. ուղղորդեք դրանք մարդկային վերանայման։
Փաթեթների ընտանիքը դասակարգվել է որպես վնասակար և ուղարկվել է գրանցամատյանի հեռացման: Քանի որ ռելեային C2-ը օպերատորին պատկանող որևէ հոսթ չի թողնում «խորտակման անցք», կայուն պաշտպանական արժեքը վերևում գտնվող վարքային մատնահետքում է, այլ ոչ թե որևէ առանձին բլոկային ցուցակի գրառման մեջ:





