Đồ án An ninh mạng
Module 17: Buffer Overflow
ĐỀ TÀI
TÌM HIỂU VỀ AN NINH MẠNG VÀ KỸ THUẬT
BUFFER OVERFLOW
Lớp CCMM03A
Trang i
Đồ án An ninh mạng
Module 17: Buffer Overflow
LỜI MỞ ĐẦU
Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức cá nhân đều có nhu
cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên
giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các dịch vụ trên
Internet càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành
đối tượng cho nhiều người tấn công với các mục đích khác nhau.
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet,
số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các
phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy
nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập đến nhiều
vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào mạng
Internet.
Những vụ tấn công nhằm vào tất cả các máy tính có mặt trên Internet, các
máy tính của công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà
nước, các tổ chức quan sự, nhà băng... Một số vụ tấn công có quy mô khổng lồ (có
Lớp CCMM03A
Trang ii
Đồ án An ninh mạng
Module 17: Buffer Overflow
tới 100.000 máy tính bị tấn công ). Hơn nữa, nhưng con số này chỉ là phần nổi của
tảng băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do,
trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ
thông không hay biết những cuộc tấn công đang nhằm vào hệ thông của họ.
Với những công cụ tự động tìm lỗi hổng tuy giúp rất nhiều cho những nhà
lập trình web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ web đang phát
triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ...) nên dẫn
đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong khuổn khổ vài
kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản
trị hệ thống cũng như của những người lập trình.
Đồ án được thực hiện với mục đích tìm hiểu, phân tích kỹ thuật mà hacker
thường hay sự dụng đó là kỹ thuật Buffer Overflow.
Lớp CCMM03A
Trang iii
Đồ án An ninh mạng
Module 17: Buffer Overflow
MỤC LỤC
LỜI MỞ ĐẦU .............................................................................................................. i
DANH MỤC HÌNH ẢNH .......................................................................................... vi
DANH MỤC CÁC TỪ VIẾT TẮT ........................................................................... vii
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ AN NINH MẠNG ............................... 1
1.1 TÌNH HÌNH AN NINH MẠNG THẾ GIỚI: ......................................................... 1
1.2 TÌNH HÌNH AN NINH MẠNG TẠI VIỆT NAM: ............................................... 2
1.2.1 Thiếu nhận thức, nhân lực và đầu tư: ................................................................. 2
1.2.2 Tình hình tội phạm:............................................................................................. 3
1.2.3 Cần hoàn thiện qui định của pháp luật: ............................................................. 4
1.2.4 Nâng cao nhận thức về an ninh mạng: ............................................................... 5
1.3 CÁC KHÁI NIỆM VÀ THUẬT NGỮ: .................................................................. 5
1.3.1 Hacker: ............................................................................................................... 5
1.3.2 HTTP header: ..................................................................................................... 6
1.3.3 Session: ............................................................................................................... 6
1.3.4 Cookie: ................................................................................................................ 7
1.3.5 Proxy:.................................................................................................................. 9
CHƯƠNG 2: GIỚI THIỆU VỀ KỸ THUẬT BUFFER OVERFLOW ...................... 10
2.1 ĐỊNH NGHĨA: ....................................................................................................... 10
2.2 LỖI BUFFER OVERFLOW VÀ NGUYÊN NHÂN GÂY LỖI: ....................... 12
Lớp CCMM03A
Trang iv
Đồ án An ninh mạng
Module 17: Buffer Overflow
2.3 STACK OVERFLOW: .......................................................................................... 13
2.3.1 Định nghĩa: ....................................................................................................... 13
2.3.2 Mục đích chính của Stack buffer overflow: ...................................................... 13
2.4 HEAP OVERFLOW:............................................................................................. 15
2.4.1 Định nghĩa: ....................................................................................................... 15
2.4.2 OVERWRINGTING POINTERS (viết lại con trỏ): .......................................... 16
2.4.3 Khai thác thư viện malloc(): ............................................................................. 17
2.4.4 Mục đích của việc làm hỏng cấu trúc DLMALLOC:........................................ 18
2.5 CÁCH PHÁT HIỆN BUFFER OVERFLOW: ................................................... 19
2.6 CÁCH PHÒNG TRÁNH BUFFER OVERFLOW: ............................................ 21
2.6.1 Lựa chọn ngôn ngữ lập trình: ........................................................................... 21
2.6.2 Sử dụng thư viện an toàn: ................................................................................. 22
2.6.3 Chống tràn bộ đệm trên Stack: ......................................................................... 22
2.6.4 Bảo vệ không gian thực thi: .............................................................................. 22
2.6.5 Ngẫu nhiên hóa sơ đồ không gian địa chỉ: ....................................................... 23
2.6.6 Kiểm tra sâu đối với gói tin .............................................................................. 23
CHƯƠNG 3: MỘT SỐ VÍ DỤ VỀ BUFFER OVERFLOW ........................................ 24
3.1 Ví dụ file vul.c ......................................................................................................... 24
3.2 Ví dụ tràn bộ đệm khi dữ liệu nhập vào lớn hơn định mức được phát: ........... 24
3.3 Ví dụ shellcode trên linux: ..................................................................................... 26
KẾT LUẬN ............................................................................................................... 28
TÀI LIỆU THAM KHẢO ..................................................................................... 33
Lớp CCMM03A
Trang v
Đồ án An ninh mạng
Module 17: Buffer Overflow
DANH MỤC HÌNH ẢNH
CHƯƠNG 1:
Hình 1.1: Các thành phần của một cookie ................................................................. 8
Hình 1.2: Các phân đoạn chương trình thực thi ....................................................... 10
CHƯƠNG 2:
Hình 2.1: Stack ......................................................................................................... 13
Hình 2.2: Ví dụ Stack Overflow .............................................................................. 14
Hình 2.3: Stack khi bị tấn công bởi Atacker ............................................................ 15
Hình 2.4: Heap ......................................................................................................... 15
Hình 2.5: Ví dụ Heap Overflow ............................................................................... 16
Hình 2.6: Heap Overflow ......................................................................................... 16
Hình 2.7: Các bước xác định Buffer Overflow ........................................................ 20
Lớp CCMM03A
Trang vi
Đồ án An ninh mạng
Module 17: Buffer Overflow
DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt
Tên tiếng Anh
Tên tiếng Việt
CERT
Computer Emegency
Response Team
Đội cấp cứu máy tính
BKIS
Bach Khoa Internet
Security
Trung tâm an ninh mạng
Bách Khoa
HTTP
Hypertext Transfer
Protocol
Giao thức truyền tải siêu
văn bản
Lớp CCMM03A
Trang vii
Đồ án An ninh mạng
Module 17: Buffer Overflow
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ AN NINH MẠNG
1.1 TÌNH HÌNH AN NINH MẠNG THẾ GIỚI:
Theo số liệu của CERT (Computer Emegency Response Team - "Đội cấp cứu
máy tính"), số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này
là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và
2241 vào năm 1994, và năm 2001 là 5315 vụ.
Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, các
máy tính của tất cả các công ty lớn như AT&T, IBM, các trường đại học, các cơ
quan nhà nước, các tổ chức quân sự, nhà băng... Một số vụ tấn công có quy mô
khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa, những con số này chỉ là
phần nổi của tảng băng. Một phần rất lớn các vụ tấn công không được thông báo, vì
nhiều lý do, trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người
quản trị hệ thống không hay biết những cuộc tấn công đang nhằm vào hệ thống của
họ.
Điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001,
hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất cứ ai với một trình duyệt Web
cũng có thể lấy tài khoản của người dùng, thậm chí cả người quản trị.
Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương
pháp tấn công ngày càng tinh vi và có tổ chức. Mặt khác, việc quản trị các hệ thống
mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm về hệ thống mạng
chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker
khai thác.
Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán tên
người sử dụng-mật khẩu (UserID/password) hoặc sử dụng một số lỗi của các
chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy
nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác như giả
mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa
Lớp CCMM03A
Trang 1
Đồ án An ninh mạng
Module 17: Buffer Overflow
(telnet hoặc rlogin), cài trojan hay worm để kiểm soát hay điều khiển máy tính…vì
thế, nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ
liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống.
Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến
sự an toàn của hệ thống mạng và hệ điều hành. Để bảo vệ cho hệ thống, phương
pháp thường được chọn là sử dụng firewall. Tuy nhiên, theo tuyên bố của CSI/FBI:
78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ
thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security Survey thì tổng
số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997 đến năm 2000 là 626
triệu đôla Mỹ.
1.2 TÌNH HÌNH AN NINH MẠNG TẠI VIỆT NAM:
Khi tốc độ ứng dụng công nghệ thông tin và phổ cập Internet được đẩy nhanh,
đời sống thực ngày càng gần như phụ thuộc vào đời sống ảo trên mạng thì vấn đề
an ninh mạng càng cần được coi trọng và đặt ở tầm an ninh quốc gia.
Môi trường internet tại Việt Nam hiện có nhiều yếu tố gây mất an toàn như
không có cơ chế định danh người dùng, khó kiểm soát các giao tiếp và thiếu sự
phối hợp, giám sát giữa các tổ chức quản lý internet. Điều này dẫn tới sự bùng nổ
của các hành vi: lấy cắp tài khoản, viết và phát tán virus máy tính, tấn công
website…, mang lại nhiều nguy cơ tiềm tàng cho an ninh mạng
1.2.1 Thiếu nhận thức, nhân lực và đầu tư:
An ninh mạng là một vấn đề mới đối với đa số người sử dụng máy tính.
Những công ty lập trình website cũng chưa ý thức đầy đủ về vấn đề này. Ở công ty
nước ngoài, mỗi lập trình viên sau khi tuyển dụng phải qua một khoá đào tạo lập
trình đặc biệt về an ninh mạng. Tìm được công ty thiết kế website ở Việt Nam làm
điều này rất khó. Việc đầu tư thời gian và công sức vào bảo mật có thể làm chậm
tiến độ triển khai dự án, hiệu quả lại khó kiểm chứng. Tuy đã được các chuyên gia
máy tính liên tục cảnh báo nhưng nhận thức về nguy cơ, tính rủi ro và hậu quả của
Lớp CCMM03A
Trang 2
Đồ án An ninh mạng
Module 17: Buffer Overflow
tình trạng mất an ninh mạng vẫn chưa được quan tâm tìm hiểu đúng mức. Tình
trạng lơ là, mất cảnh giác đối với nguy cơ virus tấn công các trang web xảy ra khá
phổ biến trong giới quản trị website, thậm chí ngay cả đối với website của các
doanh nghiệp CNTT.
Rất nhiều website tồn tại các lỗ hổng có thể trở thành mục tiêu cho tin tặc,
trong đó có những website có nội dung hết sức quan trọng liên quan đến chính phủ
điện tử, thương mại điện tử, doanh nghiệp điện tử… Theo thống kê của Trung tâm
An ninh mạng ĐHBK Hà Nội (BKIS) thì có khoảng 400 website luôn đặt trong tình
trạng nguy hiểm, trong đó có website của các cơ quan nhà nước, các công ty và
ngân hàng. Trung bình mỗi tháng, trung tâm BKIS phát hiện trên dưới hai chục
trang web bị hacker tấn công, trong đó có cả trang web của những công ty tên tuổi
như Viettel, VDC hay MobiFone. Bên cạnh đó, các doanh nghiệp đang phải đương
đầu với sự thiếu hụt về nhân lực CNTT và hiểu biết về tội phạm mạng.
Hiện nay, phần lớn các doanh nghiệp Việt Nam chưa có sự đầu tư đúng mức
về công nghệ bảo mật cũng như về con người do chi phí cho lĩnh vực này khá cao.
BKIS cho biết, các lổ hổng bảo mật trên các trang web của Việt Nam phần lớn là
do các công ty viết phần mềm chưa quan tâm đến an toàn hệ thống và đầu tư cho an
ninh mạng chưa đủ ngưỡng. Người quản trị mạng chưa làm tốt công việc của mình:
đặt mật khẩu yếu, mở nhiều dịch vụ không cần thiết; các doanh nghiệp và tổ chức ở
Việt Nam thường đầu tư dưới 10% chi phí CNTT cho bảo mật - một tỷ lệ dưới mức
đảm bảo an toàn cho hệ thống thông tin.
1.2.2 Tình hình tội phạm:
“An toàn mạng” ngày nay không chỉ trong phạm vi khái niệm an ninh mạng
(network security) vốn dành cho những đối tượng chuyên nghiệp mà quan trọng
hơn là bảo vệ các ứng dụng trong hệ thống của doanh nghiệp. Phần lớn các doanh
nghiệp Việt Nam hiện chưa có hệ thống bảo mật dữ liệu chuyên nghiệp mà chủ yếu
chỉ trang bị vài hệ thống bảo vệ: tường lửa, phần mềm chống virus. Các chuyên gia
Lớp CCMM03A
Trang 3
Đồ án An ninh mạng
Module 17: Buffer Overflow
nhận định rằng: tình hình an ninh trên môi trường mạng ở Việt Nam đang ở tình thế
rất đáng ngại khi số lượng và mức độ các loại hình tội phạm ngày càng gia tăng.
Có thể chia tội phạm mạng ở Việt Nam thành 2 hai nhóm: tội phạm tấn công
trang web, các cơ sở dữ liệu và phát tán virus; và tội phạm lợi dụng môi trường
mạng để ăn cắp, tống tiền và tổ chức hoạt động phạm tội, như đánh bạc qua mạng,
ăn cắp và làm giả thẻ tín dụng, dùng internet để trộm cước viễn thông. Cả hai nhóm
tội phạm mạng này đều đang tăng cả về lượng và mức độ tác động. Thống kê của
BKIS cho thấy, đầu năm 2008, số lượng virus mới tăng hơn rất nhiều so với trước.
Tội phạm mạng ở Việt Nam hiện đã chuyển sang mục đích kiếm tiền chứ không
còn là thoả mãn niềm ham mê ghi điểm “thành tích” như trước.
Về mức độ tinh vi, các phương thức tội phạm mạng ở Việt Nam đang dần tiếp
cận với thế giới. Thế giới có tội phạm gì liên quan đến môi trường mạng thì cũng
nhanh chóng có ở Việt Nam. Mới đây, đơn vị chống tội phạm công nghệ cao (C15)
thuộc Tổng cục Cảnh sát đã phối hợp với cơ quan chống tội phạm mạng của Anh
bắt được một nhóm hacker Việt Nam ăn cắp mật khẩu thẻ tín dụng bán cho một tổ
chức tội phạm của Anh. Trước đó, C15 đã bắt được một đường dây hơn 10 sinh
viên ăn cắp thẻ tín dụng và làm giả thẻ tín dụng để rút tiền.
Trong khi đó, yếu tố chính góp phần làm cho tình hình an ninh mạng ở Việt
Nam thêm nghiêm trọng chính là hành lang pháp lý chưa đủ mạnh, hình phạt dành
cho tội phạm mạng còn nhẹ, chưa tương xứng với thiệt hại do hành vi phạm tội gây
ra nên chưa đạt mục đích trừng trị người phạm tội, giáo dục họ trở thành người có
ích cho xã hội và giáo dục người khác tôn trọng pháp luật, đấu tranh phòng, chống
tội phạm. Một bất cập nữa là các quy định liên quan đến tội phạm mạng quá chung
chung, không áp dụng được vào các hành vi cụ thể, nhất là các quy định về tội
phạm máy tính của bộ luật Hình sự. Các quy định thiếu rõ ràng làm cho các cơ
quan lúng túng trong việc xử lý.
1.2.3 Cần hoàn thiện qui định của pháp luật:
Lớp CCMM03A
Trang 4
Đồ án An ninh mạng
Module 17: Buffer Overflow
Nước ta nên theo xu hướng của thế giới khi quy định về những hành vi liên
quan tới tội phạm mạng: các quy định nên trung lập với công nghệ để có thể dễ
dàng áp dụng và ban hành các văn bản dưới luật điều chỉnh những hành vi này. Tội
phạm mạng có tốc độ phát triển nhanh như tốc độ phát triển của CNTT. Các quy
định của pháp luật luôn lạc hậu hơn so với những thay đổi trong môi trường CNTT.
Mặc dù các nhà làm luật đã sửa đổi, bổ sung các quy định pháp luật, nhưng việc
sửa đổi các quy định của luật nhất là Bộ luật Hình sự, Bộ luật Tố tụng Hình sự
không thể làm trong một sớm một chiều. Với những văn bản hướng dẫn, việc điều
chỉnh sẽ được thực hiện dễ dàng hơn.
1.2.4 Nâng cao nhận thức về an ninh mạng:
Hiện nay, nhận thức về nguy cơ, tính rủi ro và hậu quả của tình trạng mất an
ninh mạng trong xã hội ta chưa cao. Nhiều người vẫn coi hành vi xâm phạm an
ninh mạng chỉ là trò đùa ác ý, trong khi các hành vi này cần phải bị lên án và xử lý
nghiêm minh. Không chỉ trên phương diện công nghệ mà ở cả góc độ luật pháp,
vấn đề phòng chống tội phạm tin học cũng chưa đặt đúng tầm. Những gì đã diễn ra
cho thấy hiện nay chưa có biện pháp hữu hiệu đảm bảo an ninh mạng tại Việt Nam.
Tiện ích của mạng Internet thì đã rõ nhưng đi cùng với đó, các vấn đề tiêu cực
cũng liên tục phát sinh. Theo quy luật, người dân ngày càng quan tâm hơn đến an
ninh mạng. Vấn đề càng lúc càng nóng bỏng khi nguy cơ mất an toàn mạng hiện
hữu hơn bao giờ hết. Nhiệm vụ của mỗi cơ quan chức năng và người dân lúc này là
phải hiểu rõ lỗ hổng trên môi trường mạng để bịt kín, không để tội phạm mạng có
đất hoạt động.
1.3 CÁC KHÁI NIỆM VÀ THUẬT NGỮ:
1.3.1 Hacker:
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống
mạng…Hacker thường là những chuyên gia về máy tính. Hacker không tạo ra các
Lớp CCMM03A
Trang 5
Đồ án An ninh mạng
Module 17: Buffer Overflow
kẽ hở chohệ thống, nhưng hacker lại là những người am hiểu về hệ điều hành, hệ
quản trị dữ liệu, các ngôn ngữ lập trình…
Họ sử dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng của
hệ thống mạng. Một số hacker chỉ dừng lại việc phát hiện và thông báo lỗi tìm
được cho những nhà bảo mật hay người phát triển chương trình, họ được xem như
là WhiteHat (Hacker mũ trắng). Một số hacker dựa vào những lỗ hổng thực hiện
việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người
này bị xem như là BlackHat (Hacker mũ đen).
1.3.2 HTTP header:
HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ
gửi cho nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP
requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời).
Thông thường, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và
giá trị. Một số tham số có thể được dùng trong cả header yêu cầu và header trả lời,
còn số khác thì chỉ đuợc dùng riêng trong từng loại.
1.3.3 Session:
HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP
không lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này
gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết được trước đó
trình duyệt đã có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng dụng
Web đưa ra một khái niệm phiên làm việc (Session). Còn SessionID là một chuỗi
để chứng thực phiên làm việc. Một số trình chủ sẽ cung cấp một SessionID cho
người dùng khi họ xem trang web trên trình chủ.
Để duy trì phiên làm việc thì sessionID thường được lưu vào :
Biến trên URL
Biến ẩn form
Cookie
Lớp CCMM03A
Trang 6
Đồ án An ninh mạng
Module 17: Buffer Overflow
Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này
được cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi. Trình chủ sẽ tự
động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống.
1.3.4 Cookie:
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và
trình duyệt của người dùng.
Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng
tạo ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm trang
Web và những vùng mà họ đi qua trong trang. Những thông tin này có thể bao gồm
tên/định danh người dùng, mật khẩu, sở thích, thói quen...cookie được trình duyệt
của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải
lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp
nhận chuyện lưu trữ đó hay không.
Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại những
thông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo
Messenger!...) mà người dùng không phải làm lại thao tác đăng nhập hay phải cung
cấp lại các thông tin khác.
Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do
đó ta sẽ có 4 kiểu cookie là:
Persistent và Secure
Persistent và Non-Secure
Non-Persistent và Secure
Non-Persistent và Non-Secure
Persistent cookies được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt
Netscape Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet
Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên
máy khách trong một khoản thời gian xác định.
Lớp CCMM03A
Trang 7
Đồ án An ninh mạng
Module 17: Buffer Overflow
Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ
bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web.
Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL).
Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP.
Thực chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật.
Domain
Flag
Path
Secure Expiration
Name
Value
64.3.40.151.16
www.redhat.
com
False
/
False
115402949
Apache
0
018996349247
480
Hình 1.1: Các thành phần của một cookie
Domain: tên miền của trang Web đã tạo cookie (trong ví dụ trên là
www.redhat.com)
Flag: mang giá trị TRUE/FALSE xác định các máy khác với cùng tên miền
có được truy xuất đến cookie hay không.
Path: Phạm vi các địa chỉ có thể truy xuất cookie.Sercure: Mang giá trị
TRUE/FALSE xác định đây là một secure cookie hay không nghĩa là kết nối
có sử dụng SSL hay không.
Expiration: Thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00
giờ GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình
duyệt sẽ hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và
sẽ xóa nó khi trình duyệt bị đóng.
Name: tên biến (trong trường hợp này là Apache).
Lớp CCMM03A
Trang 8
Đồ án An ninh mạng
Module 17: Buffer Overflow
Value: Với cookie được tạo ở trên thì giá trị của Apache.
54.3.40.151.16018996349247480 và hết hạn là 27/07/2006, của tên miền
http://www.redhat.com
Set-Cookie:Apache="64.3.40.151.16018996349247480"; path="/";
domain="www.redhat.com"; path_spec; expires="2006-07-27
19:39:15Z"; version=0
Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường
dẫn là: C:\Program Files\Netscape\Users\UserName\Cookies.txt
Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và
được đặt trong C:\Documents and Setting\[username]\Cookies (Win2000), đối với
win9x, thư mục cookies nằm trong thư mục C:\Windows\cookies.
Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20
cookie.Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”.
1.3.5 Proxy:
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặt biệt
hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host.
Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay
thế cho server thật sự mà người sử dụng cần giao tiếp.
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay
không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật
thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như
trả lời của server đến client. Vì vậy proxy server giống cầu nối trung gian giữa
server và client.
Lớp CCMM03A
Trang 9
Đồ án An ninh mạng
Module 17: Buffer Overflow
CHƯƠNG 2: GIỚI THIỆU VỀ KỸ THUẬT BUFFER OVERFLOW
2.1 ĐỊNH NGHĨA:
Lỗi tràn bộ đệm là một điều kiện bất thường khi một tiến trình lưu 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 bi 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 chương trình (program flow control).
Các lỗi tràn bộ đệm có thề làm cho tiến trình bị đổ vỡ hoặc cho ra kết quả sai.
Các lỗi này có thể được kích hoạt bởi các dữ liệu vào được thiết kế đặc biệt để thưc
thi các đoạn mả phá hoại hoặc để làm cho chương trình hoạt động không như mong
đợi. Bằng cách đó các lỗi tràn bộ đệm gây ra nhiều lổ hổng bảo mật đối với phần
mềm và tạo cơ sở cho nhiều thủ thuật khai thác.
Chương trình khi nạp trong bộ nhớ:
Khi những tiến trình được nạp đến bộ nhớ, chúng chia thành 6 phân đoạn như
sau:
Hình 1.2: Các phân đoạn chương trình thực thi
text: phân đoạn này tương ứng là phần của file thực thi nhị phân. Nó chứa
các chỉ thị lệnh (mã máy) để thực hiện các tác vụ của chương trình. Phân
đoạn này được đánh dấu là chỉ đọc và sẽ gây ra lỗi nếu như ghi trên phân
đoạn này. Kích thước là cố định tại lúc thực thi khi tiến trình lần đầu tiên
được nạp.
data: là phân đoạn được sử dụng để lưu trữ các biến toàn cục và có khởi tạo
giá trị ban đầu như là: int a=0; kích thước này cũng cố định tại lúc thực thi
chương trình.
Lớp CCMM03A
Trang 10
Đồ án An ninh mạng
Module 17: Buffer Overflow
bss (Below stack section) là được sử dụng để lưu trữ các biến toàn cục nhưng
không có khởi tạo giá trị ban đâu như là: int a. Kích thước của phân đoạn này
cũng cố định lúc thực thi chương trình.
Heap: Phân đoạn này được sử dụng để cấp phát các biến động và phát triển
từ vùng địa chỉ thấp đến vùng địa chỉ cao trong bộ nhớ. Trong ngôn ngữ C
thì việc cấp phát và giải phóng được thực hiện qua hai hàm malloc() và
free().
Ví dụ: int i = malloc(sizeof (int));
Stack: phân đoạn stack có tác dụng giữ những lời gọi hàm trong thủ tục đệ
quy và phát triển theo địa chỉ vùng nhớ cao đến địa chỉ vùng nhớ thấp trên
hầu hết các hệ thống.
Phân đoạn biến môi trường và đối số: phân đoạn này lưu trữ một bản sao
chép các biến cấp độ hệ thống mà có thể được yêu cầu bởi tiến trình trung
quá trình thực thi. Phân đoạn này có khả năng ghi được.
Trong các ngôn ngữ lập trình thì ngôn ngữ C dễ sinh ra các lỗi tràn nhớ mà
attacker có thể khai thác. Trong ngôn ngữ C, các chuỗi (string) hay các buffer được
thể hiện như sau: Con trỏ (pointer) sẽ chỉ trỏ vào byte đầu tiên của chuỗi hay buffer
đó,và chúng ta xác định được kết điểm kết thúc khi con trỏ trỏ đến 1 byte null →
không xác định độ dài của đối tượng nhập vào → có thể copy 1 buffer có độ dài lớn
vào 1 buffer có độ dài nhỏ hơn → gây tràn bộ nhớ đệm (buffer overflow).
Ví dụ một lỗi đơn giản:
#include
Int main (int argc, char **argv)
{
char target [5] = “TTTT”;
char attacker [11] = “AAAAAAAA”;
strcpy(attacker, “DDDDDDDDDDDDD”);
Lớp CCMM03A
Trang 11
Đồ án An ninh mạng
Module 17: Buffer Overflow
printf(“% \n”,target);
return 0;
}
2.2 LỖI BUFFER OVERFLOW VÀ NGUYÊN NHÂN GÂY LỖI:
Thông thường có 2 cách khai thác lỗi buffer overflow mà attacker có thể sử
dụng:
Khai thác dựa vào các lỗ hỏng phần mền thông qua ngôn ngữ lập trình (phần
mềm 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 vào như các trường username, password ...
Nguyên nhân gây ra các lỗi buffer overflow của các chương trình và ứng
dụng:
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ềm ẩn các lỗi
mà hacker có thể khai thác. Các phương thức strcat(), strcpy(), sprintf(),
bcopy(), gets(), và canf() trong ngôn ngữ C có thể được khai thác vì các hàm
này không kiểm tra xem những buffer được cấp phát trên stack có kích thước
lớn hơn dữ liệu được copy vào buffer hay không.
Những chương trình hoặc ứng dụng được lập trình không tốt khi tạo ra nó
(khả năng lập trình kém).
Một lỗi buffer overflow xuất hiện khi buffer cố gắng cấp phát 1 không gian
lưu trữ có dữ liệu lớn hơn khả năng lưu trữ của nó.
Có 2 kiểu Buffer Overflow chính:
Stack overflow
Heap overflow
Lớp CCMM03A
Trang 12
Đồ án An ninh mạng
Module 17: Buffer Overflow
Stack (nơi lưu trữ tĩnh của không gian bộ nhớ) và Heap (nơi lưu trữ động của
không gian bộ nhớ, được sinh ra khi chạy một chương trình) là địa điểm lưu trữ
cung cấp cho các biến khi chạy một chương trình. Biến được lưu trữ trong stack
hoặc heap cho đến khi chương trình có nhu cầu sử dụng.
2.3 STACK OVERFLOW:
2.3.1 Định nghĩa:
Stack là một kiểu cấu trúc dữ liệu hoạt động theo cơ chế LIFO (last in first
out) được máy tính sử dụng để truyền các đối số vào các hàm để tham chiếu đến
các biến cục bộ.
Stack sẽ lưu giữ tất cả các thông tin mà hàm cần Stack được khởi tạo khi bắt
đầu của một hàm và được “phóng thích” khi hàm kết thúc.
Stack overflow xuất hiện khi buffer tràn trong stack space. Đoạn code độc hại sẽ
được push vào stack.
Lỗi tràn nhớ có thể viết lại giá trị của return pointer, vì thế hacker có thể điều
khiển con trỏ tới các đoạn code độc hại mà họ muốn thực thi.
Hình 2.1: Stack
2.3.2 Mục đích chính của Stack buffer overflow:
Lớp CCMM03A
Trang 13
- Xem thêm -