„LinkPro Linux“ šakninis rinkinys
Neseniai „Amazon Web Services“ (AWS) aplinkos ataka atskleidė anksčiau nedokumentuotą GNU/Linux rootkit, vadinamą „LinkPro“. Šis galinis durų įrankis pasižymi dvejopu eBPF modulių naudojimu: vienas skirtas artefaktams slėpti, o kitas veikia kaip slaptas paleidiklis – „beldimas“, kuris pažadina nuotolinio valdymo funkcijas tik po to, kai aptinkamas specialiai sukurtas TCP paketas. Atakų grandinė ir rootkit mechanizmai iliustruoja sudėtingą operatorių, kuris derina konteinerio piktnaudžiavimą, branduolio lygio slėpimą ir lankstų tinklo aktyvavimą, kad sutrukdytų aptikimui ir teismo ekspertizės koreliacijai.
Turinys
Infekcijos vektorius ir pradinis dislokavimas
Įsilaužimas prasidėjo išnaudojus atvirą „Jenkins“ egzempliorių, pažeidžiamą CVE‑2024‑23897 (CVSS 9.8). Iš šios pozicijos užpuolikai į kelis „Kubernetes“ klasterius įkėlė kenkėjišką „Docker“ atvaizdą („kvlnt/vv“, jau pašalintą iš „Docker Hub“). Atvaizde buvo naudojama „Kali Linux“ bazė ir nedidelis programos aplankas, skirtas užtikrinti nuolatinę prieigą, nuotolinę prieigą ir etapinį atsisiuntimą per galines duris.
Kenkėjiško „Docker“ vaizdo viduje
Vaizdo programos aplanke buvo trys pagrindiniai failai su skirtingais vaidmenimis:
start.sh – apvalkalo scenarijus, kuris paleidžia SSH paslaugą ir vykdo kitus du komponentus.
nuoroda – atvirojo kodo programa (vnt), sukompiliuota/supakuota veikti kaip VPN/tarpinio serverio klientas, jungiantis iš išorės į vnt.wherewego[.]top:29872. Tai leidžia užpuolikui pasiekti pažeistą pagrindinį kompiuterį iš bet kurios vietos ir per jį pereiti prie kitų taikinių.
programėlė – „Rust“ pagrindu sukurta atsisiuntimo programa (vadinama „vGet“), kuri iš S3 saugyklos nuskaito užšifruotą „vShell“ paketą, o tada užmezga „WebSocket“ ryšį su savo komandų ir valdymo (C2) serveriu adresu 56.155.98[.]37.
Papildomi naudingieji krūviai, pristatyti į „Kubernetes“ mazgus
Kartu su kenkėjišku atvaizdu operatoriai į mazgus įdiegė ir dar du komponentus: įskiepį, kuris įdiegia dar vieną „vShell“ galinį langą, ir „LinkPro“ – „Golang“ parašytą rootkit. „LinkPro“ sukurtas veikti vienu iš dviejų režimų – pasyviu (atvirkštiniu) arba aktyviu (tiesioginiu) – priklausomai nuo jo konfigūracijos. Pasyviu režimu jis laukia, kol bus aktyvuotas specialaus tinklo paketo; aktyviu režimu jis užmezga ryšį su pačiu C2. Tiesioginis režimas palaiko penkis perdavimo protokolus (HTTP, „WebSocket“, UDP, TCP, DNS), o atvirkštinis režimas riboja ryšį iki HTTP.
Kaip „LinkPro“ išlieka
Kenkėjiškos programos vykdymas ir išlikimas vyksta aiškia seka:
- Įdiekite modulį „Slėpti eBPF“. Šiame modulyje yra „Tracepoint“ ir „Kretprobe eBPF“ programos, naudojamos „LinkPro“ procesams ir tinklo veiklai slėpti.
- Jei nepavyksta įdiegti „Hide eBPF“ modulio arba jis buvo išjungtas, įdiekite bendrą biblioteką adresu /etc/libld.so ir pridėkite tą kelią prie /etc/ld.so.preload kaip atsarginį slėpimo mechanizmą.
- Atvirkštiniam (pasyviam) veikimui įdiekite „Knock eBPF“ modulį. „Knock“ turi XDP ir TC programas, todėl C2 kanalas tampa aktyvus tik gavus konkretų „magišką paketą“.
- Užtikrinkite nuoseklumą sukurdami „systemd“ paslaugą.
- Vykdyti iš C2 gautas komandas.
- Išjungus sistemą arba gavus signalą (SIGHUP, SIGINT, SIGTERM), pašalinkite eBPF modulius ir pašalinkite / atkurkite išankstinio įkėlimo /etc/libld.so modifikaciją, kad sistema grįžtų į ankstesnę būseną.
Magiškasis paketas ir trankymo aktyvavimo mechanizmas
„LinkPro“ pasyvus aktyvavimas priklauso nuo tikslaus TCP paketo: bet kuris TCP paketas, kurio lango dydis lygus 54321, laikomas „stebuklingu paketu“. Kai „Knock“ aptinka tą paketą, ji išsaugo šaltinio IP adresą ir pažymi jį vienos valandos galiojimo laiku. Vėlesni TCP paketai iš to šaltinio yra stebimi ir, kai tinkama, „Knock“ perrašo antraštes, kad operatoriaus srautas būtų nukreiptas į „LinkPro“ klausymosi prievadą (2333). Išeinantys paketai koreguojami taip, kad tinklui būtų rodomas pradinis prievadas (šaltinio prievadas perrašomas į 2233). Tikslas paprastas, bet veiksmingas: leisti užpuolikui pasiekti „LinkPro“ per bet kurį prievadą, kurį leidžia priekinės dalies užkarda, tuo pačiu apsunkinant išorinių užkardos žurnalų koreliaciją su pagrindinio kompiuterio vidinio tinklo veikla.
Kaip „LinkPro“ pasislepia
„LinkPro“ naudoja dviejų pakopų slėpimo strategiją:
Branduolio / eBPF slėpimas : modulis „Slėpti eBPF“ įdiegia „Tracepoint“ ir „Kretprobe“ programas, kurios perima sistemos iškvietimus, tokius kaip „getdents“ (failams / katalogams slėpti) ir „sys_bpf“ (savo BPF programoms slėpti). Šiam metodui reikalingas branduolys, sukurtas įjungus CONFIG_BPF_KPROBE_OVERRIDE.
Vartotojo erdvės LD_PRELOAD atsarginis variantas : jei branduolio galimybės nėra, „LinkPro“ įrašo bendrą biblioteką (libld.so) ir įkelia jos kelią į /etc/ld.so.preload. Kadangi /etc/ld.so.preload įkelia nurodytą biblioteką į kiekvieną dinamiškai susietą procesą (tuos, kurie naudoja /lib/ld-linux.so ir glibc), įdiegtoji libld.so anksti (prieš paties glibc elgesį) prijungia libc funkcijas ir pakeičia libc iškvietimų grąžinimus, kad paslėptų artefaktus, kurie kitaip atskleistų jos buvimą.
Rootkit galimybės ir komandų rinkinys
„LinkPro“ palaiko tiek interaktyvius, tiek automatizuotus nuotolinius veiksmus. Įdiegtos funkcijos:
- Paleidžiamas /bin/bash pseudoterminalas ir vykdomos interaktyvios apvalkalo sesijos.
- Vykdomos savavališkos apvalkalo komandos.
- Failų ir katalogų išvardijimas ir operacijų su failais atlikimas.
- Failų atsisiuntimas ir įrašymas į diską.
- SOCKS5 tarpinio serverio tunelio, skirto sukimuisi ir gyvenamosios vietos ne sausumoje tarpiniam serveriui, sukūrimas.
Tinklo protokolų palaikymas ir C2 elgsena
Aktyviuoju (tiesioginiu) režimu „LinkPro“ yra lanksti: gali bendrauti naudodama HTTP, „WebSocket“, UDP, TCP arba DNS perdavimą. Pasyviuoju (atvirkštiniu) režimu ryšys apribotas HTTP, tačiau jis naudojasi slaptu veikimu, nes klausosi tik po to, kai „Knock magic“ paketas atidaro laikiną vienos valandos komandų langą.
Valymo ir pašalinimo elgsena
Jei procesas gauna nutraukimo signalus, „LinkPro“ siekia pašalinti pėdsakus: ji pašalina įdiegtus eBPF modulius ir ištrina arba atkuria /etc/libld failą, sugrupuodama jį į ankstesnę būseną, kad sistema atrodytų nepakitusi. Ši sąmoninga valymo rutina rodo, kad operatorius yra susirūpinęs dėl apėjimo ir ilgalaikių teismo ekspertizės pėdsakų sumažinimo.
Veiklos kontekstas ir priskyrimas
Kampanijoje buvo panaudotas didelio pavojingumo „Jenkins“ atakos objektas, kenkėjiški konteinerio atvaizdai, keli „backdoor“ variantai ir branduolio lygio slaptas veikimas – derinys, rodantis motyvuotą ir pajėgų operatorių. Galutinis priskyrimas nebuvo paviešintas; tačiau įrankių rinkinys ir akivaizdus kompromituoto viruso naudojimas tarpiniam serveriui ir nuolatinei nuotolinei prieigai aiškiai rodo finansiškai motyvuotą veiklą (pvz., perkrovą, tarpinį serverio naudojimą papildomiems įsilaužimams arba prieigos perpardavimą).
Branduolio priklausomybė ir atsarginis elgesys
Kadangi „LinkPro“ slaptam branduolio perėmimui naudoja BPF „kprobe“ perrašymo funkcijas, branduolio lygio slėpimo techniką ji taiko tik tada, kai pagrindinis branduolys atskleidžia CONFIG_BPF_KPROBE_OVERRIDE. Kai šios branduolio galimybės trūksta, „LinkPro“ sąmoningai grįžta prie bendros bibliotekos metodo LD_PRELOAD, kad pasislėptų vartotojo erdvėje ir taip užtikrintų paslaptį įvairiose aplinkose.
Baigiamoji pastaba
„LinkPro“ demonstruoja, kaip šiuolaikiniai įsilaužimai gali derinti konteinerių kompromitavimą, etapais valdomus įkėlėjus, branduolio instrumentavimą (eBPF) ir išmanius tinklo triukus (stebuklingą paketų aktyvavimą ir prievadų perrašymą), kad būtų išlaikytas slaptumas ir lankstumas. Aptikimui ir taisymui reikia atidžiai patikrinti, ar nėra neautorizuotų eBPF programų, netikėtų įrašų /etc/ld.so.preload faile, neįprastų „systemd“ paslaugų ir tinklo ryšių su nurodyta infrastruktūra (teismo ekspertizės indikatoriai apima IP 56.155.98[.]37, prievadus 29872, 2333, 2233 ir pašalintą „Docker“ atvaizdo pavadinimą kvlnt/vv).