LinkPro eBPF Rootkit: Nguy hiểm tấn công Linux qua CVE-2024-23897

Các nhà nghiên cứu bảo mật từ Synacktiv CSIRT đã phát hiện một LinkPro eBPF rootkit Linux tinh vi. Rootkit này sử dụng công nghệ eBPF (extended Berkeley Packet Filter) để thiết lập quyền truy cập backdoor dai dẳng và ẩn mình khỏi các công cụ giám sát truyền thống.
Chuỗi lây nhiễm bắt nguồn từ một máy chủ Jenkins dễ bị tổn thương, bị khai thác qua lỗ hổng CVE-2024-23897 và được phơi bày ra internet. Các tác nhân đe dọa đã tận dụng điểm truy cập ban đầu này để triển khai một ảnh Docker độc hại có tên kvlnt/vv trên nhiều cụm Amazon EKS (Elastic Kubernetes Service).
Payload trong container bao gồm một ảnh nền Kali Linux chứa ba thành phần quan trọng: một script khởi động bash, một chương trình máy chủ VPN tên là vnt cho khả năng proxy, và một malware downloader viết bằng Rust có tên vGet.
Malware này thể hiện một sự phát triển đáng kể trong các mối đe dọa nhắm vào Linux, kết hợp khả năng tàng hình tiên tiến với các chế độ hoạt động linh hoạt để xâm phạm các hệ thống GNU/Linux trên cơ sở hạ tầng đám mây. Bạn có thể xem phân tích chi tiết từ Synacktiv tại LinkPro eBPF Rootkit Analysis.
Khai Thác Ban Đầu và Triển Khai Backdoor
Thành phần mã độc đầu tiên là một dropper nhúng một backdoor vShell (v4.9.3) khác được thực thi trong bộ nhớ. Backdoor này giao tiếp thông qua DNS tunneling.
Trình tải xuống vGet truy xuất payload đã mã hóa từ một bucket Amazon S3, cung cấp backdoor vShell 4.9.3 trực tiếp vào bộ nhớ để tránh để lại dấu vết trên ổ đĩa. Backdoor này đã được ghi nhận trước đây, đáng chú ý là được sử dụng bởi tác nhân đe dọa UNC5174, và giao tiếp với máy chủ command and control (C2) của nó tại 56.155.98.37 thông qua WebSocket.
Cuộc tấn công tinh vi này cuối cùng dẫn đến việc triển khai LinkPro, yếu tố cốt lõi của toàn bộ chiến dịch.
LinkPro: eBPF Rootkit Với Chiến Lược Che Giấu Kép
LinkPro nổi bật nhờ chiến lược che giấu hai lớp, sử dụng hai module eBPF riêng biệt. LinkPro eBPF rootkit nhúng bốn module ELF: một thư viện chia sẻ, một module kernel, và hai module eBPF.
Cơ Chế Che Giấu của Module “Hide”
Module đầu tiên, được gọi là “Hide”, triển khai các chương trình eBPF thuộc loại Tracepoint và Kretprobe để chặn các lệnh gọi hệ thống quan trọng.
- Bằng cách hook vào các lệnh gọi hệ thống
getdentsvàgetdents64, LinkPro lọc danh sách thư mục để loại bỏ bất kỳ tham chiếu nào đến các tệp chứa từ khóa như.tmp~datahoặc.system. - Rootkit cũng ẩn các thư mục tiến trình cụ thể dưới
/proc/có ID tiến trình được lưu trữ trong map eBPF của nó, có khả năng che giấu lên đến 10 PIDs đồng thời.
Module Hide sử dụng một kỹ thuật tinh vi bổ sung để che giấu các chương trình eBPF của chính nó khỏi các công cụ phát hiện như bpftool.
Bằng cách chặn các lệnh gọi hệ thống sys_bpf và kiểm tra xem các ID chương trình trả về có khớp với những ID được lưu trữ trong map nội bộ của nó hay không, LinkPro hướng dẫn kernel trả về một mã lỗi. Điều này làm cho các thành phần eBPF của nó trở nên vô hình đối với các tiện ích quản trị.
Tuy nhiên, kỹ thuật này yêu cầu kernel Linux phải được biên dịch với tùy chọn cấu hình CONFIG_BPF_KPROBE_OVERRIDE, có sẵn trong các phiên bản gần đây của Amazon Linux và Ubuntu 24.04.
Cơ Chế Dự Phòng: Kỹ Thuật LD_PRELOAD
Khi tính năng ẩn dựa trên eBPF thất bại do thiếu các tính năng kernel, LinkPro triển khai một cơ chế tàng hình thay thế bằng cách sửa đổi tệp cấu hình /etc/ld.so.preload.
Rootkit trích xuất và cài đặt một thư viện chia sẻ độc hại có tên libld.so vào /etc/libld.so, thư viện này sẽ được tải bởi tất cả các chương trình yêu cầu liên kết động. Thư viện này hook một số hàm libc bao gồm fopen, getdents, readdir, và kill để ẩn dấu vết mạng và các tạo phẩm hệ thống tệp của LinkPro.
Hook libld.so đặc biệt nhắm mục tiêu vào các tệp /proc/net/tcp, /proc/net/tcp6, /proc/net/udp, và /proc/net/udp6, lọc ra bất kỳ dòng nào chứa cổng 2233—cổng nghe mặc định của LinkPro. Mặc dù hiệu quả chống lại các công cụ như netstat dựa vào các tệp /proc/net, kỹ thuật này có thể bị bỏ qua bởi lệnh ss vốn sử dụng giao thức netlink thay thế.
Module “Knock”: Kích Hoạt Backdoor Thụ Động
Module eBPF thứ hai, được gọi là “Knock”, cho phép chế độ backdoor thụ động của LinkPro thông qua kích hoạt gói tin “magic packet”. Module này bao gồm hai chương trình eBPF: xdp_ingress thuộc loại XDP (eXpress Data Path) và tc_egress thuộc loại TC (Traffic Control).
Backdoor cũng có thể thiết lập các đường hầm proxy SOCKS5 cho di chuyển ngang trong cơ sở hạ tầng bị xâm phạm và tạo các listener HTTP bổ sung theo yêu cầu.
Chương trình xdp_ingress giám sát lưu lượng mạng đến để tìm một gói TCP SYN với giá trị kích thước cửa sổ cụ thể là 54321. Khi phát hiện gói magic này, chương trình đăng ký địa chỉ IP nguồn vào một knock_map với cửa sổ hết hạn một giờ, chuyển LinkPro sang trạng thái “mở” cho IP cụ thể đó.
Sau khi được kích hoạt, xdp_ingress chặn các gói TCP tiếp theo từ IP đã đăng ký và sửa đổi cổng đích thành cổng nghe nội bộ của LinkPro là 2233, bất kể cổng đích ban đầu được chỉ định. Chương trình tc_egress sau đó sửa đổi các gói phản hồi đi để khôi phục cổng đích ban đầu thành cổng nguồn, tạo ra một kênh giao tiếp minh bạch.
Chuyển hướng cổng tinh vi này cho phép các nhà điều hành gửi lệnh thông qua bất kỳ cổng nào được ủy quyền bởi tường lửa phía trước, làm phức tạp đáng kể việc phân tích pháp y và mối tương quan giữa nhật ký tường lửa và hoạt động mạng thực tế, gây khó khăn cho các nỗ lực phát hiện xâm nhập.
Cơ Chế Duy Trì Quyền Truy Cập (Persistence) của LinkPro
LinkPro thiết lập tính dai dẳng bằng cách giả mạo dịch vụ systemd-resolved hợp pháp chịu trách nhiệm phân giải tên mạng. LinkPro eBPF rootkit sao chép tệp thực thi của nó vào /usr/lib/.system/.tmp~data.resolveld và tạo một tệp unit systemd tại /etc/systemd/system/systemd-resolveld.service với cấu hình phù hợp để đảm bảo tự động thực thi khi khởi động hệ thống.
Để tiếp tục trốn tránh sự phát hiện, LinkPro thực hiện timestomping bằng cách sửa đổi ngày tạo và ngày sửa đổi của các tệp của nó để khớp với các tệp của /etc/passwd.
Các Chế Độ Hoạt Động và Chức Năng Của Rootkit
Backdoor hỗ trợ hai chế độ hoạt động: reverse (thụ động) và forward (chủ động).
- Trong chế độ reverse, LinkPro lắng nghe lệnh từ máy chủ C2 của nó bằng cơ chế kích hoạt magic packet đã mô tả ở trên.
- Trong chế độ forward, backdoor chủ động khởi tạo giao tiếp với máy chủ command and control của nó, hỗ trợ năm giao thức khác nhau: HTTP, WebSocket, UDP, TCP và DNS tunneling. Các mẫu được phân tích giao tiếp với địa chỉ IP 18.199.101.111 sử dụng giao thức HTTP qua cổng 2233.
Sau khi được thiết lập, LinkPro cung cấp cho các nhà điều hành chức năng truy cập từ xa rộng rãi bao gồm các phiên terminal bash tương tác, thực thi lệnh shell tùy ý, các hoạt động quản lý tệp toàn diện và khả năng tải lên/tải xuống tệp với mã hóa truyền theo khối.
Những tính năng này cho phép các tác nhân đe dọa duy trì quyền truy cập dai dẳng, đánh cắp dữ liệu nhạy cảm và di chuyển sang các hệ thống bổ sung trong môi trường mạng của nạn nhân. Đây là một ví dụ điển hình về khả năng của một tấn công mạng tinh vi.
Indicators of Compromise (IOCs)
Dưới đây là các chỉ số thỏa hiệp (IOCs) liên quan đến LinkPro eBPF rootkit:
- CVE được khai thác:
CVE-2024-23897 - Ảnh Docker độc hại:
kvlnt/vv - Địa chỉ IP máy chủ C2 (vShell):
56.155.98.37(qua WebSocket) - Địa chỉ IP máy chủ C2 (LinkPro, chế độ forward):
18.199.101.111(qua HTTP, cổng 2233) - Cổng nghe mặc định của LinkPro:
2233 - Đường dẫn tệp LinkPro:
/usr/lib/.system/.tmp~data.resolveld - Tệp unit Systemd:
/etc/systemd/system/systemd-resolveld.service - Thư viện chia sẻ độc hại:
/etc/libld.so - Từ khóa ẩn tệp/thư mục:
.tmp~data,.system - Kích thước cửa sổ TCP SYN cho magic packet:
54321









