1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CSATTT14 tranbodem

36 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về Lỗ Hổng Tràn Bộ Đệm (Buffer Overflow)
Tác giả Nguyễn Văn Lĩnh, Lê Gia Long, Trần Hữu Long
Trường học Học Viện Kĩ Thuật Mật Mã
Chuyên ngành An Toàn Thông Tin
Thể loại Báo Cáo Bài Tập Lớn
Định dạng
Số trang 36
Dung lượng 1,57 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TÁC HẠITỔNG QUAN VỀ BUFFER OVERFLOW  Lỗi tràn bộ đệm có thể khiến ứng dụng ngừng hoạt động, gây mất dữ liệu hoặc thậm chí giúp kẻ tấn công kiểm soát hệ thống hoặc tạo cơ hội cho kẻ tấn

Trang 1

HỌC VIỆN KĨ THUẬT MẬT MÃ

AN TOÀN THÔNG TIN

 BÁO CÁO BÀI TẬP LỚN

Đề tài:

TÌM HIỂU VỀ LỖ HỔNG TRÀN BỘ ĐỆM

(BUFFER OVERFLOW)

Trang 2

1 Nguyễn Văn Lĩnh – AT150631

THÀNH VIÊN CỦA NHÓM: NHÓM 14

Trang 3

TỔNG QUAN VỀ BUFFER OVERFLOW

KHAI THÁC BUFFER OVERFLOW

Trang 4

TỔNG QUAN VỀ

BUFFER OVERFLOW

Trang 5

TỔNG QUAN VỀ BUFFER OVERFLOW

1 KHÁI NIỆM:

 Buffer Overflow hay lỗi tràn bộ đệm là một điều kiện bất thường khi tiến trình lưu trữ dữ liệu vượt ra ngoài biên của bộ nhớ đệm có chiều dài cố định Kết quả là dữ liệu có thể đè lên các bộ nhớ liền kề Dữ liệu bị ghi đè có thể bao gồm các bộ nhớ đệm khác, các biến và dữ liệu điều khiển luồng chảy của cả chương trình (program flow control)

Trang 6

TỔNG QUAN VỀ BUFFER OVERFLOW

2 VÍ DỤ:

Trang 7

3 NGUYÊN NHÂN:

 Phương thức kiểm tra biên (boundary) không được thực hiện đầy đủ hoặc là được bỏ qua

 Các ngôn ngữ lập trình như là ngôn ngữ C, bản thân nó đã tiền ẩn các lỗi mà hacker có thể khai thác

TỔNG QUAN VỀ BUFFER OVERFLOW

Trang 8

4 TÁC HẠI

TỔNG QUAN VỀ BUFFER OVERFLOW

 Lỗi tràn bộ đệm có thể khiến ứng dụng ngừng hoạt động, gây mất dữ liệu hoặc thậm chí giúp kẻ tấn công kiểm soát hệ thống hoặc tạo cơ hội cho kẻ tấn công thực hiện nhiều thủ thuật khai thác khác nhau

Trang 9

KHAI THÁC

BUFFER OVERFLOW

Trang 10

TỔ CHỨC BỘ NHỚ

- Mỗi tiến trình thực thi đều được hệ điều hành cấp phát cho một

không gian bộ nhớ ảo giống nhau Không gian nhớ này gồm 3

vùng:

 Vùng Text

 Vùng Data

 Vùng Stack

Trang 11

TỔ CHỨC BỘ NHỚ

 Vùng Text là vùng cố định, chứa các mã lệnh thực thi (instruction) và dữ liệu chỉ đọc (real-only) Vùng này được chia sẻ giữa các tiến trình thực thi cùng một file chương trình và tương ứng với phân đoạn text của file thực thi Dữ liệu ở vùng này chỉ đọc mọi thao tác nhằm ghi lên vùng nhớ đều gây lỗi segmentation violation

 Vùng Data chứa các dữ liệu đã được khởi tạo hoặc chưa khởi tạo giá trị Các biến toàn cục và biến tĩnh được chứa trong vùng này

Data region= Data + BSS + Heap

 Vùng Stack là vùng nhớ được rành riêng khi thực thi chương trình dùng để chứa giá trị các biến cục bộ của hàm, tham số gọi hàm cũng như giá trị trả về Thao tác trên bộ nhớ stack được thao tác theo cơ chế “ vào sau ra trước”- LIFO (Last In First Out) với hai lệnh quan trọng nhất là PUSH và POP

Trang 12

 Vùng bộ nhớ ảo stack chứa các đối số của hàm, địa chỉ lệnh trả về, địa chỉ stack

frame trước đó và các biến được khai báo cục bộ trong hàm

1 ĐỊNH NGHĨA:

 Việc tràn bộ đệm xảy ra khi bộ đệm đặt trên Stack bị tràn, dẫn đến việc thay đổi dữ liệu ở các vùng nhớ có địa chỉ cao hơn, cụ

thể là các biến địa phương của hàm hoặc địa chỉ lệnh trả về (SavedEIP), từ đó thay đổi việc thực thi bình thường của chương

trình và tạo điều kiện cho kẻ tấn công “thao túng” phần mềm hoặc hệ điều hành

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN STACK

Trang 13

2 MỤC ĐÍCH:

 Hacker thạo kỹ thuật và có ý đồ xấu có thể khai thác các lỗi tràn bộ đệm trên stack để thao túng chương trình theo nhiều cách.

 Ghi đè một biến địa phương nằm gần bộ nhớ đệm trong stack để thay đổi hành vi của chương trình nhằm tạo thuận lợi cho kẻ tấn công

 Ghi đè địa chỉ trả về trong một khung stack (stack frame) Khi hàm trả về, thực thi sẽ được tiếp tục tại địa chỉ mà kẻ tấn công đã chỉ rõ, thường là tại một bộ đệm chứa dữ liệu vào người dùng

 Nếu không biết địa chỉ của phần dữ liệu người dùng cung cấp, nhưng biết rằng địa chỉ của nó được lưu trong một thanh ghi, thì có thể ghi đè lên địa chỉ trả về một giá trị địa chỉ của một opcode mà opcode này sẽ có tác dụng làm cho thực thi nhảy đến phần dữ liệu

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN STACK

Trang 14

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN STACK

3 VÍ DỤ:

Trang 15

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN HEAP

1 ĐỊNH NGHĨA

 Heap là một khu vực của bộ nhớ được sử dụng bởi một ứng dụng và được cấp phát động tại thời gian chạy của các hàm,

chẳng hạn như malloc() Một hiện tượng tràn bộ đệm xảy ra trong khu vực dữ liệu heap được gọi là một hiện tượng tràn heap, nó xảy ra khi một đoạn bộ nhớ được cấp phát cho heap và dữ liệu bị ghi vào mà không có bất kì kiểm tra ràng buộc nào được thực hiện trên dữ liệu

Trang 16

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN HEAP

Trang 17

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN HEAP

3 VÍ DỤ:

Trang 18

KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN HEAP

3 VÍ DỤ:

Trang 19

 Khai thác dựa vào các lỗ hổng phần mềm thông qua ngôn ngữ lập trình (phần mềm

thường được viết bằng ngôn ngữ C)

 Khai thác các trang web có tương tác người dùng nhưng không ràng buộc dữ liệu nhập

như các trường hợp username, password,

MỘT SỐ CÁCH KHAI THÁC KHÁC

Trang 20

MÔ PHỎNG KHAI THÁC BUFFER OVERFLOW

Trang 21

BIỆN PHÁP

PHÒNG CHỐNG

Trang 22

 Có 2 cách cơ bản để phát hiện các lỗi buffer overflow mà hacker có thể sử dụng :

 Nhìn vào source code: Hacker tìm kiếm các string là các biến cục bộ trong các hàm của chương trình, xem xét chúng có được kiểm tra

biên (boundary check) chưa Kiểm tra tiêu chuẩn của các hàm có liên quan đến phần các chuỗi trong phần input, output

CÁCH PHÁT HIỆN BUFFER OVERFLOW

Trang 23

 Xác định Bufer Overfow 

CÁCH PHÁT HIỆN BUFFER OVERFLOW

1.Phát hiện tấn công từ bên ngoài 

Phát hiện tràn bộ đệm bên ngoài xảy ra khi một cuộc tấn công sử dụng khai thác tràn bộ đệm đang chuyển tiếp đến một hệ thống từ hệ thống mạng Chẳng hạn như khi xử lí máy chủ web , trọng tải tấn công là thông tin nhị phân mà mục tiêu sẽ diễn giải dưới dạng mã và dữ liệu và thực thi như bất kỳ chương trình nào khác ( điều này giống như với các phần mềm độc hại , tải trọng khai thác này chứa các mẫu dữ liệu duy nhất và có thể phân biệt được để xác định sự hiện diện của cuộc tấn công Buffer overflow Các mẫu dữ liệu này tạo thành mẫu chứ

kí số mà chúng ta sử dụng để phát hiện các cuộc tấn công Nếu chúng ta có thể xác định lưu lượng mạng vận chuyển dữ liệu bằng các chữ ký này thì chúng ta có thể nhận ra một cuộc tấn công tràn bộ đệm

Bấm để thêm nội dung

Trang 25

2 Sử dụng các phần mềm xác định tấn công Buffer Overflow 

    Snort :

      Snort là một hệ thống phát hiện xâm nhập mạng mã nguồn mở miễn phí và hệ thống ngăn chặn xâm nhập được tạo ra vào năm 1998 bởi Martin Roesch, người sáng lập

và cựu CTO của Sourcefire.Snort hiện được phát triển bởi Cisco, công ty đã mua Sourcefire vào năm 2013.

CÁCH PHÁT HIỆN BUFFER OVERFLOW

 Xác định Bufer Overfow 

Trang 27

• Host-based Intrusion Detecction Systems ( Hệ thống phát hiện xâm nhập máy chủ )

• HIDS có thể được cài đặt trên nhiều dạng máy tính khác nhau cụ thể như các máy chủ, máy trạm, máy tính notebook HIDS cho phép bạn thực hiện một cách linh hoạt trong các đoạn mạng Lưu lượng đã gửi tới host được phân tích và chuyển qua host nếu chúng không tiềm ẩn mã nguy hiểm HIDS cụ thể hơn đối với các nền ứng dụng và phục vụ mạnh mẽ cho thị   trường Windows trong thế giới máy tính, mặc dù vậy vẫn có các sản phẩm hoạt động trong nền ứng dụng UNIX và nhiều hệ điều hành khác

CÁCH PHÁT HIỆN BUFFER OVERFLOW

 Xác định Bufer Overfow 

Trang 28

• 5.Sử dụng EMET

• EMET, viết tắt của Enhanced Mitigation Experienc Toolkit của Microsoft, là một trong những công cụ bảo mật tốt nhất và ít được biết đến nhất do Microsoft tạo ra EMET là một phần mềm đơn giản nhưng hiệu quả sử dụng các kỹ thuật giảm thiểu cụ thể như ngăn chặn thực hiện dữ liệu, lọc địa chỉ xuất bảng, xử lý ngoại lệ có cấu trúc ghi đè bảo vệ, vv để thêm các tính năng bảo mật bổ sung để bảo vệ ứng dụng đã cài đặt của bạn không bị khai thác.

CÁCH PHÁT HIỆN BUFFER OVERFLOW

 Xác định Bufer Overfow 

Trang 29

 1 Lựa chọn ngôn ngữ lập trình.

 2 Sử dụng các thư viện an toàn

 3 Chống tràn bộ đệm trên stack.

 4 Bảo vệ không gian thực thi

 5 Ngẫu nhiên hóa sơ đồ không gian địa chỉ (Address space layout randomization ASLR)

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

Trang 30

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

1 Lựa chọn ngôn ngữ lập trình.

• Nhiều ngôn ngữ lập trình khác cung cấp việc kiểm tra tại thời gian chạy Việc kiểm tra này cung cấp một ngoại lệ hay một cảnh báo khi C hay C+

 Ngôn ngữ lập trình có một ảnh hưởng lớn đối với sự xuất hiện lỗi tràn bộ đệm.

• Ngôn ngữ lập trình C và C++ là hai ngôn ngữ lập trình thông dụng, nhưng hạn chế của nó là không kiểm tra việc truy cập hoặc ghi đè dữ liệu thông qua các con trỏ

• Cyclone: một biến thể của C, giúp ngăn chặn các lỗi tràn bộ đệm bằng việc gắn thông tin về kích thước mảng với các mảng

• Ngôn ngữ lập trình sử dụng nhiều kỹ thuật đa dạng để tránh gần hết việc sử dụng con trỏ và kiểm tra biên do người dùng xác định

Trang 31

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

2 Sử dụng các thư viện an toàn.

 Sử dụng các thư viện được viết tốt và đã được kiểm thử dành cho các kiểu dữ liệu trừu tượng mà các thư viện này thực

hiện tự động việc quản lý bộ nhớ, trong đó có kiểm tra biên có thể làm giảm sự xuất hiện và ảnh hưởng của các hiện tượng tràn bộ đệm Các thư viện an toàn gồm có: The Better String Library, Arri Buffer API, Vstr

Trang 32

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

3 Chống tràn bộ đệm trên stack.

 Stack – smashing protection là kỹ thuật dùng để phát hiện các hiện tượng tràn bộ đệm phổ biến nhất Kỹ thuật này kiểm tra xem stack đã bị sửa đổi hay chưa khi một hàm trả về Nếu stack đã bị sửa đổi, chương trình kết thúc bằng một lỗi segmentation fault.Chế độ Data Execution Prevention (cấm thực thi dữ liệu) của Microsoft bảo vệ các con trỏ và không cho chúng bị ghi đè.Có thể bảo vệ stack bằng cách phân tán stack thành hai phần, một phần dành cho dữ liệu và một phần dành cho các bước trả về hàm, sự phân chia này được dùng trong ngôn ngữ Forth

Trang 33

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

4 Bảo vệ không gian thực thi.

 Kỹ thuật này ngăn chặn việc thực thi mã tại stack hay heap Hacker có thể sử dụng tràn bộ đệm để chèn một đoạn mã tùy ý vào

bộ nhớ của chương trình, với việc bảo vệ không gian thực thi thì mọi cố gắng chạy đoạn mã đó sẽ gây ra một ngoại lệ Một số CPU hỗ trợ tính năng có tin bit NX (No eXecute) hoặc bit XD (eXecute Disable) Khi kết hợp với phần mềm các tính năng này có thể được dùng để đánh dấu những trang dữ liệu (chẳng hạn như các trang chứa stack và heap) là đọc được nhưng không thực hiện được

Trang 34

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

5 Ngẫu nhiên hóa sơ đồ không gian địa chỉ (Address space layout randomization ASLR).

 Là một tính năng an ninh máy tính có liên quan đến việc sắp xếp các vùng dữ liệu quan trọng (thường bao gồm nơi

chứa mã thực thi và vị trí các thư viện, heap và stack) một cách ngẫu nhiên trong không gian địa chỉ của một tiến trình

Trang 35

CÁC CÁCH PHÒNG CHỐNG BUFFER OVERFLOW

6 Kiểm tra sâu đối với gói tin (deep packet inspection - DPI).

 Có thể phát hiện việc cố gắng khai thác lỗi tràn bộ đệm từ xa ngay từ biên giới mạng Các kỹ thuật này có khả năng

ngăn chặn các gói tin có chứa chữ ký của một vụ tấn công đã biết hoặc chứa các chuỗi dài các lệnh No- Operation (NOP – lệnh rỗng không làm gì) Việc rà quét gói tin không phải một phương pháp hiệu quả vì nó chỉ có thể ngăn chặn các cuộc tấn công đã biết và có nhiều cách để mã hóa một lệnh NOP

Ngày đăng: 13/10/2021, 08:29

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w