Đăng ký Đăng nhập
Trang 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 ...

Tài liệu 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

.PDF
43
558
79

Mô tả:

Đồ á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 -

Tài liệu liên quan