Cách mà kẻ tấn công đã leo thang đặc quyền lên root thông qua việc lợi dụng lệnh sudo iptables

Lưu Tuấn AnhLưu Tuấn Anh
5 min read

Tổng quan

Có thể bạn cũng biết, trong nhiều hệ thống Linux, quản trị viên thường cấu hình sudo để cấp cho người dùng quyền chạy một số lệnh cụ thể mà không cần mật khẩu. Một trong những công cụ phổ biến được cấp quyền như vậy là iptables, dùng để cấu hình tường lửa. Nhưng điều gì sẽ xảy ra nếu quyền này bị khai thác để đạt được hoàn toàn quyền root?

Bài viết này sẽ phân tích quá trình khai thác một quyền sudo tưởng như vô hại để leo thang đặc quyền lên root. Qua đó, chúng ta sẽ thấy tầm quan trọng của việc hiểu rõ hành vi của các lệnh hệ thống và quản lý chính sách sudo cẩn trọng hơn

Một khi đã có được quyền Root thì những kẻ tấn công có thể dễ dàng

  • Thao tác và điều khiển mọi tiến trình đang chạy trên hệ thống, không giới hạn user nào.

  • Thay đổi cài đặt mạng, mở cổng, chạy các chương trình bắt gói tin, chỉnh iptables, spoof MAC/IP, v.v.

  • Đôi khi là "khoe khoang" kỹ năng hack hoặc quyền kiểm soát hệ thống với bạn bè – vì root không chỉ là kỹ thuật, mà còn là phong cách.

Bối cảnh thực hiện

Chúng tân cần hiểu iptables sẽ được lưu trữ cấu hình thông qua các công cụ:

  • iptables-save: xuất toàn bộ cấu hình iptables hiện tại ra dạng text.

  • iptables-restore: đọc file cấu hình và thiết lập lại toàn bộ iptables.

Câu hỏi đặt ra là: liệu iptables có hỗ trợ việc thực thi mã tùy ý không?

Câu trả lời là gián tiếp có, thông qua mô-đun xtables-addons hoặc thao tác với các thư viện hoặc file đặc biệt trong /proc. Tuy nhiên, con đường phổ biến và đơn giản hơn chính là sử dụng iptables để ghi đè file root hoặc tạo điều kiện thực thi mã tùy ý bằng cách kết hợp với shell script.

Cách khai thác

Trong các chiến dịch được ghi nhận, các nhà phần tích đã tìm ra hai kỹ thuật khai thác chính để thực hiện leo thang đặc quyền lên root.

Kỹ thuật 1: Ghi đè /etc/passwd thông qua iptables-save

  • Như đã đề cập bên trên, iptables cho phép thêm các bình luận vào quy tắc thông qua module comment. Khi sử dụng iptables-save, các bình luận này được ghi lại trong đầu ra. Bằng cách chèn một dòng giả mạo vào bình luận và ghi đè lên /etc/passwd, ta có thể tạo một người dùng root với mật khẩu do mình đặt.

  • Ban đầu kẻ tấn công sẽ thực hiện tạo một mật khẩu mã hóa cho root. Kết quả thu được sẽ là một chuỗi mã hóa

  • Sau đó kẻ tấn công sẽ sử dụng chuỗi mã hóa vừa được tạo để triển khai dòng giả mạo cho root và thêm Rule với một Comment chứa dòng giả mạo trên.

  • Tiếp theo kẻ tấn công sẽ sử dụng sudo để ghi đè file /etc/passwd bằng iptables-save và cuối cùng có thể đăng nhập với người dùng root mới tạo.

Kỹ thuật 2: Thực thi lệnh tùy ý thông qua --modprobe

  • Khi iptables cần nạp một module kernel mà không có sẵn, nó sử dụng modprobe để tải module đó. Nếu có thể chỉ định chương trình modprobe tùy ý, ta có thể thực thi lệnh dưới quyền root.

  • Ban đầu kẻ tấn công sẽ thực hiện tạo một script độc hại trên hệ thống

  • Bước tiếp theo kẻ tấn công sẽ sử dụng iptables với --modprobe để trỏ đến script vừa được tạo như trên.

  • Và cuối cùng kẻ tấn công có thể thực thi Shell với quyền root

Khi đã hoàn tất quá trình leo thang đặc quyềm, kẻ tấn công sẽ thực hiện xóa bỏ dấu vết bằng cách xóa các rule iptables đã thêm cũng như xóa các file và script đã tạo trong quá trình khai thác.

Kết luận

Quyền sudo cho iptables tưởng chừng vô hại nhưng thực tế có thể bị khai thác dẫn tới chiếm quyền root trên hệ thống. Qua bài viết này, bạn đã thấy được:

  • Cách tìm hiểu và phân tích quyền hạn sudo.

  • Cách khai thác iptables để ghi file hoặc thực thi mã độc.

  • Kỹ thuật leo thang đặc quyền trong thực tế.

Chính vì thế các tổ chức và người dùng hãy luôn kiểm tra kỹ quyền sudo và cấu hình hệ thống thật cẩn thận để tránh trở thành nạn nhân của các khai thác như vậy.

Khuyến nghị

  1. Không cấp quyền sudo trực tiếp cho iptables

    • Xóa quyền sudo đối với iptables trừ khi thực sự cần thiết.

    • Nếu bắt buộc, hãy sử dụng các giải pháp thay thế như:

      • iptables wrapper script (một script an toàn chỉ cho phép vài rule cơ bản).

      • Sử dụng sudoers kèm option cụ thể để giới hạn lệnh.

  2. Cấu hình sudoers đúng cách

    • Dùng NOEXEC để chặn việc gọi shell từ chương trình:

      • Defaults!/sbin/iptables noexec
    • Hạn chế đường dẫn thực thi (secure_path):

      • Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin"
  3. Phân quyền hợp lý

    • Đừng cấp quyền ALL nếu không cần thiết.

    • Chia role: user quản trị mạng chỉ có quyền mạng, không có quyền hệ thống.

    • Dùng sudo theo nhóm thay vì user cá nhân.

  4. Cập nhật hệ điều hành và kernel thường xuyên

    • sudo apt update && sudo apt upgrade -y # Debian/Ubuntu

    • sudo dnf update # RHEL/Fedora

Tham khảo

  1. Shielder - A Journey From <code>sudo iptables</code> To Local Privilege Escalation

  2. Privilege Escalation on Unix – Lisandre

0
Subscribe to my newsletter

Read articles from Lưu Tuấn Anh directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lưu Tuấn Anh
Lưu Tuấn Anh