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,
iptables
cho 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ùngroot
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óaSau đó 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ằngiptables-save
và cuối cùng có thể đăng nhập với người dùngroot
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ụngmodprobe
để tải module đó. Nếu có thể chỉ định chương trìnhmodprobe
tù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
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ị
Không cấp quyền
sudo
trực tiếp choiptables
Xóa quyền
sudo
đối vớiiptables
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.
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
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.
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
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
