Lỗi này thường xuyên xảy ra do người dPng gửi một lượng lớn dữ liệu tới serverứng dụng, điEu này làm cho dữ liệu bC bắt phải đD lên các vC trí bộ nhớ liEn kE đó.. Đây là một lỗi lập trìn
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH KHOA CƠNG NGHỆ THƠNG TIN BÁO CÁO CUỐI KÌ MƠN AN TỒN MẠNG ĐỀ TÀI NGHIÊN CỨU VÀ KHAI THÁC CÁC CHALLENGE TRÊN ROOTME Lịnh Giảng viên hướng dẫn: ThS Đàm Minh Sinh viên thực hiện: Phan Tiến Sĩ N20DCAT048 N20DCAT028 Lớp: - Nguyễn Tuấn Kiệt – D20CQAT01-N TP Hồ Chí Minh, Tháng 11 năm 2023 Contents I, C ơs ởlí thuyếết Buffer overflow Nguyến nhân gây lỗỗi Cách khai thác .3 Cách khai thác .3 2, heap overflow .4 Nguyến nhân gây lỗỗi Cách khai thác II Thực nghiệm challenge trến rootme Twitter authentication ELF x86 - Stack buffer overflow basic ELF x86 - Stack buffer overflow basic 10 ELF x64 - Basic heap overflow .12 III Challenge bến 14 Stack1 14 Stack2 17 TÀI LIỆU THAM KHẢO 21 I, Cơ sở lí thuyết Buffer overflow Trong lĩnh vực an ninh máy tính lập trình, lỗi Buffer overflow hay tiếng Việt gọi lỗi tràn nhớ đệm/lỗi tràn đệm mà nhớ bC ghi đD nhiEu lFn ngăn xếp Lỗi thường xuyên xảy người dPng gửi lượng lớn liệu tới server ứng dụng, điEu làm cho liệu bC bắt phải đD lên vC trí nhớ liEn kE Đây lỗi lập trình gây ngoại lệ truy nhập nhớ máy tính chương trình bC kết thúc, người dPng cố tình phá hoại, lợi dụng lỗi để phá vỡ an ninh hệ thống.[1] Nguyên nhân gây lỗi Không thực đFy đủ, không kiểm tra độ dài liệu nhập vào Các ngôn ngữ lập trình C, thân đf ln có tiEm gn lỗ hổng mà hacker dễ dàng cơng vào Trong ngơn ngữ lập trình C ckn tồn hàm không kiểm tra buffer cấp phát stack có kích thước lớn liệu copy đệm hay không.[1] Cách khai thác Để gây tình trạng lỗi tràn đệm, hacker ghi đD biến đCa phương nmm gFn đệm stack, biến làm thay đổi hành vi hệ thống để tạo điEu kiện công cho kẻ xấu Ghi đD lên đCa cho trả vE khung stack Khi hàm trả vE, thực thi sp tiếp tục đCa cho mà hacker đf cho đCnh, thông thường đCa cho thuộc khu vực đệm chứa liệu người dPng.[1] Cách khai thác 2, heap overflow Hiện tượng lỗi tràn đệm xảy khu vực liệu Heap tượng tràn Heap, hacker khai thác lỗ hổng bmng kỹ thuật (khác với lỗi tràn stack) Bộ nhớ heap phận thường để chứa liệu chương trình, cấp phát tự động ứng dụng thời gian chạy Hacker thực công bmng cách phá liệu để làm ứng dụng ghi đD lên liệu nội (ví dụ trỏ danh sách liên kết) Nguyên nhân gây lỗi Nguyên nhân giống lỗi buffer overflow Heap overflow xảy Không thực đFy đủ, không kiểm tra độ dài liệu nhập vào Các ngơn ngữ lập trình C, thân đf ln có tiEm gn lỗ hổng mà hacker dễ dàng cơng vào Trong ngơn ngữ lập trình C ckn tồn hàm không kiểm tra buffer cấp phát stack có kích thước lớn liệu copy đệm hay không.[2] Cách khai thác Sau ghi tràn liệu heap ta tiến hành ghi đD liệu trỏ ĐiEu khiển để thực kiểm sốt luồng ứng dụng Có thể ghi đD shellcode trỏ đến hàm mf độc II Thực nghiệm challenge rootme Twitter authentication Sau tải challenge vE ta nhận file pcap Ta sp dPng wireshark để mở Ta cho thấy có dkng http bắt wireshark Bay ta sp tìm kiếm password Document continues Discover more from: An Toàn Mạng Học viện Cơng nghệ Bưu Viễn thơng 3 documents Go to course Do An Cuoi Ki - - Metaploits labs: + synfloo 20 An Toàn Mạng Bai tap An toan mang truyen thong An Toàn Mạng Chuyên đề đáp án https://www.studocu.com/vn/document/tr Triết học Mác Lê nin 10 TEST UNIT - tiếng anh Tài liệu XDD Correctional Administration Criminology 96 English - huhu 10 Led hiển thị 10 Sau nhấn vào ta thấy rmng ngồi thơng tin vE cookie ckn thơng tin authorization Ta sp tiến hành decode thử đoạn mf Đoạn mf có dấu hiẹu base64 Ta vào trang web base64decode.org để tiến hành decode Vậy ta đf có user password Password “password” Thành công ELF x86 - Stack buffer overflow basic Ta nhìn thử biện pháp bảo vệ cho có SRC bật Ta sp xem source code Theo đoạn code chương trình cung cấp cho khai thác bmng cách Đó ghi đD biến check = 0xdeadbeef Ngồi khơng ckn cách khác Chương trình cho cho phép ghi đD đến biến check mà Ta sp sử dụng đoạn payload để exploit Sau chạy chương trình ta đf kết nối server lên shell Ta sp đọc password Pass “1w4ntm0r3pr0np1s” Thành công ELF x86 - Stack buffer overflow basic Các chế bảo vệ đf tắt cho có NX bật Do khong thể sử dụng ret2shellcode Bài cho cFn ta ghi đD lên hàm func trỏ tới hàm shell ta sp lên shell Ta sp sử dụng payload để exploit chúng 10 Chúng ta đf lên shell Ta đf lấy password 11 Thành công Password “B33r1sSoG0oD4y0urBr4iN” ELF x64 - Basic heap overflow Bài nhiEu chế bảo vệ bật Ta hfy cPng xem code chương trình Sau xem qua code chương trình sp copy “/bin/ls -l” vào biến cmd Sau sp gộp chung với kí tự ta nhập bmng hàm strcat Sau thực thi bmng hàm system 12 checkArg cho khơng cho chúngta nhập kí tự đặc biệt Ta sp debug chúng Ta nhập kí tự vào Em vừa nhập /bin.sh vào Chúng ta thấy rmng trước cPng nhớ chương trình Bây ta sp ghi đD /bin/ls -l chương trình bmng kí tự ‘/.00’ Khi chương trình sp nhFm lẫn rmng biến khơng có Và sp thực thi /bin/sh ta nhập vào Ta sp lên shell 13 Đây payload để exploit Chuỗi đFu /bin/sh\x00 \x0 để đánh dấu kết thúc Chương trình sp nghĩ ta cho nhập /bin/sh mà 48 byte \x00 để ghi đD vào chuỗi mặc đCnh chương trình Ta đf lên shell Đây passwd III Challenge bên Stack1 ta sp thực hành hai phương pháp khai thác ret2shell overwrite bss 14 Source đơn giản cho ghi đD vào biến buf có độ dài 64 kí tự kết thúc Nhưng ta hfy nhìn xem Đó hàm gets Hàm sp gây lỗi khơng kiểm tra đFu vào Ta sp khai thác bmng hai kĩ thuật Ret2shellcode Với kĩ thuật này, ta sp ghi shellcode vào vPng nhớ có đFy đủ quyEn đọc, ghi thực thi Sau ta sp ghi đD return add bmng đCa cho shellcode Và sp lên shell 15 VPng chọn ghi vào stack Tại vPng có đFy đủ quyEn mà cFn Bây giừo ta sp chạy đoạn payload Chúng ta đf lên shell Overwrite bss Với kĩ thuật ta sp tìm kiếm vPng nhớ file thực thi Nếu phân vPng đủ quyEn m,à ta cFn ta sp ghi đD vào Sau sp ghi đD return add bmng đCa cho phân vPng 16 Cách gọi hàm 32 bit có khác so với 64 bit Trong payload hàm ta sp gọi gets_plt tham số đCa cho bss Sau ghi shellcode vào bss xong ta sp nhảy vào bss vào thực thi shellcode Và ta đf lên shell 17 Stack2 Với có biến buf chứa 64 kí tự Tuy nhiên có them điEu kiện check Nếu return đCac ho stack sp chương trình Bai fnayf ta sp sử dụng kĩ thuật để exploit Overwrite bss Cũng trước, Ta sp ghi đD shellcode lên vPng bss ghi đD return add bmng đCa cho vPng bss 18 Padding lFn 80 kí tự Sau ta sp gọi hàm gets_plt với tham số đCa cho vPng bss Sau ghi xong ta sp quay lại bss để thực thi Thực thi thành cơng Ret2libc Với kĩ thuật ta sp tìm kiếm đCa cho hàm system, Tham số /bin/sh sp lên shell 19 Ta sp vào gdb tìm thấy đCa cho system Đại cho chuỗi /bin/sh Và đại cho hàm main Payload ta sp sau: Padding + system + main + bin/sh /bin/sh sp la ftham số system Sau thực xong quay vE hàm main Đây payload 20 Vì chế độ bảo mật đf tắt Nên ta không cFn phải leak đCa cho mà làm trực tiếp máy Ta đf lên shell 21 TÀI LIỆU THAM KHẢO buffer-overflow-la-gi – Truy cập 8-11-2023 Link [https://bkhost.vn/blog/buffer-overflow-la-gi/] What is Buffer Overflow? — TryHackMe: Buffer Overflow Prep Walkthrough – Truy cập [8-11-2023] Link [https://ahoner.medium.com/what-is-bufferoverflow-tryhackme-buffer-overflow-prepwalkthrough-9e2629a6b5b9] 22 More from: An Toàn Mạng Học viện Cơng nghệ Bưu Viễn thơng 3 documents Go to course Do An Cuoi Ki - - Metaploits labs: + synfloo 20 An Toàn Mạng Bai tap An toan mang truyen thong An Toàn Mạng Recommended for you Chuyên đề đáp án https://www.studocu.com/vn/document/tr Triết học Mác Lê nin 10 TEST UNIT - tiếng anh Tài liệu XDD Correctional Administration Criminology 96 English - huhu 10 Led hiển thị 10