Tải bản đầy đủ (.pptx) (36 trang)

CSATTT14 tranbodem

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1018.58 KB, 36 trang )

HỌC VIỆN KĨ THUẬT MẬT MÃ
AN TỒ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)

1


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

1

Nguyễn Văn Lĩnh – AT150631

2

Lê Gia Long – AT150332

3

Trần Hữu Long – AT150434

2


TỔNG QUAN VỀ BUFFER OVERFLOW

01



NỘI DUNG:

02

03

KHAI THÁC BUFFER OVERFLOW

BIỆN PHÁP PHÒNG CHỐNG

3


TỔNG QUAN VỀ
BUFFER OVERFLOW

4


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 ngồ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).


5


TỔNG QUAN VỀ BUFFER OVERFLOW

2. VÍ DỤ:

6


TỔNG QUAN VỀ BUFFER OVERFLOW

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.

7


TỔNG QUAN VỀ BUFFER OVERFLOW

4. TÁC HẠI



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 số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.


8


KHAI THÁC
BUFFER OVERFLOW

9


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

10


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.

11


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

1. ĐỊNH NGHĨA:



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



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.

12



KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN STACK
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
người dùng.

13


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


3. VÍ DỤ:

14


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.

15


KHAI THÁC LỖI TRÀN BỘ ĐỆM TRÊN HEAP
2. MỤC ĐÍCH:



Trong cách tấn công heap overflow, attacker làm tràn bộ nhớ sẽ có thể overwrite các dynamic variables, vì thế có thể dẫn đến các hiệu
ứng không mong muốn.



Việc khai thác được thực hiện bằng cách phá dữ liệu này theo các cách đặc biệt để làm cho ứng dụng ghi đè lên các cấu trúc dữ liệu
nội bộ chẳng hạn các con trỏ của danh sách liên kết.


16


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

3. VÍ DỤ:

17


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

3. VÍ DỤ:

18


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



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,...


19


MÔ PHỎNG KHAI THÁC BUFFER OVERFLOW

20


BIỆN PHÁP
PHÒNG CHỐNG

21


CÁCH PHÁT HIỆN BUFFER OVERFLOW



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.



Nhập vào các ứng dụng một dữ liệu và xem xét ứng dụng có bất cứ biểu hiện khơng bình thường nào không.

22



CÁCH PHÁT HIỆN BUFFER OVERFLOW



 Xác định Bufer Overfow 
1.Phát hiện tấn cơng từ bên ngồi 
Phát hiện tràn bộ đệm bên ngồ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

23


24


CÁCH PHÁT HIỆN BUFFER OVERFLOW



 Xác định Bufer Overfow 

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.

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×