లింక్ప్రో లైనక్స్ రూట్కిట్
అమెజాన్ వెబ్ సర్వీసెస్ (AWS) ఎన్విరాన్మెంట్ యొక్క ఇటీవలి రాజీ, గతంలో నమోదు చేయని GNU/Linux రూట్కిట్ను వెల్లడించింది, దీనిని లింక్ప్రోగా ట్రాక్ చేయబడింది. ఈ బ్యాక్డోర్ eBPF మాడ్యూళ్ల ద్వంద్వ వినియోగానికి ప్రసిద్ధి చెందింది: కళాఖండాలను దాచడానికి ఒక సెట్ మరియు మరొకటి దొంగతనంగా పనిచేసే ట్రిగ్గర్గా పనిచేస్తుంది - ప్రత్యేకంగా రూపొందించబడిన TCP ప్యాకెట్ కనిపించిన తర్వాత మాత్రమే రిమోట్ కమాండ్ కార్యాచరణను మేల్కొల్పే 'నాక్'. దాడి గొలుసు మరియు రూట్కిట్ యొక్క యంత్రాంగాలు కంటైనర్ దుర్వినియోగం, కెర్నల్-స్థాయి దాచడం మరియు ఫ్లెక్సిబుల్ నెట్వర్క్ యాక్టివేషన్ను మిళితం చేసి డిటెక్షన్ మరియు ఫోరెన్సిక్ సహసంబంధాన్ని నిరాశపరిచే అధునాతన ఆపరేటర్ను వివరిస్తాయి.
విషయ సూచిక
ఇన్ఫెక్షన్ వెక్టర్ మరియు ప్రారంభ విస్తరణ
CVE‑2024‑23897 (CVSS 9.8) కు గురయ్యే అవకాశం ఉన్న బహిర్గత జెంకిన్స్ ఉదాహరణను దోపిడీ చేయడంతో ఈ చొరబాటు ప్రారంభమైంది. ఆ స్థావరం నుండి, దాడి చేసేవారు హానికరమైన డాకర్ చిత్రాన్ని (kvlnt/vv, డాకర్ హబ్ నుండి తొలగించబడినప్పటి నుండి) బహుళ కుబెర్నెట్స్ క్లస్టర్లలోకి నెట్టారు. ఈ చిత్రం కాళి లైనక్స్ బేస్ను ఉపయోగించింది మరియు నిలకడ, రిమోట్ యాక్సెస్ మరియు దశలవారీ బ్యాక్డోర్ డౌన్లోడ్ను ఏర్పాటు చేయడానికి ఉద్దేశించిన చిన్న అప్లికేషన్ ఫోల్డర్ను కలిగి ఉంది.
మాలిషియస్ డాకర్ ఇమేజ్ లోపల
చిత్రం యొక్క యాప్ ఫోల్డర్ విభిన్న పాత్రలతో మూడు కీలక ఫైళ్లను కలిగి ఉంది:
start.sh — ఒక SSH సేవను ప్రారంభించి, మిగిలిన రెండు భాగాలను అమలు చేసే షెల్ స్క్రిప్ట్.
లింక్ — VPN/ప్రాక్సీ క్లయింట్గా పనిచేయడానికి కంపైల్ చేయబడిన/ప్యాక్ చేయబడిన ఓపెన్-సోర్స్ ప్రోగ్రామ్ (vnt), vnt.wherewego[.]top:29872కి అవుట్బౌండ్ను కనెక్ట్ చేస్తుంది. ఇది దాడి చేసే వ్యక్తి ఎక్కడి నుండైనా రాజీపడిన హోస్ట్ను చేరుకోవడానికి మరియు దాని ద్వారా ఇతర లక్ష్యాలకు పివట్ చేయడానికి అనుమతిస్తుంది.
యాప్ — ఒక రస్ట్-ఆధారిత డౌన్లోడ్ (vGet అని పిలుస్తారు), ఇది S3 బకెట్ నుండి ఎన్క్రిప్టెడ్ vShell పేలోడ్ను పొందుతుంది, ఆపై 56.155.98 వద్ద దాని కమాండ్-అండ్-కంట్రోల్ (C2) సర్వర్కు వెబ్సాకెట్ లింక్ను ఏర్పాటు చేస్తుంది[.]37.
కుబెర్నెట్స్ నోడ్లకు అదనపు పేలోడ్లు పంపిణీ చేయబడ్డాయి
హానికరమైన చిత్రంతో పాటు, ఆపరేటర్లు మరో రెండు భాగాలను కూడా నోడ్లపై పడేశారు: మరొక vShell బ్యాక్డోర్ను ఇన్స్టాల్ చేసే డ్రాపర్ మరియు గోలాంగ్-వ్రాసిన రూట్కిట్ అయిన LinkPro. LinkPro దాని కాన్ఫిగరేషన్ను బట్టి రెండు మోడ్లలో ఒకదానిలో అమలు చేయడానికి రూపొందించబడింది - నిష్క్రియాత్మక (రివర్స్) లేదా యాక్టివ్ (ఫార్వర్డ్) -. నిష్క్రియాత్మక మోడ్లో, ఇది ప్రత్యేక నెట్వర్క్ ప్యాకెట్ ద్వారా సక్రియం చేయబడటానికి వేచి ఉంటుంది; యాక్టివ్ మోడ్లో, ఇది C2తోనే పరిచయాన్ని ప్రారంభిస్తుంది. ఫార్వర్డ్ మోడ్ ఐదు రవాణా ప్రోటోకాల్లకు (HTTP, వెబ్సాకెట్, UDP, TCP, DNS) మద్దతు ఇస్తుంది, అయితే రివర్స్ మోడ్ కమ్యూనికేషన్లను HTTPకి పరిమితం చేస్తుంది.
లింక్ప్రో ఎలా కొనసాగుతుంది
మాల్వేర్ యొక్క మొత్తం అమలు మరియు నిలకడ ప్రవర్తన స్పష్టమైన క్రమాన్ని అనుసరిస్తాయి:
- Hide eBPF మాడ్యూల్ను ఇన్స్టాల్ చేయండి. ఈ మాడ్యూల్లో LinkPro యొక్క ప్రక్రియలు మరియు నెట్వర్క్ కార్యాచరణను దాచడానికి ఉపయోగించే Tracepoint మరియు Kretprobe eBPF ప్రోగ్రామ్లు ఉంటాయి.
- Hide eBPF మాడ్యూల్ను ఇన్స్టాల్ చేయడం విఫలమైతే — లేదా అది నిలిపివేయబడితే — /etc/libld.so వద్ద షేర్డ్ లైబ్రరీని ఇన్స్టాల్ చేసి, ఆ పాత్ను /etc/ld.so.preloadకి ఫాల్బ్యాక్ హైడింగ్ మెకానిజం వలె జోడించండి.
- రివర్స్ (పాసివ్) ఆపరేషన్ కోసం, నాక్ eBPF మాడ్యూల్ను ఇన్స్టాల్ చేయండి. నాక్లో XDP ప్రోగ్రామ్ మరియు TC ప్రోగ్రామ్ ఉంటాయి, కాబట్టి C2 ఛానెల్ నిర్దిష్ట 'మ్యాజిక్ ప్యాకెట్' అందుకున్న తర్వాత మాత్రమే యాక్టివ్ అవుతుంది.
- systemd సేవను సృష్టించడం ద్వారా నిలకడను ఏర్పరచండి.
- C2 నుండి అందుకున్న ఆదేశాలను అమలు చేయండి.
- షట్డౌన్ చేసినప్పుడు లేదా సిగ్నల్ ఇచ్చినప్పుడు (SIGHUP, SIGINT, SIGTERM), eBPF మాడ్యూల్లను అన్ఇన్స్టాల్ చేయండి మరియు /etc/libld.so ప్రీలోడ్ సవరణను తీసివేయండి/పునరుద్ధరించండి, తద్వారా సిస్టమ్ దాని మునుపటి స్థితికి తిరిగి వస్తుంది.
మ్యాజిక్ ప్యాకెట్ మరియు నాక్ యాక్టివేషన్ మెకానిజం
LinkPro యొక్క నిష్క్రియాత్మక క్రియాశీలత ఖచ్చితమైన TCP ప్యాకెట్పై ఆధారపడి ఉంటుంది: విండో పరిమాణం 54321 కు సమానమైన ఏదైనా TCP ప్యాకెట్ను 'మ్యాజిక్ ప్యాకెట్'గా పరిగణిస్తారు. నాక్ ఆ ప్యాకెట్ను గుర్తించినప్పుడు, అది సోర్స్ IPని నిల్వ చేస్తుంది మరియు దానిని ఒక గంట గడువుతో ట్యాగ్ చేస్తుంది. ఆ మూలం నుండి తదుపరి TCP ప్యాకెట్లు పర్యవేక్షించబడతాయి మరియు సముచితమైనప్పుడు, నాక్ హెడర్లను తిరిగి వ్రాస్తుంది, తద్వారా ఆపరేటర్ యొక్క ట్రాఫిక్ లింక్ప్రో యొక్క లిజనింగ్ పోర్ట్ (2333)కి దారి మళ్లించబడుతుంది. అవుట్బౌండ్ ప్యాకెట్లు అసలు పోర్ట్ను నెట్వర్క్కు తిరిగి అందించడానికి సర్దుబాటు చేయబడతాయి (సోర్స్ పోర్ట్ 2233కి తిరిగి వ్రాయబడుతుంది). ఉద్దేశ్యం సూటిగా ఉంటుంది కానీ ప్రభావవంతంగా ఉంటుంది: ఫ్రంట్-ఎండ్ ఫైర్వాల్ అనుమతించే ఏదైనా పోర్ట్ ద్వారా దాడి చేసే వ్యక్తి లింక్ప్రోను చేరుకోవడానికి అనుమతించండి, అదే సమయంలో బాహ్య ఫైర్వాల్ లాగ్లను హోస్ట్ యొక్క అంతర్గత నెట్వర్క్ కార్యాచరణతో పరస్పరం అనుసంధానించడం కష్టతరం చేస్తుంది.
లింక్ప్రో తనను తాను ఎలా దాచుకుంటుంది
LinkPro రెండు-స్థాయి దాచు వ్యూహాన్ని ఉపయోగిస్తుంది:
కెర్నల్/eBPF హైడింగ్ : హైడ్ eBPF మాడ్యూల్ ట్రేస్పాయింట్ మరియు క్రెట్ప్రోబ్ ప్రోగ్రామ్లను ఇన్స్టాల్ చేస్తుంది, ఇవి 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 కాల్ల నుండి వచ్చే రాబడిని మారుస్తుంది.
రూట్కిట్ సామర్థ్యాలు మరియు కమాండ్ సెట్
LinkPro ఇంటరాక్టివ్ మరియు ఆటోమేటెడ్ రిమోట్ చర్యలు రెండింటికీ మద్దతు ఇస్తుంది. దీని అమలు చేయబడిన లక్షణాలు:
- /bin/bash సూడో-టెర్మినల్ను ప్రారంభించడం మరియు ఇంటరాక్టివ్ షెల్ సెషన్లను అమలు చేయడం.
- ఏకపక్ష షెల్ ఆదేశాలను అమలు చేస్తోంది.
- ఫైల్స్ మరియు డైరెక్టరీలను లెక్కించడం మరియు ఫైల్ ఆపరేషన్లను నిర్వహించడం.
- ఫైళ్ళను డిస్క్కి డౌన్లోడ్ చేయడం మరియు వ్రాయడం.
- పివోటింగ్ మరియు లివింగ్-ఆఫ్-ది-ల్యాండ్ ప్రాక్సీయింగ్ కోసం SOCKS5 ప్రాక్సీ టన్నెల్ను ఏర్పాటు చేయడం.
నెట్వర్క్ ప్రోటోకాల్ మద్దతు మరియు C2 ప్రవర్తన
యాక్టివ్ (ఫార్వర్డ్) మోడ్లో లింక్ప్రో అనువైనది: ఇది HTTP, వెబ్సాకెట్, UDP, TCP లేదా DNS ట్రాన్స్పోర్ట్లను ఉపయోగించి కమ్యూనికేట్ చేయగలదు. నిష్క్రియాత్మక (రివర్స్) మోడ్లో దాని కమ్యూనికేషన్ HTTPకి పరిమితం చేయబడింది కానీ నాక్ మ్యాజిక్ ప్యాకెట్ తాత్కాలికంగా ఒక గంట కమాండ్ విండోను తెరిచిన తర్వాత మాత్రమే అది వింటుంది కాబట్టి స్టీల్త్ నుండి ప్రయోజనం పొందుతుంది.
ప్రవర్తనను శుభ్రపరచడం మరియు అన్ఇన్స్టాల్ చేయడం
ప్రక్రియ ముగింపు సంకేతాలను అందుకుంటే, LinkPro జాడలను తొలగించడం లక్ష్యంగా పెట్టుకుంది: ఇది ఇన్స్టాల్ చేయబడిన eBPF మాడ్యూల్లను అన్ఇన్స్టాల్ చేస్తుంది మరియు /etc/libldని తొలగిస్తుంది లేదా పునరుద్ధరిస్తుంది, దానిని దాని మునుపటి స్థితికి సమూహపరుస్తుంది, తద్వారా సిస్టమ్ మారదు. ఈ ఉద్దేశపూర్వక శుభ్రపరిచే దినచర్య ఆపరేటర్ ఎగవేత మరియు దీర్ఘకాలిక ఫోరెన్సిక్ పాదముద్రలను తగ్గించడం గురించి ఆందోళన చెందుతున్నట్లు సూచిస్తుంది.
ఆపరేషనల్ సందర్భం మరియు లక్షణం
ఈ ప్రచారంలో అధిక తీవ్రత కలిగిన జెంకిన్స్ దోపిడీ, హానికరమైన కంటైనర్ చిత్రాలు, బహుళ బ్యాక్డోర్ వేరియంట్లు మరియు కెర్నల్-స్థాయి స్టెల్త్ ఉపయోగించబడ్డాయి - ఈ కలయిక ప్రేరేపిత, సామర్థ్యం గల ఆపరేటర్ను సూచిస్తుంది. ఖచ్చితమైన ఆపాదింపును బహిరంగపరచలేదు; అయితే, టూల్సెట్ మరియు ప్రాక్సీయింగ్ మరియు నిరంతర రిమోట్ యాక్సెస్ కోసం రాజీ యొక్క స్పష్టమైన ఉపయోగం ఆర్థికంగా ప్రేరేపించబడిన కార్యాచరణను (పివోటింగ్, అదనపు చొరబాట్లకు ప్రాక్సీయింగ్ లేదా యాక్సెస్ పునఃవిక్రయం) బలంగా సూచిస్తున్నాయి.
కెర్నల్ ఆధారపడటం మరియు ఫాల్బ్యాక్ ప్రవర్తన
LinkPro దాని రహస్య కెర్నల్ ఇంటర్సెప్షన్ కోసం BPF kprobe ఓవర్రైడ్ ఫీచర్లపై ఆధారపడుతుంది కాబట్టి, హోస్ట్ కెర్నల్ CONFIG_BPF_KPROBE_OVERRIDEని బహిర్గతం చేసినప్పుడు మాత్రమే ఇది కెర్నల్-స్థాయి దాచే సాంకేతికతను వర్తింపజేస్తుంది. ఆ కెర్నల్ సామర్థ్యం లేనప్పుడు, LinkPro ఉద్దేశపూర్వకంగా LD_PRELOAD షేర్డ్-లైబ్రరీ పద్ధతికి తిరిగి వస్తుంది, ఇది వినియోగదారు స్థలంలో తనను తాను దాచుకుంటుంది, విస్తృత శ్రేణి వాతావరణాలలో దాచడాన్ని నిర్ధారిస్తుంది.
ముగింపు గమనిక
ఆధునిక చొరబాట్లు కంటైనర్ రాజీ, దశలవారీ లోడర్లు, కెర్నల్ ఇన్స్ట్రుమెంటేషన్ (eBPF) మరియు తెలివైన నెట్వర్క్ ట్రిక్స్ (మ్యాజిక్-ప్యాకెట్ యాక్టివేషన్ మరియు పోర్ట్-రీరైటింగ్) లను కలిపి స్టెల్త్ మరియు ఫ్లెక్సిబిలిటీని ఎలా నిర్వహించవచ్చో LinkPro ప్రదర్శిస్తుంది. గుర్తింపు మరియు నివారణకు అనధికార eBPF ప్రోగ్రామ్లు, /etc/ld.so.preloadలో ఊహించని ఎంట్రీలు, అసాధారణ సిస్టమ్డ్ సేవలు మరియు సూచించబడిన మౌలిక సదుపాయాలకు నెట్వర్క్ కనెక్షన్ల కోసం జాగ్రత్తగా తనిఖీ అవసరం (ఫోరెన్సిక్ సూచికలలో IP 56.155.98[.]37, పోర్ట్లు 29872, 2333, 2233 మరియు తొలగించబడిన డాకర్ ఇమేజ్ పేరు kvlnt/vv ఉన్నాయి).