ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Linux capability Exploration Lab Nhóm 09 GV Trần Tuấn Dũng Lớp NT113 M21 ATCL Thành viên 19520211 Trần Như Phát 19522164 Nguyễn Trọng Tâm 19522510 Lê Triệu vĩ 18520639 Nguyễn Văn Dũng Câu hỏi 1 Vui lòng biến các chương trình Set UID sau đây thành các chương trình không phải Set UID, mà không ảnh hưởng đến hành vi của các chương trình này • usrbinpasswd Câu hỏi 2 Bạn đã thấy những gì chúng ta có thể làm với khả năng thô ròng Ch.
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Linux capability Exploration Lab
Nhóm: 09
GV: Trần Tuấn Dũng Lớp:NT113.M21.ATCL
Thành viên:
19520211_Trần Như Phát 19522164_Nguyễn Trọng Tâm 19522510_Lê Triệu vĩ
18520639_Nguyễn Văn Dũng
Trang 2Câu hỏi 1: Vui lòng biến các chương trình Set-UID sau đây thành các chương trình không phải Set-UID, mà không ảnh hưởng đến hành vi của các chương trình này
• /usr/bin/passwd
Câu hỏi 2: Bạn đã thấy những gì chúng ta có thể làm với khả năng thô ròng Chúng ta muốn bạn làm quen với một số khả năng khác Đối với mỗi khả năng sau đây, hãy làm như sau: (1) giải thích mục đích của khả năng này; (2) tìm một chương trình để chứng minh hiệu quả của các khả năng này (bạn có thể chạy ứng dụng có và không có khả năng và giải thích sự khác biệt trong kết quả) Bạn cũng có thể viết các ứng dụng của riêng bạn nếu bạn thích, miễn là chúng có thể chứng minh hiệu quả của khả năng Dưới đây là danh sách các khả năng mà bạn cần làm việc (đọc bao gồm / linux / capability.h để tìm hiểu về các khả năng)
• Cap_dac_read_search
• Cap_dac_override
• Cap_chown
• Cap_setuid
• Cap_kill
• Cap_net_raw
Tạo chương trình riêng:
Biên dịch và đặt như chương trình set-uid:
Trang 3• Cap_dac_read_search: Bỏ qua kiểm tra quyền đọc tệp và đọc thư mục và thực hiện kiểm tra quyền Sau khi bật khả năng này, nó có thể chạy bất kỳ chương trình nào mà không cần sự cho phép đọc
- Để kiểm tra lệnh này, ta thay đổi captest.c thành 000, khi chúng ta chạy nó như người dùng bình thường, nó hiển thị quyền bị từ chối Sau đó, ta setcap cap_dac_read_search
để đọc lệnh 'mèo', sau đó chạy lại, đáng ngạc nhiên, chúng ta có thể đọc nội dung của chương trình Do đó, cap_dac_read_search thực sự bỏ qua quyền đọc, nó có thể chạy bất
kỳ chương trình nào mà không có sự cho phép đọc
• Cap_dac_override: Bỏ qua việc đọc, ghi tệp và thực hiện kiểm tra quyền (DAC là viết tắt của "kiểm soát truy cập tùy ý") Trong ví dụ đầu tiên, ta đang cố gắng đọc nội dung của captest.c
Trang 4• Cap_chown: Thực hiện các thay đổi tùy ý đối với giao diện người dùng và GID tệp
Chúng ta loại bỏ khả năng được thiết lập bởi thử nghiệm trước đó, sau đó có ý định thay đổi chủ
sở hữu của captest tệp.c từ gốc sang hạt giống, hóa ra Hoạt động không được phép, sau đó chúng
ta đặt khả năng cat_chown cho lệnh 'chown',
Làm lệnh chown một lần nữa, nó thay đổi thành công chủ sở hữu của tệp
• Cap_setuid: tạo UID giả mạo khi truyền thông tin đăng nhập ổ cắm thô
ng qua ổ cắm tên miền UNIX
Tạo một sidcontent tên tệp nội dung câu sẽ hiển thị
Trang 5Sau đó tạo chương trình sẽ giả mạo uid khi đi qua ổ cắm Chương trình có tên sid.c
Đặt chương trình nội dung sidcontent không có quyền đọc cho người khác, sau đó làm cat sidcontent, chúng ta có thể thấy từ bên dưới hình ảnh, nó cho thấy sự cho phép bị từ chối Sau đó, chúng ta đi biên soạn chương trình sid.c và chạy nó, nó cũng nói rằng sự cho phép bị từ chối
Sau khi chúng ta setcap cap_setuid để /sid, sau đó chạy nó, nó chạy thành công chương trình bằng cách hiển thị nội dung trong tệp sidcontent
• Cap_kill: Bỏ qua kiểm tra quyền để gửi tín hiệu Trong nhiệm vụ này, ta chạy đầu trên thiết bị đầu cuối khác trong quyền gốc, và sau đó sử dụng hạt giống cố gắng để giết quá
Trang 6trình, nhưng như chúng ta đã quan sát trong ảnh chụp màn hình sau đây, nó cho thấy hoạt động không được phép, sau đó chúng ta setcap cap_kill khả năng để giết, và chạy lại, cuối cùng nó đã giết thành công quá trình
• Cap_net_raw: Cho phép người dùng bình thường sử dụng ổ cắm RAW và PACKET Trong ví dụ này, trước tiên chúng ta kiểm tra xem ping có bất kỳ khả năng nào không,
nó cho thấy nó có một sau đó chúng ta loại bỏ nó và chạy ping, nó hiển thị quyền bị từ chối, sau đó chúng ta setcap cap_net_raw ping và chạy lại, nó hoạt động!
Câu hỏi 3:
Biên soạn use_cap.c:
Gán khả năng cap_dac_read_search cho tệp thực thi " /use_cap" Và đăng nhập như người
dùng bình thường, chạy chương trình
Trang 7Giải thích kết quả:
So sánh với mã và kết quả, chương trình không thể mở tệp bóng tối, nó đến (b) mở thất bại, sau
đó sau khi chúng ta bật nó, nó có thể có được khả năng và nó cho thấy (c) đang mở thành công, nếu chúng ta bỏ khả năng, (d) mở thất bại và chúng ta không thể bật lại sau khi bỏ khả năng, mặc
dù, trong mã, ngay cả khi chúng ta đã cố gắng để cho phép khả năng của nó một lần nữa, (e) vẫn
mở thất bại
Câu hỏi 4: Nếu chúng ta muốn tự động điều chỉnh số lượng đặc quyền trong kiểm soát
truy cập dựa trên ACL, chúng ta nên làm gì? So với khả năng, kiểm soát truy cập nào thuận tiện hơn để làm như vậy?
Trả lời: ACL là một danh sách các mục kiểm soát truy cập, cho phép truy cập cho người dùng hoặc nhóm trên một tệp hoặc thư mục nhất định Trong ACL, nếu chúng ta muốn cấp quyền cho người dùng / nhóm khác, chúng ta luôn cần đăng nhập dưới dạng root hoặc superuser và sử dụng lệnh "chmod" để cấp phép lớn trên tệp cho người dùng mục tiêu Mặc
dù bằng cách sử dụng các khả năng, chúng ta có thể bỏ qua một số kiểm tra quyền, ngay
cả khi chúng ta không được phép truy cập tệp này Nó thuận tiện hơn cho người dùng bình thường vì bạn không cần phải xin phép truy cập từ gốc, nhưng nó nguy hiểm hơn
Câu hỏi 5: Sau khi một chương trình (chạy như người dùng bình thường) vô hiệu hóa khả
năng A, nó bị xâm phạm bởi một cuộc tấn công tràn bộ đệm, kẻ tấn công đã tiêm thành công mã độc của mình vào không gian ngăn xếp của chương trình này và bắt đầu chạy nó
Kẻ tấn công này có thể sử dụng khả năng A không? Điều gì sẽ xảy ra nếu quá trình xóa khả năng, kẻ tấn công có thể sử dụng khả năng này không?
Trang 8Trả lời: Có Sau khi người dùng bình thường vô hiệu hóa khả năng A, kẻ tấn công vẫn có thể sử dụng khả năng A bằng cách bật nó trong mã độc của mình, nhưng nếu quá trình xóa khả năng, kẻ tấn công không thể sử dụng khả năng đó
Câu hỏi 6: Giống như câu hỏi trước, ngoại trừ việc thay thế cuộc tấn công tràn bộ đệm bằng cuộc tấn công điều kiện chủng tộc, Cụ thể là, nếu kẻ tấn công khai thác điều kiện chủng tộc trong chương trình này, anh ta có thể sử dụng khả năng A nếu khả năng bị vô hiệu hóa không? Nếu khả năng bị xóa thì sao?
Trả lời: Nếu kẻ tấn công khai thác điều kiện chủng tộc trong chương trình này, anh ta vẫn
có thể sử dụng khả năng A bất kể khả năng bị vô hiệu hóa hoặc xóa Đó là bởi vì mã độc
sẽ luôn chạy trước khi tuyên bố khả năng trong cuộc tấn công điều kiện chủng tộc