Nếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu nàyNếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu nàyNếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu nàyNếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu nàyNếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu này
1 Trình bày giai đoạn cơng phổ biến hacker Kiểm thử xâm nhập gì? Tại cần kiểm thử xâm nhập? Nêu số mục tiêu cần kiểm thử cho hoạt động kiểm thử xâm nhập Cần ý lập kế hoạch kiểm thử xâm nhập? Mô tả số loại kiểm thử xâm nhập Mô tả giai đoạn hoạt động kiểm thử xâm nhập Mơ tả cơng cụ em biết trợ giúp giai đoạn tương ứng hoạt động kiểm thử xâm nhập Tấn công vào yếu tố người (social engineering) gì? Tại kỹ thuật lại hiệu thực tế? Mô tả mục tiêu công vào yếu tố người Mô tả giai đoạn công dạng Phân loại mô tả số loại công vào yếu tố người 10 Trình bày phương pháp cơng cụ đối phó với cơng vào yếu tố người 11 Xâm nhập vật lý gì? Trình bày giai đoạn công vật lý 12 Mô tả số kỹ thuật xâm nhập vật lý phổ biến mà em học Ví dụ thu thập thơng tin, cách vượt qua biện pháp kiểm soát truy cập, biện pháp an ninh, 13 Kỹ thuật Fuzzing gì? Tại kỹ thuật lại quan trọng? Có kiểu fuzzing nào? 14 Dumb fuzzing gì? Smart fuzzing gì? Chúng dùng trường hợp nào? 15 Mô tả cách thức đánh giá fuzzing dựa mức độ bao phủ mã lệnh (code coverage) 16 Mô tả phân vùng nhớ process, tác dụng phân vùng 17 Stack frame gì? Vẽ stack frame hàm main (ví dụ stack1) 18 Con trỏ trở (old eip) lưu stack gì? 19 Mơ tả tác dụng ghi: esp, ebp, eip 20 Lỗi tràn đệm gì? 21 a) Vẽ sơ đồ trạng thái stack gọi hàm foo1(), vị trí ebp, esp b) Khi hàm main() gọi foo1(), truyền tham số cho hàm foo1() cách c) Làm cách để báo cho foo1() biết vị trí lệnh cần quay lại để thực tiếp hàm main()? d) Địa biến cục stack hàm foo1() tính cách nào? 22 Nhập chuỗi để in chuỗi "You win!" hình cho đoạn code Vẽ trạng thái ngăn xếp cần đạt 23 Các option lệnh dịch có ý nghĩa $ gcc -fno-stack-protector -ggdb /stack.c -o stack 24 Quy ước kết thúc nhỏ (little endian) xử lý Intel X86 hiểu nào? 25 Thư viện ltrace dùng để làm gì? 26 Hãy mô tả số chế bảo vệ nhớ hệ điều hành 27 Làm cách để viết mã máy chèn vào chương trình thực thi? Mã máy chèn vào nằm phân vùng nhớ chương trình? 28 Nêu số vấn đề gặp phải tạo chèn bytecode vào chương trình thực thi (vd NULL byte, IDS, chế bảo vệ nhớ, sinh bytecode cho tảng khác )? Làm cách để xử lý nó? 29 NOP sled gì? Tại cần dùng NOP sled? Bài Làm Câu Trình bày giai đoạn công phổ biến hacker - - - - - Bước 1: Lựa chọn mục tiêu: + Động hận thù vui thích hay lợi nhuận + Khơng có quy tắc bản, khơng có chuyển giao, đội trắng khơng biết trước công Bước 2: Hệ thống trung gian: + Tin tặc bắt đầu công từ hệ thống khác, khó bị theo dõi + Có nhiều hệ thống trung gian nạn nhân tin tặc + Các hệ thống trung gian thường nạn nhân tin tặc Bước 3: Tin tặc tiến hành bước kiểm thử xâm nhập: + Quét thụ động + Quét chủ động + Liệt kê khu vực công + Lựa chọn hệ thống mục tiêu + Thăm dò + Khai thác lỗ hổng chưa phát + Nâng cao đặc quyền Bước 4: Duy trì đăng nhập: + Bao gồm việc tải cài đặt ứng dụng rootkit, backdoor, trojan, để lấy quyền truy cập nhanh chóng sau Bước 5: Xóa dấu vết + Xóa log kiện xảy + Ẩn tệp tải lên + Ẩn tiến trình hoạt động cho phép trì đăng nhập + Vơ hiệu hóa tin gửi đến hệ thống bảo mật log hệ thống để ẩn tiến trình nguy hiểm Bước 6: Củng cố hệ thống: + Sau lấy đặc quyền sở hữu hệ thống, tin tặc sửa lỗ bảo mật hệ thống để không kẻ công khác sử dụng hệ thống cho mục đích khác Kiểm thử xâm nhập gì? Tại cần kiểm thử xâm nhập? Kiểm thử xâm nhập trình xác định lỗ hổng bảo mật hệ thống đánh giá mối nguy hại cho hệ thống thông qua việc sử dụng kĩ thuật công gây nguy hại cho hệ thống Hiểu đơn giản, kiểm thử xâm nhập tự công vào hệ thống để phát lỗ hổng dị tìm dầu vết hệ thống bị xâm nhập Mục tiêu: - Đột nhập vào hệ thống nhảy từ hệ thống sang hệ thống khác, đến chiếm quyền điều khiển Kết quả: - Chỉ cho người dùng mà kẻ cơng thực với tình trạng bảo mật Nội dung chính: - Đánh giá sở hạ tầng: đánh giá cấu trúc mạng, cá biện pháp tuân thủ tại, khả thích ứng - Đánh giá hệ thống máy chủ: Máy chủ Window/Linux theo phiên bản, cập nhật, cấu hình vá lỗi - Đánh gái ứng dụng web: + Đánh giá dựa công cụ chuyên dụng để công thử nghiệm + Đánh giá từ bên cách kiểm tra mã nguồn vấn đề xác thực, cấp quyền Các loại kiểm thử: - Kiểm thử hộp trắng - Kiểm thử hộp đen - Kiểm thử hộp xám Các bước thực hiện: - Tạo – nhóm - Thiết lập quy tắc - Quét thụ động - Quét chủ động - Liệt kê khu vực công - Thăm - Lựa chọn mục tiêu - Khai thác lỗ hổng chưa phát - Nâng quyền - Tài liệu báo cáo Tại cần kiểm thử xâm nhập - Đảm bảo liệu quan trọng không bị truy nhập trái phép người dùng khơng có quyền - Xác định mối đe dọa hệ thống tổ chức - Cung cấp đánh giá kỹ lưỡng tồn diện an ninh bao gồm sách, thủ tục, thiết kế thực - Cung cấp phương pháp tồn diện để ngăn chặn công - Đem lại hiệu cao mặt tài (chi tiêu cho kiểm thử xâm nhập thấp nhiều so với rủi ro hệ thống bị công) Câu Nêu số mục tiêu cần kiểm thử cho hoạt động kiểm thử xâm nhập Cần ý lập kế hoạch kiểm thử xâm nhập? Mục tiêu cần kiểm thử cho hoạt động kiểm thử xâm nhập: - Nhân viên công ty - Các thiết bị mạng - Phần mềm hệ điều hành - Các ứng dụng web Chú ý: - Phạm vi kiểm thử: + Kiểm thử toàn hệ thống hay phần hệ thống + Thấy loại hệ thống phạm vi kiểm thử để đánh giá mức - Xác định địa điểm phạm vi kiểm thử: + Để tính tốn khoảng thời gian mức độ cần thiết để thực kiểm thử an ninh vật lý + Một số trang web cần ý đến nơi đặt trung tâm liệu tập trung vào người dùng - Tổ chức đội kiểm thử xâm nhập: + Không cố định thường gồm thành phần sau: Trưởng nhóm Chuyên gia bảo mật vật lý Chuyên gia bảo mật công yếu tố người công yếu tố người Chuyên gia bảo mật không dây Chuyên gia bảo mật mạng Chuyên gia hệ điều hành - Việc phân chia ca kiểm thử: + Việc phân chia ca kiểm thử cần thiết + Có thể chia thành giai đoạn: Ngoại vi Nội Đảm bảo chất lượng báo cáo + Hoặc phân chia nhỏ thành mục nhỏ hơn: Tìm kiếm thơng tin Khai thác yếu tố người - Quét cổng Thỏa thuận trước thực kiểm thử: + Mô tả thống công việc tiến hành hai bên cách rõ ràng + Cần xác nhận thành viên đội kiểm thử xâm nhập trường hợp cần thiết Câu Mô tả số loại kiểm thử xâm nhập - - - Kiểm thử hộp trắng: + Nhóm kiểm thử biết sơ đồ mạng, hồ sơ tài sản thơng tin hữu ích khác + Các doanh nghiệp biết mối đe dọa đến từ nhân viên, đối tác sử dụng kiểm thử hộp trắng Vì người có kiến thức hệ thống mạng, trang web Họ đăng nhập vào hệ thống Biết nhân viên làm việc tổ chức, cấu quản lý, ứng dụng bên Các thông tin đủ để khởi tạo công nhắm vào nhiều mục tiêu Kiểm thử hộp đen: + Nhóm kiểm thử hồn tồn khơng biết thơng tin hệ thống + Chuyên gia đặt vào vai tin tặc cố gắng công hệ thống + Hoặc họ cấp cho dải IP để hạn chế tổn thất máy bên mạng + Loại kiểm thử mơ tả xác mà tin tặc làm Kiểm thử hộp xám: + Là loại kiểm thử nằm kiểm thử hộp đen kiểm thử hộp trắng + Đây dạng kiểm thử mà nhóm kiểm thử cung cấp thông tin hạn chế thực cần thiết + Vì tiến hành công việc họ cần cung cấp nhiều thông tin truy cập để đẩy nhanh trình + Phương thức dùng để tối ưu hóa tính thực mà đảm bảo nguồn ngân sách hợp lý Câu Mô tả giai đoạn hoạt động kiểm thử xâm nhập Giai đoạn trước công - Đề cập đến chế độ công mục tiêu cần đạt - Xác định vị trí, thu thập xác định thơng tin mục tiêu - Tìm kiếm nhiều thơng tin mục tiêu tốt việc thu thập nhiều thông tin theo nhiều cách khác giúp xây dựng kế hoạch công Giai đoạn công - Kiểm tra vùng ngoài: Kiểm tra an ninh vùng - Thu thập mục tiêu: + Thu thập mục tiêu cần phải tập hợp hoạt động thực tester với đối tượng máy tính bị nghi ngờ đến nhiều thử thách xâm nhập chẳng hạn quét lỗ hổng đánh giá an ninh - Leo thang đặc quyền + Một dành mục tiêu, tester cố gắng khai thác hệ thống truy cập nguồn tài nguyên bảo vệ Tận dụng lợi sách bảo mật tận dụng lợi email code web khơng an tồn để thu thập thơng tin dẫn tới leo thang đặc quyền Sử dụng ký thuật brute force để đạt đặc quyền (crack mật khẩu) Sử dụng trojan phân tích giao thức Sử dụng thơng tin thu thập thông qua ký thuật ký thuật giao tiếp để truy cập trái phép vào nguồn tài nguyên đặc quyền - Thực thi, cấy ghép xem lại + Thỏa hiệp hệ thống Có thỏa hiệp hệ thống cách thực thi đoạn code + Thâm nhập hệ thống Khám phá mức độ lỗi an ninh + Thực khai thác Tận dụng lỗ hổng xác định hệ thống mục tiêu Giai đoạn sau công - Đây giai đoạn quan trọng, có trách nhiệm khơi phục lại hệ thống trước + Loại bỏ tất tập tin tải lên hệ thống + Làm tất mục đăng ký loại bỏ lỗ hổng + Loại bỏ tất công cụ khai thác từ hệ thống thử nghiệm + Khôi phục lại mạng lưới thử nghiệm cách loại bỏ chia sẻ kết nối + Phân tích kết trình bày với tổ chức Câu Mô tả công cụ em biết trợ giúp giai đoạn tương ứng hoạt động kiểm thử xâm nhập Giai đoạn trước công: công cụ Acunetix - Acunetix phần mềm quét lỗ hổng website hiệu gồm SQL Injection, Cross Site Scripting nhiều lỗ hổng khác Trong đó, SQL Injection kỹ thuật cơng sửa đổi tồn truy vấn SQL để truy cập liệu hệ thống CSDL website Còn Cross-site scripting hay XSS kỹ thuật cơng cho phép hacker thực kịch độc hại trình duyệt mà người dùng truy cập - Acunetix WVS quét lỗ hổng website phục vụ tốt cho việc thu thập thông tin từ mục tiêu Giai đoạn công: Sử dụng công cụ metasploit - Metasploit framework cung cấp môi trường để pentest hệ thống phần mềm, mạng Metasploit = Meta + Exploit, meta thể trừu tượng hóa => framework thiết kế cho thao tác với exploit Metasploit lưu trữ database cho exploit public có, cung cấp sẵn cơng cụ để triển khai exploit Nhờ bạn sử dụng metasploit để tạo payload pentest hệ thống Câu Tấn công vào yếu tố người (social engineering) gì? Tại kỹ thuật lại hiệu thực tế? Khái niệm: - Là phương pháp khiến thực việc mà thông thường họ không làm cách tạo mối quan hệ tin cậy với họ, chẳng hạn cho số điện thoại cá nhân hay thơng tin bí mật - Đây công mạnh mẽ tội phạm mạng nhằm truy nhập tài sản thông tin người dùng Cách thức: Khai thác vào tâm lý người SEA khiến cho người dùng nhận thức sai lầm để chấp nhận làm việc ngoại lệ, với lý đáng, từ phá vỡ sách an tồn Một số khía cạnh tâm lý thường kẻ công sử dụng dể khai thác là: - Tham lam: người dùng nhận mộ lời hứa nhận thứ giá trị làm theo điều - Đồng cảm: người dùng nhận lời kêu gọi giúp đỡ từ kẻ mạo danh người quen - Tò mò: Người dùng nhận thơng báo muốn biết, đọc xem - Mong muốn: Hầu hết người dạy thân thiện lòng tốt bụng từ nhỏ đem thái độ đến nơi làm việc - Ủy quyền, tranh xung đột: Nếu kẻ cơng mạo danh người có thẩm quyền khơng thể đụng chạm tới, nạn nhân thường dễ dàng làm theo yêu cầu để tránh xung đột Kỹ thuật cơng có hiệu thực tế vì: - Khơng có phần mêm hay phần cứng chống lại cơng Social Engineering Chính sách bảo mật mạnh liên kết yếu người yếu tố nhạy cảm Rất khó để phát Social Engineering Khơng có phương pháp chắn để đảm bảo an ninh cách đầy đủ từ công Social Engineering - - - + Là khu vực ngồi có hệ thống an ninh, số cửa khơng có khóa + Khu vực bị người để ý + Sử dụng lối vào làm bàn đạp, cần đồ dùng như, bao thuốc bật lửa, thẻ tên giả + Nếu cửa khơng có khóa, giả vờ hút thuốc bên vào cửa với thuốc bên bên có camera ghi lại Điểm kiểm thử có người giám sát: + Ở số khu vực có lễ tân bảo vệ + Đôi khách hàng cần trình bày cmnd bàn tiếp tân, giải thích đến làm gặp Sau nhận thẻ vào Có thể nói chuyện với phận nhân để xếp hẹn làm giả thẻ vào + Thời gian xâm nhập tốt lúc ăn trưa, nhiều người qua lại dễ dàng qua mặt nhân viên bảo vệ Vượt qua cửa bị khóa: + Có thể giả nói chuyện điện thoại để đánh lạc hướng camera lúc chờ đợi người phịng khóa Khi có người nhẹ nhàng giữu cửa lại qua + Một cách khác cửa khơng đóng mở liên tục người bình thường không từ chối người vật nặng cồng kềnh Khi người trước giữ cửa cho người kiểm thử Người kiểm thử bên + Người kiểm thử cần tìm đường đến nơi cần mà khơng để bị phát + Một phịng hội nghị tốt thường có cổng kết nối mạng Ngồi sử dụng kĩ thuật USB Trojan để tạo kết nối truy cập từ xa + Một cách khác tận dụng ăn trưa có nhiều phịng trống Từ truy cập vào mạng nội Câu 13 Kỹ thuật Fuzzing gì? Tại kỹ thuật lại quan trọng? Có kiểu fuzzing nào? - - Fuzzing kĩ thuật phát lỗi phần mềm phương pháp tự động bán tự động sử dụng phương pháp lặp lại thao tác sinh liệu sau chuyển cho hệ thống xử lý Cung cấp liệu đầu vào cho chương trình sau theo dõi ghi lại lỗi, kết trả ứng dụng trình xử lý chương trình - - - Là dạng kiểm thử hộp đen, không yêu cầu truy cập mã nguồn Ưu điểm: + Giúp tìm lỗi nghiêm trọng vấn đề bảo mật khiếm khuyết chương trình + Hiệu cao so với phương pháp kiểm thử khác + Cải thiện vấn đề an ninh kiểm tra phần mềm + Lỗi tìm thường lỗi quan trọng hay tin tặc khai thác + Tìm lỗi khơng tìm thấy kiểm thử bị hạn chế thời gian nguồn lực Nhược điểm: + Không thể xử lý hết mối đe dọa an ninh tổng thể + Không hiệu với lỗi gây treo chương trình, hiệu số tình cụ thể + Fuzzing không cung cấp nhiều kiến thức hoạt động nội + Với chương trình lớn có đầu vào phức tạp cần thời gian tạo Fuzzing đủ thơng minh Kĩ thuật quan trọng vì: + Chúng ta kiểm tra hết tất trường hợp tay + Thời gian kiểm thử lớn làm thủ công Các loại fuzzing gồm có loại: + Fuzzing biết giao thức (Smart fuzzing) : Biết thức làm việc chương trình + Fuzzing chưa biết giao thức (Dumb fuzzing): Chưa biết thức làm việc chương trình Câu 14 Dumb fuzzing gì? Smart fuzzing gì? Chúng dùng trường hợp nào? - Smart fuzzing + Đã biết kiến trúc hệ thống, cách thức làm việc chương trình + Các bước thực Xác định mục tiêu: Các mục tiêu có nguy cao, ứng dụng chạy mức cao, ứng dụng xử lý thơng tin có giá trị, thơng tin cá nhân Xác định đầu vào: Có nhiều hình thức phổ biến như: biến mơi trường, định dạng file, giao thức mạng, ứng dụng web Tạo liệu: o Tạo liệu đầu vào thỏa mãn điều kiện đầu vào o Dữ liệu nhiều dạng file văn bản, nhị phân o Hiệu phụ thuộc vào: Độ bao phủ đầu vào chất lượng liệu kiểm thử - Thực test sử dụng fuzz: o Đối tượng tiếp cận Fuzzing gồm: Các kiểu số, kí tự, siêu liệu, chuỗi nhị phân, giao thức mạng o Cách tiếp cận: Sinh liệu đầu vào nguy hiểm ứng với loại đầu vào Chèn thêm mã thực thi vào mã chương trình Phân tích hoạt động chương trình lúc thực thi Giám sát fuzz: o Fuzzer cần xác định định nghĩa lỗi phát o Có ý nghĩa quan trọng việc phân tích báo cáo lỗi o Để báo cáo lỗi cần hiểu rõ quy trình hoạt động xử lý tích hợp vào kiện phân loại lỗi tự động Xác định khả khai thác: o Từ có danh sách lỗi gửi lại cho người phát triển, để họ sửa chữa o Cần kiểm tra cho dù lỗi có khả khai thác nhằm tìm hiểu tác động đến người dùng + Sử dụng trường hợp: Đã biết hệ thống Có nguồn lực thời gian, cần kiểm thử nhanh Dump fuzzing + Xây dựng fuzzer cho giao thức mở vấn đề lớn + Cần đối phó với tình mà ứng dụng sử dụng giao thức mà khơng có quyền truy cập + Cần dịch ngược theo dỗi thông tin vào, cơng cụ mạng hữu ích + Q trình tái tạo trao đổi hợp lệ quan sát + Sau fuzzer sửa đổi trường biết server trả yêu cầu không hợp lệ, số trường chiều dài nhúng + Fuzzer cần cập nhập lại giá trị trường liên quan, điều làm fuzzer phức tạp nhiên không bị từ chối bới máy chủ vi phạm giao thức Câu 15 Mô tả cách thức đánh giá fuzzing dựa mức độ bao phủ mã lệnh (code coverage) Một lỗi xảy thực thay đổi byte đầu vào file 248.000 byte Khả tìm thấy lỗi nhỏ test fuzzing theo thông thường, Thay đổi byte ngẫu nhiên tốn nhiều thời gian để tìm lỗi Code coverage cách tối ưu để tìm lỗi - Code coverage: số liệu dùng để đánh giá code thực thi - Số liệu thu nhiều cách - Một số dạng coverage: + Dịng: Đánh giá có dòng code thực thi + Nhánh: Đã có nhánh mã đánh giá (nhảy có điều kiện) + Đường: Đã có đường thực Ví dụ If(a>2) a =2; If(b>2) b =2; Dòng: if(a>2) a =2; Nhánh (a>2, b> 2), (a EBP cũ (old EBP) -> biến cục */ Trong stack1.c, khơng có tham số nên khơng phải push tham số vào stack */ Câu 18 Con trỏ trở (old eip) lưu stack gì? Con trỏ lưu lại vị trí lệnh cũ hàm trước thực lời gọi hàm Tác dụng: Để thực trở hàm cha sau thực xong hàm Câu 19 Mô tả tác dụng ghi: esp, ebp, eip Thanh ghi ebp (extended base poiter) ghi khung ngăn xếp tiến trình (địa cao hơn) Dùng để theo dõi biến cục tham số Thanh ghi esp (extended stack pointer) trỏ đến đỉnh ngăn xếp (địa thấp hơn) Giá trị ghi thay đổi có đối tượng push pop từ stack Thanh ghi eip (extended instruction pointer) ghi quan trọng Chỉ tới vùng nhớ lệnh CPU Eip tự động tăng sau chu kỳ lệnh Câu 20 Lỗi tràn đệm gì? Bộ đệm sử dụng để lưu trữ liệu Chúng ta quan tâm tới đệm dùng để lưu trữ chuỗi liệu Bộ đệm khơng có chế ngăn chặn lưu trữ thông tin nhiều không gian lưu trữ Tràn đệm lỗi xảy liệu xử lý có kích cỡ vượt q giới hạn vùng nhớ chứa Nếu phía sau vùng chứa lưu trữ liệu quan trọng tới trình thực thi chương trình gây hư hỏng liệu Tùy thuộc vào cách xử lý chương trình mà tận dụng lỗi phần mềm để điều khiển chương trình theo mong muốn Điểm quan trọng tận dụng lỗi tràn đệm: - Dữ liệu quan trọng phải nằm sau liệu bị tràn - Phần liệu tràn phải tràn tới liệu quan trọng - Sau thay đổi liệu phải có ý nghĩa chương trình Ví dụ: char str1[10]; - lại chạy lệnh: - strcpy(str1, “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”) không đủ không gian lưu trữ biến str gây tràn liệu Câu 21 a) Vẽ sơ đồ trạng thái stack gọi hàm foo1(), vị trí ebp, esp Giả sử hàm foo1 có biến cục (x1, x2 x3 kiểu số nguyên) ta có: b) Khi hàm main () gọi foo1(), truyền tham số cho hàm foo1() cách Nó push tham số b vào stack trước gọi hàm foo1() c) Làm cách để báo cho foo1() biết vị trí lệnh cần quay lại để thực tiếp hàm main ()? Giá trị Địa trở main (EIP cũ - địa sau lệnh gọi hàm foo1() ) lưu vào stack, hàm foo1() chạy xong đẩy giá trị EIP cũ vào EIP, từ chương trình quay lại d) Địa biến cục stack hàm foo1() tính cách nào? Dùng EBP để tính (truy xuất qua độ dời so với EBP) Vd địa x1 = EBP – 4, địa x2 = EBP – 8, địa x3 = EBP – 12 Câu 22 Nhập chuỗi để in chuỗi "You win!" hình cho đoạn code Vẽ trạng thái ngăn xếp cần đạt Tận dụng lỗi tràn đệm: - Cần phải làm tràn buf để tràn liệu sang cookie - Cookie cần có giá trị 0x41424344 để in hình chữ You win Đổi dạng text tương ứng với chữ DCBD (do quy ước litter_endian nên cần viết ngược lại) - Buf chứa 16 kí tự tương đương 16 nhớ Cookie int tương tự có ô nhớ Cần phải truyền đầu vào 20 kí tự để làm tràn liệu sang cookie: a * 16 + DCBA Trạng thái ngăn xếp sau cần thu Câu 23 Các option lệnh dịch có ý nghĩa $ gcc -fno-stack-protector -ggdb /stack.c -o stack -fno-stack-protector: Vơ hiệu hóa chức bảo vệ stack protector hệ điều hành linux ggdb: Tạo thông tin gỡ lỗi sử dụng gdb Cho phép sử dụng định dạng tiêu chuẩn, hỗ trợ tiện ích mở rộng gdb có /stack.c: Là tên file đầu vào -o stack: Là tên tệp đầu Câu 24 Quy ước kết thúc nhỏ (little endian) xử lý Intel X86 hiểu nào? Quy ước - Máy tính lưu trữ liệu dạng byte Nếu liệu vừa đủ byte khơng có ảnh hưởng Tuy nhiên để lưu trữ số lớn cần nhiều byte Quy ước kết thúc nhỏ little endian quy ước việc xếp trật tự byte mơ hình liệu - Quy ước mơ tả byte có trọng số lớn ghi trước sau byte có trọng số thấp Ví dụ: Số sau đổi dạng hex là: 07 5d 15 6c Sau sử dụng quy ước littel endian máy tính ghi ngược lại 6c 15 5d 07 Câu 25 Thư viện ltrace dùng để làm gì? - Là tiện ích gỡ lỗi Linux - Hiển thị lời gọi hệ thống thư viện chia sẻ - Có lợi ích lớn việc gỡ lỗi chương trình phân tích vấn đề - Nó thực điều cách nối vào hệ thống tải động, giúp hiển thị tham số mà ứng dụng sử dụng thực lời gọi giá trị trả - ltrace theo dõi gọi hệ thống Linux - Ex: Để kiểm tra xem hàm printf có gọi với tham số xác hay khơng, dùng công cụ ltrace ltrace./filerun Câu 26 Hãy mô tả số chế bảo vệ nhớ hệ điều hành Cải tiến biên dịch: - Sử dụng libsafe với hàm an tồn hơn, khai thác lỗi: strcpy, strcat - Sử dụng StackShield phát vấn đề khơng an tồn biên dịch - StackGuard, đặt canaries ngăn xếp trạng thái khung Nếu tràn đệm canary bị hỏng việc vi phạm phát - Stack Smashing Protection: Dựa Stack Guard nhiên cải biến stack khiến chúng khó bị khai thác Bên cạnh thêm prolog, epilog - Ngồi cịn số cách khác ngăn xếp không thực thi Các vá nhân script: - Các trang nhớ không thực thi: + Các vá lỗi Page-eXec (PaX, ExeccShield): thay đổi cách phân trang nhớ thực - Ngẫu nhiên hóa địa khơng gian địa chỉ(ASLR): + Ngẫu nhiên hóa đối tượng mã thực thi, quản lý heap, ngăn xếp người dùng, ngăn xếp không gian nhân Kết hợp: Câu 27 Làm cách để viết mã máy chèn vào chương trình thực thi? Mã máy chèn vào nằm phân vùng nhớ chương trình? - - Có số cách để viết mã máy: + Cách dài dịng: Tự viết chương trình C Sử dụng gdb để biên dịch chương trình mã máy viết lại dạng mã máy dịch + Cách ngắn: Viết ln mã máy sau biên dịch shell code + Cách lười Chép shellcode người khác (Nguy hiểm mã độc) + Cách chuyên nghiệp: Tự xây dựng thư viện bytecode cho tiêng Cách phương pháp chèn vào chương trình thực thi: + Chèn thông qua nhớ đệm: Sử dụng chủ yếu với lỗ hổng tràn đệm: o Chèn bytecode vào vị trí biến Sau dự đốn trỏ đế nhảy vào thực thi lệnh Có thể sử dụng NOP sled để tăng khả shell code thực thi o Nhược điểm vị trí lưu trữ thường không đủ + Truyền thông qua biến môi trường: Sử dụng biến môi trường để lưu trữ shell code Bộ nhớ đệm dùng làm tràn đơn giản chứa địa đốn biến mơi trường chứa shellcode Mã máy chèn vào phần vùng stack chương trình Câu 28 Nêu số vấn đề gặp phải tạo chèn bytecode vào chương trình thực thi (vd NULL byte, IDS, chế bảo vệ nhớ, sinh bytecode cho tảng khác nhau)? Làm cách để xử lý nó? Chèn bytecode vào chương trình thực thi đơi gặp phải số vấn đề Khiến cho bytecode khơng thể thực thi Ví dụ: - NULL byte: + Khi thực thi biên dịch chương trình, byte code thường sinh NULL byte, Null byte ngắt số hàm đọc đầu vào + Nên đọc đến NULL dừng lại làm ngắt shellcode chừng + Cách xử lý: Sử dụng hàm XOR ghi để nhận giá trị Thích hợp so với dùng move ax, gây null byte mã máy Ngồi cịn số cách khác sử dụng hợp ngữ để xóa null byte - Vị trí đặt shell code: + Một số shellcode dài không vừa đặt vào buffer: + Cách xử lý: Truyền shell code thông qua biến môi trường Thử với số loại shellcode có sẵn - Dễ bị phát hệ thống IDS dựa chữ ký: + Một số shellcode tác vụ phổ biến dễ dàng bị hệ thống IDS nhận diện dựa chữ ký + Cách xử lý: Sử dụng tool tự động Online x86 / x64 Assembler and Disassembler Sử dụng KeyStone Capstone (hỗ trợ đa tảng) Nguyễn Anh Quỳnh Sử dụng shellcode kiểm chứng mạng - Một số chế bảo vệ hệ điều hành: + Ngẫu nhiên hóa dải địa Tắt ngẫu nhiên hóa dải địa với kiến trúc linux $ sudo echo > /proc/sys/kernel/randomize_va_space + Thực thi chế bảo vệ stack: Tắt chế bảo vệ stack: $ gcc -ggdb -m32 -z execstack -o buffer1 buffer1.c + Bảo vệ stack thông minh Tắt chế bảo vệ: $ gcc -fno-stack-protector -mpreferred-stackboundary=2 /buffer1.c Câu 29 NOP sled gì? Tại cần dùng NOP sled? - - NOP đơn giản lệnh khơng làm nhảy đến lệnh Bỏ qua xung nhịp máy tính Được sử dụng đặc biệt hệ thống kiến trúc máy tính dạng pipe, để đồng lệnh tính tốn phù hợp với mong muốn Thường mang giá trị \x90 Kẻ công sử dụng lệnh NOP để chèn vào trước byte code tạo khoảng đệm trước Khi lưu trước đệm khai thác, gọi NOP sled Tại cần dùng NOP sled: + Khi công vào phần mềm, thường hacker khơng biết trước địa xác shell code chèn vào + Thêm lệnh NOP sled để điền đầy buffer cho dễ thực + Khi trỏ nhảy tới NOP sled “trượt” đến đầu shellcode thực thi Tăng khả thực thi mã lệnh Ví dụ: 90 90 90 shellcode 90 90 90 90 addr Câu 30: stack2.c - Vì 01020305 ký tự điều khiển, nên để nhập vào buf ta phải đổi dạng mã hexa Câu lệnh để chèn sau: + python –c ‘print “a” * 16 + “\x05\x03\x02\x01”’ | stack2 Trạng thái stack đạt sau chèn là: 05 … Saved EIP EBP cũ 03 02 aaaa aaaa aaaa aaaa 01 ... bảo mật log hệ thống để ẩn tiến trình nguy hiểm Bước 6: Củng cố hệ thống: + Sau lấy đặc quyền sở hữu hệ thống, tin tặc sửa lỗ bảo mật hệ thống để không kẻ công khác sử dụng hệ thống cho mục đích... thử xâm nhập - - - Kiểm thử hộp trắng: + Nhóm kiểm thử biết sơ đồ mạng, hồ sơ tài sản thơng tin hữu ích khác + Các doanh nghiệp biết mối đe dọa đến từ nhân viên, đối tác sử dụng kiểm thử hộp trắng... người giám sát: + Ở số khu vực có lễ tân bảo vệ + Đôi khách hàng cần trình bày cmnd bàn tiếp tân, giải thích đến làm gặp Sau nhận thẻ vào Có thể nói chuyện với phận nhân để xếp hẹn làm giả thẻ vào