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.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment