Để có được thành quả như ngày hôm nay, ngoài sự nỗ lực không ngừng nghỉ của các thành viên trong nhóm thì một phần không nhỏ đóng góp nên thành công này là nhờ sự quan tâm, chỉ bảo, giúp
Trang 1BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA: AN TOÀN THÔNG TIN
THỰC TẬP CƠ SỞ CHUYÊN NGHÀNH
AN TOÀN PHẦN MỀM
NGHIÊN CỨU CÁCH TẤN CÔNG DIRTY-COW
(DIRTY-COW ATTACK LAB)
………
Giảng viên hướng dẫn: PGS.TS Lương Thế Dũng
Sinh viên thực hiện: Huỳnh Hải Bằng Lớp: AT15H
Mã số sinh viên: AT150802 Nhóm: 13
Khóa: 2018-2023
TP Hồ Chí Minh, tháng 11 năm 2021
1 download by : skknchat@gmail.com
Trang 2BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TOÀN THÔNG TIN
THỰC TẬP CƠ SỞ CHUYÊN NGÀNH
AN TOÀN PHẦN MỀM NGHIÊN CỨU CÁCH TẤN CÔNG DIRTY-COW
(DIRTY-COW ATTACK LAB)
Nhận xét của giáo viên hướng dẫn:
Điểm báo cáo:
Xác nhận của giáo viên hướng dẫn:
Trang 3LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn PGS.TS Lương Thế Dũng–giảng viên trực tiếp hướng dẫn, chỉ bảo, tạo mọi điều kiện thuận lợi giúp đỡ chúng em trong quá trình thực hiện
đề tài
Để có được thành quả như ngày hôm nay, ngoài sự nỗ lực không ngừng nghỉ của các thành viên trong nhóm thì một phần không nhỏ đóng góp nên thành công này là nhờ sự quan tâm, chỉ bảo, giúp đỡ của các thầy cô, các anh chị khóa trên và bạn bè xung quanh
Tuy đã có rất nhiều cố gắng và sự nỗ lực của các thành viên để hoàn thiện đề tài,
nhưng chắc chắn đề tài “NGHIÊN CỨU CÁCH TẤN CÔNG DIRTY- COW
(DIRTY-COW ATTACK LAB)” của chúng em còn nhiều thiếu sót Chúng em rất mong nhận được
sự góp ý từ các thầy giáo để nhóm em có thể hoàn thiện tốt hơn các đề tài nghiên cứu sau
Chúng em xin chân thành cảm ơn!
3 download by : skknchat@gmail.com
Trang 4LỜI MỞ ĐẦU
Ngày nay, với xu hướng chuyển đổi số mạnh mẽ của các doanh nghiệp, công ty, tổ chức dẫn đến việc tạo ra những phần mềm quản lý, điều hành và làm việc cũng hết sức thiết yếu Bên cạnh đó, ảnh hưởng của đại dịch COVID-19 cũng đã thúc đẩy nhanh việc chuyển đổi số Để đảm bảo an toàn cho phần mềm khi tạo ra và vận hành tránh bị kẻ xấu tấn công gây thiệt hại nghiêm trọng Đó cũng là lý do để chúng em chọn chuyên đề Software Security và đặc biệt là nghiên cứu cách tấn công Dirty-Cow
Trang 5MỤC LỤC
LỜI CẢM ƠN 3
LỜI MỞ ĐẦU 4
MỤC LỤC 5
CHƯƠNG I: TỔNG QUAN VỀ DIRTY-COW LAB 6
1 Giới thiệu 6
CHƯƠNG II: TIẾN HÀNH THỰC HIỆN VÀ NGHIÊN CỨU CHUYÊN SÂU BÀI LAB THEO THỨ TỰ TỪNG TASK 7
1 Task 1: Modify a Dummy Read-Only File, Create a Dummy File 7
2 Set Up the Memory Mapping, write and madvise Thread 7
3 Task 2: Modify the Password File to Gain the Root Privilege 8
CHƯƠNG III: KẾT LUẬN 11
TÀI LIỆU THAM KHẢO 12
5 download by : skknchat@gmail.com
Trang 6CHƯƠNG I: TỔNG QUAN VỀ DIRTY-COW LAB
1 Giới thiệu
Lỗ hổng Dirty COW là một trường hợp đặc biệt của dạng lỗ hổng race condition Nó tồn tại trong nhân Linux từ tháng 9 năm 2007, được phát hiện và khai thác vào tháng 10 năm 2016 Lỗ hổng ảnh hưởng đến tất cả các hệ điều hành dựa trên Linux, bao gồm cả Android, và hậu quả của nó là rất nghiêm trọng: kẻ tấn công có thể giành được đặc quyền root bằng cách khai thác lỗ hổng Lỗ hổng bảo mật nằm trong mã copy-on-write bên trong nhân Linux Bằng cách khai thác lỗ hổng này, những kẻ tấn công có thể sửa đổi bất kỳ tệp được bảo vệ nào, mặc dù những tệp này chỉ có thể đọc đối với chúng
Trang 7CHƯƠNG II: TIẾN HÀNH THỰC HIỆN VÀ NGHIÊN CỨU CHUYÊN SÂU BÀI
LAB THEO THỨ TỰ TỪNG TASK
1 Task 1: Modify a Dummy Read-Only File, Create a Dummy File
Ở đây, chúng ta tạo một tệp chỉ đọc có tên ‘banghuynh’ trong thư mục gốc để chứng minh cuộc tấn công cho phép chúng ta ghi vào tệp chỉ đọc Có chuỗi ‘bh222222bh’ được lưu trữ trong tệp, như hình Nếu ta cố gắng ghi vào tệp này bằng lệnh echo, thì ta sẽ
bị từ chối vì đây là tệp chỉ đọc cho user thường
2 Set Up the Memory Mapping, write and madvise Thread
Chương trình đã cho được viết trong tệp cow_attack.c, trong đó có 3 luồng: main, write và madvise Chuỗi chính ánh xạ tệp vào bộ nhớ và tìm kiếm chuỗi mong muốn được thay thế - ở đây nó là ‘222222’ Sau đó, nó bắt đầu hai luồng - luồng ghi thay thế ‘222222’ bằng nội dung mong muốn - ‘******’ Nếu đây là luồng duy nhất đang chạy, thì nội dung
sẽ được ghi vào bản sao của bộ nhớ chứ không phải chính bộ nhớ được chia sẻ, do đó hoàn toàn không ảnh hưởng đến tệp bên dưới Do đó, chúng ta cần chạy chuỗi madvise cùng với luồng ghi, để bảng trang trỏ đến bộ nhớ được ánh xạ và luồng ghi sẽ ghi nội dung vào bộ nhớ này sao cho cùng một nội dung được phản ánh trong tệp Điều này có nghĩa là tệp chỉ đọc đã được sửa đổi Khi ta biên dịch và chạy chương trình và khi kiểm tra nội dung của tệp chỉ đọc ‘banghuynh’, ta thấy rằng tệp đã được sửa đổi thành công
7 download by : skknchat@gmail.com
Trang 8Bước quan trọng ở đây là chạy chuỗi madvise khi luồng ghi đang chạy để việc ghi được thực hiện trên bộ nhớ được ánh xạ chứ không phải bản sao riêng, vì chỉ bộ nhớ được ánh xạ mới được phản ánh trong tệp Để đạt được điều đó, chúng ta chạy các lệnh gọi hệ thống write và madvise trong một vòng lặp để chúng thực thi theo trình tự mong muốn ít nhất một lần Vì thế, ta có thể thực hiện được điều đó và cuộc tấn công Dirty COW của ta
đã thành công trên tệp chỉ đọc 'banghuynh'
Một tiêu chí quan trọng ở đây là sử dụng MAP_PRIVATE, vì điều này cho phép chúng tôi ghi vào tệp chỉ đọc bằng cách tạo một bản sao riêng
3 Task 2: Modify the Password File to Gain the Root Privilege
Chỉ cần ta có quyền đọc của tệp thì lỗ hổng Dirty COW sẽ được khai thác Ở đây, chúng ta sẽ cố gắng giành được quyền root bằng cách sửa đổi tệp passwd world-readable, nhưng root-writable Đầu tiên, chúng ta tạo một user không phải root có tên banghuynh
và kiểm tra mục nhập này trong tệp passwd Như hình sau:
Mục đích của chúng ta là biến user bình thường này trở thành user có quyền root bằng cách sửa đổi UID của họ - trường thứ ba trong mục nhập Bây giờ chúng tôi đang cố gắng sửa đổi tệp /etc/passwd, như đã thấy trong code Đầu tiên chúng ta cùng tìm nội dung sau: ‘banghuynh: x: 1001’ Đây là mục nhập tương ứng với dòng người dùng đã tạo của chúng tôi trong /etc/passwd
Trang 9Sau đó, ta thay thế dòng đó bằng ‘banghuynh: x: 0000’, làm cho nó trở thành người dùng root Code như hình sau:
Sau đó, chúng ta biên dịch và chạy chương trình Để thay đổi user banghuynh thành user root và làm cho UID là 0 và id nhóm vẫn giữ nguyên
9 download by : skknchat@gmail.com
Trang 10Để xác minh, chúng ta chuyển sang tài khoản user banghuynh và dấu # cho biết đó
là user root
Trang 11CHƯƠNG III: KẾT LUẬN
Bài lab này giúp sinh viên có được kinh nghiệm thực tế về cuộc tấn công Dirty-COW, hiểu hơn về dạng lỗ hổng Race-Condition bị khai thác bởi cuộc tấn công và hiểu sâu hơn về các vấn đề bảo mật race condition chung Trong lab này, sinh viên sẽ khai thác
lỗ hổng Dirty COW để có được đặc quyền root
11 download by : skknchat@gmail.com
Trang 12TÀI LIỆU THAM KHẢO
Du, W (n.d.) Dirty-COW Attack Lab Retrieved from
https://seedsecuritylabs.org/Labs_16.04/Software/Dirty_COW/
MeghaJakhotia (n.d.) Dirty COW Retrieved from
https://github.com/MeghaJakhotia/ComputerSecurityAttacks/tree/master/Dirty
%20COW