Chính vì vậy, việc tìm kiếm, phát hiện các lỗ hổng trên hệ thống máy tính để hiểu được cơ chế và kỹ thuật xâm nhập chúng là cần thiết trong phòng chống sự tấn công của hacker vào hệ thốn
Trang 1LỜI CẢM ƠN
Trước tiên tôi xin chân thành cảm ơn TS Nguyễn Ngọc Cương, Học Viện An Ninh Nhân Dân, người đã định hướng và tận tình hướng dẫn, giúp đỡ tôi trong suốt quá trình thực hiện luận văn
Tôi xin chân thành cảm ơn các thầy cô giáo khoa Công nghệ Thông tin, trường Đại học Công nghệ Thông Tin & TT, những người đã tận tình truyền đạt các kiến thức, quan tâm, động viên trong suốt thời gian tôi học tập và nghiên cứu tại Trường
Tôi xin chân thành cảm ơn Trường Đại học Điều Dưỡng Nam Định – Đơn vị mà tôi đang công tác đã hết sức tạo điều kiện về thời gian cũng như vật chất, tinh thần để tôi
có thể hoàn thành nhiệm vụ học tập của mình
Nhân đây cho phép tôi gửi lời cảm ơn tới nhóm các bạn học cùng lớp CK09D, lớp chuyên ngành Khoa học Máy Tính, các bạn đồng nghiệp đã thường xuyên quan tâm, giúp
đỡ, chia sẻ kinh nghiệm, cung cấp các tài liệu hữu ích trong thời gian tôi học tập, nghiên cứu tại Trường cũng như trong trong quá trình thực hiện luận văn tốt nghiệp vừa qua
Cuối cùng tôi xin bảy tỏ sự biết ơn sâu sắc đến cha mẹ, những người thân trong gia đình đã luôn ở bên tôi, động viên, chia sẻ và dành cho tôi những gì tốt đẹp nhất trong suốt thời gian tôi học cao học cũng như trong thời gian tôi thực hiện luận văn tốt nghiệp này
Thái Nguyên, tháng 11 năm 2012
Trương Hồng Tiệp
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn ―Nghiên cứu cơ chế thâm nhập hệ thống máy tính thông qua lỗ hổng bảo mật và ứng dụng trong công tác đảm bảo an ninh mạng‖ là công trình
nghiên cứu của tôi dưới sự hướng dẫn khoa học của TS Nguyễn Ngọc Cương, tham khảo các nguồn tài liệu đã được chỉ rõ trong trích dẫn và danh mục tài liệu tham khảo Các nội dung công bố và kết quả trình bày trong luận văn này là trung thực và chưa từng được ai công bố trong bất cứ công trình nào
Thái Nguyên, tháng 11 năm 2012
Trương Hồng Tiệp
Trang 3MỤC LỤC
LỜI CẢM ƠN I LỜI CAM ĐOAN II MỤC LỤC III DANH MỤC CÁC HÌNH VẼ VÀ BẢNG BIỂU VI
MỞ ĐẦU 1
Chương 1: TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG MÁY TÍNH 2
1.1 An toàn bảo mật thông tin 2
1.1.1 Khái niệm an toàn bảo mật thông tin 2
1.1.2 Hệ thống và tài sản của hệ thống máy tính 3
1.1.3 Đặc trưng kỹ thuật của an toàn bảo mật 3
1.1.4 Các mức an toàn bảo mật 5
1.2 Lỗ hổng bảo mật 6
1.2.1 Khái niệm lỗ hổng bảo mật 6
1.2.2 Các loại lỗ hổng bảo mật 7
1.2.3 Một số lỗ hổng bảo mật phổ biến 8
1.3 Nguy cơ bị tấn công đối với hệ thống máy tính 15
1.3.1.Tấn công một hệ thống máy tính qua mạng 15
1.3.2.Một số kỹ thuật tấn công 16
Chương 2: PHƯƠNG PHÁP THÂM NHẬP HỆ THỐNG MÁY TÍNH DỰA TRÊN KHAI THÁC LỖ HỔNG BẢO MẬT 20
2.1.Tấn công Injection 20
2.1.1 Khái niệm 20
2.1.2 Các dạng tấn công SQL Injection 20
Trang 42.1.3 Phòng chống tấn công Injection 22
2.2 Tấn công từ chối dịch vụ 23
2.2.1 Tấn công thông qua kết nối (SYN Flood) 24
2.2.2 Lợi dụng tài nguyên của nạn nhân để tấn công 25
2.2.3 Tấn công từ chối dịch vụ phân tán (Distribute Denial of Service) 25
2.2.4 Tấn công từ chối dịch vụ phản xạ nhiều vùng (Distribute Reflection Denial of Service) 29
2.2.5 Tấn công từ chối dịch vụ bằng sử dụng các nguồn tài nguyên khác 29
2.2.6 Phòng chống tấn công từ chối dịch vụ 30
2.3 Tấn công tràn bộ đệm (Buffer Overflow) 31
2.3.2 Cơ chế khai thác lỗi tràn bộ đệm 38
2.3.3 Phòng chống tấn công tràn bộ đệm 38
2.4 Tổng kết phương thức khai thác lỗ hổng bảo mật để tấn công hệ thống máy tính 40
Chương 3: MỘT SỐ GIẢI PHÁP ĐẢM BẢO AN NINH CHO HỆ THỐNG MÁY TÍNH 41
3.1 Thiết kế giải pháp an toàn an ninh cho hệ thống 41
3.1.1 Các chiến lược an toàn hệ thống 41
3.1.2 Các mức bảo vệ trên mạng 42
3.1.3 Các bước để xây dựng giải pháp tổng thể 44
3.2 Giải pháp Firewall 45
3.2.1 Khái niệm 45
3.2.2 Phân loại Firewall 45
3.2.3 Kiến trúc hệ thống mạng sử dụng Firewall 47
3.3 Giải pháp mạng riêng ảo (VPN) 49
Trang 53.3.1 Khái niệm 49
3.3.2 Các mô hình triển khai VPN 49
3.4 Hệ thống phát hiện xâm nhập (IDS) 50
3.4.1 Khái niệm 50
3.4.2 Chức năng của IDS 51
3.4.3 Kiến trúc của hệ thống IDS 52
3.4.4 Cách thức IDS làm việc 52
3.4.5.Một số phương pháp phát hiện xâm nhập của IDS 56
Chương 4: CÀI ĐẶT THỬ NGHIỆM CHƯƠNG TRÌNH KHAI THÁC LỖ HỔNG BẢO MẬT TRÊN HỆ THỐNG MÁY TÍNH 57
4.1 Xây dựng chương trình khai thác lỗi tràn bộ đệm 57
4.1.1 Shellcode 58
4.1.2 Viết chương trình khai thác lỗi tràn bộ đệm 63
4.2 Cài đặt thử nghiệm bộ công cụ bảo mật sử dụng trong công tác đảm bảo an ninh hệ thống mạng 73
4.2.1 Tìm hiểu một số phần mềm bảo mật 73
4.2.2 Xây dựng bộ công cụ 76
KẾT LUẬN 79
TÀI LIỆU THAM KHẢO 80
Trang 6DANH MỤC CÁC HÌNH VẼ VÀ BẢNG BIỂU
Hình 1-1 Kiến trúc Ứng dụng Web 9
Bảng 1-2 Các công nghệ và thông tin quan trọng mà hacker muốn nhận diện 15
Hình 2-1 Minh họa tấn công DoS 24
Hình 2-2 Tấn công từ chối dịch vụ thông qua kết nối 24
Hình 2-3 Mô hình tấn công DdoS 26
Hình 2-4 Sơ đồ chính phân loại các kiểu tấn công DDoS 27
Hình 2-5 : Kiến trúc attack – network kiểu Agent – Handler 27
Hình 2-6 Kiến trúc attack – network kiểu IRC – Based 28
Hình 2-7 Mô hình tấn công theo kiểu DRDoS 29
Hình 2-8 Mô hình tấn công Smurf attack 30
Hình 2-9 Mô hình tấn công Teardrop Attack 30
Hình 2-10 Đoạn code chứa lỗi tràn bộ đệm 32
Hình 2-11 Giá trị khởi tạo của dữ liệu trên bộ nhớ đệm 33
Hình 2-12 Ghi xâu ký tự mới vào bộ đệm 33
Hình 2-13 Tổ chức bộ nhớ của tiến trình 33
Hình 2.14: Hoạt động của dữ liệu trên Stack 34
Hình 2-15 Bước khởi tạo của hàm 37
Hình 2-16 Hai thanh ghi cùng trỏ đến một địa chỉ 37
Hình 2-17 Lệnh thứ ba được thực hiện 38
Hình 3-1 Quy trình để xây dựng giải pháp cụ thể 44
Hình 3-2 Packet filtering firewall 46
Hình 3-3 Circuitlevel gateway 46
Hình 3-4 Application level gateway 47
Trang 7Hình 3-5 Stateful multilayer inspection Firewall 47
Hình 3-6 Kiến trúc hệ thống mạng sử dụng Firewall 47
Hình 3-7 Các thành phần của hệ thống Firewall 48
Hình 3-8 Giải pháp IPSec VPN 50
Hình 3-8 Giải pháp SSL VPN 50
Hình 3-9 Hệ thống mạng sử dụng IDS 51
Hình 3-10 Kiến trúc hệ thống IDS 52
Hình 3-11 Network-Based IDS (NIDS) 53
Hình 3-12 Host Based IDS (HIDS) 54
Hình 3-13 Hệ thống phát hiện xâm nhập phân tán (DIDS) 56
Hình 4-1 Tổ chức shellcode trên bộ nhớ 61
Hình 4-2 Trạng thái stack trước và sau khi tràn bộ đệm 61
Hình 4-3 Các khả năng sắp xếp biến trên stack 62
Hình 4-4 Kết quả xác định địa chỉ Shellcode 63
Hình 4-5 Kết quả truyền Shellcode vào bộ điệm 67
Hình 4-6 Kết quả truyền Shellcode vào biến môi trường 69
Hình 4-7 Kết quả chạy chương trình khai thác lỗi 71
Hình 4-8 Kết quả chạy chương trình kiểm tra hoạt động của Stack 72
Hình 4-9 Giao diện phần mềm Spade 73
Hình 4-10 Thông tin thu được từ Website 74
Hình 4.11 Giao diện chương trình Web Vulnerability Scanner 75
Hình 4-12 Giao diện phần mềm Nmap 76
Hình 4-13 Giao diện bộ công cụ bảo mật 77
Hình 4-14 Hiển thị chức năng của bộ công cụ 78
Trang 8MỞ ĐẦU
Trong những năm gần đây, việc xâm nhập, tấn công mạng của hacker và tội phạm mạng nhằm vào các hệ thống máy tính ở Việt Nam và trên thế giới có xu hướng ngày càng gia tăng, gây nhiều hậu quả nghiêm trọng về kinh tế và chính trị
Các cuộc tấn công vào các hệ thống máy tính có thể được tiến hành bằng nhiều kỹ thuật khác nhau Trong đó, đặc biệt có các cuộc tấn công thông qua khai thác lỗ hổng bảo mật của hệ thống và ứng dụng Do một số ứng dụng hiện nay thường sử dụng các mã nguồn mở nên có nhiều lỗi sẽ gây ra các lỗ hổng, dẫn đến các hệ thống sử dụng các phần mềm này có thể bị tấn công
Chính vì vậy, việc tìm kiếm, phát hiện các lỗ hổng trên hệ thống máy tính để hiểu được cơ chế và kỹ thuật xâm nhập chúng là cần thiết trong phòng chống sự tấn công của hacker vào hệ thống
Đây là lý do để chúng tôi lựa chọn đề tài: “Nghiên cứu cơ chế thâm nhập hệ
thống máy tính thông qua lỗ hổng bảo mật và ứng dụng trong công tác đảm bảo an ninh mạng”
1 Mục tiêu của đề tài
Tìm hiểu các lỗ hổng bảo mật của hệ thống và ứng dụng, bản chất quá trình thâm nhập tấn công của hacker vào hệ thống máy tính thông qua khai thác lỗ hổng bảo mật và đưa ra phương pháp phòng tránh đảm bảo an ninh máy tính và mạng máy tính
2 Nội dung nghiên cứu
Nghiên cứu, tìm hiểu một số lỗ hổng bảo mật phổ biến trên hệ thống máy tính như:
lỗ hổng bảo mật ứng dụng Web, Internet Explorer, Window Microsoft,
Nghiên cứu các phương pháp thâm nhập hệ thống máy tính trên cơ sở khai thác các
lỗ hổng bảo mật như: Buffer Overflow (tràn bộ đệm), tấn công từ chối dịch vụ, tấn công Injection,
Viết chương trình thử nghiệm tấn công bằng kết hợp phương pháp gây tràn bộ đệm
và cài đặt vào máy cần tấn công thông qua lỗ hổng bảo mật
Nghiên cứu các phương pháp, công cụ để dò tìm, phát hiện lỗ hổng bảo mật thông qua các công cụ bảo mật như: Retina, Backtrack,
Đề xuất một số phương pháp kiểm tra và phát hiện sự xâm nhập
Trang 93 Phương pháp nghiên cứu
Phương pháp tổng hợp: thu thập tài liệu, đối chiếu, so sánh, phân tích, liệt kê, đối sánh, trực quan, thực nghiệm,
Phương pháp chuyên gia: tìm hiểu các hệ thống máy tính, xây dựng hệ thống hoàn chỉnh, các phần mềm phát hiện lỗ hổng bảo mật, thâm nhập hệ thống
Nghiên cứu ngôn ngữ lập trình để viết chương trình gây tràn bộ đệm
Phương pháp thực nghiệm: sử dụng mạng máy tính để thực hành xâm nhập thông qua lỗ hổng bảo mật
4 Cấu trúc luận văn
Chương 1: TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG MÁY TÍNH
1.1 An toàn bảo mật thông tin
1.1.1 Khái niệm an toàn bảo mật thông tin
Ngày nay, với sự phát triển bùng nổ của công nghệ thông tin, hầu hết các thông tin của tổ chức, doanh nghiệp như chiến lược kinh doanh, các thông tin về khách hàng, điều được lưu trữ trên hệ thống máy tính Cùng với sự phát triển của các cơ quan, tổ chức, doanh nghiệp là những đòi hỏi ngày càng cao của môi trường làm việc nhanh chóng, hiệu quả nên thông tin cần được chia sẻ cho nhiều đối tượng khác nhau thông qua môi trường Intranet hay Internet Việc mất mát, rò rỉ thông tin có thể ảnh hưởng nghiêm trọng đến tài chính, danh tiếng, của các cơ quan, tổ chức
Các phương thức tấn công thông qua mạng ngày càng tinh vi, phức tạp có thể dẫn đến mất mát thông tin, thậm chí có thể làm sụp đổ hoàn toàn hệ thống thông tin của tổ chức Vì vậy an toàn bảo mật thông tin là nhiệm vụ rất nặng nề và khó đoán trước được
An toàn bảo mật (an ninh) thông tin là cách bảo vệ, đảm bảo cho tất cả các thành phần của hệ thống máy tính bao gồm dữ liệu, thiết bị, cơ sở hạ tầng mạng, và đảm bảo mọi tài nguyên được sử dụng tương ứng với một chính sách hoạt động được ấn định và với chỉ người có thẩm quyền tương ứng
An toàn bảo mật thông tin gồm 3 hướng chính sau:
- Đảm bảo an toàn thông tin tại máy chủ
- Bảo đảm an toàn thông tin phía máy trạm
- Bảo đảm an toàn thông tin trên đường truyền
An toàn bảo mật thông tin bao gồm:
Trang 10- Xác định chính sách các khả năng, nguy cơ xâm phạm hệ thống máy tính, các sự
cố rủi ro đối với thiết bị, dữ liệu trên hệ thống để có giải pháp phù hợp đảm bảo an toàn cho hệ thống
- Đánh giá nguy cơ tấn công của hacker tác động đến hệ thống, sự phát tán virus
An toàn bảo mật hệ thống thông tin là một trong những vấn dề cực kỳ quan trọng trong các hoạt đọng, giao dịch điện tử và trong việc khai thác, sử dụng tài nguyên của hệ thống
- Xác định chính xác cấp độ an toàn, đánh giá nguy cơ, các lỗ hổng khiến hệ thống
có thể bị xâm phạm thông qua cách tiếp cận có cấu trúc Xác định những nguy cơ ăn cắp, phá hoại máy tính, thiết bị, nguy cơ virus, bọ gián điệp, nguy cơ xóa, phá hoại CSDL, ăn cắp mật khẩu, nguy cơ đối với sự hoạt động của hệ thống như nghẽn mạng, nhiễu điện tử Khi đánh giá được hết những nguy cơ ảnh hưởng tới an ninh mạng thì mới có thể có được những biện pháp tốt nhất để đảm bảo an toàn cho hệ thống
- Sử dụng hiệu quả các công cụ bảo mật (như Firewall ) và những biện pháp, chính sách cụ thể chặt chẽ
1.1.2 Hệ thống và tài sản của hệ thống máy tính
Hệ thống là một tập hợp các máy tính gồm các thành phần phần cứng, phần mềm
và dữ liệu làm việc được tích lũy qua thời gian
Tài sản của hệ thống bao gồm:
1.1.3 Đặc trưng kỹ thuật của an toàn bảo mật
- Xác thực (Authentification): Kiểm tra tính xác thực của một thực thể giao tiếp trên
mạng Một thực thể có thể là một người sử dụng, một chương trình máy tính, hoặc một thiết bị phần cứng Các hoạt động kiểm tra tính xác thực được đánh giá là quan trọng nhất trong các hoạt động của một phương thức bảo mật Một hệ thống thông thường phải thực hiện kiểm tra tính xác thực của các phương thức bảo mật dựa vào 3 mô hình chính sau:
+ Đối tượng cần kiểm tra phải cung cấp những thông tin trước, ví dụ như password, hoặc mã số thông tin cá nhân PIN (Personal Infomation Number)
+ Kiểm tra dựa vào mô hình những thông tin đã có, đối tượng kiểm tra cần phải thể hiện những thông tin mà chúng sở hữu, ví dụ như Private Key, hoặc số thẻ tín dụng
Trang 11+ Kiểm tra dựa vào mô hình những thông tin xác định tính duy nhất, đối tượng kiểm tra cần phải có những thông tin để định danh tính duy nhất ví dụ như thông qua giọng nói, vân tay, chữ ký,
Có thể phân loại bảo mật trên VPN theo các cách sau: mật khẩu truyền thống hay mật khẩu một lần; xác thực thông tin qua các giao thức (PAP, CHAP, RADIUS ) hay phần cứng (các loại thẻ card: smart card, token card), nhận diện sinh trắc học (dấu vân tay, giọng nói, quét võng mạc )
- Tính khả dụng (Availaility): Tính khả dụng là đặc tính mà thông tin trên mạng
được các thực thể hợp pháp tiếp cận và sử dụng theo yêu cầu, khi cần thiết bất cứ khi nào, trong hoàn cảnh nào Tính khả dụng nói chung dùng tỷ lệ giữa thời gian hệ thống được sử dụng bình thường và thời gian quá trình hoạt động để đánh giá Tính khả dụng cần đáp ứng những yêu cầu sau: Nhận biết và phân biệt thực thể, khống chế tiếp cận, khống chế lưu lượng, khống chế chọn đường (cho phép chọn đường nhánh, mạch nối ổn định, tin cậy), giám sát tung tích
- Tính bảo mật (Confidentialy): Tính bảo mật là đặc tính thông tin không bị tiết lệ
cho các thực thể hay quá trình không được ủy quyền biết hoặc không để cho các đối tượng đó lợi dụng Thông tin chỉ cho phép thực thể ủy quyền sử dụng Kỹ thuật bảo mật thường là phòng ngừa dò la thu thập (làm cho đối thủ không thể dò la thu thập được thông tin), phòng ngừa bức xạ (phòng ngừa những tin tức bị bức xạ ra ngoài bằng nhiều đường khác nhau), tăng cường bảo mật thông tin (dưới sự khống chế của khóa mật mã), bảo mật vật lý (sử dụng các phương pháp vật lý đê đảm bảo thông tin không bị tiết lộ)
- Tính toàn vẹn (Integrity): Là đặc tính khi thông tin trên mạng chưa được ủy
quyền thì không thể tiến hành biến đổi được, tức là thông tin trên mạng khi đang lưu giữ hoặc trong quá trình truyền dẫn đảm bảo không bị xóa bỏ, sửa đổi, giả mạo, làm rối loạn trật tự, phát lại, xen vào một cách ngẫu nhiên hoặc cố ý và những sự phá hoại khác Những nhân tố chủ yếu ảnh hưởng tới sự toàn vẹn thông tin trên mạng gồm: sự cố thiết bị, sai mã, bị tác động của con người, virus máy tính Để đảm bảo tính toàn vẹn của thông tin trên mạng ta thường sử dụng một số phương pháp sau:
+ Giao thức an toàn có thể kiểm tra thông tin bị sao chép, sửa đổi hay sao chép Nếu phát hiện thì thông tin đó sẽ bị vô hiệu hóa
+ Phương pháp phát hiện sai và sửa sai Phương pháp sửa sai mã hóa đơn giản nhất và thường dùng là phép kiểm tra chẵn – lẻ
+ Biện pháp kiểm tra mật mã ngăn ngừa hành vi xuyên tạc và cản trở truyền tin + Chữ ký điện tử: đảm bảo tính xác thực của thông tin
+ Yêu cầu cơ quan quản lý hoặc trung gian chứng minh tính chân thực của thông tin
Trang 12- Tính khống chế (Accountlability): Là đặc tính về năng lực khống chế truyền bá và
nội dung vốn có của tin tức trên mạng
- Tính chống chối bỏ (Nonreputation): Trong quá trình trao đổi thông tin trên
mạng, xác nhận tính chân thực đồng nhất của những thực thể tham gia, tức là tất cả các thực thể tham gia không thể chối bỏ hoặc phủ nhận những thao tác và cam kết đã được thực hiện
1.1.4 Các mức an toàn bảo mật
Bộ Quốc phòng Mỹ đã phát triển một số tiêu chuẩn an ninh máy tính gọi là các nguyên tắc để đánh giá tiêu chuẩn độ tin cậy của máy tính Bộ tiêu chuẩn này được phát hành trong bộ sách màu da cam Theo tiêu chuẩn này có rất nhiều mức để bảo vệ phần cứng, phần mềm và các thông tin lưu trữ khỏi bị tấn công Các mức này mô tả các loại an ninh khác nhau như: an toàn vật lý, xác thực người sử dụng, độ tin cậy của phần mềm hệ điều hành và các ứng dụng của khách hàng Theo sự phân chia này có một số mức như sau:
- Mức D1: Đây là mức an toàn thấp nhất Theo mức tiêu chuẩn này thì toàn bộ hệ
thống là không thể tin cậy được: phần cứng không được bảo vệ và hệ điều hành dễ dàng
bị xâm hại Thông thường mức an toàn này thuộc về các hệ điều hành như MS-DOS, MS Windows và hệ Aple Macintosh 7.x Các hệ điều hành này không phân biệt được giữa những người sử dụng và không có phương pháp nào để xác định ai đang gõ trên bàn phím Các hệ điều hành này không có bất kỳ biện pháp điều khiển nào về thông tin có thể được truy cập trên ổ đĩa cứng trong máy tính
- Mức C1: Mức này còn được gọi là hệ thống bảo vệ an toàn tùy ý (Discretionanry
Security Protection System), mô tả vấn đề an toàn hiện có trên các hệ thống Unix thông thường Phần cứng được bảo vệ ở một mức độ nhất đinh nào đấy và không dễ dàng bị xâm hại Người sử dụng phải chứng minh được chính họ cho hệ thống thông qua tên truy cập và mật khẩu Thông qua việc này hệ thống xác định các quyền truy nhập của mỗi người sử dụng đối với các chương trình phần mềm và thông tin hệ thống
- Mức C2: Cùng với tính năng của mức C1, mức C2 còn bao gồm các tính năng an
toàn phụ nhằm tạo ra một môi trường truy nhập điều khiển được Môi trường này có khả năng tiếp tục hạn chế người sử dụng không cho thực hiện một số lệnh nhất định hoặc không cho phép truy nhập một số tệp nào đó Nó bao hàm việc ghi chép hồ sơ kiểm tra cho mỗi sự kiện xảy ra trên hệ thống Với việc sử dụng thêm quyền hạn người sử dụng, trên hệ thống C2 có thể thực hiện một số nhiệm vụ quản lý hệ thống mà không cần có mật khẩu gốc Điều này cho phép theo dõi các nhiệm vụ liên quan đến quản lý hệ thống tốt hơn bởi vì mỗi người sử dụng đều thực hiện được công việc của mình mà không phải lúc nào cũng cần đến người quản lý hệ thống
Trang 13- Mức B1: Đây là mức bảo vệ an toàn có nhãn (Lable Security Protection) quy định
mỗi đối tượng đang được điều khiển truy nhập bắt buộc thì chủ sở hữu của tệp cũng không thể thay đổi việc cho phép trên vật thể đó
- Mức B2: Mức này còn được gọi là bảo vệ có cấu trúc (Structured Protection) đòi
hỏi mọi đối tượng phải được dán nhãn Người ta có thể gán một mức an toàn duy nhất hoặc nhiều mức an toàn cho các thiết bị như ổ đĩa, băng từ, thiết bị đầu cuối Đây cũng là mức an toàn đầu tiên trình bày vấn đề liên lạc giữa một đối tượng ở mức an toàn cao hơn
so với một vật thể ở mức an toàn thấp hơn
- Mức B3: Mức B3 hay mức miền an toàn (Security Domain), nó đảm bảo cho
miền bằng lắp đặt phần cứng Ví dụ, người ta sử dụng phần cứng quản lý bộ nhớ để bảo
vệ miền an toàn khỏi bị truy nhập và sửa đổi trái phép từ các miền an toàn khác Mức này cũng yêu cầu thiết bị đầu cuối của người sử dụng phải được kết nối với hệ thống thông qua một đường truyền tin cậy
- Mức A: Mức A hay mức thiết kế được thẩm tra (Verified Design) hiện đang là
mức an toàn cao nhất được quy định trong sách da cam Nó bao gồm một thiết kế chặt chẽ, quá trình điều khiển và xác minh Để đạt mức an toàn này hệ thống phải chứa tất cả các thành phần của các mức an toàn thấp hơn Phải dùng toán học để xác minh tính đúng đắn của bản thiết kế và phải thực hiện phân phối tin cậy cũng như phân tích các kênh bí mật Phân phối tin cậy có nghĩa là phép chiếu và phần mềm đã được bảo vệ trong quá trình vận chuyển để ngăn chặn sự nhòm ngó hệ thống an toàn
1.2 Lỗ hổng bảo mật
1.2.1 Khái niệm lỗ hổng bảo mật
Các lỗ hổng bảo mật hệ thống là các điểm yếu có thể tạo ra sự ngưng trệ của dịch
vụ, thêm quyền đối với người sử dụng hoặc cho phép các truy nhập bất hợp pháp vào hệ thống Các lỗ hổng tồn tại trong các dịch vụ như Sendmail, Web, Ftp và trong hệ điều hành như Windows NT, Unix; hoặc trong các ứng dụng
Lỗ hổng bảo mật không chỉ nằm ở những thiếu sót, những sơ hở trong các hệ thống, trong các ứng dụng mà nó có thể tồn tại ngay chính trong con người sử dụng, khai thác hệ thống đó
Về mặt hệ thống, một lỗ hổng bảo mật máy tính là một kẽ hở trong việc bảo mật hệ thống máy tính Khi một máy tính trong hệ thống có lỗ hổng bị khai thác, người tấn công
có thể chiếm quyền kiểm soát toàn bộ hệ thống máy tính này Các loại lỗ hổng bảo mật trên một hệ thống gồm:
Trang 14Lỗ hổng loại C: cho phép thực hiện các phương thức tấn công theo kiểu từ chối dịch vụ Mức nguy hiểm thấp, chỉ ảnh hưởng chất lượng dịch vụ, có thể làm ngưng trệ, gián đoạn hệ thống, không phá hỏng dữ liêu hoặc chiếm quyền truy nhập
Lỗ hổng loại B: cho phép người sử dụng có thêm các quyền trên hệ thống mà không cần kiểm tra tính hợp lệ Mức độ nguy hiểm trung bình, những lỗ hổng này thường
có trong các ứng dụng trên hệ thống, có thể dẫn đến hoặc lộ thông tin yêu cầu bảo mật
Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể truy nhập vào hệ thống bất hợp pháp Lỗ hổng rất nguy hiểm, có thể làm phá hủy toàn bộ hệ thống Chúng ta sẽ xem xét các loại lỗ hổng bảo mật sau:
1.2.2 Các loại lỗ hổng bảo mật
Lỗ hổng bảo mật thường được chia làm 2 loại: Lỗi logic và Kỹ thuật đánh lừa
- Lỗi logic (Logic error):
Lỗi logic là loại lỗ hổng bảo mật thường sinh ra khi người lập trình thực hiện thiết
kế các chương trình ứng dụng, hệ điều hành hay các giao thức Đây là loại lỗ hổng thường được mọi người quan tâm và nghĩ đến trước tiên Nó bao gồm:
+ Lỗ hổng hệ điều hành: Chúng ta có thể cho rằng, một người quản trị kém là nguyên nhân thực sự dẫn tới việc các hacker có thể thâm nhập vào các máy tính một cách
dễ dàng, tuy nhiên đôi lúc lỗi không thuộc về những người quản trị Nếu hệ điều hành có thể quản lý vấn đề tràn bộ nhớ một cách chính xác thì đã không tồn tại lỗ hổng cho các hacker có thể khai thác
+ Lỗ hổng ứng dụng: Cũng giống như các lỗ hổng ở hệ điều hành, lỗ hổng trong các ứng dụng thường bị khai thác nhiều nhất Tuy nhiên, khác với lỗ hổng trong hệ điều hành, để thực hiện tấn công thông qua việc khai các lỗ hổng trong các ứng dụng, người tấn công phải xác định được một cách chính xác là máy tính nạn nhân đang sử dụng các chương trình ứng dụng tồn tại lỗ hổng bảo mật đó
Các hình thức tấn công và khai thác kẽ hở phổ biến nhất thông qua lỗ hổng trong các ứng dụng hiện nay là:
Liên kết các địa chỉ web (Cross site scripting): thông qua cấy các mã độc vào kẽ
hở ngôn ngữ kịch bản, ngôn ngữ có cấu trúc SQL
Phá rối tham số (parameter tampering) và khai thác Cookie (Cookie exploits) Lỗi tràn bộ đệm (buffer overflow)
+ Lỗ hổng trong các giao thức: Trong nhiều trường hợp, các giao tiếp thực sự giữa các lớp rất khó để có thể thiết kế một cách hoàn hảo Các máy tính tham gia mạng đều tin tưởng tuyệt đối vào các giao thức mạng, chính vì vậy hiện tượng “giả mạo” ngày càng trở lên phổ biến hơn
Trang 15+ Lỗ hổng trong chính sách bảo mật (Policy oversight): Đây là loại lỗ hổng trong quá trình thiết lập các chính sách bảo mật cho một hệ thống, đó có thể là các lỗ hổng sinh
ra do thiếu cơ chế sao lưu dữ liệu, dự phòng các sự cố phần cứng, nâng cấp phần mềm
Một chính sách bảo mật toàn diện có thể bao gồm các phần sau:
Chính sách khôi phục dữ liệu cho phép khôi phục lại các dữ liệu bị mất mát, phá hủy do những kẻ truy nhập trái phép gây ra
Chính sách khôi phục phần cứng bị lỗi cung cấp khả năng thay thế, khắc phục phần cứng bị lỗi một cách nhanh chóng, đảm bảo cho hệ thống luôn trong trạng thái hoạt động an toàn
Chính sách điều tra truy nhập trái phép: Khi có một sự cố truy nhập trái phép xảy
ra thì ngay lập tức cần phải có một chính sách điều tra rõ ràng Các máy tính cũng như các phần mềm ứng dụng cần phải được dò xét lại xem lỗ hổng nằm ở phần nào của hệ thống
Chính sách bảo mật các khu vực truyền dẫn, khu vực điện đảm bảo có tính an toàn của các hệ thống mạng, hệ thống truyền dẫn, hệ thống điện, nâng cao tính ổn định của hệ thống máy tính đang hoạt động
Chính sách bảo vệ chống mất mát phần cứng và phần mềm: bảo mật phần cứng
và phần mềm là một chính sách rất quan trọng
Kẻ phá hoại có thể lợi dụng những lỗ hổng trên để tạo ra những lỗ hổng khác tạo thành một chuỗi những lỗ hổng mới Sau khi xâm nhập, kẻ phá hoại có thể tiếp tục tìm hiểu các dịch vụ trên hệ thống, nắm bắt được các điểm yếu và thực hiện các hành động phá hoại tinh vi hơn
- Kỹ thuật đánh lừa (Social Engineering):
Social Enginerring là một loại lỗ hổng bảo mật đứng về phía cạnh con người Người thực hiện tấn công nhằm vào lỗ hổng loại này sẽ tìm cách khai thác các thông tin bảo mật từ phía những người có liên quan đến hệ thống cần tấn công
Tuy Social Engineering là lỗ hổng đứng về phía con người nhưng đây lại là một trong các cách thức được sử dụng phổ biến khi các hacker thực hiện các cuộc tấn công
Mục đích của kỹ thuật đánh lừa là có được quyền truy nhập các hệ thống máy tính một cách đơn giản thông qua việc khai thác thông tin từ những người có liên quan đến hệ thống
1.2.3 Một số lỗ hổng bảo mật phổ biến
- Lỗ hổng bảo mật trên ứng dụng Web:
Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác
Trang 16Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Mozila Firefox,… Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động Người dùng gửi và nhận các thông tin từ trình chủ động thông qua việc tác động vào các trang Web Các chương trình có thể là trang trao đổi mua bán, các diễn đàn, gửi nhận mail,…
Tốc độ phát triển xây dựng các Ứng dụng Web cũng rất nhanh Trước đây các Ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface) được chạy trên các trình chủ Web và có thể được kết nối vào CSDL đơn giản trên cùng máy chủ Ngày nay Ứng dụng Web được viết bằng nhiều ngôn ngữ đa dạng khác nhau như Java, ASP, C Shap… và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu
Một ứng dụng Web thường có kiến trúc gồm các thành phần như hình dưới:
Hình 1-1 Kiến trúc Ứng dụng Web
Máy chủ Web (Web Server) là một máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ thông tin như một ngân hàng dữ liệu, chứa những website cùng với những thông tin liên quan khác (các mã Script, các chương trình, và các file multimedia)
Cùng với sự phát triển nhanh chóng của các ứng dụng Web cũng là sự tồn tại của rất nhiều lỗ hổng bảo mật trên ứng dụng này đã tạo điều kiện cho hacker tấn công vào các
hệ thống website, máy chủ CSDL gây ra nhiều hậu quả nghiêm trọng
Lỗ hổng bảo mật của website cho phép tấn công website, lấy CSDL, upload được file, chiếm quyền điều khiển website, server; các lỗ hổng ứng dụng Web được chia thành hai loại: kỹ thuật và logic Các lỗ hổng kỹ thuật bao gồm: Cross – Site Scripting (XSS), Injection flaws (các khe hở dễ bị xâm nhập), Buffer overflows (tràn bộ đệm), Upload file, Còn các lỗ hổng logic thì khó phân loại ra hơn vì các lỗ hổng này liên quan đến tính logic của ứng dụng mà nó không được dự tính từ trước
Một số lỗ hổng bảo mật trên ứng dụng Web:
Trang 17+ Dữ liệu đầu vào không được kiểm tra:
Thông tin và các dữ liệu từ các truy cập HTTP không được kiểm tra trước khi sử dụng bởi ứng dụng Web Hacker có thể tận dụng những lỗi này để tấn công các ứng dụng phía sau thông qua ứng dụng Web
Ứng dụng Web sử dụng dữ liệu đầu vào trong các truy cập HTTP (hoặc trong các tệp tin) nhằm xác định kết quả phản hồi Hacker có thể sửa đổi bất kỳ phần nào của một truy xuất HTTP, bao gồm URL, querystring, headers, cookies, form fields, thậm chí fields
ẩn, nhằm vượt qua các cơ chế bảo mật Các tấn công phổ biến dạng này bao gồm:
Sửa đổi fields ẩn
Để bảo vệ wesite khỏi các kiểu tấn công này, chúng ta phải thiết lập bộ lọc dữ liệu đầu vào Tuy nhiên, có rất nhiều cách để mã hóa dữ liệu, các cách mã hóa này không giống nhau, quá trình giải mã phức tạp Mặt khác, lập trình viên thường quên giải mã tất
cả các tham số trước khi sử dụng chúng Vì vậy, quá trình kiểm tra dữ liệu đầu vào rất khó khăn, các dữ liệu xấu được hacker mã hóa dưới dạng ẩn để vượt qua các module kiểm tra dữ liệu
+ Lỗi kiểm soát truy cập tài nguyên:
Lỗi này xảy ra khi các nhà quản trị sai sót trong quá trình phân quyền sử
dụng tài nguyên cho người dùng, dẫn đến giới hạn về quyền truy cập tài nguyên của người sử dụng không được thi hành đúng Hacker lợi dụng những lỗi này nhằm truy cập vào tài khoản của người khác, xem những tệp tin nhạy cảm, hoặc thi hành những chức năng không được phép
Kiểm soát truy cập tài nguyên là cơ chế ứng dụng cho Web, cho phép truy cập đến nội dung, tính năng ứng dụng cho người sử dụng và từ chối truy câp đối với người dùng không có quyền Quá trình này được thực hiện sau quá trình xác thực, và quản lý các quyền truy cập mà người dùng được phép, nó rất khó được thi hành đầy đủ.Một mô hình quản lý truy cập tài nguyên cho ứng dụng Web cần được thiết kế theo sát các nội dung và hàm chức năng của một Website cung cấp
+ Lỗi liên quan đến quản lý xác thực và phiên truy cập:
Trang 18Quá trình quản lý xác thực và phiên truy cập không được bảo vệ tốt có thể dẫn đến việc thông tin tài khoản bị mất cắp
Quản lý xác thực và phiên truy cập bao gồm tất cả các yếu tố quản lý xác thực người dùng và các phiên truy cập Xác thực người dùng là một yếu tố quan trọng trong quy trình này, nhưng ngay cả những cơ chế xác thực mạnh nhất vẫn có thể bị mắc những lỗi liên quan đến chức năng quản lý xác thực, bao gồm thay đổi mật khẩu, quên mật khẩu
ở trình duyệt, cập nhật tài khoản, và những hàm chức năng khác
Xác thực người dùng trên ứng dụng Web thường sử dụng một tài khoản và mật khẩu Một số lượng lớn lỗi ứng dụng trong các hàm quản lý tài khoản và phiên truy cập
có thể dẫn đến mối nguy cơ lộ tài khoản người sử dụng và thậm chí cả tài khoản của người quản trị
Ứng dụng Web thường phải theo dõi và duy trì phiên truy cập của người dùng nhằm phân biệt các truy cập từ người dùng khác nhau Giao thức HTTP không cung cấp khả năng này và do đó ứng dụng Web phải tự tạo cơ chế này
Thông thường, môi trường phát triển ứng dụng cung cấp cơ chế quản lý phiên truy cập (thường là dưới hình thức cookie token) Tuy nhiên, đa số các nhà lập trình nghiêng
về phát triển cơ chế riêng của họ Trong cả hai trường hợp, nếu token quản lý phiên truy cập không được bảo vệ, tin tặc có thể ăn cắp token truy cập tài khoản của người khác
+ Lỗi Cross Site Scipting (XSS):
Ứng dụng Web có thể được sử dụng như một cơ chế để chuyên chở tấn công đến trình duyệt của người sử dụng Một cuộc tấn công thành công có thể sẽ làm lộ token của người dùng, tấn công máy đầu cuối, hoặc giả nội dụng nhằm đánh lừa người sử dụng
Lỗi XSS xảy ra khi một ứng dụng Web bị lợi dụng để gửi dữ liệu xấu (thường là đoạn mã script) đến trình duyệt của người sử dụng Hacker có thể sử dụng lỗ hổng này để gửi các đoạn mã đến người dùng Trình duyệt trong máy người dùng không thể biết được nên tin hay không tin đoạn mã nào, và sẽ thi hành đoạn mã scipt này Đoạn mã script có thể truy cập đến cookies, session tokens, hoặc bất kì một thông tin nhạy cảm nào được lưu lại trong trình duyệt có liên quan đến trang Web đang truy cập Những đoạn mã này có thể còn có thể sửa đổi nội dung trang Web
Hậu quả của tấn công dạng XSS rất nguy hiểm, toàn bộ session cookie sẽ bị lộ, cho phép hacker chiếm quyền sở hữu tài khoản, lộ các tệp tin của người dùng, cài đặt các chương trình troijan,
+ Lỗi tràn bộ đệm:
Một số module của ứng dụng Web khi được phát triển bằng những ngôn ngữ không kiểm tra dữ liệu đầu vào có thể bị treo (crashed), và trong một số trường hợp, có
Trang 19thể bị lợi dụng để chiếm đoạt quyển kiểm soát của một tiến tình (process) hoặc toàn bộ máy chủ Những module này có thể bao gồm CGI, thư viện, và những module của máy chủ
Hacker sử dụng lỗi tràn bộ đệm nhằm ảnh hưởng đến dòng lệnh thực thi của ứng dụng Web Bằng cách gửi một đoạn mã được thiết kế đặc biệt đến ứng dụng, hacker có thể làm cho ứng dụng Web thi hành bất kỳ đoạn mã nào, điều này tương đương với việc chiếm quyền làm chủ máy server Mặc dù là một lỗi phổ biến, lỗi tràn bộ đệm là loại lỗi rất khó được phát hiện và ngay cả khi đã được phát hiện, lỗi này rất khó được lợi dụng do hacker cần một trình độ rất cao để có thể viết đoạn mã khai thác
+ Lỗi Injection:
Ứng dụng Web có thể sử dụng các dữ liệu đầu vào làm tham số cho các hàm gọi vào hệ thống Nếu hacker nhúng các mã nguy hiểm trong dữ liệu đầu vào, hệ thống có thể chạy các đoạn mã nguy hiểm này
Lỗi injection cho phép hacker lợi dụng lỗ hổng trong ứng dụng Web làm phương tiện để gửi các đoạn mã nguy hiểm đến hệ thống Những cuộc tấn công dạng này bao gồm các mã gọi hàm đến hệ điều hành, gọi các ứng dụng qua lệnh shell, và các hàm gọi đến CSDL (SQL injection) Những đoạn mã nguy hiểm được viết bằng perl, python và ngôn ngữ khác có thể được chuyển đến và thực thi bởi ứng dụng Web, hệ điều hành hoặc các ứng dụng khác
Rất nhiều ứng dụng Web sử dụng các hàm của hệ điều hành và các chương trình ngoài để thi hành các chức năng Sendmail là một trong những chương trình ngoài được
sử dụng nhiều nhất Khi ứng dụng Web sử dụng dữ liệu từ người dùng để tạo ra đoạn mã thực thi, dữ liệu từ người dùng cần được lọc kỹ lưỡng Hacker có thể kèm vào các ký tự đặc biệt, đoạn lệnh, và những thông tin xấu này có thể được chuyển đến hệ thống và các chương trình ngoài
Một trong những dạng phổ biến nhất của lỗi injection là lỗi sql injection Lỗi này xảy ra khi ứng dụng sử dụng những dữ liệu đầu vào không được kiểm tra làm tham số để xây dựng chuỗi lệnh SQL Bằng cách sử dụng những đoạn mã SQL đặc biệt, hacker có thể gây ra những hậu quả nghiêm trọng như:
Vượt qua hệ thống xác thực login mà không cần sử dụng mật khẩu hoặc tài khoản Truy cập vào một phần hoặc tất cả các thông tin trong CSDL
Lấy được thông tin về cấu trúc của CSDL
Sửa đổi hoặc xóa thông tin trong CSDL
Chạy các lệnh trong hệ điều hành trên máy chủ CSDL
+ Quy trình quản lý báo lỗi:
Trang 20Quá trình này xảy ra khi những lỗi thông thường không được xử lý phù hợp Nếu một hacker gây ra một lỗi mà ứng dụng không xử lý, họ có thể xem được thông tin về hệ thống, lợi dụng tấn công từ chối dịch vụ, làm cơ chế bảo mật thất bại, hoặc treo máy chủ
Quy trình xử lý báo lỗi có thể gây ra nhiều vấn đề bảo mật cho một trang Web Vấn đề thông thường nhất là khi các thông báo lỗi có chứa các thông tin nhạy cảm như stack traces, thông tin CSDL, và các mã lỗi được thông báo cho người dùng Những lỗi này cung cấp các thông tin về hệ thống, ứng dụng ở mức độ thấp và thông tin này phải được bảo mật Sử dụng những thông tin này, hacker có thể dò tìm ra những lỗi khác của ứng dụng
Đối với các thông báo lỗi SQL, hacker có thể dò được:
+ Lưu trữ thiếu an toàn:
Những ứng dụng Web sử dụng các hàm giải thuật mã hóa nhằm bảo vệ an toàn cho
dữ liệu Tuy nhiên những hàm này và các mã nguồn có thể có nhiều lỗi do lập trình viên bất cẩn, dẫn đến việc lộ thông tin quan trọng
Đa số các ứng dụng Web cần lưu trữ dữ liệu nhạy cảm trong CSDL hoặc trong một tập tin nào đó trong hệ thống Thông tin nhạy cảm bao gồm: mật khẩu, số thẻ tín dụng, thông tin tài khoản, hoặc các thông tin cần bảo vệ khác Các cơ chế mã hóa thường được
sử dụng để bảo vệ những thông tin này Những lỗi thông thường bao gồm:
Không mã hóa dữ liệu quan trọng như khóa, chứng thư và mật khẩu
Lưu trữ các khóa bảo mật trong bộ nhớ bằng các cơ chế không an toàn
Cơ chế tạo số ngẫu nhiên không đảm bảo
Sử dụng sai thuật toán
Tạo một thuật toán mã hóa không đảm bảo
Hậu quả của những điểm yếu này có thể rất nghiêm trọng đến an toàn của một trang Web, cho phép hacker lấy được toàn bộ các thông tin quan trọng được lưu trữ
+ Quản lý cấu hình thiếu an toàn:
Cấu hình an toàn cho máy chủ là một yếu tố quan trọng trong quy trình bảo vệ bảo mật cho ứng dụng Web
Cấu hình của máy chủ và các phần mềm hỗ trợ dịch vụ Web là một yếu tố quan trọng trong vấn đề bảo mật của ứng dụng Máy chủ cung cấp nền tảng phục vụ cho việc
Trang 21cung cấp nội dung và các dịch vụ mà ứng dụng Web cần sử dụng, bao gồm lưu trữ, dịch
vụ thư mục chủ, thư điện tử
Thông thường, nhóm phát triển ứng dụng Web thường tách biệt với nhóm hỗ trợ triển khai trang Web trên máy chủ Vì vậy, có sự không thống nhất và thiếu sự liên lạc về phương hướng bảo mật giữa hai nhóm này Điều này có thể dẫn đến những điểm yếu nghiêm trọng trên ứng dụng được tạo ra từ các lỗ hổng ở máy chủ
Theo các thống kê hiện nay, các lỗ hổng liên quan đến cấu hình máy chủ bao gồm:
Các phần mềm và hệ điều hành trên máy chủ không được cập nhật với
bản vá lỗi bảo mật mới nhất.Lỗi trên phần mềm Web hosting máy chủ cho phép liệt kê bất
kỳ thư mục (hoặc tập tin) nào trong hệ thống
Những tập tin mặc định, tập tin tạo ra để kiểm tra như script, tập tin cấu
hình không được xóa đi trong thư mục của trang Web Những tập tin này thường có độ bảo mật yếu và có thể chứa những thông tin quan trọng
Không phân đúng quyền cho các thư mục và tập tin trong trang Web
Những chức năng quản lý và debug được triển khai không cần thiết
Phần mềm Web server đăng quá nhiều thông tin trong trang báo lỗi
Cấu hình SSL và các hàm mã hóa không đúng
- Lỗ hổng trên một số phần mềm ứng dụng:
Các lỗ hổng logic được khám phá bằng việc tìm hiểu một ứng dụng làm việc như thế nào, quá trình logic nằm dưới nó ra sao, và bằng việc tìm ra các yếu điểm của nó Việc hiểu sự logic của một ứng dụng sẽ cho phép kiểm tra sự thâm nhập thủ công để phá vỡ logic và tìm ra các lỗ hổng bảo mật
+ Lỗ hổng bảo mật của trình duyệt Internet Explorer 8:
Gần đây nhất, các chuyên gia bảo mật phát hiện lỗ hổng từ cơ chế bố trí địa chỉ nhớ ngẫu nhiên (Address Space Layout Randomization) và cơ chế ngăn chặn thực thi dữ liệu (Data Execution Prevention) của IE8 trên nền Windows 7 Lợi dụng cơ chế này, hacker có thể đưa vào Website một đoạn mã độc javascript tấn công vào 2 cơ chế này, sau
đó lợi dụng lỗ hổng để kiểm soát máy nạn nhân
+ Lỗ hổng trên dịch vụ Remote Destop
Lỗ hổng này cho phép tin tặc từ xa có thể kiểm soát, ăn cắp hoàn toàn dữ liệu máy tính bằng cách cài mã độc đối với máy tính sử dụng hệ điều hành Microsoft Windows, kể
cả phiên bản máy bàn và phiên bản máy chủ có mở dịch vụ Remote Destop thông qua giao thức Remote Destop Protocol (RDP) và nó được phát hiện vào ngày 13 tháng 3 năm
2012 do trung tâm Ứng cứu khẩn cấp máy tính Việt Nam (VNCERT) Chúng ta có thể
Trang 22khắc phục lỗ hổng này bằng cách tắt dịch vụ Remote Destop và cập nhật bản và lỗi do công ty Microsoft theo địa chỉ http://technet.microsoft.com/en-us/security/bulletin/ms12-020
1.3 Nguy cơ bị tấn công đối với hệ thống máy tính
1.3.1.Tấn công một hệ thống máy tính qua mạng
Bản chất của các vụ tấn công trên mạng máy tính là phát hiện lỗ hổng và tận dụng
lỗ hổng trên mạng của đối phương nhằm đột nhập sau đó thực hiện ý đồ của mình.Quy trình thực hiện tấn công thường tuân thủ theo các bước thứ tự cơ bản như sau:
Thu thập thông tin đích
Truy cập lần đầu
Leo thang đặc quyền
Che đậy dấu vết
Đặt cửa sau
Tuỳ theo từng tình huống mà các phương pháp trên có thể phải thực hiện nhiều lần
và bằng nhiều công cụ kỹ thuật khác nhau mới mang đến thành công Việc thu thập thông tin đích (mục tiêu) trước hết được bắt đầu bằng việc “in dấu chân” hay còn được hiểu là
kỹ thuật thu thập thông tin đích In dấu chân sẽ cho phép hacker lập bộ lưu trữ đầy đủ về bảo mật tổ chức Kết hợp các công cụ và kỹ thuật hacker có thể lấy được dãy tên vùng cụ thể, khối mạng, địa chỉ IP của hệ thống nối thẳng với Internet
Internet
Tên domain, các khối mạng, địa chỉ IP cụ thể, các dịch vụ TCP và UDP chạy trên từng hệ thống đã định danh, kiến trúc hệ thống, các cơ chế kiểm soát truy cập và các danh sách kiểm soát truy cập (ACL), các
hệ thống phát hiện thâm nhập, các tên người dùng và nhóm, các biểu ngữ hệ thống, các bảng định tuyến, thông tin SNMP
Trang 23Sau khi đã có các thông tin ban đầu về mục tiêu, hacker sẽ xác định hệ thống nào đang được hoạt động và có thể đến được qua Internet nhờ những công cụ kỹ thuật như quét ping, quét cổng và công cụ phát hiện tự động hoá
Một trong những bước cơ bản trong vẽ bản đồ mạng là tự động quét ping dãy địa chỉ
IP và khối mạng nhằm xác định xem hệ thống còn hoạt động hay không Theo truyền thống ping sẽ gửi gói dữ liệu ICMP ECHO (Type 8) đến hệ thống đích với nỗ lực moi ICMP ECHO_REPLY (Type 0) cho biết hệ thống đích vẫn còn làm việc Sau khi xác định chắc chắn hệ thống vẫn còn làm việc, hacker tiếp tục quét cổng nhằm nhận diện:
Dịch vụ TCP và UDP chạy trên hệ thống đích
Loại hệ điều hành trên hệ thống đích
Ứng dụng hoặc phiên bản dịch vụ cụ thể
Sau khi đã hoàn tất việc quét và giả sử việc thăm dò mục tiêu chưa mang lại kết quả trực tiếp cho cuộc tấn công, hacker sẽ chuyển sang nhận diện tài khoản người dùng hợp lệ hoặc dùng chung tài nguyên được bảo vệ kém Có nhiều công cụ hỗ trợ trích tài
khoản hợp lệ hoặc tên tài nguyên khỏi hệ thống Tiến trình này được gọi là liệt kê
Sau khi có đầy đủ thông tin về mục tiêu, hacker có thể bắt đầu thực hiện các vụ tấn công truy nhập:
+ Tìm, nhận diện và khai thác thiết bị mạng
+ Phát hiện, liệt kê và né tránh bức tường lửa
Trang 24Phần lớn các cuộc tấn công vào hệ thống là trực tiếp Một phương pháp tấn công
cổ điển là dò cặp tên người dùng và mật khẩu (username/password) Đây là phương pháp khá đơn giản, dễ thực hiện và không đòi hỏi một điều kiện đặc biệt nào để bắt đầu Kẻ tấn công có thể sử dụng những thông tin như tên người dùng, ngày sinh, địa chỉ, số nhà để đoán mật khẩu
Chúng ta làm việc này ngay khi chúng ta biết rằng có những kẻ phá hoại đang sử dụng các máy phân tích mạng để đánh cắp địa chỉ máy tính, nhận dạng người sử dụng, và mật khẩu từ tất cả các mạng quân sự không mật và trên Internet Kẻ phá hoại sau đó dùng các nhận dạng đánh cắp được và các mật khẩu này để ngụy trang như những người dùng hợp lệ và thâm nhập vào hệ thống Một khi vào được, chúng dùng các công cụ phần mềm
có sẵn khắp nơi để kiểm soát máy tính và xoá đi dấu vết đột nhập
Một số chương trình có thể lấy được dễ dàng từ Internet để giải mã các mật khẩu
đã mã hoá của hệ thống, chúng có khả năng thử các tổ hợp các từ trong một từ điển lớn theo những quy tắc do người dùng tự định nghĩa
Một phương pháp khác là sử dụng các lỗ hổng bảo mật do các lỗi chương trình ứng dụng
và bản thân hệ điều hành Đây là phương pháp đã được sử dụng từ những vụ tấn công đầu tiên
và vẫn tiếp tục được sử dụng để chiếm quyền truy nhập
- Tấn công gián tiếp:
+ Nghe trộm:
Có một số kiểu tấn công cho phép kẻ tấn công lấy được thông tin mà không cần sử dụng máy tính một cách trực tiếp Phần lớn những kẻ ăn cắp thông tin đều cố gắng truy cập vào hệ thống máy tính bằng cách dò tìm tên người dùng và mật khẩu Cách dễ nhất để lấy thông tin là đặt máy nghe trộm trên mạng
Việc nghe trộm thường được tiến hành ngay sau khi kẻ tấn công đã chiếm được quyền truy nhập vào hệ thống thông qua các chương trình cho phép đưa card giao tiếp mạng (Network Interface Card - NIC) vào chế độ nhận toàn bộ thông tin lưu truyền trên mạng
Dữ liệu truyền trên bất kỳ loại mạng nào đều có thể bị chặn bởi những người không được phép Các thủ phạm có thể nghe trộm trên đường truyền thông hoặc thậm chí can thiệp vào các gói tin đang được truyền đi trên mạng Các thủ phạm có thể sử dụng rất nhiều phương pháp để ngăn chặn dữ liệu Sự đánh lừa địa chỉ IP là một ví dụ Phương pháp này thêm vào phần header của gói tin đang truyền địa chỉ IP (Internet Protocol Address) của thủ phạm nghe trộm
+ Tấn công vật lý (physical attacks):
Giả sử hacker muốn tấn công vào một hệ thống máy tính trong một tòa nhà được bảo
mật, bảo vệ khá nghiêm ngặt Họ đã nghĩ ra một cách đó là gửi một chiếc iPhone đã bị hack tới một nhân viên không tồn tại ở tòa nhà đó và hi vọng thiết bị này sẽ ở lại phòng thư tín
Trang 25Sau đó bằng phương pháp điều khiển từ xa họ tiến hành rà quét toàn bộ kết nối không dây xung quanh Hoặc khi muốn ăn cắp mật khẩu cá nhân, họ sẽ không lừa người sử dụng download một chương trình keylogger bắt thao tác gõ bàn phím nữa mà sẽ sử dụng một chiếc micro siêu nhỏ giấu gần bàn phím cũng làm được điều tương tự như một chương trình keylogger Phương pháp tấn công mới này đã được gợi mở ra tại buổi thảo luận Defcon vào tháng 8/2008
+ Tấn công qua giao thức:
Giao thức giao tiếp hay còn gọi là Giao thức truyền thông, Giao thức liên mạng, Giao thức tương tác, Giao thức trao đổi thông tin ( tiếng Anh là communication protocol) trong công nghệ thông tin gọi tắt là giao thức (protocol), tuy nhiên, tránh nhầm với giao thức trong các ngành khác – là một tập hợp các quy tắc chuẩn dành cho việc biểu diễn dữ liệu, phát tín hiệu, chứng thực và phát hiện lỗi dữ liệu - những việc cần thiết để gửi thông tin qua các kênh truyền thông, nhờ đó mà các máy tính (và các thiết bị) có thể kết nối và trao đổi thông tin với nhau Các giao thức truyền thông dành cho truyền thông tín hiệu số trong mạng máy tính có nhiều tính năng để đảm bảo việc trao đổi dữ liệu một cách đáng tin cậy qua một kênh truyền thông không hoàn hảo
Hiện nay có rất nhiều giao thức truyền thông trên mạng như TCP/IP, HTTP, FTP,
hacker hoàn toàn có thể sử dụng Ví dụ một cách tấn công giả mạo địa chỉ như sau :
Việc giả mạo đia chỉ IP có thể được thực hiện thông qua việc sử dụng khả năng dẫn đường trực tiếp (source - routing) Với cách tấn công này, kẻ tấn công gửi các gói tin
IP tới mạng bên trong một địa chỉ IP giả mạo, đồng thời chỉ rõ đường dẫn mà các gói tin
IP phải gửi đi
Với việc áp dụng kỹ thuật tấn công này, chúng ta có thể tạo ra kiểu tấn công phản chiếu Tức là, chúng ta gửi các gói tin IP giả mạo đến một hay nhiều máy đích trong phân đoạn mạng bị tấn công Đương nhiên địa chỉ nguồn của các gói tin này sẽ được giả mạo là một hay một số địa chỉ chính trong mạng đó Khi máy đích nhận được các gói tin nó sẽ gửi trả lại máy có địa chỉ là địa chỉ nguồn của gói tin nó nhận được đó, và cứ như thế, chúng ta có thể khuyếch đại lượng gói tin được trao đổi trên mạng lên rất nhiều lần, dẫn đến mạng bị tấn công bị tắc nghẽn, thậm chí, sụp đổ hoàn toàn
- Tấn công qua lỗ hổng hệ điều hành, ứng dụng:
+ Tấn công qua lỗ hổng hệ điều hành:
Các máy tính ban đầu không có hệ điều hành , người điều hành sẽ tải và chạy chương trình một cách thủ công Khi chương trình được thiết kế để tải và chạy chương trình khác, nó đã thay thế công việc của con người
Trang 26Thuật ngữ "hệ điều hành" được dùng gần đây chỉ tới một phần mềm cần thiết để người dùng quản lý hệ thống và chạy các phần mềm ứng dụng khác trên hệ thống Nó không chỉ có nghĩa là "phần lõi" tương tác trực tiếp với phần cứng mà còn cả các thư viện cần thiết để các chương trình quản lý và điều chỉnh hệ thống Những dịch vụ phổ biến là truy xuất đĩa, quản lý
bộ nhớ, định thời, và truy xuất tới thiết bị phần cứng
Khái niệm hệ điều hành được tách thành ba thành phần: giao diện người dùng (bao gồm giao diện đồ họa và/hoặc thông dịch dòng lệnh, còn gọi là "shell"), tiện ích hệ thống cấp thấp, và phần lõi - trái tim của hệ điều hành
Hệ điều hành thường là cái đích nhắm tới của kẻ tấn công do nếu tấn công được vào hệ điều hành thì kẻ tấn công coi như đã có toàn quyền đối với máy tính của người sử dụng Do vậy việc tấn công vào các lỗ hổng của hệ điều hành là đặc biệt nguy hiểm, và các nhà phân phối các hệ điều hành phải thường xuyên ra bản vá lỗi cho những lỗ hổng đó + Tấn công qua lỗ hổng phần mềm ứng dụng:
Phần mềm ứng dụng là một loại chương trình có khả năng làm cho máy tính thực hiện trực tiếp một công việc nào đó người dùng muốn thực hiện
Các phần mềm ứng dụng thường được gom lại thành bộ phần mềm Microsoft Office và OpenOffice.org là những bộ phần mềm gồm có chương trình xử lý văn bản, bảng tính và các phần mềm khác Các phần mềm riêng biệt trong bộ phần mềm thường
có giao diện và tính năng tương tự làm người dùng dễ dàng học và sử dụng Và các phần mềm thường tương tác được với nhau để đem lại lợi ích cho người dùng Thí dụ, phần mềm bảng tính có thể nhúng một phần văn bản vào
Các phần mềm ứng dụng này có thể chứa rất nhiều lỗ hổng để kẻ tấn công có thể khai thác Ví dụ như vào ngày 15/11/2009, một lỗ hổng zero-day trong một số phần mềm định dạng file pdf của Adobe đã được công bố cùng mã khai thác Nếu khai thác thành công lỗ hổng này, Hacker có thể thực thi mã độc trên máy người dùng và chiếm toàn
Trang 27quyền kiểm soát Ngoài ra còn rất nhiều lỗ hổng trên các loại ứng dụng khác cũng đang bị hacker khai thác như ( IE, Firefox, adobe flash, )
Chương 2:
PHƯƠNG PHÁP THÂM NHẬP HỆ THỐNG MÁY TÍNH DỰA
TRÊN KHAI THÁC LỖ HỔNG BẢO MẬT
2.1.Tấn công Injection
2.1.1 Khái niệm
SQL Injection là một kĩ thuật cho phép người tấn công lợi dụng những lỗ hổng trong quá trình lập trình Web về phần truy xuất cơ sở dữ liệu Phương pháp này không chỉ
áp dụng cho SQL Server, có thể vận dụng cho toàn bộ các cơ sở dữ liệu khác như Oracle,
MS Access hay IBM DB2
SQL Injection là một trong những kiểu tấn công Web rất phổ biến hiện nay Nó tấn công vào các ứng dụng Web như: ASP, PHP, JSP, CGI,
Để tấn công bằng SQL injection cần cấy (injection) các mã SQL Query/command
ở dữ liệu đầu vào trước khi chuyển cho ứng dụng Web xử lý, người tấn công có thể đăng nhập (login) mà không cần tài khoản/mật khẩu (username/password), thực thi từ xa (remote execution), trích xuất dữ liệu (dump data) và lấy quyền quản trị của SQL Server
2.1.2 Các dạng tấn công SQL Injection
Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập (authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures [2], [3]
- Dạng tấn công vượt qua kiểm tra lúc đăng nhập:
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng Web
- Tấn công dựa vào câu lệnh SELECT:
Lệnh SELECT là lệnh truy vấn dữ liệu được dùng để lấy thông tin từ cơ sở dữ liệu Thông thường, vị trí có thể được chèn thêm vào một mệnh đề SELECT là sau WHERE
Để có thể trả về nhiều dòng thông tin trong bảng, thay đổi điều kiện trong mệnh đề WHERE ta chèn thêm UNION SELECT
Để thực hiện được kiểu tấn công này, người tấn công phải có khả năng hiểu và lợi dụng được các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho cuộc tấn công
- Dạng tấn công sử dụng câu lệnh INSERT:
Trang 28Lệnh INSERT dùng để đưa thông tin vào cơ sở dữ liệu Câu lệnh INSERT thường được dùng trong các trường hợp như: thông tin đăng ký người sử dụng, guestbook
Các ứng dụng Web cho phép người dùng đăng ký một tài khoản để tham gia, và chức năng không thể thiếu là sau khi đăng ký thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL Injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào
Một câu lệnh INSERT có thể có dạng:‖ INSERT INTO TableName VALUES('Value 1', 'Value 2', 'Value 3')‖
Nếu đoạn mã xây dựng câu lệnh SQL có dạng:
thì chắc chắn sẽ bị lỗi SQL Injection, bởi vì nếu ta nhập vào trường thứ nhất: ' + (SELECT TOP 1 FieldName FROM TableName) + ' Lúc này câu truy vấn sẽ là: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def') Khi đó, lúc thực hiện lệnh xem thông tin, xem như đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName FROM TableName
- Dạng tấn công sử dụng stored-procedures:
Stored- procedures được sử dụng trong lập trình Web với mục đích giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kĩ thuật SQL Injection Tuy nhiên hacker vẫn có thể lợi dụng những stores – procedures để tấn công vào hệ thống
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được
thực thi với quyền quản trị hệ thống „ root ‟ Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: '; EXEC xp_cmdshell ‗cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt Server Việc phá hoại dạng này phụ thuộc vào câu lệnh đằng sau
strSQL = "INSERT INTO TableName VALUES(' " & strValue1 & " ', ' " _ &
strValue2 & " ', ' " & strValue3 & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
…
Set objRS = Nothing
%>
Trang 29exec sp_login ‗nhimmap‘,‗‘;shutdown ‘
Lệnh Shutdown thực hiện dừng SQL Server ngay lập tức
2.1.3 Phòng chống tấn công Injection
- Kiểm tra dữ liệu đầu vào:
Kiểm tra tính đúng đắn của dữ liệu là một vấn đề phức tạp và thường chưa được quan tâm đúng mức trong các ứng dụng Khuynh hướng của việc kiểm tra tính đúng đắn của dữ liệu không phải chỉ là cần thêm một số chức năng vào ứng dụng, mà phải kiểm tra
Trang 30Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp Để tránh điều
này, đơn giản hãy kiểm tra dữ liệu có đùng kiểu hay không bằng hàm IsNumeric()
Ngoài ra, có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm như: ; , -, select, insert, ra khỏi dữ liệu từ phía người dùng để hạn chế các tấn công dạng này
Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu:
Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lý dữ liệu đến tài khoản người dùng mà ứng dụng Web đang sử dụng Các ứng dụng thông thường
nên tránh dùng các quyền như: quản trị cơ sở dữ liệu (dba) hay quản trị hệ thống (sa) Quyền càng bị hạn chế, thiệt hại càng ít
Để bảo vệ SQL Server ta cần thực hiện các công việc sau:
+ Xác định phương pháp kết nối đến SQL Server: Dùng tiện ích Network Utility
để kiểm tra rằng chỉ có các thư viện mạng đang dùng là hoạt động
+ Kiểm tra tất cả các tài khoản có trong SQL Server: Chỉ tạo tài khoản có quyền thấp cho ứng dụng; loại bỏ những tài khoản không cần thiết; đảm bảo rằng tất cả các tài khoản có một mật khẩu hợp lệ,
+ Kiểm tra các đối tượng tồn tại: Nhiều extended stored procedure có thể được xóa
bỏ một cách an toàn Nếu điều này được thực hiện, thì cũng nên xem xét việc loại bỏ luôn
những tệp tin dll chứa mã các extended stored procuedure; Xóa bỏ tất cả cơ sở dữ liệu mẫu như “northwind‖ và ―pubs‖ ;
- Xóa các stored procedure không dùng như: master xp_cmdshell, xp_startmail, xp_sendmail, sp_makeWebtask
- Kiểm tra những tài khoản nào có thể truy xuất đến những đối tượng nào: Đối với những tài khoản có một ứng dụng nào đó dùng để truy xuất cơ sở dữ liệu thì chỉ được cấp những quyền hạn cần thiết tối thiểu để truy xuất đến những đối tượng nó cần dùng
Trang 31khác nhau như : DoS - Denial of Service , DdoS- Distributed Denial of Service, DRDoS- Distributed Reflection Denial of Service
Hình 2-1 Minh họa tấn công DoS
Tấn công từ chối dịch vụ có rất nhiều phương thức khác nhau như: tấn công thông qua kết nối, tấn công lợi dụng tài nguyên của nạn nhân, tấn công từ chối dịch vụ phân tán (DDoS), tấn công từ chối dịch vụ phản xạ nhiều vùng (DRoS), tấn công từ chối dịch vụ bằng sử dụng nguồn tài nguyên khác,
2.2.1 Tấn công thông qua kết nối (SYN Flood)
Hình 2-2 Tấn công từ chối dịch vụ thông qua kết nối
SYN Flood là kiểu tấn công kinh điển nhất, lợi dụng thủ tục TCP khi “bắt tay ba bước” Ta biết mỗi khi client muốn thực hiện kết nối với server thì nó thực hiện việc bắt tay ba bước (three – way handsharke) thông qua các gói tin (packet)
Trang 32Bước 1: Client sẽ gửi các gói tin chứa cờ SYN đến Server để yêu cầu kết nối Bước 2 : Khi nhận được gói tin này, Server sẽ gửi lại gói tin chứa cờ SYN/ACK để
thông báo cho client biết là đã nhận được yêu cầu kết nối và chuẩn bị tài nguyên cho việc yêu cầu này Đồng thời Server sẽ giành một phần tài nguyên hệ thống như bộ nhớ đệm (cache) để nhận và truyền dữ liệu Ngoài ra, các thông tin khác của máy trạm như địa chỉ
IP và cổng (port) cũng được server ghi lại
Bước 3 : Client hoàn tất việc bắt tay ba bước bằng cách hồi âm lại gói tin chứa
ACK cho server và tiến hành kết nối
Kiểu tấn công SYN Flood được hacker áp dụng để tấn công các hệ thống mạng có băng thông lớn hơn hệ thống của hacker
2.2.2 Lợi dụng tài nguyên của nạn nhân để tấn công
- Kiểu tấn công Land Attack:
Đây là kiểu tấn công cũng tương tự như SYN Flood, nhưng hacker sử dụng chính địa chỉ IP của nạn nhân để dùng làm địa chỉ IP nguồn trong gói tin, đẩy mục tiêu vào một vòng lặp vô tận khi cố gắng kết nối đến chính nó
- Kiểu tấn công UDP Flood:
Hacker gửi gói tin UDP echo với địa chỉ IP nguồn là cổng loopback của chính mục tiêu cần tấn công hoặc của một máy tính trong cùng một mạng Với mục tiêu sử dụng cổng UDP echo (port 7) để thiết lập việc gửi và nhận các gói tin echo trên 2 máy tính (hoặc mục tiêu với chính nó nếu mục tiêu có cấu hình cổng loopback), khiến cho 2 máy tính này dần dần sử dụng hết băng thông của chúng, và cản trở việc chia sẻ tài nguyên mạng của các máy tính khác trong mạng
2.2.3 Tấn công từ chối dịch vụ phân tán (Distribute Denial of Service)
Xuất hiện vào năm 1999, so với tấn công DoS cổ điển, sức mạnh của DDoS cao hơn gấp nhiều lần Hầu hết các cuộc tấn công DDoS nhằm vào việc chiếm dụng băng thông gây nghẽn mạch hệ thống dẫn đến hệ thống ngưng hoạt động
Trang 33Hình 2-3 Mô hình tấn công DdoS
Một cuộc tấn công DDoS gồm 3 giai đoạn chính:
Giai đoạn chuẩn bị :
Chuẩn bị công cụ quan trọng của cuộc tấn công, công cụ này thường hoạt động theo mô hình client-server
Giai đoạn xác định mục tiêu và thời điểm:
Sau khi đã xác định được mục tiêu cần tấn công, hacker sẽ có hoạt động điều chỉnh cuộc tấn công mạng chuyển hướng tấn công về phía mục tiêu
Yếu tố thời điểm sẽ quyết định mức độ thiệt hại và tốc độ đáp ứng của mục tiêu đối với cuộc tấn công
Giai đoạn phát động tấn công và xóa dấu vết:
Đúng thời điểm đã định, hacker phát động tấn công từ máy của mình, lệnh tấn công này có thể đi qua nhiều cấp mới đến host thực sự tấn công Toàn bộ attack – network (có thể lên tới hàng ngàn máy), sẽ vắt cạn năng lực của server mục tiêu liên tục, ngăn chặn không cho nó hoạt động như đã được thiết kế
Sau một khoảng thời gian tấn công thích hợp, hacker tiến hành xóa mọi dấu vết có thể truy ngược đến mình, việc này đòi hỏi trình độ khá cao và không tuyệt đối cần thiết
DDoS attack – network có hai mô hình chính là: Mô hình Agent – Handler và Mô hình IRC – Based
Trang 34Hình 2-4 Sơ đồ chính phân loại các kiểu tấn công DDoS
Mô hình Agent – Handler:
Theo mô hình này, attack – network gồm 3 thành phần: Client, Agent, và Handler Client là phần mềm cơ sở để hacker điều khiển mọi hoạt động của attack – network Handler là một thành phần software trung gian giữa Agent và Client
Agent là thành phần software thực hiện sự tấn công mục tiêu, nhần điều khiển từ các Client thông qua các Handler
Hình 2-5 : Kiến trúc attack – network kiểu Agent – Handler
Attacker sẽ từ Client giao tiếp với các Handler để xác định số lượng Agent đang online, điều chỉnh thời điểm tấn công và cập nhật các Agent Tùy theo cách attacker cấu hình attack – network, các Agent sẽ chịu sự quản lý của một hay nhiều Handler
Thông thường attacker sẽ đặt Handler software trên một Router hay một server có lượng traffic lưu thông nhiều Việc này nhằm làm cho các giao tiếp giữa Client, Agent, và
Public channel
Client – Handler Communication
Victim
Trang 35Handler khó bị phát hiện Các giao tiếp này thường xảy ra trên các giao thức TCP, UDP, hay ICMP Chủ nhân thực sự của các Agent thông thường không hề hay biết họ bị lợi dụng vào cuộc tấn công kiểu DDoS, do các chương trình Backdoor Agent chỉ sử dụng rất
ít tài nguyên của hệ thống làm cho hầu như không thấy ảnh hưởng gì đến hiệu năng của
hệ thống
Mô hình IRC – Based:
Internet Relay Chat (IRC) là một hệ thống chat online nhiều tài khoản người dùng IRC cho phép người dùng tạo một kênh kết nối đến đa điểm đến nhiều tài khoản khác nhau và chat thời gian thực Kiến trúc của mạng IRC gồm nhiều máy chủ IRC trên khắp internet, giao tiếp với nhau trên nhiều kênh Mạng IRC cho phép người dùng tạo 3 loại kênh: công cộng (public), riêng (private), và bí mật (secrect)
Public channel: cho phép user của channel đó thấy tên IRC và nhận được tin nhắn của mọi user khác trên cùng channel
Private channel: được thiết kế để giao tiếp với các đối tượng cho phép Không cho phép các user không cùng channel thấy tên IRC và tin nhắn trên channel.Tuy nhiên, nếu user ngoài channel dùng một số lệnh channel locator thì có thể biết được sự tồn tại của private channel đó
Secrect channel: tương tự như private channel nhưng không thể xác định bằng channel locator
Hình 2-6 Kiến trúc attack – network kiểu IRC – Based
IRC – Based network cũng tương tự như Agent – Handler nhưng mô hình này sử dụng các kênh giao tiếp IRC làm phương tiện giao tiếp giữa Client và Agent
Agent Agent Agent Agent Agent
Victim
IRC NETWORK
Trang 362.2.4 Tấn công từ chối dịch vụ phản xạ nhiều vùng (Distribute Reflection Denial
of Service)
Hình 2-7 Mô hình tấn công theo kiểu DRDoS
Xuất hiện năm 2002, tấn công từ chối dịch vụ phản xạ nhiều vùng là kiểu tấn công mới, mạnh nhất trong các hình thức tấn công từ chối dịch vụ
Mục tiêu chính của DRDoS là chiếm đoạt toàn bộ băng thông của máy chủ, tức là làm tắc nghẽn hoàn toàn đường kết nối từ máy chủ vào xương sống của internet và tiêu hao tài nguyên máy chủ
Trong suốt quá trình máy chỉ bị tấn công bằng DRDoS, không một máy tính khách nào có thể kết nối được vào máy chủ đó Tất cả các dịch vụ chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3, đều bị vô hiệu hóa
Về cơ bản DRDoS là sự phối hợp giữa hai kiểu DoS và DDoS Kẻ tấn công thực hiện bằng cách giả mạo địa chỉ của server mục tiêu rồi gửi yêu cầu SYN đến các server lớn như Yahoo, Google, các server này sẽ gửi gói tin SYN/ACK đến server mục tiêu Như thế, các server lớn đã vô tình đóng vai trò là các zombies
2.2.5 Tấn công từ chối dịch vụ bằng sử dụng các nguồn tài nguyên khác
Đây là cách mà người tấn công lợi dụng các nguồn tài nguyên nạn nhân cần sử dụng để tấn công Chúng có thể thay đổi dữ liệu và tự sao chép dữ liệu mà nạn nhân cần lên nhiều lần, làm bộ xử lý (CPU) bị quá tải và các quá trình xử lý dữ liệu bị đình trệ Có hai cách tấn công là:
- Tấn công kiểu Smurf Attack:
Kiểu tấn công này cần một hệ thống rất quan trọng, đó là mạng khuếch đại Hacker
dùng địa chỉ IP của nạn nhân gửi gói tin ICMP echo cho toàn bộ mạng (broadcast) Các máy tính trong mạng sẽ đồng loạt gửi các gói tin ICMP reply cho máy tính nạn nhân Kết
quả sẽ làm cho máy tính dẫn đến máy bị treo
Trang 37Hình 2-8 Mô hình tấn công Smurf attack
- Tấn công kiểu Tear Drop:
Trong mạng chuyển mạch gói, dữ liệu được chia thành nhiều gói tin nhỏ, mỗi gói
tin có một giá trị offset riêng và có thể truyền theo nhiều con đường khác nhau để tới
đích.Lợi dụng điều này, hacker có thể tạo ra nhiều gói tin có giá trị offset trùng lặp nhau rồi gửi đến mục tiêu muốn tấn công Kết quả là máy tính đích không thể sắp xếp được những gói tin này và dẫn tới bị treo máy vì bị vắt kiệt khả năng xử lý
Hình 2-9 Mô hình tấn công Teardrop Attack
2.2.6 Phòng chống tấn công từ chối dịch vụ
Nhìn chung, tấn công từ chối dịch vụ không qúa khó để thực hiện, nhưng lại rất khó để phòng chống do tính bất ngờ và thường là phòng chống trong thế bị động khi sự việc đã rồi
Hậu quả mà tấn công từ chối dịch vụ gấy thiệt hại rất lớn, nó không chỉ thiệt hại về kinh tế, công sức, mà còn mất rất nhiều thời gian để khắc phục Vì vậy, việc đảm cho cho một hệ thống tránh được những cuộc tấn công từ chối dịch vụ là rất quan trọng
Trang 38Trên thực tế, có rất nhiều ý tưởng và giải pháp được đưa ra nhằm đối phó với các cuộc tấn công kiểu từ chối dịch vụ Tuy nhiên, không có ý tưởng hay giải pháp nào là giải quyết chọn vẹn bài toán chống lại kiểu tấn công này Tuy nhiên, việc đưa ra các giải pháp
để hạn chế và phòng chống kiểu tấn công từ chối dịch vụ là cần thiết
Các giải pháp sau thường được sử dụng:
- Mô hình hệ thống cần phải được xây dựng hợp lý, tránh phụ thuộc lẫn nhau quá mức bởi khi một bộ phận bị tấn công sẽ bị ảnh hưởng đến toàn hệ thống
- Thiết lập kiến trúc cân bằng tải (load balancing) cho các máy chủ trọng điểm
- Thiết lập cơ chế điều tiết trên Router, quy định một khoảng tải hợp lý mà server bên trong có thể xử lý được Phương pháp này cũng có thể dùng để ngăn chặn khả năng DDoS tranffic không cho user truy cập dịch vụ Hạn chế của kĩ thuật này là không phân biệt được giữa các loại tranffic, đôi khi làm dịch vụ bị gián đoạn với user
- Thiết lập cơ chế drop request nếu nó vi phạm một số quy định như: thời gian delay kéo dài, tốn nhiều tài nguyên để xử lý Kĩ thuật này làm triệt tiêu khả năng làm cạn kiệt năng lực của hệ thống, tuy nhiên nó cũng giới hạn một số hoạt động thông thường của hệ thống, cần cân nhắc khi sử dụng
- Chuyển hướng cuộc tấn công bằng cách sử dụng Honeyspots, honeynet Đây là một hệ thống được thiết kế nhằm đánh lừa hacker khi tấn công vào hệ thống
- Sử dụng tường lửa, hệ thống giám sát IDS, IPS để phát hiện và ngăn chăn tấn công khi xảy ra Kết hợp với việc xây dựng bộ lọc trên các router, firewall
- Luôn cập nhật các bản vá lỗi trên hệ thống, và thực hiện sao lưu, backup dữ liệu thường xuyên
2.3 Tấn công tràn bộ đệm (Buffer Overflow)
Năm 1995, Dr.Mudge đã phát hiện ra lỗ hổng bảo mật của Unix là Buffer Overflow Ông đã công bố: “Bằng cách nào viết một chương trình khai thác lỗ hổng Buffer Overflow”
Kỹ thuật Buffer overflow, cho phép một số lượng lớn dữ liệu được cung cấp bởi người dùng mà vượt quá lượng bộ nhớ cấp phát ban đầu bởi ứng dụng do đó gây cho hệ thống lâm vào tình trạng tràn bộ nhớ.Ví dụ :
Trang 39Hình 2-10 Đoạn code chứa lỗi tràn bộ đệm
Kỹ thuật khai thác tràn bộ đệm (buffer overflow exploit) được xem là một trong những kĩ thuật hacking điển hình nhất
2.3.1 Lỗi tràn bộ đệm, tổ chức bộ nhớ, Stack, gọi hàm, shellcode
- Lỗi tràn bộ đệm:
+ Khái niệm về lỗi tràn bộ nhớ đệm:
Lỗi tràn bộ nhớ đệm hay gọi tắt là lỗi tràn bộ đệm là một lỗi lập trình mà có thể gây ra ngoại lệ khi truy nhập bộ nhớ máy tính Khi một chương trình bị lỗi tràn bộ đệm được khởi chạy, nó sẽ làm cho bộ nhớ máy tính quá tải, khi đó máy tính sẽ từ chối mọi truy cập hợp lệ
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 một bộ nhớ đệm có chiều dài cố định Dữ liệu bị ghi đè có thể bao gồm các bộ nhớ đệm, các biến và dữ liệu điều khiển luồng chạy của chương trình khác
Các lỗi tràn bộ đệm có thể phá vỡ một tiến trình hoặc cho ra các 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 nhằm làm cho chương trình hoạt động không như mong đợi
Giả sử một chương trình định nghĩa hai phần tử dữ liệu kề nhau trong bộ nhớ như sau:
X là bộ nhớ chứa xâu ký tự có độ dài 8 byte và giá trị khởi tạo là 0
Y là bộ nhớ chứa một số nguyên kích thước 2 byte và giá trị khởi tạo là 2, kích thước 1 byte
Trang 40Hình 2-11 Giá trị khởi tạo của dữ liệu trên bộ nhớ đệm
Bây giờ, chương trình ghi một xâu ký tự “haannhung” vào bộ đệm X, theo sau là một byte 0 đánh dấu kết thúc xâu Vì không kiểm tra độ dài nên xâu ký tự mới đã ghi đè lên giá trị của Y
„h‟ „a‟ „a‟ „n‟ „n‟ „h‟ „u‟ „n‟ „g‟ 0
Hình 2-12 Ghi xâu ký tự mới vào bộ đệm
Tuy lập trình viên không có ý định sửa đổi Y, nhưng giá trị của Y đã bị thay thế bởi một số được tạo nên bởi phần tử cuối xâu ký tự
Tổ chức bộ nhớ của một tiến trình:
Hình 2-13 Tổ chức bộ nhớ của tiến trình
Mỗi tiến trình thực thi đều được hệ điều hành cấp cho một không gian bộ nhớ ảo (logic) giống nhau Không gian nhớ này gồm 3 vùng text, data và stack
Text: Là vùng cố định, chứa các mã lệnh thực thi (instruction) và dữ liệu chỉ đọc
(read-only) Dữ liệu ở vùng này là chỉ đọc, mọi thao tác nhằm ghi lên vùng nhớ này đều gây ra lỗi segmentation và violation
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 Vùng data tương ứng với phân đoạn data – bss của tập tin thực thi
Stack: Là vùng nhớ được dà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 thực hiện theo cơ chế LIFO (Last In, First Out) với hai lệnh quan trọng nhất là Push và Pop
- Stack (ngăn xếp):
+ Khái niệm về Stack: