LinkPro Linux Rootkit
Nedavna ogrožitev okolja Amazon Web Services (AWS) je razkrila prej nedokumentiran korenski komplet GNU/Linux, ki je bil sledljiv kot LinkPro. Ta zadnja vrata so znana po dvojni uporabi modulov eBPF: enega za skrivanje artefaktov in drugega, ki deluje kot prikrit sprožilec – »knock«, ki prebudi funkcionalnost oddaljenega ukaza šele potem, ko je viden posebej izdelan paket TCP. Veriga napadov in mehanizmi korenskega kompleta ponazarjajo sofisticiranega operaterja, ki združuje zlorabo vsebnika, prikrivanje na ravni jedra in prilagodljivo aktivacijo omrežja, da bi preprečil odkrivanje in forenzično korelacijo.
Kazalo
Vektor okužbe in začetna namestitev
Vdor se je začel z izkoriščanjem izpostavljenega primerka Jenkinsa, ranljivega za CVE‑2024‑23897 (CVSS 9.8). Iz tega izhodišča so napadalci v več gruč Kubernetes potisnili zlonamerno sliko Dockerja (kvlnt/vv, ki je bila odstranjena iz Docker Huba). Slika je uporabljala osnovo Kali Linux in je vsebovala majhno mapo aplikacij, namenjeno vzpostavitvi trajnosti, oddaljenega dostopa in postopnega prenosa skozi zadnja vrata.
Znotraj zlonamerne slike Dockerja
Mapa aplikacije slike je vsebovala tri ključne datoteke z različnimi vlogami:
start.sh — skriptna lupina, ki zažene storitev SSH in izvede drugi dve komponenti.
link — odprtokodni program (vnt), preveden/zapakiran tako, da deluje kot odjemalec VPN/proxy, ki se povezuje navzven z vnt.wherewego[.]top:29872. To napadalcu omogoča, da doseže ogroženi gostitelj od koder koli in se prek njega premakne do drugih tarč.
aplikacija – program za prenos, ki temelji na Rustu (imenovan vGet), ki pridobi šifriran koristni tovor vShell iz vedra S3 in nato vzpostavi povezavo WebSocket s svojim strežnikom za upravljanje in nadzor (C2) na naslovu 56.155.98[.]37.
Dodatni koristni tovori, dostavljeni vozliščem Kubernetes
Poleg zlonamerne slike so operaterji na vozlišča namestili še dve komponenti: program, ki namesti še eno zadnja vrata vShell, in LinkPro, rootkit, napisan v Golangu. LinkPro je zasnovan tako, da deluje v enem od dveh načinov – pasivnem (obratno) ali aktivnem (naprej) – odvisno od konfiguracije. V pasivnem načinu čaka, da ga aktivira poseben omrežni paket; v aktivnem načinu pa vzpostavi stik s samim C2. Način posredovanja podpira pet transportnih protokolov (HTTP, WebSocket, UDP, TCP, DNS), medtem ko obratni način omejuje komunikacijo na HTTP.
Kako LinkPro vztraja
Splošno izvajanje in vztrajnost zlonamerne programske opreme sledita jasnemu zaporedju:
- Namestite modul Hide eBPF. Ta modul vključuje programa Tracepoint in Kretprobe eBPF, ki se uporabljata za prikrivanje procesov in omrežne aktivnosti LinkPro.
- Če namestitev modula Hide eBPF ne uspe – ali če je bil onemogočen – namestite deljeno knjižnico v /etc/libld.so in dodajte to pot v /etc/ld.so.preload kot rezervni mehanizem skrivanja.
- Za obratno (pasivno) delovanje namestite modul Knock eBPF. Knock vsebuje program XDP in program TC, zato kanal C2 postane aktiven šele po prejemu določenega »čarobnega paketa«.
- Vzpostavite vztrajnost z ustvarjanjem storitve systemd.
- Izvajajte ukaze, prejete od C2.
- Ob zaustavitvi ali ko je sistem signaliziran (SIGHUP, SIGINT, SIGTERM), odstranite module eBPF in odstranite/obnovite modifikacijo prednalaganja /etc/libld.so, da se sistem vrne v prejšnje stanje.
Čarobni paket in mehanizem za aktivacijo s trkom
Pasivna aktivacija LinkProja je odvisna od natančnega TCP paketa: vsak TCP paket, katerega velikost okna je enaka 54321, se obravnava kot »čarobni paket«. Ko Knock zazna ta paket, shrani izvorni IP in ga označi z enournim rokom veljavnosti. Nadaljnji TCP paketi iz tega vira se spremljajo in po potrebi Knock prepiše glave, tako da se promet operaterja preusmeri na poslušalna vrata LinkProja (2333). Odhodni paketi se prilagodijo tako, da se izvirna vrata vrnejo v omrežje (izvorna vrata se prepišejo na 2233). Namen je preprost, a učinkovit: napadalcu omogočiti dostop do LinkProja prek katerih koli vrat, ki jih dovoljuje požarni zid na sprednjem delu, hkrati pa otežiti povezavo zunanjih dnevnikov požarnega zidu z aktivnostjo notranjega omrežja gostitelja.
Kako se LinkPro skrije
LinkPro uporablja dvostopenjsko strategijo prikrivanja:
Skrivanje jedra/eBPF : Modul Hide eBPF namesti programa Tracepoint in Kretprobe, ki prestrežeta sistemske klice, kot sta getdents (za skrivanje datotek/imenikov) in sys_bpf (za skrivanje lastnih programov BPF). Ta pristop zahteva jedro, zgrajeno z omogočeno možnostjo CONFIG_BPF_KPROBE_OVERRIDE.
Rezervna možnost LD_PRELOAD v uporabniškem prostoru : Če zmožnost jedra ni prisotna, LinkPro zapiše deljeno knjižnico (libld.so) in njeno pot postavi v /etc/ld.so.preload. Ker /etc/ld.so.preload povzroči, da se določena knjižnica naloži v vsak dinamično povezan proces (tisti, ki uporabljajo /lib/ld-linux.so in glibc), vsajena libld.so zgodaj priklopi funkcije libc (pred lastnim vedenjem glibc) in spremeni povratne vrednosti iz klicev libc, da skrije artefakte, ki bi sicer razkrili njeno prisotnost.
Zmogljivosti in nabor ukazov za rootkite
LinkPro podpira tako interaktivna kot avtomatizirana oddaljena dejanja. Njegove implementirane funkcije vključujejo:
- Zagon psevdo-terminala /bin/bash in izvajanje interaktivnih sej lupine.
- Izvajanje poljubnih ukazov lupine.
- Naštevanje datotek in imenikov ter izvajanje operacij z datotekami.
- Prenos in zapisovanje datotek na disk.
- Vzpostavitev proxy tunela SOCKS5 za pivoting in posredništvo »live-off-the-land«.
Podpora omrežnega protokola in vedenje C2
V aktivnem (naprej) načinu je LinkPro prilagodljiv: lahko komunicira prek transportov HTTP, WebSocket, UDP, TCP ali DNS. V pasivnem (obratnem) načinu je njegova komunikacija omejena na HTTP, vendar ima koristi od prikritosti, saj posluša šele potem, ko paket Knock magic odpre začasno enourno ukazno okno.
Vedenje čiščenja in odstranjevanja
Če proces prejme signale za prekinitev, LinkPro poskuša odstraniti sledi: odstrani nameščene module eBPF in izbriše ali obnovi datoteko /etc/libld, pri čemer jo združi v prejšnje stanje, tako da je sistem videti nespremenjen. Ta namerna rutina čiščenja kaže na to, da je operater zaskrbljen zaradi izogibanja in zmanjševanja dolgoročnih forenzičnih sledi.
Operativni kontekst in pripisovanje
Kampanja je uporabila zelo resno izkoriščanje Jenkinsa, zlonamerne slike vsebnikov, več različic zadnjih vrat in prikrite vdore na ravni jedra – kombinacija, ki kaže na motiviranega in sposobnega operaterja. Dokončna atribucija ni bila javno objavljena; vendar pa nabor orodij in očitna uporaba kompromisa za posredništvo in trajen oddaljeni dostop močno nakazujeta finančno motivirano dejavnost (preusmerjanje, posredništvo za dodatne vdore ali preprodaja dostopa).
Odvisnost od jedra in rezervno vedenje
Ker se LinkPro za svoje prikrito prestrezanje jedra zanaša na funkcije preglasitve BPF kprobe, tehniko skrivanja na ravni jedra uporabi le, ko gostiteljsko jedro razkrije CONFIG_BPF_KPROBE_OVERRIDE. Kjer ta zmožnost jedra manjka, se LinkPro namerno vrne k metodi deljene knjižnice LD_PRELOAD, da se skrije v uporabniškem prostoru in tako zagotovi prikritost v najrazličnejših okoljih.
Zaključna opomba
LinkPro prikazuje, kako lahko sodobni vdori združujejo ogrožanje vsebnikov, nalagalnike v fazah, instrumentacijo jedra (eBPF) in pametne omrežne trike (aktivacija magičnih paketov in prepisovanje vrat) za ohranjanje prikritosti in prilagodljivosti. Zaznavanje in sanacija zahtevata skrben pregled nepooblaščenih programov eBPF, nepričakovanih vnosov v /etc/ld.so.preload, nenavadnih storitev systemd in omrežnih povezav z navedeno infrastrukturo (forenzični indikatorji vključujejo IP 56.155.98[.]37, vrata 29872, 2333, 2233 in odstranjeno ime slike Docker kvlnt/vv).