Phát hiện Rootkit trên Linux: Công cụ và Kỹ thuật

10 phút đọc - 16 tháng 5, 2026

hero section cover
Mục lục
  • Phát hiện Rootkit trên Linux: Công cụ và Kỹ thuật cho Bảo mật Máy chủ
  • Các loại rootkit trên Linux
  • Quét bằng chkrootkit và rkhunter
  • Phát hiện nâng cao: Giám sát hành vi và kiểm tra tính toàn vẹn
  • Tăng cường bảo mật máy chủ chống lại rootkit
  • Kết luận
Chia sẻ

Cách phát hiện và ngăn chặn các rootkit trên Linux bằng cách sử dụng chkrootkit, rkhunter, Auditd, AIDE và giám sát hành vi trên các máy chủ của bạn.

Phát hiện Rootkit trên Linux: Công cụ và Kỹ thuật cho Bảo mật Máy chủ

Rootkit cung cấp cho kẻ tấn công quyền truy cập ẩn và liên tục vào hệ thống Linux. Chúng thao túng các hoạt động của kernel, ẩn các tệp và quy trình, đồng thời né tránh các công cụ bảo mật tiêu chuẩn. Một số rootkit đã tồn tại mà không bị phát hiện trong nhiều năm. Việc phát hiện chúng đòi hỏi một phương pháp tiếp cận nhiều lớp, vì không có công cụ nào có thể phát hiện tất cả mọi thứ.

Bài viết này đề cập đến các loại rootkit Linux chính, cách quét chúng và các kỹ thuật giám sát nâng cao giúp phát hiện những gì các trình quét cơ bản bỏ sót.


Các loại rootkit trên Linux

Rootkit hoạt động ở các cấp độ đặc quyền khác nhau, và càng ở sâu thì càng khó phát hiện.

Rootkit chế độ người dùng chạy ở cấp độ ứng dụng (Ring 3). Chúng chiếm quyền điều khiển liên kết động bằng cách LD_PRELOAD để chèn các thư viện độc hại nhằm chặn các hàm thư viện C tiêu chuẩn như readdir hoặc fopen, che giấu các tệp và quy trình khỏi các công cụ userland.

Rootkit chế độ kernel chạy ở Ring 0 bằng cách tải dưới dạng Loadable Kernel Modules (LKMs). Chúng chặn các lệnh gọi hệ thống, thao túng bộ nhớ kernel và che giấu sự hiện diện của chính chúng. Vì chúng gắn liền với các phiên bản kernel cụ thể, một rootkit được cấu hình sai có thể gây ra tình trạng kernel panic, điều này lại vô tình làm lộ ra sự hiện diện của nó.

Các rootkit dựa trên eBPF khai thác hệ thống con Extended Berkeley Packet Filter để chạy trong không gian kernel mà không cần tải mô-đun truyền thống. Chúng gắn vào các móc gọi hệ thống, điểm theo dõi hoặc sự kiện LSM. Các trình quét LKM tiêu chuẩn sẽ không phát hiện được chúng. Boopkit là một bằng chứng khái niệm nổi tiếng tạo ra kênh C2 bí mật bằng cách sử dụng phương pháp này.

Các rootkit dựa trên io_uring là biến thể mới nhất. Chúng sử dụng io_uring giao diện I/O không đồng bộ để xử lý các hoạt động theo lô, tạo ra ít sự kiện syscall có thể quan sát được hơn. RingReaper, một rootkit thử nghiệm, đã chứng minh cách thức này có thể thay thế âm thầm các lệnh gọi như read, write, đồng thời connect trong khi tránh được các công cụ EDR.

Loại rootkit Mức đặc quyền Phương pháp móc nối Độ khó phát hiện
Chế độ người dùng Vòng 3 (Người dùng) LD_PRELOAD, chiếm quyền thư viện Trung bình
Chế độ nhân Vòng 0 (Hạt nhân) Bảng syscall, LKM, hooking nội tuyến Cao
Dựa trên eBPF Vòng 0 (Hạt nhân) Gắn chương trình eBPF Rất cao
Dựa trên io_uring Người dùng/Hạt nhân Gộp I/O không đồng bộ Rất cao

Quét bằng chkrootkit và rkhunter

Hai công cụ này tạo thành nền tảng để phát hiện rootkit trên các máy chủ Linux: chkrootkit để quét nhanh và rkhunter để kiểm tra sâu hơn.

chkrootkit

chkrootkit là một tập lệnh shell kiểm tra các tệp nhị phân quan trọng của hệ thống (ls, ps, netstat, sshd, ifconfig) để tìm dấu hiệu bị can thiệp. Nó cũng phát hiện các giao diện mạng hoạt động ở chế độ promiscuous và các nhật ký bị xóa. Tính đến phiên bản 0.59 (tháng 1 năm 2026), nó có thể xác định hơn 75 rootkit, sâu máy tính và LKM, bao gồm các mối đe dọa mới như Linux BPFDoor, Syslogk và XZ Backdoor.

Chạy nó sau bất kỳ hoạt động đáng ngờ nào. Hãy chú ý đến các cảnh báo từ ifpromisc thành phần và các cảnh báo về lastlog hoặc wtmp tệp bị xóa

rkhunter

rkhunter còn đi xa hơn thế. Nó so sánh các hàm băm SHA-1 của các tệp nhị phân hệ thống với các giá trị đã biết là an toàn, giám sát quyền truy cập tệp và các tệp ẩn, kiểm tra cấu hình khởi động, đồng thời thực hiện phân tích nhân hệ điều hành và mạng.

Hãy thiết lập đúng ngay từ đầu:

# Establish a baseline after a clean install or update
rkhunter --propupd
 
# Update rootkit definitions
rkhunter --update
 
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all

Để quét tự động hàng ngày, hãy thiết lập CRON_DAILY_RUN="true" vào /etc/rkhunter.conf và sử dụng --skip-keypress--report-warnings-only để có kết quả sạch. Kiểm tra nhật ký tại /var/log/rkhunter.log và đưa các kết quả dương tính giả đã được xác nhận vào danh sách trắng.

Phát hiện rootkit LKM

Các rootkit LKM đặc biệt nguy hiểm vì chúng hoạt động như các tiện ích mở rộng nhân hệ thống, chặn các lệnh hệ thống và ẩn các tiến trình ở cấp độ nhân hệ thống. Các công cụ tiêu chuẩn như lsmod sẽ không phát hiện ra chúng, nhưng vẫn có cách để phát hiện chúng.

So sánh lsmod kết quả đầu ra với /sys/module/ danh sách. Kiểm tra nhật ký hệ thống để tìm các thông báo nhân hệ thống đáng ngờ:

# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
 
# Check for module verification failures
grep "module verification failed" /var/log/syslog
 
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm

Ngay cả các rootkit ẩn mình khỏi lsmod/proc/modules (như Diamorphine) vẫn có thể được phát hiện bằng cách kiểm tra /sys/module/diamorphine/coresize hoặc xem xét các cảnh báo trong syslog.

Phát hiện nâng cao: Giám sát hành vi và kiểm tra tính toàn vẹn

Các trình quét tĩnh có một điểm yếu cơ bản. Trong một thí nghiệm năm 2026, việc thêm một byte null duy nhất vào tệp nhị phân rootkit, một thay đổi không ảnh hưởng đến chức năng, đã làm giảm tỷ lệ phát hiện đáng kể. Tỷ lệ phát hiện của Diamorphine giảm từ 33/66 xuống 8/64 chỉ bằng cách loại bỏ các bảng ký hiệu của nó. Chỉ dựa vào các dấu hiệu nhận dạng là không đủ.

Phân tích hành vi

Thay vì hỏi "tệp này có khớp với rootkit đã biết không?", phân tích hành vi sẽ hỏi "quá trình này có đang thực hiện điều gì bất thường không?" Hãy theo dõi các tín hiệu sau:

  • Sử dụng Auditd để theo dõi init_module()finit_module() các lệnh gọi hệ thống, vốn tải các mô-đun kernel bất kể phương pháp nào.
  • Theo dõi kill() các cuộc gọi có tín hiệu trên 31, điều này có thể cho thấy sự giao tiếp ngầm của rootkit.
  • Kiểm tra /proc/sys/kernel/tainted xem có hoạt động mô-đun kernel trái phép hay không.
  • Theo dõi các tệp .so trong /tmp hoặc /dev/shm.
  • Theo dõi hoạt động eBPF, đặc biệt là bpf_probe_write_user các lệnh gọi. Các công cụ như BCC có thể theo dõi các hoạt động io_uring thông qua các điểm theo dõi như sys_enter_io_uring_enter.

Đối với các rootkit eBPF và io_uring cụ thể, các công cụ giám sát thời gian chạy như Tetragon, FalcoTracee có thể quan sát hoạt động trong nhân hệ điều hành theo thời gian thực.

Giám sát tính toàn vẹn của tệp

AIDE (Môi trường phát hiện xâm nhập nâng cao) tạo ra một cơ sở dữ liệu các tệp hệ thống đáng tin cậy và kiểm tra các thay đổi. Khởi tạo với aide --init, sau đó lên lịch aide --check qua cron. Nó theo dõi tổng kiểm tra, quyền truy cập, quyền sở hữu và dấu thời gian trên các tệp nhị phân quan trọng như /bin/login/usr/bin/sshd.

Để xác minh ở cấp độ gói, debsums (Debian/Ubuntu) hoặc rpm -Va (RHEL/CentOS) có thể xác nhận tính toàn vẹn của tệp hệ thống. Để có kết quả đáng tin cậy nhất, hãy khởi động từ phương tiện cứu hộ đáng tin cậy và kiểm tra hệ thống tệp ngoại tuyến, vì rootkit có thể can thiệp vào báo cáo của kernel đang chạy.

Cũng cần theo dõi các cơ chế duy trì. Rootkit thường sửa đổi /etc/ld.so.preload để chèn các đối tượng chia sẻ, hoặc thay đổi .bashrc.profile. Các thay đổi hợp lệ đối với các tệp này rất hiếm, do đó các cảnh báo ở đây có tỷ lệ tín hiệu trên nhiễu cao.

Giám sát tự động với Auditd

Thêm các quy tắc này vào /etc/audit/rules.d/rootkit.rules để phát hiện thời gian thực các hoạt động đáng ngờ của kernel:

# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
 
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32

Kết hợp các quy tắc này với các bản cập nhật tự động của rkhunter. Đặt UPDATE_MIRRORS=1MIRRORS_MODE=0 trong tệp cấu hình, và chạy rkhunter --propupd sau khi cập nhật hệ thống hợp lệ để làm mới cơ sở tham chiếu.

Tăng cường bảo mật máy chủ chống lại rootkit

Phát hiện là quan trọng, nhưng phòng ngừa còn tốt hơn. Hầu hết các rootkit đều yêu cầu quyền truy cập cao để cài đặt, vì vậy việc giảm bề mặt tấn công sẽ mang lại hiệu quả thực sự.

Luôn cập nhật kernel và các gói phần mềm. Kẻ tấn công khai thác các lỗ hổng chưa được vá để nâng cao đặc quyền và triển khai các rootkit dựa trên LKM hoặc eBPF. Sau khi vá lỗi, hãy cập nhật các tiêu chuẩn phát hiện của bạn bằng rkhunter --propupd.

Áp dụng nguyên tắc đặc quyền tối thiểu. Không cấp cho người dùng hoặc quy trình quyền truy cập nhiều hơn mức cần thiết. Sử dụng SELinux hoặc AppArmor để kiểm soát truy cập bắt buộc, giúp chặn các hành động trái phép ngay cả khi quy trình bị xâm nhập.

Vô hiệu hóa việc tải mô-đun kernel sau khi khởi động. Trên các máy chủ chuyên dụng, bạn có thể ngăn chặn hoàn toàn các rootkit LKM bằng cách khóa việc tải mô-đun sau khi hệ thống khởi động. Điều này là không thể trên máy chủ chia sẻ, đó là một trong những lý do tại sao môi trường chuyên dụng hoặc VPS mang lại khả năng bảo mật mạnh mẽ hơn.

Phân đoạn mạng của bạn. Việc cô lập các phần của cơ sở hạ tầng sẽ hạn chế sự di chuyển ngang nếu một máy bị xâm nhập.

Kiểm tra thường xuyên. Các công cụ như Lynis có thể xác định các lỗi quyền và cấu hình sai trước khi kẻ tấn công khai thác chúng.

Kết luận

Rootkit được thiết kế để ẩn mình ngay trước mắt. Khi các triệu chứng xuất hiện, hệ thống có thể đã bị xâm nhập đến mức không thể phục hồi dễ dàng. Không có trình quét nào có thể phát hiện tất cả mọi thứ, và việc phát hiện dựa trên chữ ký cơ bản rất dễ bị lách luật.

Một biện pháp phòng thủ thực tế kết hợp nhiều lớp:

  • Quét thường xuyên bằng chkrootkit và rkhunter để phát hiện các mối đe dọa đã biết
  • Các quy tắc auditd và giám sát hành vi để phát hiện hoạt động đáng ngờ của kernel
  • Giám sát tính toàn vẹn tệp bằng AIDE để phát hiện các thay đổi trái phép
  • Các công cụ thời gian chạy như Tetragon hoặc Falco để phát hiện các mối đe dọa eBPF và io_uring
  • Kiểm soát truy cập được tăng cường, vá lỗi và phân đoạn mạng để giảm diện tích tấn công

Tự động hóa những gì có thể, duy trì các bản cơ sở cập nhật và bắt đầu từ một bản cài đặt hệ điều hành sạch mà bạn tin tưởng.

FDC Servers cung cấp dịch vụ lưu trữ máy chủ chuyên dụng và VPS với quyền truy cập root đầy đủ và cấu hình kernel có thể tùy chỉnh. Khám phá các tùy chọn máy chủ chuyên dụng để xây dựng một môi trường Linux được tăng cường bảo mật.

background image
Máy chủ của bạn có đang cản trở sự phát triển của bạn không?

Bạn đã chán ngán với việc triển khai chậm chạp hoặc giới hạn băng thông? FDC Servers cung cấp nguồn điện chuyên dụng ngay lập tức, phạm vi toàn cầu và các gói linh hoạt được thiết kế cho mọi quy mô.

Nâng cấp ngay

Blog

Nổi bật trong tuần

Các bài viết khác
Tại sao việc sở hữu một VPS mạnh mẽ và không giới hạn băng thông lại quan trọng

Tại sao việc sở hữu một VPS mạnh mẽ và không giới hạn băng thông lại quan trọng

Một VPS không giới hạn băng thông cung cấp băng thông theo gói cố định với tốc độ cổng cố định. Sự khác biệt so với các gói tính theo lưu lượng, khi nào nó mang lại lợi ích và những điều cần kiểm tra trước khi mua.

7 phút đọc - 9 tháng 5, 2025

Quản lý bộ nhớ Linux: Swap, OOM Killer & Cgroups

12 phút đọc - 31 tháng 5, 2026

Các bài viết khác
background image

Bạn có thắc mắc hoặc cần giải pháp tùy chỉnh?

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức