LinkPro Linux Rootkit
ការសម្របសម្រួលនាពេលថ្មីៗនេះនៃបរិស្ថាន Amazon Web Services (AWS) បានបង្ហាញនូវ GNU/Linux rootkit ដែលមិនមានឯកសារពីមុន ដែលតាមដានជា LinkPro ។ Backdoor នេះគឺគួរឱ្យកត់សម្គាល់សម្រាប់ការប្រើប្រាស់ម៉ូឌុល eBPF ពីរដងរបស់វា៖ មួយឈុតសម្រាប់លាក់វត្ថុបុរាណ និងមួយទៀតដែលដើរតួជាគន្លឹះបំបាំងកាយ - 'គោះ' ដែលដាស់មុខងារបញ្ជាពីចម្ងាយ លុះត្រាតែឃើញកញ្ចប់ព័ត៌មាន TCP ដែលបង្កើតជាពិសេស។ ខ្សែសង្វាក់វាយប្រហារ និងយន្តការរបស់ rootkit បង្ហាញពីប្រតិបត្តិករដ៏ទំនើបដែលលាយបញ្ចូលការរំលោភបំពានកុងតឺន័រ ការលាក់កំបាំងកម្រិតខឺណែល និងការធ្វើឱ្យបណ្តាញដែលអាចបត់បែនបាន ដើម្បីរារាំងការរកឃើញ និងការទាក់ទងគ្នាផ្នែកកោសល្យវិច្ច័យ។
តារាងមាតិកា
វ៉ិចទ័រឆ្លងមេរោគ និងការដាក់ពង្រាយដំបូង
ការឈ្លានពានបានចាប់ផ្តើមជាមួយនឹងការកេងប្រវ័ញ្ចនៃវត្ថុ Jenkins ដែលត្រូវបានលាតត្រដាងដែលងាយរងគ្រោះទៅនឹង CVE-2024-23897 (CVSS 9.8) ។ ពីទីតាំងនោះ អ្នកវាយប្រហារបានរុញរូបភាព Docker ព្យាបាទ (kvlnt/vv ចាប់តាំងពីបានដកចេញពី Docker Hub) ចូលទៅក្នុងចង្កោម Kubernetes ជាច្រើន។ រូបភាពនេះបានប្រើមូលដ្ឋាន Kali Linux និងផ្ទុកនូវថតកម្មវិធីតូចមួយដែលមានបំណងបង្កើតភាពជាប់លាប់ ការចូលប្រើពីចម្ងាយ និងការទាញយក backdoor ជាដំណាក់កាល។
នៅខាងក្នុងរូបភាព Malicious Docker
ថតកម្មវិធីរបស់រូបភាពមានឯកសារសំខាន់ៗចំនួនបីដែលមានតួនាទីខុសៗគ្នា៖
start.sh — ស្គ្រីបសែលដែលបើកដំណើរការសេវាកម្ម SSH និងដំណើរការសមាសភាគពីរផ្សេងទៀត។
តំណភ្ជាប់ — កម្មវិធីប្រភពបើកចំហ (vnt) ដែលបានចងក្រង/វេចខ្ចប់ដើម្បីដើរតួជាម៉ាស៊ីនភ្ញៀវ VPN/ប្រូកស៊ី ដោយភ្ជាប់ទៅក្រៅប្រទេសទៅកាន់ vnt.wherewego[.]top:29872។ វាអនុញ្ញាតឱ្យអ្នកវាយប្រហារទៅដល់ម៉ាស៊ីនដែលសម្របសម្រួលពីគ្រប់ទិសទី និងបង្វែរទៅគោលដៅផ្សេងទៀតតាមរយៈវា។
កម្មវិធី — កម្មវិធីទាញយកដែលមានមូលដ្ឋានលើ Rust (ហៅថា vGet) ដែលទាញយកបន្ទុក vShell ដែលបានអ៊ិនគ្រីបពីធុង S3 បន្ទាប់មកបង្កើតតំណភ្ជាប់ WebSocket ទៅកាន់ម៉ាស៊ីនមេបញ្ជា និងបញ្ជា (C2) របស់វានៅ 56.155.98[.]37។
បន្ទុកបន្ថែមត្រូវបានបញ្ជូនទៅកាន់ថ្នាំង Kubernetes
ទន្ទឹមនឹងរូបភាពព្យាបាទ ប្រតិបត្តិករក៏បានទម្លាក់សមាសធាតុពីរផ្សេងទៀតទៅលើថ្នាំងផងដែរ៖ ដំណក់ទឹកដែលដំឡើង vShell backdoor មួយផ្សេងទៀត និង LinkPro ដែលជា rootkit សរសេរដោយ Golang ។ LinkPro ត្រូវបានរចនាឡើងដើម្បីរត់ក្នុងមួយក្នុងចំណោមពីររបៀប — អកម្ម (បញ្ច្រាស) ឬសកម្ម (ទៅមុខ) — អាស្រ័យលើការកំណត់រចនាសម្ព័ន្ធរបស់វា។ នៅក្នុងរបៀបអកម្ម វារង់ចាំការធ្វើឱ្យសកម្មដោយកញ្ចប់បណ្តាញពិសេស។ នៅក្នុងរបៀបសកម្ម វាចាប់ផ្តើមទំនាក់ទំនងទៅ C2 ខ្លួនវាផ្ទាល់។ របៀបបញ្ជូនបន្តគាំទ្រពិធីការដឹកជញ្ជូនចំនួនប្រាំ (HTTP, WebSocket, UDP, TCP, DNS) ចំណែកឯរបៀបបញ្ច្រាសកំណត់ទំនាក់ទំនងទៅ HTTP ។
របៀបដែល LinkPro បន្ត
ការប្រតិបត្តិ និងការបន្តសកម្មភាពទូទៅរបស់មេរោគ អនុវត្តតាមលំដាប់ច្បាស់លាស់៖
- ដំឡើងម៉ូឌុលលាក់ eBPF ។ ម៉ូឌុលនេះរួមមានកម្មវិធី Tracepoint និង Kretprobe eBPF ដែលប្រើដើម្បីលាក់បាំងដំណើរការ និងសកម្មភាពបណ្តាញរបស់ LinkPro ។
- ប្រសិនបើការដំឡើងម៉ូឌុល Hide eBPF បរាជ័យ — ឬប្រសិនបើវាត្រូវបានបិទ — ដំឡើងបណ្ណាល័យចែករំលែកនៅ /etc/libld.so ហើយបន្ថែមផ្លូវនោះទៅ /etc/ld.so.preload ជាយន្តការលាក់កំហុស។
- សម្រាប់ប្រតិបត្តិការបញ្ច្រាស (អកម្ម) សូមដំឡើងម៉ូឌុល Knock eBPF ។ Knock មានកម្មវិធី XDP និងកម្មវិធី TC ដូច្នេះប៉ុស្តិ៍ C2 ដំណើរការតែបន្ទាប់ពីទទួលបាន 'កញ្ចប់វេទមន្ត' ជាក់លាក់មួយ។
- បង្កើតការតស៊ូដោយបង្កើតសេវាកម្មប្រព័ន្ធ។
- ប្រតិបត្តិពាក្យបញ្ជាដែលបានទទួលពី C2 ។
- នៅពេលបិទ ឬនៅពេលដែលមានសញ្ញា (SIGHUP, SIGINT, SIGTERM) លុបម៉ូឌុល eBPF ហើយលុប/ស្តារការកែប្រែ /etc/libd.so ជាមុន ដូច្នេះប្រព័ន្ធត្រឡប់ទៅស្ថានភាពមុនរបស់វា។
កញ្ចប់វេទមន្ត និងយន្តការធ្វើឱ្យសកម្មគោះ
ការធ្វើឱ្យសកម្មអកម្មរបស់ LinkPro អាស្រ័យលើកញ្ចប់ព័ត៌មាន TCP ច្បាស់លាស់៖ កញ្ចប់ TCP ណាមួយដែលមានទំហំបង្អួចស្មើនឹង 54321 ត្រូវបានចាត់ទុកជា 'កញ្ចប់វេទមន្ត' ។ នៅពេល Knock រកឃើញកញ្ចប់ព័ត៌មាននោះ វារក្សាទុក IP ប្រភព ហើយដាក់ស្លាកវាជាមួយនឹងការផុតកំណត់មួយម៉ោង។ កញ្ចប់ TCP ជាបន្តបន្ទាប់ពីប្រភពនោះត្រូវបានត្រួតពិនិត្យ ហើយនៅពេលដែលសមស្រប Knock សរសេរឡើងវិញនូវបឋមកថា ដូច្នេះចរាចររបស់ប្រតិបត្តិករត្រូវបានបញ្ជូនបន្តទៅកាន់ច្រកស្តាប់របស់ LinkPro (2333)។ កញ្ចប់ព័ត៌មានខាងក្រៅត្រូវបានកែតម្រូវដើម្បីបង្ហាញច្រកដើមត្រឡប់ទៅបណ្តាញវិញ (ច្រកប្រភពត្រូវបានសរសេរឡើងវិញទៅ 2233) ។ ចេតនាគឺត្រង់ៗ ប៉ុន្តែមានប្រសិទ្ធភាព៖ អនុញ្ញាតឱ្យអ្នកវាយប្រហារចូលទៅកាន់ LinkPro តាមរយៈច្រកណាមួយដែលជញ្ជាំងភ្លើងខាងមុខអនុញ្ញាត ខណៈពេលដែលធ្វើឱ្យពិបាកក្នុងការភ្ជាប់កំណត់ហេតុជញ្ជាំងភ្លើងខាងក្រៅជាមួយនឹងសកម្មភាពបណ្តាញខាងក្នុងរបស់ម៉ាស៊ីន។
របៀបដែល LinkPro លាក់ខ្លួន
LinkPro ប្រើយុទ្ធសាស្ត្រលាក់បាំងពីរជាន់៖
ការលាក់ខឺណែល/eBPF ៖ ម៉ូឌុលលាក់ eBPF ដំឡើងកម្មវិធី Tracepoint និង Kretprobe ដែលស្ទាក់ចាប់ការហៅរបស់ប្រព័ន្ធដូចជា getdents (ដើម្បីលាក់ឯកសារ/ថតឯកសារ) និង sys_bpf (ដើម្បីលាក់កម្មវិធី BPF របស់វាផ្ទាល់)។ វិធីសាស្រ្តនេះទាមទារខឺណែលដែលបង្កើតដោយបើក CONFIG_BPF_KPROBE_OVERRIDE ។
User-space LD_PRELOAD fallback : ប្រសិនបើសមត្ថភាពខឺណែលមិនមានវត្តមាន LinkPro សរសេរបណ្ណាល័យចែករំលែក (libld.so) ហើយដាក់ផ្លូវរបស់វាក្នុង /etc/ld.so.preload ។ ដោយសារតែ /etc/ld.so.preload បណ្តាលឱ្យបណ្ណាល័យដែលបានបញ្ជាក់ត្រូវបានផ្ទុកទៅក្នុងរាល់ដំណើរការដែលភ្ជាប់ដោយថាមវន្ត (អ្នកដែលប្រើ /lib/ld-linux.so និង glibc) ការបញ្ចូល libd.so ទំពក់មុខងារ libc នៅដើមឆ្នាំ (មុនពេលឥរិយាបថផ្ទាល់ខ្លួនរបស់ glibc) ហើយផ្លាស់ប្តូរត្រឡប់មកវិញពីការហៅ libc ដែលនឹងលាក់វត្តមានរបស់វត្ថុបុរាណផ្សេងទៀត។
សមត្ថភាព Rootkit និងសំណុំពាក្យបញ្ជា
LinkPro គាំទ្រទាំងអន្តរកម្ម និងសកម្មភាពពីចម្ងាយដោយស្វ័យប្រវត្តិ។ លក្ខណៈពិសេសដែលបានអនុវត្តរបស់វារួមមាន:
- កំពុងចាប់ផ្តើម /bin/bash pseudo-terminal និងដំណើរការវគ្គសែលអន្តរកម្ម។
- ប្រតិបត្តិពាក្យបញ្ជាសែលបំពាន។
- ការរាប់បញ្ចូលឯកសារ និងថតឯកសារ និងអនុវត្តប្រតិបត្តិការឯកសារ។
- កំពុងទាញយក និងសរសេរឯកសារទៅឌីស។
- ការបង្កើតផ្លូវរូងក្រោមដីប្រូកស៊ី SOCKS5 សម្រាប់ការបង្វិល និងប្រូកស៊ីរស់នៅក្រៅដី។
ការគាំទ្រពិធីការបណ្តាញ និងឥរិយាបថ C2
នៅក្នុងរបៀបសកម្ម (ទៅមុខ) LinkPro គឺអាចបត់បែនបាន៖ វាអាចទំនាក់ទំនងដោយប្រើ HTTP, WebSocket, UDP, TCP ឬ DNS transports។ នៅក្នុងរបៀបអកម្ម (បញ្ច្រាស) ការប្រាស្រ័យទាក់ទងរបស់វាត្រូវបានរឹតបន្តឹងចំពោះ HTTP ប៉ុន្តែទទួលបានអត្ថប្រយោជន៍ពីការបំបាំងកាយ ព្រោះវាស្តាប់តែបន្ទាប់ពីកញ្ចប់ព័ត៌មាន Knock magic បានបើកបង្អួចពាក្យបញ្ជាបណ្តោះអាសន្នរយៈពេលមួយម៉ោងប៉ុណ្ណោះ។
សម្អាត និងលុបឥរិយាបថ
ប្រសិនបើដំណើរការទទួលបានសញ្ញាបញ្ចប់ LinkPro មានគោលបំណងដកដានចេញ៖ វាលុបម៉ូឌុល eBPF ដែលបានដំឡើង ហើយលុប ឬស្ដារ /etc/libd ដោយដាក់ជាក្រុមទៅស្ថានភាពមុនរបស់វា ដូច្នេះប្រព័ន្ធហាក់ដូចជាមិនផ្លាស់ប្តូរ។ ទម្លាប់នៃការសម្អាតដោយចេតនានេះបង្ហាញពីប្រតិបត្តិករដែលព្រួយបារម្ភអំពីការគេចវេស និងកាត់បន្ថយស្នាមជើងធ្វើកោសល្យវិច្ច័យរយៈពេលវែង។
បរិបទប្រតិបត្តិការ និងគុណលក្ខណៈ
យុទ្ធនាការនេះបានប្រើប្រាស់ការកេងប្រវ័ញ្ចរបស់ Jenkins ដែលមានភាពធ្ងន់ធ្ងរខ្ពស់ រូបភាពកុងតឺន័រដែលមានគំនិតអាក្រក់ វ៉ារ្យ៉ង់ខាងក្រោយជាច្រើន និងការបំបាំងកាយកម្រិតខឺណែល ដែលជាការរួមបញ្ចូលគ្នាដែលចង្អុលទៅប្រតិបត្តិករដែលមានសមត្ថភាព និងលើកទឹកចិត្ត។ គ្មានការបញ្ជាក់ច្បាស់លាស់ណាមួយត្រូវបានផ្សព្វផ្សាយជាសាធារណៈ។ ទោះយ៉ាងណាក៏ដោយ សំណុំឧបករណ៍ និងការប្រើប្រាស់ជាក់ស្តែងនៃការសម្របសម្រួលសម្រាប់ការចូលប្រើប្រូកស៊ី និងការចូលប្រើពីចម្ងាយជាប់លាប់ បង្ហាញយ៉ាងមុតមាំនូវសកម្មភាពដែលជំរុញដោយហិរញ្ញវត្ថុ (ការជំរុញ ការផ្តល់ប្រូកស៊ីសម្រាប់ការឈ្លានពានបន្ថែម ឬការលក់ការចូលប្រើប្រាស់ឡើងវិញ)។
ភាពអាស្រ័យខឺណែល និងឥរិយាបថថយក្រោយ
ដោយសារតែ LinkPro ពឹងផ្អែកលើលក្ខណៈនៃការបដិសេធ BPF kprobe សម្រាប់ការស្ទាក់ចាប់ខឺណែលលួចលាក់របស់វា វាអនុវត្តតែបច្ចេកទេសលាក់កម្រិតខឺណែលប៉ុណ្ណោះ នៅពេលដែលខឺណែលម៉ាស៊ីនបង្ហាញ CONFIG_BPF_KPROBE_OVERRIDE ។ នៅពេលដែលបាត់សមត្ថភាពខឺណែលនោះ LinkPro មានចេតនាត្រលប់ទៅវិធីសាស្ត្របណ្ណាល័យចែករំលែក LD_PRELOAD ដើម្បីលាក់ខ្លួននៅក្នុងចន្លោះអ្នកប្រើប្រាស់ ដោយធានានូវការលាក់បាំងនៅទូទាំងមជ្ឈដ្ឋានដ៏ធំទូលាយ។
កំណត់ចំណាំបិទ
LinkPro បង្ហាញពីរបៀបដែលការឈ្លានពានសម័យទំនើបអាចរួមបញ្ចូលគ្នានូវការសម្របសម្រួលកុងតឺន័រ ឧបករណ៍ផ្ទុកតាមដំណាក់កាល ឧបករណ៍ខឺណែល (eBPF) និងល្បិចបណ្តាញដ៏ឆ្លាតវៃ (ការធ្វើឱ្យសកម្មកញ្ចប់ព័ត៌មានវេទមន្ត និងការសរសេរឡើងវិញច្រក) ដើម្បីរក្សាភាពបំបាំងកាយ និងភាពបត់បែន។ ការរកឃើញ និងការដោះស្រាយតម្រូវឲ្យមានការត្រួតពិនិត្យយ៉ាងប្រុងប្រយ័ត្នសម្រាប់កម្មវិធី eBPF ដែលគ្មានការអនុញ្ញាត ធាតុដែលមិនរំពឹងទុកនៅក្នុង /etc/ld.so.preload សេវាប្រព័ន្ធមិនធម្មតា និងការភ្ជាប់បណ្តាញទៅនឹងហេដ្ឋារចនាសម្ព័ន្ធដែលបានចង្អុលបង្ហាញ (សូចនាករកោសល្យវិច្ច័យរួមមាន IP 56.155.98[.]37, ports 29872, Removed kv2333, និង 2 imagel)។