TL? DR
Ένα πακέτο PyPI με όνομα gcli-control παρέδωσε ένα πλήρες εργαλείο απομακρυσμένης πρόσβασης των Windows: καταγραφή πλήκτρων, καταγραφή κάμερας web και μικροφώνου, παρακολούθηση πρόχειρου, πρόσβαση με διαπιστευτήρια προγράμματος περιήγησης, έλεγχο οθόνης, διατήρηση, ανύψωση δικαιωμάτων και αυτοδιαφημιζόμενες "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 ως dead-drop. ο σημείο n Η ενότητα διαβάζει και γράφει μικρά έγγραφα JSON σε npoint[.]io μέσω συνηθισμένου HTTPS· το κρυπτο/κρυπτογράφηση Οι ενότητες τυλίγουν τα ανταλλασσόμενα ωφέλιμα φορτία, έτσι ώστε τα περιεχόμενα του κάδου να μην είναι εντολές απλού κειμένου. Το αποτέλεσμα είναι μια διαμεσολαβούμενη, κρυπτογραφημένη αναμετάδοση:
- Ο χειριστής αφήνει μια (κρυπτογραφημένη) εντολή σε έναν κάδο JSON.
- Το εμφύτευμα, που εκτελείται στον κεντρικό υπολογιστή του θύματος, πραγματοποιεί αναζήτηση για τον bin, αποκρυπτογραφεί, εκτελεί έναν από τους χειριστές εντολών του και γράφει πίσω το (κρυπτογραφημένο) αποτέλεσμα.
- Για έναν ελεγκτή δικτύου, το θύμα απλώς μιλάει σε npoint[.]io — μια υπηρεσία με νόμιμο λόγο εμφάνισης στην επισκεψιμότητα προγραμματιστών.
Δεν υπάρχει λήψη δεύτερου σταδίου και κανένας κρυφός φορτωτής εδώ: η δυνατότητα παρέχεται ολόκληρη, σε ευανάγνωστη Python, και η μόνη «κρυψώνα» είναι η επιλογή αναμετάδοσης και η κρυπτογράφηση των αναμεταδιδόμενων ωφέλιμων φορτίων.
Αξίζει να διευκρινιστεί γιατί ένα dead-drop ενός JSON-bin είναι λειτουργικά ελκυστικό, επειδή εξηγεί γιατί περιμένουμε να δούμε ξανά το μοτίβο:
- Δεν υπάρχει τελικό σημείο που ανήκει στον χειριστή. Δεν υπάρχει domain C2 για κατοχύρωση, ούτε VPS για ενοικίαση και τίποτα για να κατασχέσει ένας υπερασπιστής ή καταχωρητής. Αφαίρεση του πακέτο δεν αγγίζει το κανάλι· κατάργηση του κανάλι σημαίνει ότι ζητάς από ένα SaaS γενικής χρήσης να ελεγκτεί ένα έγγραφο ανάμεσα σε εκατομμύρια.
- Ξέπλυμα φήμης. Το εξερχόμενο HTTPS σε μια γνωστή υπηρεσία προγραμματιστή δεν συνεπάγεται καμία από τις κυρώσεις φήμης που θα είχε ένας νέος τομέας ή μια ακατέργαστη IP. Πολλές ρυθμίσεις φιλτραρίσματος εξόδου το επιτρέπουν έμμεσα.
- Ασυγχρονισμός και άρνηση. Ένα μοντέλο polling — το εμφύτευμα ανακτά ένα έγγραφο σε ένα διάστημα αντί να διατηρεί μια ανοιχτή υποδοχή — παράγει κίνηση που μοιάζει με περιοδική polling API, όχι με μια διαδραστική συνεδρία. Η κρυπτογράφηση του περιεχομένου του εγγράφου σημαίνει ότι ακόμη και ένας αναλυτής που βρίσκει τον κάδο βλέπει κρυπτογραφημένο κείμενο, όχι μια λίστα εντολών.
- Ασήμαντη περιστροφήΗ μετάβαση σε διαφορετικό χώρο αποθήκευσης ή σε εντελώς διαφορετική υπηρεσία σημειώσεων/επικόλλησης είναι μια αλλαγή διαμόρφωσης μίας γραμμής για τον χειριστή. Οποιαδήποτε λίστα αποκλεισμού που έχει κλειδωθεί για το συγκεκριμένο ρελέ είναι παλιά τη στιγμή που αποστέλλεται.
Η ανταλλαγή που δέχεται ο χειριστής είναι η απόδοση και η καθυστέρηση: ένα dead-drop relay είναι πιο αργό και έχει χαμηλότερο εύρος ζώνης από μια άμεση σύνδεση. Για ένα εμφύτευμα επιτήρησης και ελέγχου που εκδίδει κυρίως σύντομες εντολές και συλλέγει αποτελέσματα με την πάροδο του χρόνου, αυτή η ανταλλαγή είναι εύκολη.
Χρονολόγιο
Η οικογένεια κλιμακώθηκε γρήγορα. Οι χρονικές σημάνσεις δημιουργίας εισιτηρίων για τις εκδόσεις με σημαία τοποθετούν ολόκληρο το παρατηρούμενο τόξο μέσα σε περίπου δεκατρείς και μισή ώρες, και ο αριθμός των στοιχείων του ίδιου του σαρωτή αυξήθηκε παράλληλα με τον κώδικα - από μερικές τοποθεσίες με σημαία στην πρώτη έκδοση σε δεκατέσσερις στην τελευταία.
| Έκδοση | Πρώτη εμφάνιση (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 απαριθμούσε τις δυνατότητες σε απλή γλώσσα — απομακρυσμένη πρόσβαση, έλεγχος επιφάνειας εργασίας, διαχείριση χρηστών, κάμερα web, ήχος, keylogger, persistence, δεδομένα προγράμματος περιήγησης, WiFi, μητρώο, «140+ εντολές». Δεν υπήρξε καμία προσπάθεια να διαδοθεί ο κώδικας ως βοηθός δημιουργίας, περιτύλιγμα CLI ή βοηθητικό πρόγραμμα AI-agent, το οποίο είναι η πιο συνηθισμένη μεταμφίεση που βλέπουμε στα δημόσια μητρώα. Το αν αυτή η ανοιχτότητα αντικατοπτρίζει ένα εργαλείο red-team που δημοσιεύεται χωρίς ελέγχους πρόσβασης ή κάτι άλλο είναι ένα ερώτημα που δεν απαντάται από μόνο του στο περιεχόμενο του πακέτου. Αυτό που είναι βέβαιο είναι ότι ένα λειτουργικό, γενικής χρήσης κιτ εργαλείων απομακρυσμένης πρόσβασης και επιτήρησης μπορούσε να εγκατασταθεί από οποιονδήποτε με κουκούτσι.
Βασιζόταν στην εμπιστοσύνη σε μια καλοήθη υπηρεσία. Χρησιμοποιώντας npoint[.]io καθώς η αναμετάδοση είναι η καθοριστική τεχνική. Είναι ένα παράδειγμα ενός ευρύτερου μοτίβου — δρομολόγηση του C2 μέσω ενός νόμιμου SaaS (ιστότοποι επικόλλησης, κάδοι JSON, διαδικτυακή συνομιλίαhooks, έγγραφα cloud) έτσι ώστε η κακόβουλη κίνηση να αναμειγνύεται με την κανονική δραστηριότητα του προγραμματιστή και να μην υπάρχει τελικό σημείο που ανήκει στον χειριστή για κατάσχεση. Τα ωφέλιμα φορτία στο relate ήταν κρυπτογραφημένα, επομένως τα περιεχόμενα του bin δεν θα διαβάζονταν ως εντολές σε έναν περιστασιακό παρατηρητή.
Τα σήματα του εκδότη είναι λεπτά και γενικά. Το πακέτο δήλωνε ένα Μουσικός των «συνεισφερόντων του gcli» και μιας άδειας MIT, και υπέδειξε τα πεδία της αρχικής σελίδας και του αποθετηρίου του στο github[.]com/gcli-control/gcliΤίποτα από αυτά δεν είναι επαλήθευση: μια συμβολοσειρά συγγραφέα είναι ελεύθερο κείμενο, μια κεφαλίδα άδειας χρήσης MIT δεν κοστίζει τίποτα και μια διεύθυνση URL αποθετηρίου στα μεταδεδομένα του πακέτου είναι ισχυρισμός, όχι απόδειξη προέλευσης. Το μοτίβο - ένα ολοκαίνουργιο όνομα, ένας γενικός συλλογικός συγγραφέας και ένας αυτοαναφορικός οργανισμός/αποθετήριο που δημιουργείται γύρω από το πακέτο - είναι το πώς μοιάζει ένα έργο όταν έχει δημιουργηθεί ειδικά για να μεταφέρει τον κώδικα, αντί για ένα καθιερωμένο εργαλείο που τυχαίνει να έχει αναπτύξει μια λειτουργία τηλεχειρισμού. Τα σημειώνουμε αυτά ως παρατηρήσεις. είναι συνεπή με, αλλά δεν καθιερώνουν από μόνα τους, μια διανομή που έχει σχεδιαστεί για συγκεκριμένο σκοπό.
Περιγράφουμε τη διάθεση ως κακόβουλη με βάση την ικανότητα και την παράδοση: ένα πλήρες, εκτελέσιμο εμφύτευμα απομακρυσμένης πρόσβασης και επιτήρησης, που διανέμεται σε ένα δημόσιο ευρετήριο πακέτων με μια μυστική αναμετάδοση. Δεν αποδίδουμε έναν στόχο ή ένα κίνητρο.
Αντίκτυπος, τάσεις και τι μπορούν να κάνουν οι υπερασπιστές
Ένα τυφλό σημείο για διαλογή με γνώμονα τη μεταμφίεση. Πολλά αυτοματοποιημένα κλειδιά διαλογής πακέτων στο μεταμφίεση σήματα τυπικό κακόβουλο λογισμικό μητρώου — ασαφείς κηλίδες, χρόνος εγκατάστασης hooks, μονοσήμαντα σημεία που συλλέγουν διαπιστευτήρια. Ένα πακέτο που είναι απλά ανοιχτά ένας RAT, με καθαρό, αναγνώσιμο κώδικα και χωρίς άγκιστρο εγκατάστασης, δεν παρουσιάζει καμία από αυτές τις ενδείξεις και μπορεί να ξεφύγει από ευρετικές που αναμένουν απόκρυψη. Τα σήματα που εντοπίζουν αξιόπιστα αυτήν την κατηγορία είναι δομικά και όχι βασισμένα σε απόκρυψη: μια απογραφή δυνατοτήτων (πόσα διακριτά πρωτόγονα επιτήρησης κεντρικού υπολογιστή συνυπάρχουν σε ένα πακέτο) και ανάλυση σχήματος C2 (ένας βρόχος εντολών/απόκρισης που δρομολογείται μέσω μιας υπηρεσίας φιλοξενίας περιεχομένου γενικής χρήσης). Αυτοί οι έλεγχοι ενεργοποιούνται ανεξάρτητα από το πόσο ειλικρινείς ή... κατακερματισμένος η συσκευασία είναι.
Η τάση SaaS-as-C2. Η κατάχρηση μιας νόμιμης υπηρεσίας φιλοξενίας ως dead-drop δεν είναι κάτι καινούργιο, αλλά συνεχίζει να λειτουργεί επειδή το αμυντικό κόστος αποκλεισμού της υπηρεσίας είναι υψηλό και το επιθετικό κόστος αλλαγής υπηρεσιών είναι σχεδόν μηδενικό. Να περιμένετε περισσότερα από αυτό. Οι άμυνες δικτύου που είναι κλειδωμένες σε συγκεκριμένους κατεστραμμένους τομείς γερνούν αμέσως, ενώ οι κανόνες συμπεριφοράς ("αυτή η διαδικασία διαβάζει το πρόχειρο και την κάμερα web και στη συνέχεια επικοινωνεί με ένα API φιλοξενίας σημειώσεων") δεν το κάνουν.
Ένα σκίτσο ανίχνευσης από σκυρόδεμα. Ο κανόνας της ανθεκτικότητας δεν κατονομάζει npoint[.]io καθόλου. Συνδυάζει δύο παρατηρήσεις που είναι μεμονωμένα συνηθισμένες αλλά από κοινού σπάνιες σε έναν κανονικό προγραμματιστή ή κεντρικό υπολογιστή CI:
ειδοποίηση όταν μια μεμονωμένη διεργασία, μέσα σε μία συνεδρία, και οι δύο:
(Α) έχει πρόσβαση σε ένα πρωτόγονο σύστημα επιτήρησης κεντρικού υπολογιστή — συσκευή εισόδου (πληκτρολόγιο/ποντίκι), κάμερα, μικρόφωνο, λήψη οθόνης, βρόχο ανάγνωσης στο πρόχειρο ή χώρο αποθήκευσης διαπιστευτηρίων προγράμματος περιήγησης ("Login Δεδομένα" / "Τοπική Πολιτεία" / DPAPI); ΚΑΙ
(Β) υποβάλλει εξερχόμενα αιτήματα σε μια δημόσια υπηρεσία φιλοξενίας περιεχομένου / επικόλλησης / JSON-bin / chat-webhook και στη συνέχεια τα θέτει για έλεγχο, ανεξάρτητα από την συγκεκριμένη υπηρεσία στο (Β).
Κανένα από τα δύο δεν είναι ύποπτο από μόνο του: πολλά έγκριτα εργαλεία με στιγμιότυπα οθόνης και άφθονο JSON που δημοσιεύεται σε ένα API φιλοξενίας. Η σύνδεση μέσα σε μια βραχύβια διεργασία είναι το σήμα και επιβιώνει από οποιαδήποτε εναλλαγή αναμετάδοσης.
Πρακτικά βήματα για ομάδες:
- Αντιμετωπίστε τις εγκαταστάσεις δημόσιων πακέτων σε προγραμματιστές και κεντρικούς υπολογιστές CI ως όριο εκτέλεσης και όχι ως ευκολία — ένα RAT σε έναν παράγοντα δημιουργίας είναι ένα RAT με τα μυστικά σας.
- Προτιμήστε εσωτερικούς καθρέφτες που βρίσκονται στη λίστα επιτρεπόμενων. Ένα πακέτο που κυριολεκτικά ονομάζεται τηλεχειριστήριο και περιγράφει ένα keylogger δεν θα πρέπει ποτέ να επιλύεται σε εταιρικό ευρετήριο.
- Ειδοποίηση σχετικά με το συνδυασμός — συσκευή εισόδου ή καταγραφή οθόνης συν εξερχόμενη κίνηση σε μια υπηρεσία content/paste/JSON-bin — αντί για οποιοδήποτε μεμονωμένο πρωτόγονο στοιχείο, το οποίο έχει καλοήθεις χρήσεις μεμονωμένα.
- Μην βασίζεστε σε μια αυτοματοποιημένη βαθμολογία «ασφαλούς» ως τελική ετυμηγορία για πακέτα με ευρεία δυνατότητα πρόσβασης από κεντρικό υπολογιστή. δρομολογήστε τα για ανθρώπινη αξιολόγηση.
Η οικογένεια πακέτων έχει χαρακτηριστεί ως κακόβουλη και έχει παραπεμφθεί για κατάργηση από το μητρώο. Επειδή ένα C2 που βασίζεται σε αναμετάδοση δεν αφήνει κανέναν κεντρικό υπολογιστή που ανήκει στον χειριστή σε καταβόθρα, η διαρκής αμυντική αξία βρίσκεται στο αποτύπωμα συμπεριφοράς παραπάνω, όχι σε κάποια μεμονωμένη καταχώρηση λίστας αποκλεισμού.





