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

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,
iptablescho phép thêm các bình luận vào quy tắc thông qua modulecomment. Khi sử dụngiptables-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ùngrootvớ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
rootvà 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/passwdbằngiptables-savevà cuối cùng có thể đăng nhập với người dùngrootmới tạo.

Kỹ thuật 2: Thực thi lệnh tùy ý thông qua --modprobe
Khi
iptablescần nạp một module kernel mà không có sẵn, nó sử dụngmodprobeđể tải module đó. Nếu có thể chỉ định chương trìnhmodprobetùy ý, ta có thể thực thi lệnh dưới quyềnroot.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
iptablesvớ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ị
Không cấp quyền
sudotrực tiếp choiptablesXóa quyền
sudođối vớiiptablestrừ 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
sudoerskèm option cụ thể để giới hạn lệnh.
Cấu hình
sudoersđúng cáchDù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"
Phân quyền hợp lý
Đừng cấp quyền
ALLnế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.
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






