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ấ
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ
MINH
BÁO CÁO ĐỒ ÁN MÔN PHÂN TÍCH MÃ ĐỘC
BUFFER OVERFLOW
Lớp: 19DATA1
TP.Hồ Chí Minh, 2022
Trang 2LỜ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ó nhucầ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êngiao 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ênInternet 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ácphương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truynhậ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ềuvấ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ạngInternet
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ácmá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ó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ủatả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áttriể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ảntrị 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à hackerthường hay sự dụng đó là kỹ thuật Buffer Overflow
Trang 3BUFFER OVERFLOW
CHƯƠNG 1: TỔNG QUAN 1
1.1 Tổng quan về đồ án 1
1.2 Nhiệm vụ đồ án 1
1.3 Cấu trúc đồ án 1
CHƯƠNG 2: GIỚI THIỆU VỀ AN NINH MẠNG 2
2.1 TÌNH HÌNH AN NINH MẠNG THẾ GIỚI: 2
2.2 TÌNH HÌNH AN NINH MẠNG TẠI VIỆT NAM: 3
2.2.1 Thiếu nhận thức, nhân lực và đầu tư: 3
2.2.2 Tình hình tội phạm: 4
2.2.3 Cần hoàn thiện qui định của pháp luật: 6
2.2.4 Nâng cao nhận thức về an ninh mạng: 6
2.3 CÁC KHÁI NIỆM VÀ THUẬT NGỮ: 6
2.3.1 Hacker: 7
2.3.2 HTTP header: 7
2.3.3 Session: 7
2.3.4 Cookie: 8
2.3.5 Proxy: 10
2.4 CÁCH THỨC THỰC THI MÃ ĐỘC TRONG LỔ HỔNG BUFFER OVERFLOW: 11
CHƯƠNG 3: GIỚI THIỆU VỀ KỸ THUẬT BUFFER OVERFLOW 13
3.1 ĐỊNH NGHĨA: 13
3.2 LỖI BUFFER OVERFLOW VÀ NGUYÊN NHÂN GÂY LỖI: 15
3.3 STACK OVERFLOW: 16
3.3.1 Định nghĩa: 16
Trang 43.3.2 Mục đích chính của Stack buffer overflow: 17
3.4 HEAP OVERFLOW: 18
3.4.1 Định nghĩa: 18
3.4.2 OVERWRINGTING POINTERS (viết lại con trỏ): 19
3.4.3 Khai thác thư viện malloc(): 20
3.4.4 Mục đích của việc làm hỏng cấu trúc DLMALLOC: 21
3.5 CÁCH PHÁT HIỆN BUFFER OVERFLOW: 22
3.6 CÁCH PHÒNG TRÁNH BUFFER OVERFLOW: 24
3.6.1 Lựa chọn ngôn ngữ lập trình: 24
3.6.2 Sử dụng thư viện an toàn: 25
3.6.3 Chống tràn bộ đệm trên Stack: 25
3.6.4 Bảo vệ không gian thực thi: 25
3.6.5 Ngẫu nhiên hóa sơ đồ không gian địa chỉ: 26
3.6.6 Kiểm tra sâu đối với gói tin 26
3.7 Ví dụ file vul.c 27
3.7.1 Ví dụ tràn bộ đệm khi dữ liệu nhập vào lớn hơn định mức được phát: 27
3.7.2 Ví dụ shellcode trên linux: 29
CHƯƠNG 4: KẾT QUẢ THỰC NGHIỆM 31
4.1 Mục tiêu 31
4.2 Yêu cầu thực hiện 31
4.3 Các Bước Triển Khai 31
KẾT LUẬN 40
TÀI LIỆU THAM KHẢO 45
Trang 5DANH 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
Trang 6CHƯƠNG 1: TỔNG QUAN1.1 Tổng quan về đồ án
Đồ án sẽ giới thiệu cho chúng ta biết về kỹ thuật buffer overflow Tìm hiểu về lỗ hỏngtràn bộ đệm
1.2 Nhiệm vụ đồ án
Giúp người dùng sử dụng trong những mục đích sau:
- Hiểu về kỹ thuật buffer overflow, nguyên nhân gây ra lỗi tràn bộ đệm
- Chương 2: Cơ sở lý thuyết
Phần này sẽ giới thiệu cụ thể về khái niệm Buffer overflow, kiến trúc xử lý và phântích khi xảy ra lỗi
- Chương 3: Kết quả thực nghiệm
Phần này sẽ cho chúng ta thấy mô hình mục tiêu úng dụng, giới thiệu các công cụ
để thực hiện và phân tích tràn bộ đệm bằng gdb-gef
- Chương 4: Kết luận và hướng phát triển của đồ án
Phần này sẽ rút ra những lưu ý và lời khuyên và đưa ra hướng phát triển để bảomật tốt hơn
1
Trang 7CHƯƠNG 2: GIỚI THIỆU VỀ AN NINH MẠNG
2.2 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ứumá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ácmá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ườiquả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ủahọ
Đ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 Webcũ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ươngphá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ốngmạ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ạngchắ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 hackerkhai 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ênngười sử dụng-mật khẩu (UserID/password) hoặc sử dụng một số lỗi của cácchương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuynhiê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
2
Trang 8(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ươngphá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à 626triệu đôla Mỹ
2.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ôngwebsite…, mang lại nhiều nguy cơ tiềm tàng cho an ninh mạng
2.2.13 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 tynướ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ậptrì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ậmtiến độ triển khai dự án, hiệu quả lại khó kiểm chứng Tuy đã được các chuyên giamá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
3
Trang 9tì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ìnhtrạ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ácdoanh 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ìnhtrạ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ụctrang web bị hacker tấn công, trong đó có cả trang web của những công ty tên tuổinhư 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à docá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 anninh 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
2.2.13 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ọnghơ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 doanhnghiệ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ếuchỉ 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
4
Trang 10nhậ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ôngtrang 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ườngmạ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ómtộ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ủaBKIS 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ôngcò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ếpcậ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ũngnhanh 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 Anhbắ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 sinhviê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ệtNam thêm nghiêm trọng chính là hành lang pháp lý chưa đủ mạnh, hình phạt dànhcho 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ốngtộ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á chungchung, không áp dụng được vào các hành vi cụ thể, nhất là các quy định về tộiphạ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ý
2.2.13 Cần hoàn thiện qui định của pháp luật:
5
Trang 11Nước ta nên theo xu hướng của thế giới khi quy định về những hành vi liênquan 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ộiphạ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ệcsử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ềuchỉnh sẽ được thực hiện dễ dàng hơn
2.2.13 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 anninh mạng trong xã hội ta chưa cao Nhiều người vẫn coi hành vi xâm phạm anninh 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 racho 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ựccũ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 anninh 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ệnhữ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
2.2 CÁC KHÁI NIỆM VÀ THUẬT NGỮ:
2.3.14 Hacker:
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thốngmạng…Hacker thường là những chuyên gia về máy tính Hacker không tạo ra các
6
Trang 12kẽ 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ệnviệ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ườinày bị xem như là BlackHat (Hacker mũ đen)
2.3.14 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à HTTPrequests (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
2.3.14 Session:
HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTPkhô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àygâ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ụngWeb đư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 chongườ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
7
Trang 13Phiê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.
Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại nhữngthông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào YahooMessenger! ) mà người dùng không phải làm lại thao tác đăng nhập hay phải cungcấ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
8
Trang 14Non-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
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:00giờ GMT ngày 01/01/1970 Nếu giá trị này không được thiết lập thì trìnhduyệ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)
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
9
Trang 15Kí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”.
2.3.14 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
2.4 CÁCH THỨC THỰC THI MÃ ĐỘC TRONG LỔ HỔNG BUFFER OVERFLOW:
Trang 16dễ dàng hơn Chỉ một người nên được lựa chọn, để giảm lao động thủ công, dothiếu tiêu chuẩn hóa trong cơ sở dữ liệu các kích cỡ.
Kho lưu trữ khai thác sẽ được nghiên cứu và một số số liệu được rút ra để đại diệncho số lượng các mục nhập về tràn bộ đệm và khai thác chống lại các lỗ hổng tràn
bộ đệm
Việc khai thác sẽ được nghiên cứu để thu thập một số kiến thức về nguồn gốc của
tự do khai thác có sẵn và các mục đích có thể của việc xuất bản chúng
Một nỗ lực sẽ được thực hiện để hình thành các nhóm khai thác đặc biệt với cáchkhai thác tương tự thông tin chi tiết
Cấu trúc của trứng khai thác tiên tiến nhất trong mỗi nhóm khai thác sẽ là đượcnghiên cứu về mức độ phức tạp và khả năng sử dụng trong tương lai Chi tiết vềnhững quả trứng khai thác sẽ được phân tích và tổng kết
Kết quả sẽ được nghiên cứu để đánh giá xu hướng chung trong quá trình trưởngthành của Khai thác
Special Exploit Eggs:
Những quả trứng tinh vi đã được cung cấp khi một quả trứng thẳng không được áp dụng
để khai thác phần tràn được đề cập Các nhà khám phá đã phát minh ra các kỹ thuật thôngminh để phá vỡ các ngăn xếp không thể thực thi và nâng cao đặc quyền bằng phươngpháp tràn đống
Chuẩn bị một khung ngăn xếp tùy chỉnh mà không có mã thực thi trong đó đã được chứngminh là một phương tiện thâm nhập khả thi Vùng tràn của khung ngăn xếp được tạo thủcông để chứa địa chỉ của các lệnh gọi hàm hoặc lệnh gọi hệ thống mong muốn và các đối
số của chúng, hoặc địa chỉ của các tập lệnh máy hoặc chuỗi đã chọn được nhúng trong mãthư viện lưu trú trong bộ nhớ
Một chuỗi địa chỉ và đối số chính xác sẽ dẫn đến việc thực thi một dòng lệnh có tính chấtbảo mật
Các khung ngăn xếp đã được thao tác để chọn các lệnh gọi thư viện hạ lưu mới trong máychủ lưu trữ chương trình để di chuyển mã ký sinh trùng và một vị trí mới có thể đượcchọn đểcác biện pháp bảo vệ bộ nhớ không thực thi sẽ bị bỏ qua
Các điều kiện tràn đã được chứng minh là có giới hạn về cửa sổ thời gian, thu hẹp thờigian có sẵn để khai thác, nhưng khai thác để giành chiến thắng trong điều kiện cuộc đuatrongcâu hỏi đã được cung cấp Không có lý do gì để hạ thấp mức độ nghiêm trọng củaviệc tràn đống đã được để lại sau khi thành công
11
Trang 17minh họa về cách chúng có thể được khai thác Thỏa hiệp đã đạt được bởi các phươngpháp như ghi đè cấu trúc được duy trì bởi các lệnh gọi thư viện liên quan đến IO và bảngtra cứu thủ tục do trình liên kết động lưu giữ.
Một số khai thác sử dụng các phương pháp mã hóa đơn giản để ngụy trang các lệnh được
sử dụng hoặc tránh các ký tự sẽ bị lọc ra hoặc bị thay đổi trước khi nội dung được thựcthi
Các chương trình thực thi chung cũng có sẵn, trong đó chương trình khai thác có mục tiêuphần mềm dưới dạng một tham số cùng với các tham số khai thác khác, chẳng hạn nhưlệnh được thực thi trên các đặc quyền nâng cao Trứng khai thác sau đó được tạo ra,vànộp cho chương trình Với những cải tiến, điều này sẽ giúp mọi người dễ dàngsử dụng cácphương pháp phức tạp hơn
12
Trang 18CHƯƠNG 3: GIỚI THIỆU VỀ KỸ THUẬT BUFFER OVERFLOW3.3 ĐỊ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ệuvượ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ưcthi 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ầnmề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ứacá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ạogiá trị ban đầu như là: int a=0; kích thước này cũng cố định tại lúc thực thichương trình
13
Trang 19 bss (Below stack section) là được sử dụng để lưu trữ các biến toàn cục nhưngkhô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àycũ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ữ Cthì 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ênhầ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 saochép các biến cấp độ hệ thống mà có thể được yêu cầu bởi tiến trình trungquá 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 đượcthể 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ớnvà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:
Trang 20printf(“% \n”,target);
return 0;
}
3.3 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ầnmề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à ứngdụ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à scanf() trong ngôn ngữ C có thể được khai thác vì cáchàm này không kiểm tra xem những buffer được cấp phát trên stack có kíchthướ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 gianlư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
15
Trang 21Stack (nơi lưu trữ tĩnh của không gian bộ nhớ) và Heap (nơi lưu trữ động củakhô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 stackhoặc heap cho đến khi chương trình có nhu cầu sử dụng.
3.3 STACK OVERFLOW:
3.3.24 Đị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 firstout) được máy tính sử dụng để truyền các đối số vào các hàm để tham chiếu đếncá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ềukhiể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
3.3.24 Mục đích chính của Stack buffer overflow:
16
Trang 22Ghi đè 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 phục vụ cho ý đồ của hacker
Ghi đè địa chỉ trả về trong khung stack (stack frame) Khi hàm trả về thưc thi
sẽ được tiếp tục tại địa chỉ mà hacker đã chỉ rõ, thường là tại một bộ đệm chứa dữliệu vào của người dùng
Ví dụ:
Hình 2.2: Ví dụ Stack Overflow
17
Trang 23Hình 2.3: Stack khi bị tấn công bởi Atacker
Trang 24muốn Trong hầu hết các môi trường ứng dụng, việc này có thể giúp attacker có thểđiều khiển các thực thi của chương trình.
Ví dụ:
Hình 2.5: Ví dụ Heap Overflow
Heap trước và sau khi bị lỗi Buffer Overflow:
Hình 2.6: Heap Overflow
3.4.25 OVERWRINGTING POINTERS (viết lại con trỏ):
Kẻ tấn công có thể sử dụng phương pháp này để viết lại filename, password,uid
Các dạng tấn công dựa vào heap:
19
Trang 25Cuộc tấn công kiểu này cần một số điều kiện tiên quyết trong mã nguồn củavulnerable binary: một định nghĩa buffer và pointer Khó khăn của phương phápnày là tìm ra hai điều kiện tiên quyết như trên Một khó khăn khác là xác định địachỉ của vulnerable program Overwriting function pointers.
Mục đích: attacker muốn ghi đè lên một con trỏ và làm cho nó trỏ đến những
gì họ muốn Nó có thể trỏ đến 1 chương trình nào đó
3.4.25 Khai thác thư viện malloc():
Dlmalloc được gọi là thư viện Doug Lea malloc, và cũng là malloc thư việnđược sử dụng bởi LIBC
20
Trang 26 U: Used chunk
F: Free chunk
Wilderness: top most free chunk
Định nghĩa cấu trúc của 1 đoạn (trunk) là:
struct malloc_chunk
{
size_t prev_size; // only used when previous chunk is free
size_t size; // size of chunk in bytes + 2 status-bits
struct malloc_chunk *fd; // only used for free chunks: pointer to nextchunk
struct malloc_chunk *bk; // only used for free chunks: pointer toprevious chunk
}
;
3.4.25 Mục đích của việc làm hỏng cấu trúc DLMALLOC:
Attacker làm tràn bộ nhớ,sau đó ghi đè dữ liệu lên các mục tiêu của họ Yêu cầu đặc biệt cho một dlmalloc khai thác là có hai khối bộ nhớ thu đượcbằng malloc