Monday, April 4, 2016

tìm hiểu sự tràn bộ nhớ đệm

thống phát hiện (IDSs) bằng cách tìm kiếm chữ ký trượt của NOP. Kẻ tấn công các miếng đệm nhằm mục đích bắt đầu lỗi tràn bộ đệm bằng các lệnh dài hạn của NOP (một NOP chuyển động hoặc trượt) vi thế CPU sẽ không làm gì cả cho tới khi nó nhận được “sự kiện chính” (trước “con trỏ quay về). ADMutate (bởi K2) chấp nhận một lỗi tràn bộ đệm nhằm khai thác như là đầu vào và ngẫu nhiên tạo ra một phiên bản có chức năng tương đương (đa hình). BIỂU ĐỒ MODULE Khái niệm tràn bộ nhớ đệm Phương pháp luận tràn bộ nhớ đệm Công cụ bảo mật tràn bộ nhớ đệm Bút kiểm tra tràn bộ nhớ đệm Biện pháp đối phó tràn bộ đệm Ví dụ tràn bộ nhớ đệm Phát hiện tràn bộ nhớ đệm Kiến Thức Cần Thiết Để Khai Thác Lỗi Tràn Bộ Đệm Trong Chương Trình Hiểu biết về hoạt động của bộ nhớ stack và heap Hiểu biết về cách hệ thống gọi công việc ở cấp độ mã máy Quen với các công cụ biên dịch và sửa lỗi như gdb Kiến thức về lắp ráp và ngôn ngữ máy Kiến thức ngôn ngữ lập trình C và Perl Các Bước Tràn Bộ Đệm Bước 1 Tìm sự hiện diện và vị trí của lỗ hổng tràn bộ đệm Bước 3 Ghi đè lên địa chỉ quay về của hàm. Bước 2 Ghi nhiều dữ liệu vào bộ đệm hơn mức mà nó có thể xử lý. Bước 4 Thay đổi luồng thực hiện hàm bằng các mã hacker. Tấn Công Một Chương Trình Thực Giả sử rằng một hàm chuỗi bị khai thác, kẻ tấn công có thể gửi một chuỗi dài đầu vào. Con trỏ trả về của hàm tiến hành ghi đè, và kẻ tấn công thành công trong việc thay đổi luồng thực hiện lệnh. Nếu người sử dụng chèn vào mã đầu vào, anh ta hoặc cô ta có thể biết chính xác địa chỉ và kích thước của ngăn xếp và làm con trỏ trở về hướng tới đoạn mã của mình để thực hiện chỉ thị. Chuỗi Định Dạng Có Vấn Đề Có vấn đề nếu người dùng =“%%%%%%%%%%%” Trong C, xét ví dụ của chuỗi định dạng có vấn đề. Int func(char *user) { Fprint ( stdout, user); } Chương trình có thể sụp đổ gây ra một Dos. Nếu không, chương trình sẽ in nội dung bộ nhớ Lỗi toàn diện xảy ra bằng cách sử dụng người dùng =“%n” Hình thức đúng Int func (char *user) { Fprint ( stdout, “%s”, user) ; } Gây Tràn Bộ Đệm Bằng Cách Sử Dụng Chuỗi Định Dạng Trong C, xét ví dụ của BoF sử dụng chuỗi định dạng có vấn đề. Như thế nào nếu người dùng = “%500d ” Sẽ bỏ qua giới hạn “%400s” Sẽ tràn biến outbuf. Phá Vỡ Stack Ý tưởng chung là gây ra tràn bộ đệm để sau đó ghi đè lên địa chỉ trả về. Tràn bộ nhớ đệm cho phép chúng ta thay đổi địa chỉ trả về của một hàm. Khi hàm được thực hiện xong nó sẽ nhảy tới bất kz địa chỉ nào trên ngăn xếp. Đặt một số mã trong bộ đệm và thiết lập địa chỉ trở về. Một Khi Stack Bị Phá Vỡ Được phép truy cập Một khi quy trình dễ tổn thương bị chiếm, kẻ tấn công có các đặc quyền tương tự như quy trình và có thể điều khiển truy cập bình thường. Sau đó anh ta hoặc cô ta có thể khai thác một lỗi tràn bộ đệm cục bộ để đạt được quyền truy cập của siêu người dùng.

No comments:

Post a Comment