LinkPro Linux Rootkit
Një kompromentim i kohëve të fundit i një mjedisi Amazon Web Services (AWS) zbuloi një rootkit GNU/Linux të padokumentuar më parë, të gjurmuar si LinkPro. Ky backdoor është i njohur për përdorimin e dyfishtë të moduleve eBPF: një grup për fshehjen e artefakteve dhe një tjetër që vepron si një shkaktar i fshehtë - një 'trokit' që zgjon funksionalitetin e komandës në distancë vetëm pasi shihet një paketë TCP e krijuar posaçërisht. Zinxhiri i sulmit dhe mekanizmat e rootkit ilustrojnë një operator të sofistikuar i cili përzien abuzimin e kontejnerëve, fshehjen në nivel bërthame dhe aktivizimin fleksibël të rrjetit për të penguar zbulimin dhe korrelacionin mjeko-ligjor.
Tabela e Përmbajtjes
Vektori i Infeksionit dhe Vendosja Fillestare
Ndërhyrja filloi me shfrytëzimin e një instance të ekspozuar të Jenkins, e cila ishte e cenueshme ndaj CVE‑2024‑23897 (CVSS 9.8). Nga ajo pikëmbështetje, sulmuesit shtynë një imazh të dëmshëm Docker (kvlnt/vv, që atëherë është hequr nga Docker Hub) në disa grupe Kubernetes. Imazhi përdorte një bazë të Kali Linux dhe mbante një dosje të vogël aplikacioni që synonte të krijonte qëndrueshmëri, akses në distancë dhe një shkarkim të organizuar në prapavijë.
Brenda imazhit të keqdashës Docker
Dosja e aplikacionit të imazhit përmbante tre skedarë kyç me role të dallueshme:
start.sh — një skript shell që nis një shërbim SSH dhe ekzekuton dy komponentët e tjerë.
lidhje — një program me burim të hapur (vnt) i kompiluar/paketuar për të vepruar si një klient VPN/proxy, duke u lidhur në dalje me vnt.wherewego[.]top:29872. Kjo i lejon sulmuesit të arrijë hostin e kompromentuar nga kudo dhe të kalojë në objektiva të tjerë përmes tij.
aplikacion — një shkarkues i bazuar në Rust (i referuar si vGet) që merr një ngarkesë të enkriptuar vShell nga një bucket S3, pastaj krijon një lidhje WebSocket me serverin e tij të komandës dhe kontrollit (C2) në 56.155.98[.]37.
Ngarkesa shtesë të dorëzuara në nyjet Kubernetes
Krahas imazhit keqdashës, operatorët hodhën edhe dy komponentë të tjerë në nyje: një dropper që instalon një tjetër derë të pasme vShell dhe LinkPro, një rootkit të shkruar në Golang. LinkPro është projektuar të funksionojë në njërën nga dy mënyrat - pasive (e kundërt) ose aktive (e përparme) - varësisht nga konfigurimi i tij. Në modalitetin pasiv, ai pret të aktivizohet nga një paketë e veçantë rrjeti; në modalitetin aktiv, ai fillon kontaktin me vetë C2. Modaliteti i përparme mbështet pesë protokolle transporti (HTTP, WebSocket, UDP, TCP, DNS), ndërsa modaliteti i kundërt kufizon komunikimet në HTTP.
Si vazhdon LinkPro
Ekzekutimi i përgjithshëm i malware-it dhe sjellja e tij e vazhdueshme ndjekin një sekuencë të qartë:
- Instaloni modulin Hide eBPF. Ky modul përfshin programet eBPF Tracepoint dhe Kretprobe që përdoren për të fshehur proceset dhe aktivitetin e rrjetit të LinkPro.
- Nëse instalimi i modulit Hide eBPF dështon — ose nëse është çaktivizuar — instaloni një bibliotekë të përbashkët në /etc/libld.so dhe shtoni atë shteg në /etc/ld.so.preload si një mekanizëm rezervë fshehjeje.
- Për funksionim të kundërt (pasiv), instaloni modulin Knock eBPF. Knock përmban një program XDP dhe një program TC, kështu që kanali C2 bëhet aktiv vetëm pasi të marrë një 'paketë magjike' specifike.
- Vendosni qëndrueshmëri duke krijuar një shërbim systemd.
- Ekzekutoni komandat e marra nga C2.
- Pas mbylljes ose kur të sinjalizohet (SIGHUP, SIGINT, SIGTERM), çinstaloni modulet eBPF dhe hiqni/rivendosni modifikimin e parangarkesës /etc/libld.so në mënyrë që sistemi të kthehet në gjendjen e tij të mëparshme.
Paketa Magjike dhe Mekanizmi i Aktivizimit të Trokitjes
Aktivizimi pasiv i LinkPro varet nga një paketë TCP e saktë: çdo paketë TCP, madhësia e dritares së së cilës është e barabartë me 54321, trajtohet si 'paketë magjike'. Kur Knock e zbulon atë paketë, ai ruan IP-në burimore dhe e etiketon atë me një skadencë njëorëshe. Paketat TCP pasuese nga ai burim monitorohen dhe, kur është e përshtatshme, Knock rishkruan kokat në mënyrë që trafiku i operatorit të ridrejtohet në portën e dëgjimit të LinkPro (2333). Paketat dalëse rregullohen për të paraqitur portin origjinal përsëri në rrjet (porta burimore rishkruhet në 2233). Qëllimi është i thjeshtë, por efektiv: të lejojë sulmuesin të arrijë LinkPro përmes çdo porte që lejon firewall-i i përparmë, duke e bërë të vështirë lidhjen e regjistrave të firewall-it të jashtëm me aktivitetin e rrjetit të brendshëm të hostit.
Si fshihet LinkPro
LinkPro përdor një strategji fshehjeje me dy nivele:
Fshehja e bërthamës/eBPF : Moduli Fsheh eBPF instalon programet Tracepoint dhe Kretprobe që ndërpresin thirrjet e sistemit si getdents (për të fshehur skedarët/drejtoritë) dhe sys_bpf (për të fshehur programet e veta BPF). Kjo qasje kërkon një bërthamë të ndërtuar me CONFIG_BPF_KPROBE_OVERRIDE të aktivizuar.
Hapësira e përdoruesit LD_PRELOAD rezervë : Nëse aftësia e kernelit nuk është e pranishme, LinkPro shkruan një bibliotekë të përbashkët (libld.so) dhe vendos shtegun e saj në /etc/ld.so.preload. Meqenëse /etc/ld.so.preload bën që biblioteka e specifikuar të ngarkohet në çdo proces të lidhur dinamikisht (ata që përdorin /lib/ld-linux.so dhe glibc), libld.so i implantuar lidh funksionet libc herët (para sjelljes së vetë glibc) dhe ndryshon kthimet nga thirrjet libc për të fshehur artefaktet që përndryshe do të ekspozonin praninë e tij.
Aftësitë e Rootkit dhe Seti i Komandave
LinkPro mbështet veprime interaktive dhe automatike në distancë. Karakteristikat e implementuara përfshijnë:
- Nisja e një pseudo-terminali /bin/bash dhe ekzekutimi i seancave interaktive të shell-it.
- Ekzekutimi i komandave arbitrare të shell-it.
- Numërimi i skedarëve dhe drejtorive dhe kryerja e operacioneve me skedarët.
- Shkarkimi dhe shkrimi i skedarëve në disk.
- Krijimi i një tuneli proxy SOCKS5 për proxy të zhvendosur dhe të jetuar jashtë tokës.
Mbështetja e Protokollit të Rrjetit dhe Sjellja C2
Në modalitetin aktiv (përpara), LinkPro është fleksibël: mund të komunikojë duke përdorur transportet HTTP, WebSocket, UDP, TCP ose DNS. Në modalitetin pasiv (të kundërt), komunikimi i tij është i kufizuar në HTTP, por përfiton nga fshehtësia sepse dëgjon vetëm pasi paketa magjike Knock të ketë hapur një dritare komande të përkohshme njëorëshe.
Sjellja e Pastrimit dhe Çinstalimit
Nëse procesi merr sinjale përfundimi, LinkPro synon të heqë gjurmët: ai çinstalon modulet e instaluara eBPF dhe fshin ose rikthen skedarin /etc/libld, duke e grupuar atë në gjendjen e tij të mëparshme në mënyrë që sistemi të duket i pandryshuar. Kjo rutinë e qëllimshme pastrimi tregon një operator të shqetësuar për shmangien dhe minimizimin e gjurmëve afatgjata të mjekësisë ligjore.
Konteksti Operacional dhe Atribuimi
Fushata përdori një shfrytëzim të Jenkins me ashpërsi të lartë, imazhe kontejnerësh keqdashës, variante të shumëfishta të derës së pasme dhe fshehtësi në nivel kernel - një kombinim që tregon një operator të motivuar dhe të aftë. Asnjë atribuim përfundimtar nuk është bërë publik; megjithatë, grupi i mjeteve dhe përdorimi i dukshëm i kompromentimit për proxying dhe akses të vazhdueshëm në distancë sugjerojnë fuqimisht aktivitet të motivuar financiarisht (përdorim, proxying për ndërhyrje shtesë ose rishitje të aksesit).
Varësia e bërthamës dhe sjellja rezervë
Meqenëse LinkPro mbështetet në veçoritë e mbivendosjes së BPF kprobe për përgjimin e fshehtë të kernelit, ai aplikon teknikën e fshehjes në nivel kerneli vetëm kur kerneli pritës ekspozon CONFIG_BPF_KPROBE_OVERRIDE. Kur kjo aftësi e kernelit mungon, LinkPro qëllimisht përdor metodën e bibliotekës së përbashkët LD_PRELOAD për t'u fshehur në hapësirën e përdoruesit, duke siguruar fshehje në një gamë të gjerë mjedisesh.
Shënim Përfundimtar
LinkPro demonstron se si ndërhyrjet moderne mund të kombinojnë kompromentimin e kontejnerëve, ngarkuesit e skeduar, instrumentimin e kernelit (eBPF) dhe truket e zgjuara të rrjetit (aktivizimin e paketave magjike dhe rishkrimin e portave) për të ruajtur fshehtësinë dhe fleksibilitetin. Zbulimi dhe korrigjimi kërkojnë inspektim të kujdesshëm për programet e paautorizuara të eBPF, hyrjet e papritura në /etc/ld.so.preload, shërbimet e pazakonta të sistemit dhe lidhjet e rrjetit me infrastrukturën e treguar (treguesit mjeko-ligjorë përfshijnë IP 56.155.98[.]37, portet 29872, 2333, 2233 dhe emrin e imazhit të hequr Docker kvlnt/vv).