LinkPro Linux Rootkit
Μια πρόσφατη παραβίαση ενός περιβάλλοντος Amazon Web Services (AWS) αποκάλυψε ένα προηγουμένως μη καταγεγραμμένο rootkit GNU/Linux, το οποίο εντοπίστηκε ως LinkPro. Αυτό το backdoor είναι αξιοσημείωτο για τη διπλή χρήση μονάδων eBPF: ένα σετ για την απόκρυψη αντικειμένων και ένα άλλο που λειτουργεί ως κρυφή ενεργοποίηση — ένα «χτύπημα» που ενεργοποιεί τη λειτουργικότητα απομακρυσμένης εντολής μόνο αφού εντοπιστεί ένα ειδικά κατασκευασμένο πακέτο TCP. Η αλυσίδα επίθεσης και οι μηχανισμοί του rootkit απεικονίζουν έναν εξελιγμένο χειριστή που συνδυάζει κατάχρηση κοντέινερ, απόκρυψη σε επίπεδο πυρήνα και ευέλικτη ενεργοποίηση δικτύου για να εμποδίσει την ανίχνευση και την εγκληματολογική συσχέτιση.
Πίνακας περιεχομένων
Φορέας Λοίμωξης και Αρχική Ανάπτυξη
Η εισβολή ξεκίνησε με την εκμετάλλευση μιας εκτεθειμένης παρουσίας Jenkins που ήταν ευάλωτη στο CVE‑2024‑23897 (CVSS 9.8). Από αυτό το σημείο, οι επιτιθέμενοι προώθησαν μια κακόβουλη εικόνα Docker (kvlnt/vv, η οποία έχει αφαιρεθεί από το Docker Hub) σε πολλά clusters Kubernetes. Η εικόνα χρησιμοποιούσε μια βάση δεδομένων Kali Linux και περιείχε έναν μικρό φάκελο εφαρμογής που προοριζόταν για τη δημιουργία persistence, απομακρυσμένης πρόσβασης και σταδιακής λήψης από backdoor.
Μέσα στην κακόβουλη εικόνα Docker
Ο φάκελος εφαρμογής της εικόνας περιείχε τρία βασικά αρχεία με διακριτούς ρόλους:
start.sh — ένα shell script που εκκινεί μια υπηρεσία SSH και εκτελεί τα άλλα δύο στοιχεία.
σύνδεσμος — ένα πρόγραμμα ανοιχτού κώδικα (vnt) που έχει μεταγλωττιστεί/συσκευαστεί για να λειτουργεί ως VPN/proxy client, συνδέοντας εξερχόμενα το vnt.wherewego[.]top:29872. Αυτό επιτρέπει στον εισβολέα να φτάσει στον παραβιασμένο κεντρικό υπολογιστή από οπουδήποτε και να στραφεί σε άλλους στόχους μέσω αυτού.
εφαρμογή — ένα πρόγραμμα λήψης που βασίζεται σε Rust (αναφέρεται ως vGet) που ανακτά ένα κρυπτογραφημένο φορτίο vShell από έναν κάδο S3 και, στη συνέχεια, δημιουργεί έναν σύνδεσμο WebSocket στον διακομιστή εντολών και ελέγχου (C2) του στη διεύθυνση 56.155.98[.]37.
Επιπλέον ωφέλιμα φορτία που παραδίδονται σε κόμβους Kubernetes
Παράλληλα με την κακόβουλη εικόνα, οι χειριστές έριξαν επίσης δύο άλλα στοιχεία στους κόμβους: ένα dropper που εγκαθιστά ένα άλλο backdoor vShell, και το LinkPro, ένα rootkit γραμμένο από την Golang. Το LinkPro έχει σχεδιαστεί για να λειτουργεί σε μία από τις δύο λειτουργίες - παθητική (αντίστροφη) ή ενεργή (προώθηση) - ανάλογα με τη διαμόρφωσή του. Στην παθητική λειτουργία, περιμένει να ενεργοποιηθεί από ένα ειδικό πακέτο δικτύου. Στην ενεργή λειτουργία, ξεκινά την επικοινωνία με το ίδιο το C2. Η λειτουργία προώθησης υποστηρίζει πέντε πρωτόκολλα μεταφοράς (HTTP, WebSocket, UDP, TCP, DNS), ενώ η λειτουργία αντίστροφης λειτουργίας περιορίζει τις επικοινωνίες σε HTTP.
Πώς το LinkPro επιμένει
Η συνολική εκτέλεση και η συμπεριφορά επιμονής του κακόβουλου λογισμικού ακολουθούν μια σαφή ακολουθία:
- Εγκαταστήστε τη λειτουργική μονάδα Απόκρυψη eBPF. Αυτή η λειτουργική μονάδα περιλαμβάνει προγράμματα Tracepoint και Kretprobe eBPF που χρησιμοποιούνται για την απόκρυψη των διεργασιών και της δραστηριότητας δικτύου του LinkPro.
- Εάν η εγκατάσταση της ενότητας Hide eBPF αποτύχει — ή εάν έχει απενεργοποιηθεί — εγκαταστήστε μια κοινόχρηστη βιβλιοθήκη στη διεύθυνση /etc/libld.so και προσθέστε αυτήν τη διαδρομή στη διεύθυνση /etc/ld.so.preload ως εφεδρικό μηχανισμό απόκρυψης.
- Για αντίστροφη (παθητική) λειτουργία, εγκαταστήστε τη μονάδα Knock eBPF. Το Knock περιέχει ένα πρόγραμμα XDP και ένα πρόγραμμα TC, επομένως το κανάλι C2 ενεργοποιείται μόνο μετά τη λήψη ενός συγκεκριμένου «μαγικού πακέτου».
- Δημιουργήστε μια υπηρεσία systemd για να δημιουργήσετε μια υπηρεσία persistence.
- Εκτελέστε εντολές που λαμβάνονται από το C2.
- Κατά τον τερματισμό λειτουργίας ή όταν ενεργοποιηθεί η ειδοποίηση (SIGHUP, SIGINT, SIGTERM), απεγκαταστήστε τις μονάδες eBPF και αφαιρέστε/επαναφέρετε την τροποποίηση προφόρτωσης /etc/libld.so, ώστε το σύστημα να επιστρέψει στην προηγούμενη κατάστασή του.
Το Μαγικό Πακέτο και ο Μηχανισμός Ενεργοποίησης Χτυπήματος
Η παθητική ενεργοποίηση του LinkPro εξαρτάται από ένα ακριβές πακέτο TCP: οποιοδήποτε πακέτο TCP του οποίου το μέγεθος παραθύρου είναι ίσο με 54321 αντιμετωπίζεται ως το «μαγικό πακέτο». Όταν το Knock ανιχνεύει αυτό το πακέτο, αποθηκεύει την IP πηγής και το επισημαίνει με λήξη μίας ώρας. Τα επόμενα πακέτα TCP από αυτήν την πηγή παρακολουθούνται και, όταν είναι απαραίτητο, το Knock ξαναγράφει τις κεφαλίδες, έτσι ώστε η κίνηση του χειριστή να ανακατευθύνεται στη θύρα ακρόασης του LinkPro (2333). Τα εξερχόμενα πακέτα προσαρμόζονται για να παρουσιάσουν την αρχική θύρα πίσω στο δίκτυο (η θύρα πηγής ξαναγράφεται σε 2233). Ο σκοπός είναι απλός αλλά αποτελεσματικός: να επιτρέπεται στον εισβολέα να προσπελάσει το LinkPro μέσω οποιασδήποτε θύρας επιτρέπει το front-end firewall, ενώ παράλληλα να δυσχεραίνεται η συσχέτιση των εξωτερικών αρχείων καταγραφής του τείχους προστασίας με την εσωτερική δραστηριότητα δικτύου του κεντρικού υπολογιστή.
Πώς το LinkPro κρύβεται
Το LinkPro χρησιμοποιεί μια στρατηγική απόκρυψης δύο επιπέδων:
Απόκρυψη πυρήνα/eBPF : Η ενότητα Απόκρυψη eBPF εγκαθιστά προγράμματα Tracepoint και Kretprobe που αναχαιτίζουν κλήσεις συστήματος όπως getdents (για απόκρυψη αρχείων/καταλόγων) και sys_bpf (για απόκρυψη των δικών της προγραμμάτων BPF). Αυτή η προσέγγιση απαιτεί έναν πυρήνα που έχει δημιουργηθεί με ενεργοποιημένο το CONFIG_BPF_KPROBE_OVERRIDE.
Εφεδρική λειτουργία LD_PRELOAD χώρου χρήστη : Εάν η δυνατότητα πυρήνα δεν υπάρχει, το LinkPro γράφει μια κοινόχρηστη βιβλιοθήκη (libld.so) και τοποθετεί τη διαδρομή της στο /etc/ld.so.preload. Επειδή το /etc/ld.so.preload προκαλεί τη φόρτωση της καθορισμένης βιβλιοθήκης σε κάθε δυναμικά συνδεδεμένη διεργασία (αυτές που χρησιμοποιούν /lib/ld-linux.so και glibc), το εμφυτευμένο libld.so συνδέει τις συναρτήσεις libc νωρίς (πριν από τη συμπεριφορά της ίδιας της glibc) και τροποποιεί τις επιστροφές από τις κλήσεις libc για να αποκρύψει τα τεχνουργήματα που διαφορετικά θα εξέθεταν την παρουσία της.
Δυνατότητες Rootkit και σύνολο εντολών
Το LinkPro υποστηρίζει τόσο διαδραστικές όσο και αυτοματοποιημένες απομακρυσμένες ενέργειες. Τα ενσωματωμένα χαρακτηριστικά του περιλαμβάνουν:
- Έναρξη ενός ψευδοτερματικού /bin/bash και εκτέλεση διαδραστικών συνεδριών κελύφους.
- Εκτέλεση αυθαίρετων εντολών κελύφους.
- Απαρίθμηση αρχείων και καταλόγων και εκτέλεση λειτουργιών αρχείων.
- Λήψη και εγγραφή αρχείων στο δίσκο.
- Δημιουργία σήραγγας proxy SOCKS5 για περιστροφή και διακίνηση μέσω proxy εκτός εδάφους.
Υποστήριξη πρωτοκόλλου δικτύου και συμπεριφορά C2
Στην ενεργή (προς τα εμπρός) λειτουργία, το LinkPro είναι ευέλικτο: μπορεί να επικοινωνεί χρησιμοποιώντας μεταφορές HTTP, WebSocket, UDP, TCP ή DNS. Στην παθητική (αντίστροφη) λειτουργία, η επικοινωνία του περιορίζεται στο HTTP, αλλά επωφελείται από την αόρατη λειτουργία, επειδή ακούει μόνο αφού το μαγικό πακέτο Knock ανοίξει ένα προσωρινό παράθυρο εντολών μίας ώρας.
Συμπεριφορά καθαρισμού και απεγκατάστασης
Εάν η διεργασία λάβει σήματα τερματισμού, το LinkPro στοχεύει στην αφαίρεση ιχνών: απεγκαθιστά τις εγκατεστημένες μονάδες eBPF και διαγράφει ή επαναφέρει το αρχείο /etc/libld, ομαδοποιώντας το στην προηγούμενη κατάστασή του, έτσι ώστε το σύστημα να εμφανίζεται αμετάβλητο. Αυτή η σκόπιμη ρουτίνα καθαρισμού υποδηλώνει έναν χειριστή που ανησυχεί για την αποφυγή και την ελαχιστοποίηση των μακροπρόθεσμων εγκληματολογικών αποτυπωμάτων.
Λειτουργικό Πλαίσιο και Απόδοση
Η καμπάνια χρησιμοποίησε ένα exploit υψηλής σοβαρότητας της Jenkins, κακόβουλες εικόνες κοντέινερ, πολλαπλές παραλλαγές backdoor και μυστικότητα σε επίπεδο πυρήνα — ένας συνδυασμός που υποδηλώνει έναν κινητοποιημένο και ικανό χειριστή. Δεν έχει δημοσιοποιηθεί καμία οριστική απόδοση. Ωστόσο, το σύνολο εργαλείων και η φαινομενική χρήση της παραβίασης για proxying και μόνιμη απομακρυσμένη πρόσβαση υποδηλώνουν έντονα οικονομική δραστηριότητα (περιστροφή, proxying για πρόσθετες εισβολές ή μεταπώληση πρόσβασης).
Εξάρτηση από τον πυρήνα και συμπεριφορά εφεδρικής λειτουργίας
Επειδή το LinkPro βασίζεται σε λειτουργίες παράκαμψης kprobe του BPF για την αθόρυβη υποκλοπή του πυρήνα, εφαρμόζει την τεχνική απόκρυψης σε επίπεδο πυρήνα μόνο όταν ο κεντρικός πυρήνας εκθέτει το CONFIG_BPF_KPROBE_OVERRIDE. Όπου αυτή η δυνατότητα πυρήνα απουσιάζει, το LinkPro καταφεύγει σκόπιμα στη μέθοδο κοινόχρηστης βιβλιοθήκης LD_PRELOAD για να κρυφτεί στον χώρο χρήστη, διασφαλίζοντας την απόκρυψη σε ένα ευρύ φάσμα περιβαλλόντων.
Τελικό Σημείωμα
Το LinkPro καταδεικνύει πώς οι σύγχρονες εισβολές μπορούν να συνδυάσουν την παραβίαση κοντέινερ, τους σταδιακούς φορτωτές, την οργάνωση πυρήνα (eBPF) και έξυπνα κόλπα δικτύου (ενεργοποίηση μαγικών πακέτων και επανεγγραφή θυρών) για να διατηρήσουν τη μυστικότητα και την ευελιξία. Η ανίχνευση και η αποκατάσταση απαιτούν προσεκτική επιθεώρηση για μη εξουσιοδοτημένα προγράμματα eBPF, απροσδόκητες καταχωρήσεις στο /etc/ld.so.preload, ασυνήθιστες υπηρεσίες systemd και συνδέσεις δικτύου με την υποδεικνυόμενη υποδομή (οι εγκληματολογικοί δείκτες περιλαμβάνουν την IP 56.155.98[.]37, τις θύρες 29872, 2333, 2233 και το αφαιρεμένο όνομα εικόνας Docker kvlnt/vv).