LinkPro Linuxi juurkomplekt
Hiljutine Amazon Web Services'i (AWS) keskkonna rünnak paljastas varem dokumenteerimata GNU/Linuxi juurkomplekti, mida jälgiti kui LinkPro. See tagauks on tähelepanuväärne eBPF-moodulite kahetise kasutamise poolest: üks komplekt artefaktide peitmiseks ja teine toimib salajase päästikuna – „koputusena“, mis äratab kaugkäskluse funktsiooni alles pärast spetsiaalselt loodud TCP-paketi nägemist. Rünnakuahel ja juurkomplekti mehhanismid illustreerivad keerukat operaatorit, kes ühendab konteineri kuritarvitamise, kerneli tasemel varjamise ja paindliku võrgu aktiveerimise, et nurjata tuvastamist ja kohtuekspertiisi korrelatsiooni.
Sisukord
Nakkusvektor ja esialgne kasutuselevõtt
Sissetung sai alguse CVE-2024-23897 (CVSS 9.8) suhtes haavatava Jenkinsi eksemplari ärakasutamisest. Sellelt positsioonilt surusid ründajad pahatahtliku Dockeri kujutise (kvlnt/vv, mis on nüüdseks Docker Hubist eemaldatud) mitmesse Kubernetesi klastrisse. Kujutis kasutas Kali Linuxi baasi ja sisaldas väikest rakenduste kausta, mis oli mõeldud püsivuse, kaugjuurdepääsu ja etapiviisilise tagaukse allalaadimise loomiseks.
Pahatahtliku Dockeri pildi sees
Pildi rakenduste kaust sisaldas kolme võtmefaili, millel olid erinevad rollid:
start.sh — shelliskript, mis käivitab SSH-teenuse ja täidab kaks ülejäänud komponenti.
link — avatud lähtekoodiga programm (vnt), mis on kompileeritud/pakendatud toimima VPN/proksi kliendina, luues väljapääsu aadressile vnt.wherewego[.]top:29872. See võimaldab ründajal jõuda ohustatud hostini kõikjalt ja selle kaudu teistele sihtmärkidele pöörduda.
rakendus – Rustil põhinev allalaadija (edaspidi vGet), mis laadib S3 ämbrist krüpteeritud vShelli kasuliku koormuse ja loob seejärel WebSocketi lingi oma käsklus- ja juhtimisserveriga (C2) aadressil 56.155.98[.]37.
Kubernetes’i sõlmedele edastatud täiendavad kasulikud koormused
Lisaks pahatahtlikule kujutisele paigutasid operaatorid sõlmedele veel kaks komponenti: dropperi, mis installib teise vShelli tagaukse, ja LinkPro, Golangi kirjutatud juurkomplekti. LinkPro on loodud töötama ühes kahest režiimist – passiivne (vastupidine) või aktiivne (edasisuunaline) – olenevalt selle konfiguratsioonist. Passiivses režiimis ootab see spetsiaalse võrgupaketi poolt aktiveerimist; aktiivses režiimis algatab see kontakti C2 endaga. Edasisuunaline režiim toetab viit transpordiprotokolli (HTTP, WebSocket, UDP, TCP, DNS), samas kui vastupidine režiim piirab suhtlust HTTP-ga.
Kuidas LinkPro püsib
Pahavara üldine teostus ja püsivus järgivad selget järjestust:
- Paigalda moodul „Peida eBPF“. See moodul sisaldab Tracepoint ja Kretprobe eBPF programme, mida kasutatakse LinkPro protsesside ja võrgutegevuse varjamiseks.
- Kui mooduli „Hide eBPF” installimine ebaõnnestub – või kui see on keelatud –, installige jagatud teek aadressile /etc/libld.so ja lisage see tee faili /etc/ld.so.preload varumeetodina peitmiseks.
- Pöördrežiimis (passiivseks) tööks installige Knock eBPF moodul. Knock sisaldab XDP ja TC programmi, seega muutub C2 kanal aktiivseks alles pärast konkreetse „maagilise paketi“ vastuvõtmist.
- Püsivuse tagamiseks looge süsteemne teenus.
- Täida C2-lt saadud käske.
- Väljalülitamisel või signaali (SIGHUP, SIGINT, SIGTERM) korral eemaldage eBPF moodulid ja eemaldage/taastage /etc/libld.so eellaadimise modifikatsioon, et süsteem naaseks oma eelmisesse olekusse.
Maagiline pakett ja koputusaktiveerimismehhanism
LinkPro passiivne aktiveerimine sõltub täpsest TCP-paketist: iga TCP-paketti, mille akna suurus on võrdne 54321-ga, käsitletakse „võlupaketina“. Kui Knock selle paketi tuvastab, salvestab see allika IP-aadressi ja märgistab selle ühetunnise aegumiskuupäevaga. Järgmisi TCP-pakette sellest allikast jälgitakse ja vajadusel kirjutab Knock päised ümber, nii et operaatori liiklus suunatakse LinkPro kuulamisporti (2333). Väljaminevaid pakette kohandatakse nii, et need kuvaksid algse pordi tagasi võrku (allikaport kirjutatakse ümber 2233-ks). Eesmärk on lihtne, kuid tõhus: võimaldada ründajal jõuda LinkPro-ni mis tahes pordi kaudu, mida esiotsa tulemüür lubab, muutes samal ajal väliste tulemüüri logide korreleerimise hosti sisemise võrgutegevusega keeruliseks.
Kuidas LinkPro end varjab
LinkPro kasutab kahetasandilist varjamisstrateegiat:
Kerneli/eBPF-i peitmine : eBPF-i peitmise moodul installib Tracepointi ja Kretprobe programmid, mis pealt kuulavad süsteemikõnesid, näiteks getdents (failide/kataloogide peitmiseks) ja sys_bpf (oma BPF-programmide peitmiseks). See lähenemisviis nõuab kerneli, mille CONFIG_BPF_KPROBE_OVERRIDE on lubatud.
Kasutajaruumi LD_PRELOAD varuvõimalus : kui kerneli võimekus puudub, kirjutab LinkPro jagatud teeki (libld.so) ja paigutab selle tee faili /etc/ld.so.preload. Kuna /etc/ld.so.preload põhjustab määratud teeki laadimise igasse dünaamiliselt lingitud protsessi (need, mis kasutavad /lib/ld-linux.so ja glibc), siis implanteeritud libld.so haakib libc funktsioonid varakult (enne glibc enda käitumist) ja muudab libc-kõnede tagastusi, et peita esemeid, mis muidu selle olemasolu paljastaksid.
Rootkit’i võimalused ja käskude komplekt
LinkPro toetab nii interaktiivseid kui ka automatiseeritud kaugtoiminguid. Selle rakendatud funktsioonide hulka kuuluvad:
- /bin/bash pseudoterminali käivitamine ja interaktiivsete shelliseansside käitamine.
- Suvaliste shellikäskude täitmine.
- Failide ja kataloogide loetlemine ning failitoimingute sooritamine.
- Failide allalaadimine ja kettale kirjutamine.
- SOCKS5 puhverserveri tunneli loomine pöörleva ja maismaalt väljaspool elava puhverserveri jaoks.
Võrguprotokollide tugi ja C2 käitumine
Aktiivses (edasisuunas) režiimis on LinkPro paindlik: see saab suhelda HTTP, WebSocketi, UDP, TCP või DNS-i transpordi abil. Passiivses (vastupidises) režiimis on selle suhtlus piiratud HTTP-ga, kuid sellel on varjatud funktsioon, kuna see kuulab alles pärast seda, kui Knock-maagiline pakett on avanud ajutise ühetunnise käsurea akna.
Puhastamise ja desinstallimise käitumine
Kui protsess saab lõpetamissignaale, püüab LinkPro jäljed eemaldada: see desinstallib installitud eBPF-moodulid ja kustutab või taastab /etc/libld faili, grupeerides selle eelmisele olekule, nii et süsteem näib muutumatuna. See tahtlik puhastusrutiin näitab operaatori muret protsessist kõrvalehoidumise ja pikaajaliste kohtuekspertiisi jälgede minimeerimise pärast.
Tegevuslik kontekst ja omistamine
Kampaanias kasutati Jenkinsi kõrge tõsidusega rünnakut, pahatahtlikke konteineri kujutisi, mitut tagaukse varianti ja kerneli tasemel varjamisvõimet – kombinatsioon, mis viitab motiveeritud ja võimekale operaatorile. Lõplikku seost pole avalikustatud; tööriistakomplekt ja kompromissi ilmne kasutamine puhverserveri ja püsiva kaugjuurdepääsu jaoks viitavad aga tugevalt rahaliselt motiveeritud tegevusele (pööramine, puhverserveri kasutamine täiendavate sissetungide jaoks või juurdepääsu edasimüük).
Kerneli sõltuvus ja varukäitumine
Kuna LinkPro tugineb oma varjatud kerneli pealtkuulamiseks BPF kprobe alistamise funktsioonidele, rakendab see kerneli tasemel peitmistehnikat ainult siis, kui hostkernel paljastab CONFIG_BPF_KPROBE_OVERRIDE. Kui see kerneli funktsioon puudub, kasutab LinkPro teadlikult LD_PRELOAD jagatud teegi meetodit, et end kasutajaruumis peita, tagades varjatuse laias valikus keskkondades.
Lõppsõna
LinkPro demonstreerib, kuidas tänapäevased sissetungid saavad kombineerida konteinerite kompromiteerimist, etapiviisilisi laadureid, kerneli instrumenteerimist (eBPF) ja nutikaid võrgutrikke (maagiline pakettide aktiveerimine ja portide ümberkirjutamine), et säilitada varjatus ja paindlikkus. Tuvastamine ja parandamine nõuavad hoolikat kontrollimist volitamata eBPF-programmide, ootamatute kirjete /etc/ld.so.preload failis, ebatavaliste systemd-teenuste ja näidatud infrastruktuuriga võrguühenduste suhtes (kohtuekspertiisi näitajate hulka kuuluvad IP 56.155.98[.]37, pordid 29872, 2333, 2233 ja eemaldatud Dockeri kujutise nimi kvlnt/vv).