1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu về lỗ hổng bảo mật xây dựng chương trình phát hiện lỗi bảo mật trên hệ thống windows nt 32 bit

145 36 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 145
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xuất phát từ các vấn đề nêu trên, chúng ta nhận thấy sự cần thiết và lợi ích của một chương trình giúp hệ thống phát hiện ra các lỗ hổng bảo mật và dự đoán các lỗi bảo mật tiềm năng có t

Trang 1

LÊ BÍCH PHƯƠNG

NGHIÊN CỨU VỀ LỖ HỔNG BẢO MẬT,

XÂY DỰNG CHƯƠNG TRÌNH PHÁT HIỆN LỖI BẢO MẬT TRÊN HỆ THỐNG WINDOWS NT 32-BIT

Chuyên ngành: CÔNG NGHỆ THÔNG TIN

Mã số ngành: 01.02.10

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, tháng 10 năm 2006

Trang 2

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

Cán bộ hướng dẫn khoa học: Tiến sĩ Nguyễn Xuân Dũng

Cán bộ chấm nhận xét 1: TS Võ Văn Khang

Cán bộ chấm nhận xét 2: TS Đặng Trần Khánh

Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày tháng 10 năm 2006

Trang 3

LỜI CẢM ƠN

Trước khi vào đề tài, em xin chân thành cảm ơn qúy thầy cô trong khoa Công Nghệ Thông Tin và phòng Đào Tạo sau đại học, Trường Đại Học Bách Khoa Thành phố Hồ Chí Minh, đã giúp đỡ em trong thời gian thực hiện đề tài này Qua đây, em cũng xin gửi đến thầy cô những lời tri ân sâu sắc nhất, đặc biệt là Tiến

sĩ Nguyễn Xuân Dũng, giáo viên hướng dẫn em, người luôn tận tình giúp đỡ, chỉ bảo từng bước đi, hướng dẫn phương pháp nghiên cứu, cách thức làm việc, hướng dẫn tài liệu tham khảo trong quá trình thực hiện đề tài này Và em cũng xin cảm

ơn giáo viên phản biện giúp em nhìn nhận lại vấn đề một cách rõ ràng hơn và khắc phục những nhược điểm của đề tài Các thầy cô đã động viên giúp em vượt qua những khó khăn trong học tập, cung cấp những tài liệu hay và chỉ dẫn hướng

đi đúng cho em

Con xin cảm ơn gia đình và những người thân luôn quan tâm, động viên và giúp đỡ, tạo điều kiện cho con vững bước trên con đường học tập và nghiên cứu Tôi xin cảm ơn các bạn cao học khóa 15 đã ủng hộ tinh thần và gợi ý giúp tôi hoàn thành tốt đề tài này

Xin cảm ơn các tác giả những các tài liệu tham khảo sử dụng trong đề tài này Và cuối cùng, tôi mong muốn đề tài này sẽ góp một phần ý tưởng vào sự phát triển của công nghệ thông tin nói riêng và xã hội nói chung

Học viên thực hiện: Lê Bích Phương

Trang 4

MỤC LỤC

LỜI CẢM ƠN ii

MỤC LỤC iii

DANH MỤC HÌNH v

DANH MỤC BẢNG BIỂU vii

DANH MỤC CÁC CHỮ VIẾT TẮT viii

TÓM TẮT LUẬN VĂN x

1 MỞ ĐẦU 1

1.1 Sự cần thiết của chương trình phát hiện lỗ hổng bảo mật: 1

1.2 Các chương trình phát hiện lỗ hổng hiện nay: 2

1.3 Mục tiêu và phạm vi của đề tài: 2

1.4 Các nghiên cứu có liên quan: 4

2 CƠ SỞ LÝ THUYẾT CỦA ĐỀ TÀI 9

2.1 Tổng quan về bảo mật trên các hệ điều hành: 9

2.1.1 Các khái niệm về bảo mật: 9

2.1.2 Kiến trúc hệ thống của Windows 2000: 13

2.1.2.1 Các thành phần hoạt động ở user-mode: 14

2.1.2.2 Các thành phần hoạt động ở kernel-mode: 21

2.1.3 Các thành phần bảo mật trên Windows 2000: 26

2.1.3.1 Hệ thống con bảo mật: 29

2.1.3.2 Các thành phần hiện thực cơ chế bảo mật của hệ thống Windows 2000: 29

2.1.3.3 Cơ chế bảo vệ các đối tượng : 33

2.1.3.4 Kiểm tra bảo mật truy xuất (Mô hình bảo mật SRM): 41

2.1.3.5 Kiểm toán các sự kiện bảo mật (Security Auditing): 44

2.1.3.6 Đăng nhập (Logon): 46

2.1.3.7 Chính sách bảo mật (Security Policies): 57

2.2 Nghiên cứu nguyên nhân chi tiết của các lỗ hổng bảo mật trên hệ điều hành hiện nay: 58

2.2.1 Mục đích của việc khai thác các lỗ hổng bảo mật: 58

2.2.1.1 Denial-of-Service (DoS): 58

2.2.1.2 Rò rỉ thông tin: 59

2.2.1.3 Tạo, đọc, thay đổi, xóa file: 59

Trang 5

2.2.1.5 Truy xuất File/Database: 60

2.2.1.6 Nâng cao các quyền lực: 60

2.2.2 Nguyên nhân chi tiết của các lỗ hổng bảo mật - Các kỹ thuật khai thác lỗi tổng quát: 60

2.2.2.1 Các lỗi về lập trình: 61

2.2.2.2 Các lỗi liên quan đến kết nối mạng: 75

2.2.2.3 Kỹ thuật mã hóa (Cryptology): 86

2.2.3 Các biện pháp khắc phục: 89

2.3 Những vấn đề cần giải quyết: 98

3 XÂY DỰNG CHƯƠNG TRÌNH TỔNG QUÁT PHÁT HIỆN LỖ HỔNG BẢO MẬT TRÊN HỆ ĐIỀU HÀNH WINDOWS DÒNG NT 32-BIT 101

3.1 Cơ sở lý thuyết của chương trình: 101

3.1.1 Các kỹ thuật phát hiện các lỗi bảo mật của hệ thống: 101

3.1.1.1 Từ điển lỗi bảo mật (Vulnerabilities Dictionary): 101

3.1.1.2 Mã chứng minh lỗi (Proof-of-concept Code): 104

3.1.2 Các kỹ thuật phân tích lỗi tiềm năng của hệ thống: 106

3.2 Các chức năng của chương trình: 112

3.3 Thiết kế và hiện thực chương trình: 114

3.3.1 Hoạt động của chương trình: 114

3.3.1.1 Phát hiện các lỗi bảo mật trên hệ thống: 114

3.3.1.2 Phân tích các lỗi tiềm năng của hệ thống: 115

3.3.2 Tổ chức dữ liệu: 116

3.3.2.1 Dữ liệu cho hoạt động phát hiện các lỗi bảo mật trên hệ thống: 116 3.3.2.2 Dữ liệu cho hoạt động phân tích các lỗi tiềm năng trên hệ thống: 117 3.3.3 Hiện thực: 118

4 ĐÁNH GIÁ – KẾT LUẬN 122

4.1 Khả năng phát triển: 122

4.2 Đánh giá: 123

DANH MỤC TÀI LIỆU THAM KHẢO 126

PHỤ LỤC THAM KHẢO 128

Trang 6

DANH MỤC HÌNH

Hình 2-1: Mô hình hệ thống về bảo mật 10

Hình 2-2: Tóm tắt các thuật ngữ về lỗi 12

Hình 2-3: Kiến trúc của Windows 2000 13

Hình 2-4: Quan hệ "cha-con" giữa các System Process 16

Hình 2-5: Sơ đồ bố trí bộ nhớ ảo của OS/2 subsystem 20

Hình 2-6: Kiến trúc mức đơn giản của Windows 2000 20

Hình 2-7: Các thành phần bảo mật của Windows 2000, mối quan hệ giữa các thành phần và cơ sở dữ liệu chúng quản lý 32

Hình 2-8: Liên lạc giữa SRM và Lsass (sau khi hệ thống khởi tạo) 33

Hình 2-9: Access Tokens 34

Hình 2-10: Ví dụ về cơ chế kiểm tra truy xuất 41

Hình 2-11: Input và Output của mô hình bảo mật SRM 42

Hình 2-12: DACL của một đối tượng file 44

Hình 2-13: Quá trình thực hiện ghi nhận các kiểm toán bảo mật 45

Hình 2-14: Cấu trúc bảo mật của Process và Thread 46

Hình 2-15: Các thành phần tham gia vào quá trình đăng nhập 49

Hình 2-16: Hai giai đoạn của MSV1_0 53

Hình 2-17: Giao tiếp giữa người dùng và Kerberos Server 55

Hình 2-18: Giao tiếp giữa người dùng và Ticket Granting Server 56

Hình 2-19: Cấu trúc vùng nhớ của Process 62

Hình 2-20: Hiện tượng tràn bộ đệm 63

Hình 2-21: Tấn công tràn bộ đệm trên Stack: ghi đè lên vùng địa chỉ trả về 64

Hình 2-22: Tấn công tràn bộ đệm trên Stack: chèn ký tự NULL 65

Hình 2-23: Header của Block ở trạng thái busy 66

Hình 2-24: Header của Block ở trạng thái free 66

Hình 2-25: Danh sách liên kết đôi Freelist 67

Hình 2-26: Danh sách liên kết đơn Lookaside 68

Hình 2-27: Quản lý các Block free 68

Hình 2-28: Cấp phát một Block trong danh sách Lookaside 69

Hình 2-29: Stack Frame của hàm 71

Hình 2-30: Mô hình OSI 75

Hình 2-31:Phân mảnh dữ liệu tại lớp Network 76

Hình 2-32: Quá trình bắt tay 3 bước tạo kết nối sử dụng cờ SYN và ACK 77

Hình 2-33: Giao thức ánh xạ giữa địa chỉ IP và địa chỉ MAC 77

Hình 2-34: Nghe trộm Sniffing trên mạng 79

Hình 2-35: Nghe trộm Hijacking trên mạng 81

Hình 2-36: Tấn công theo kiểu Amplification (một kiểu của DoS) 82

Hình 2-37: Xác định tình trạng port trên máy victim 85

Trang 7

Hình 2-38: Nguyên tắc mã hóa dữ liệu 86

Hình 3-1: Hoạt động phát hiện lỗi dựa vào từ điển lỗi 104

Hình 3-2:Hoạt động phát hiện lỗi dựa vào mã chứng minh lỗi 106

Hình 3-3: Sơ đồ khối hoạt động phát hiện lỗi bảo mật dựa vào từ điển lỗi 115

Hình 3-4: Sơ đồ khối hoạt động phân tích lỗi bảo mật tiềm năng 116

Trang 8

DANH MỤC BẢNG BIỂU

Bảng 2.1: Các tập tin hệ thống của nhân Windows 2000 21

Bảng 2.2: Các tổ chức, các hội bảo mật 96

Bảng 2.3: Những công việc đã và chưa giải quyết trong luận văn 99

Bảng 3.1: Các lớp chính hiện thực chương trình 118

Trang 9

DANH MỤC CÁC CHỮ VIẾT TẮT

Từ viết tắt Từ đầy đủ

ARP Address Resolution Protocol

DACL Discretionary Access-Control List

DDoS Distributed DoS

GINA Graphical Identification and Authentication

ICMP Internet Control Message Protocol

IFS Installable File System

KSecDD Kernel Security Device Driver

Lsass Local security authority subsystem

NIST Institute of Standards and Technology

SACL System access-control list

Trang 10

SID Security Identifier

TCP Transport Control Protocol

Trang 11

TÓM TẮT LUẬN VĂN

Bảo mật thông tin là nhu cầu vô cùng quan trọng của hầu hết mọi lĩnh vực, bao gồm: kinh tế thương mại, an ninh quốc phòng, xã hội,… Bảo mật thông tin là một khái niệm khá rộng liên quan đến nhiều cơ chế và các tầng bảo vệ khác nhau, từ các cơ chế vật lý cho đến các giải pháp kỹ thuật Ở đây chúng ta chỉ xét đến các khía cạnh kỹ thuật trong bảo mật thông tin

Hơn thế nữa, không có một phần mềm nào nói riêng hay một hệ thống nào nói chung là hoàn hảo Bất kỳ một hệ thống nào dù hoàn thiện đến đâu thì vẫn tồn

tại những lỗ hổng bảo mật (dưới đây gọi là lỗ hổng, lỗi bảo mật hay lỗi) nhất

định Tính chất có thể bị tấn công hay các lỗ hổng bảo mật chắc chắn luôn tồn tại trong các hệ thống phần mềm lớn và phức tạp vì các phương pháp, kỹ thuật và công cụ xây dựng phần mềm hiện nay chưa thể loạt bỏ được tất cả các lỗi trong phần mềm Như chúng ta đã biết, hệ điều hành có vai trò đặc biệt quan trọng trong hệ thống máy tính, mặc dù đã được trang bị nhiều cơ chế và phương tiện bảo vệ (như cơ chế chứng thực, điều khiển truy xuất,…) nhưng hệ điều hành cũng vẫn là phần mềm có thể bị tấn công về bảo mật

Xuất phát từ các vấn đề nêu trên, chúng ta nhận thấy sự cần thiết và lợi ích của một chương trình giúp hệ thống phát hiện ra các lỗ hổng bảo mật và dự đoán các lỗi bảo mật tiềm năng có thể xảy ra trên hệ thống Hiện nay đã có nhiều phần mềm thực hiện chức năng như vậy nhưng còn nhiều hạn chế1 Cho nên một phần mềm có khả năng tích hợp nhiều chức năng như: phát hiện các lỗ hổng hiện có của hệ thống bao gồm các lỗi trên bản thân hệ điều hành và lỗi trên các chương trình ứng dụng, các dịch vụ chạy trên hệ điều hành đó, phân tích tình trạng bảo

1 Tham khảo mục 1.2

Trang 12

mật của hệ thống để đưa ra các cảnh báo về nguy cơ bảo mật để phòng tránh, đưa ra các thông tin mô tả lỗi, đồng thời cung cấp các giải pháp khắc phục chúng

Nội dung của luận văn sẽ thực hiện nghiên cứu và khảo sát tương đối toàn diện các vấn đề về bảo mật như: nguyên nhân chi tiết của các lỗ hổng bảo mật, các kỹ thuật phát hiện các lỗ hổng này, các phương pháp phân tích lỗi tiềm năng trên hệ thống, cách thức khắc phục các lỗ hổng bảo mật Từ đó, xây dựng một chương trình phát hiện các lỗ hổng bảo mật ở mức tổng quát khắc phục được những hạn chế của các chương trình hiện có, đồng thời thực hiện phân tích các lỗi tiềm năng có thể phát sinh nhằm hỗ trợ cho người sử dụng, người quản trị hệ thống và phần nào giải quyết được các vấn đề nêu trên

Trang 13

Để bảo vệ an toàn và duy trì hoạt động bình thường của hệ thống trước những nguy cơ tấn công vì mục đích tốt và cả mục đích xấu là vấn đề nan giải và được quan tâm hàng đầu của các đơn vị sử dụng hệ thống

Đứng trước tình hình số lượng lỗ hổng bảo mật được công bố ngày càng nhiều và các vấn đề nêu trên, chúng ta thấy rõ sự cần thiết và vai trò hỗ trợ cho hoạt động các hệ thống của những chương trình phát hiện các lỗ hổng bảo mật

Các chương trình phát hiện lỗ hổng bảo mật được đánh giá cao nếu chương trình có khả năng quét được hầu hết các lỗ hổng bảo mật, phân tích mô tả chi tiết lỗi, cung cấp cho người quản trị những thông tin cần thiết về các lỗi và những giải pháp khắc phục, hỗ trợ thêm các chức năng phân tích lỗi tiềm năng có thể phát sinh để cảnh báo trước cho người quản trị hệ thống Chương trình này sẽ rất cần thiết và hữu ích cho các hệ thống, góp phần giúp đỡ cho người sử dụng, người quản trị hệ thống trong việc bảo vệ và đảm bảo an toàn trong hoạt động của hệ thống

Trang 14

1.2 Các chương trình phát hiện lỗ hổng hiện nay:

Hiện nay đã có nhiều phần mềm thực hiện chức năng quét các lỗ hổng bảo mật, nhưng các chương trình này có những đặc điểm sau đây:

- Thường chỉ phát hiện một loại lỗi bảo mật

- Thường để sót nhiều lỗi bảo mật

- Chỉ quét các lỗi bảo mật đã được công bố, chưa có khả năng phát hiện ra các lỗi bảo mật chưa có đặc tính nhận dạng, chưa có bản vá lỗi

- Cơ sở dữ liệu lưu trữ lỗi không cho người sử dụng tương tác cập nhật trực tiếp nên chưa đáp ứng được tính chất đa dạng, luôn phát sinh mới của lĩnh vực bảo mật

- Không có chức năng phân tích các lỗi tiềm năng, dự đoán các lỗ hổng có thể phát sinh để cảnh báo trước

- Chưa tích hợp thành một hệ thống hoàn chỉnh thống nhất nên người sử dụng không am hiểu về bảo mật sẽ thấy không thuận lợi, cụ thể: không mô tả chi tiết về lỗi, không cung cấp sẵn bản vá lỗi,…

- Chỉ phát hiện các lỗi bảo mật của hệ điều hành, không thực hiện quét các lỗi bảo mật của các chương trình ứng dụng và các chương trình dịch vụ

1.3 Mục tiêu và phạm vi của đề tài:

Theo thông báo thường niên về các mối nguy an ninh trong hệ thống máy tính của Công ty An ninh máy tính Symantec, có trụ sở tại Los Angeles (Hoa Kỳ) thì có khoảng 1862 lỗ hổng mới được thông báo trong khoảng thời gian từ đầu tháng

1 đến 30/6/2005 Các lỗ hổng nguy cơ này gia tăng 31% từ nửa sau năm ngoái và

Trang 15

vọt lên 46% Xu hướng này đang thực sự làm nhiều người lo ngại Các lỗ hổng này chính là mục tiêu của các cuộc tấn công làm phá hại hệ thống máy tính Hiện nay đã có nhiều nghiên cứu về nguyên nhân của các lỗ hổng cũng như đã có nhiều các bản vá lỗi để ngăn chặn các kiểu tấn công vào hệ thống máy tính Tuy nhiên, các giải pháp này đều mang tính chất “bị động”, nghĩa là giải pháp

ra đời sau khi đã có hệ thống bị tấn công Hầu hết các giải pháp đều có tính chất đặc thù, chỉ giải quyết được một loại lỗ hổng nào đó Hiện nay vẫn chưa có một phương pháp tổng quát nào, chưa có một công cụ tích hợp hoàn chỉnh nào để phát hiện, khắc phục các lỗ hổng bảo mật và phân tích các lỗi tiềm năng cho hệ thống máy tính

Hiện nay, Việt Nam đã có những bước khởi động cho lĩnh vực nghiên cứu về bảo mật, đã bắt đầu triển khai các hệ thống thông tin quốc gia với tầm quan trọng ở nhiều cấp độ khác nhau Tuy nhiên, vấn đề bảo mật vẫn chưa được quan tâm đúng mức, chưa đáp ứng được yêu cầu đặt ra, chưa có các kết quả nghiên cứu hoàn thiện để có thể tạo ra các sản phẩm bảo mật của riêng mình cụ thể là vẫn chưa có một khảo sát toàn diện và đầy đủ nào về các lỗ hổng bảo mật Hơn nữa, hiện nay vẫn chưa có một sự phân tích sâu sắc về các vấn đề bảo mật để giúp các nhà quản trị nắm vững cấu trúc lỗi mà lỗi là vấn đề cốt yếu trong bảo mật Cho nên hiện nay, các chức năng bảo mật trong các hệ thống máy tính ở nước ta hầu hết sử dụng các giải pháp của các hãng máy tính nước ngoài Điều này thực chất không đảm bảo được sự an toàn cho thông tin, cho hệ thống

Vì vậy, mục đích của đề tài này là khảo sát kiến trúc của hệ thống, nghiên cứu một cách toàn diện nguyên nhân chi tiết của các lỗ hổng, các phương pháp tấn công và phòng thủ, các biện pháp khắc phục hiện có trên các hệ điều hành (cụ thể trên hệ điều hành Windows nền NT 32-bit), xây dựng chương trình phát hiện

Trang 16

lỗ hổng bảo mật ở mức tổng quát và phân tích các lỗi tiềm năng có thể phát sinh trong hệ thống Từ đó, đề xuất các cảnh báo an ninh và phương pháp khắc phục các lỗ hổng bảo mật nhằm mục đích hỗ trợ cho người sử dụng, người quản trị hệ thống duy trì hoạt động ổn định và an toàn cho hệ thống

Tài liệu 800-43 do The National Institute of Standards and Technology (NIST) [1] xây dựng, viết về Hướng dẫn quản trị hệ thống về bảo mật trong Windows

2000 Professional Tài liệu này cung cấp những khuyến cáo, những hướng dẫn để giúp người quản trị hệ thống hiện thực, cài đặt và kiểm tra việc bảo mật trên Windows 2000 Professional Tài liệu còn cung cấp những template bảo mật để có thể gắn kết nhanh chóng vào Windows 2000 Professional, sử dụng bộ công cụ cấu hình bảo mật hoặc công cụ Secedit (dùng dòng lệnh) để phân tích, cấu hình, xuất thông tin và kiểm tra việc cấu hình bảo mật trên Windows 2000 Professional Các template bảo mật cho phép hiệu chỉnh các chính sách về mật khẩu (password), tài khoản, quyền người sử dụng, lựa chọn bảo mật hệ thống, lưu vết các sự kiện, cài đặt dịch vụ hệ thống, quyền truy xuất file…

Tài liệu này còn đưa ra những khuyến cáo cho việc cấu hình và kiểm tra các ứng dụng của Windows như: e-mail client, trình duyệt Web, các chương trình quét virus

Như vậy mục tiêu chính của tài liệu này là cung cấp những lời khuyến cáo và những hướng dẫn thực tế cho việc cài đặt, cấu hình và kiểm tra về bảo mật cho hệ thống Windows 2000 Professional và các ứng dụng phổ biến trên đó nhằm đơn giản hóa việc quản trị và cải tiến bảo mật trên hệ thống này

Trang 17

Phạm vi của nghiên cứu này:

- Chỉ hướng dẫn cấu hình bảo mật cho một số ứng dụng phổ biến, chứ không phải tất cả các ứng dụng

- Chưa thể tự phát hiện được các lỗ hổng

- Chỉ hướng dẫn cấu hình trong hệ thống Windows 2000 Professional workstations, Windows 2000 Professional mobile computers, và các máy tính liên lạc với nhau sử dụng Windows 2000 Professional trong môi trường có quản lý

- Chưa hệ thống hóa được các lọai lỗ hổng

Tài liệu “Hack Proofing your network” [2] trình bày các nguyên tắc và các kỹ thuật mà các hackers dùng để tấn công vào các lỗ hổng của hệ thống Các kỹ thuật cụ thể: write buffer overflows, packet sniffing,… Tài liệu cung cấp các nghiên cứu về chính sách, phân loại và các phương pháp tấn công vào hệ thống, hướng dẫn các kỹ thuật tấn công vào hệ thống cục bộ (bao gồm các kỹ thuật: diffing, decrypting, unexpected input, buffer overflows), tấn công vào hệ thống từ xa (bao gồm các kỹ thuật: traffic monitoring, hijacking, spoofing, server holes, client holes, trojans and viruses) Tài liệu cũng hướng dẫn các cách tấn công, các cách phòng thủ và các công cụ hỗ trợ cho các kỹ thuật tấn công

Phạm vi của nghiên cứu này:

- Chỉ cung cấp các kỹ thuật rời rạc, chưa có được phương pháp khắc phục lỗ hổng bảo mật cho các hệ điều hành ở mức hệ thống, tổng quát

- Chưa xây dựng được cách thức tự phát hiện các lỗ hổng

- Phân tích nguyên nhân của các lỗ hổng chưa sâu, chưa cụ thể

Trang 18

Tài liệu “Hacking Exposed: Network Security Secrets & Solutions” [3] trình bày các cách tấn công vào các hệ thống Windows 9x/ME, Windows NT, Windows

2000, Novell NetWare, UNIX Tài liệu cũng hướng dẫn cách tấn công vào các phần mềm: Web, Internet; tấn công từ xa qua kết nối mạng.… Tài liệu cung cấp những thông tin qúy báu cho người đọc, giúp người đọc hiểu biết về các lỗ hổng bảo mật trên hệ thống, cách thức hoạt động của chúng Trên cơ sở này, người quản trị sẽ có thêm kiến thức về hệ thống và tìm cách bảo vệ hệ thống tránh khỏi các nguy cơ bị tấn công

Phạm vi của tài liệu này:

- Chủ yếu trình bày về các cách tấn công

- Chưa thể hiện rõ nguyên nhân của các lỗ hổng, cũng như chưa khảo sát các lỗ hổng ở mức hệ thống

- Chưa xây dựng được cách thức tự phát hiện các lỗ hổng

Giáo trình “Bảo mật thông tin – Mô hình và ứng dụng” [4] trình bày một cách khái quát về những vấn đề bảo mật thông tin hiện nay, từ mô hình đến ứng dụng Bảo mật thông tin là một khái niệm rộng liên quan đến nhiều cơ chế và các tầng bảo vệ khác nhau, nhưng xét về mặt kỹ thuật thì các vấn đề này đều có liên quan đến mật mã học Tài liệu có nghiên cứu đến các hệ mã đối xứng và các chuẩn mã hóa dữ liệu, các hệ mật mã khóa công khai, các nghiên cứu này là nền tảng để xây dựng các giải pháp bảo mật thông tin Chứng thực người dùng là một quá trình quan trọng, là một biện pháp kiểm sóat việc đăng nhập và sử dụng tài nguyên trên hệ thống Tài liệu cũng trình bày các phương pháp chứng thực người dùng, bao gồm: chứng thực, kênh truyền quy ước, chứng thực có trọng tài, chữ ký số, các phương pháp nén, quản lý và chứng thực mật khẩu… Tài liệu đã đưa ra

Trang 19

mạng và các chức năng của một máy phục vụ bảo mật và chứng thực người dùng

Phạm vi của tài liệu: Tài liệu đã cung cấp cho người đọc cái nhìn tổng quan và

chính xác về khía cạnh bảo mật thông tin, cung cấp những kiến thức nền tảng để trang bị tính bảo mật cho các hệ thống, đề xuất các chiến lược bảo mật cho hệ thống cũng như cảnh báo về việc sử dụng các công cụ bảo mật trong các hệ thống máy tính hiện nay

Tài liệu là cơ sở lý thuyết cho đề tài nghiên cứu này, trang bị kiến thức để tìm hiểu chuyên sâu về các lỗ hổng bảo mật, xây dựng các phương pháp phòng thủ bảo mật cho hệ thống

Tài liệu ”Microsoft Windows Security Inside Out” [5] trang bị cho người đọc các kỹ năng giúp bảo vệ hệ thống của mình trước các nguy cơ bị tấn công Tài liệu trình bày cách thức hoạt động của các lỗ hổng trên hệ thống Windows XP, Windows 2000 Professional, đồng thời nêu lên những tác hại của các lỗ hổng đó và hướng dẫn người đọc các kỹ thuật bịt các lỗ hổng đó Các lỗ hổng được trình bày khái quát từ máy tính sử dụng riêng lẻ, đến hệ thống kết nối mạng máy tính

Phạm vi của nghiên cứu này:

- Chưa nêu ra nguyên nhân của các lỗ hổng

- Chưa hệ thống hóa được các lọai lỗ hổng

- Chưa xây dựng được cách thức tự phát hiện các lỗ hổng

- Biện pháp phòng chống chủ yếu dựa vào các sản phẩm của hệ thống nên chưa hẳn được tin cậy hòan tòan

Dựa trên cơ sở kế thừa và phát triển thêm phạm vi của các nghiên cứu, đề tài cao học này thực hiện khảo sát một cách có hệ thống nguyên nhân chi tiết của các lỗ hổng bảo mật, các phương pháp tấn công và phòng thủ hiện có trên các hệ

Trang 20

điều hành (cụ thể trên hệ điều hành Windows NT 32-bit) Từ đó xây dựng chương trình phát hiện các lỗ hổng bảo mật của hệ điều hành và của các chương trình ứng dụng chạy trên hệ điều hành Đồng thời, chương trình còn có khả năng phân tích tình trạng bảo mật của hệ thống để đưa ra các lỗi tiềm năng có thể xảy

ra Thêm vào đó, chương trình còn có khả năng cung cấp giải pháp khắc phục các lỗi bảo mật hiện có và các lỗi tiềm năng để có thể hỗ trợ cho người quản trị hệ thống và cả người mới sử dụng máy tính

Trang 21

Chương 2

2 CƠ SỞ LÝ THUYẾT CỦA ĐỀ TÀI

2.1 Tổng quan về bảo mật trên các hệ điều hành:

2.1.1 Các khái niệm về bảo mật 2 :

- Security (bảo mật): khái niệm này nói đến khả năng của hệ thống về việc ngăn

chặn truy xuất hoặc xử lý thông tin trái phép vào hệ thống, về chống lại các tương tác không hợp pháp hoặc chống lại các cuộc tấn công vào dữ liệu, phần cứng, phần mềm của hệ thống Security bao gồm ba khía cạnh: tính bảo mật (ngăn chặn việc để lộ thông tin cho người dùng không hợp pháp), tính toàn vẹn (ngăn chặn hành động chỉnh sửa hoặc xóa của người dùng không hợp pháp) và tính sẵn sàng (xác suất để hệ thống sẵn sàng cung cấp thông tin cho người dùng hợp pháp)

- Hotfix (nhận dạng lỗi): là một gói chứa một hoặc một số tập tin dùng để xác

định một vấn đề nào đó (có thể là lỗi) trong một sản phẩm công nghệ thông tin, hotfix có thể là gói đơn hoặc gói được tích lũy nếu các lỗi có liên quan với nhau

- Patch (bản vá lỗi): là một bản cập nhật phần mềm dùng để sửa chữa các vấn

đề nào đó trong hoạt động máy tính, vấn đề này có thể là sửa các lỗi, thay đổi giao diện hoặc cải tiến hiệu suất hoạt động

- Service pack – SP (gói dịch vụ): là một phần mềm dùng để điều chỉnh lại cho

đúng các lỗi đã được phát hiện hoặc là bổ sung thêm các tính năng mới cho một chương trình SP của một ứng dụng được gán vào và hiệu chỉnh ứng dụng đó sau khi ứng dụng đã được cài đặt SP của ứng dụng thường do chính các nhà viết ứng dụng cung cấp SP dễ cài đặt hơn tập bản patch

2 Các khái niệm được nghiên cứu từ các tài liệu tham khảo và từ Internet

Trang 22

Hình 2-1: Mô hình hệ thống về bảo mật (Nguồn: tài liệu tham khảo [7])

- Exploit: là một thuật ngữ chung trong cộng đồng bảo mật máy tính dùng để chỉ

một đoạn phần mềm có mục đích nhằm vào một lỗi, một sự cố nhỏ hoặc một tính chất có thể bị tấn công (vulnerability) để tìm cách mở rộng quyền lực hoặc thực hiện tấn công theo kiểu từ chối dịch vụ trên một hệ thống máy tính

- Threat (sự đe dọa): là một hệ thống con môi trường (environment subsystem3) có thể mở đầu cho một Fault trong hệ thống Khái niệm threat thường liên quan đến các Fault có chủ ý và liên quan đến vấn đề bảo mật

- Vulnerability (tính chất có thể bị tấn công): là một nơi có thể mở đầu cho một

Fault, là nơi có xác suất xảy ra Fault vượt quá một giá trị ngưỡng được định nghĩa trước Vulnerability có thể có trong đoạn mã chương trình, trong sự cấu hình, trong thiết kế của hệ thống Không có hệ thống nào là hoàn hảo, cho nên bất kỳ một hệ thống nào cũng có tính chất có thể bị tấn công ở một mức độ nào đó

Trang 23

- Vulnerable state (trạng thái có thể bị tấn công): là hệ thống có vulnerability,

đây là hệ thống hợp pháp nhưng từ đây có thể chuyển sang hệ thống không hợp pháp Vulnerability là nguyên nhân chính để hệ thống là vulnerable state

- Fault (lỗi): là một sự kiện dẫn đến một error hay một vulnerability trong hệ

thống Fault là nguyên nhân chính để một error xảy ra Fault được xem là một hiện tượng nguyên tử trong hệ thống, có tính chất nhất thời, không cố định External Fault: là Fault có liên quan đến threat, nguồn gốc của External Fault là bên ngoài hệ thống, có chủ ý của con người Internal Fault: là Fault tự sinh ra từ một nơi nào đó bên trong hệ thống, không liên quan trực tiếp đến threat

- Breach (lỗi bảo mật): là kết quả của một sự vi phạm chính sách bảo mật của hệ

thống Breach là một external fault, do hành động có chủ ý của con người gây ra

- Attack (sự tấn công): là một hành động có chủ ý của con người nhằm gây ra

một breach hoặc làm tổn hại đến hệ thống Nếu hệ thống là vulnerable state thì một attack có thể sẽ thành công và gây ra một breach

- Intrusion (sự xâm nhập): là một attack và một breach tương ứng của nó

- Error (tình trạng mắc lỗi): là một trạng thái của hệ thống có thể dẫn đến tình

trạng hệ thống bị hư hỏng Error là kết quả của một breach

- Failure (sự hư hỏng): là một sự kiện làm xuất hiện sự sai lệch trong hoạt động

của hệ thống Failure là kết quả của một error Có hai loại Failure: Failure vi phạm các thuộc tính bảo mật của đối tượng trong hệ thống gọi là confidentiality failure; Failure vi phạm các thuộc tính sẵn có của đối tượng hệ thống gọi là reliability failure

- Failed state (trạng thái hư hỏng): là một hệ thống xuất hiện sự sai lệch trong

hoạt động, hệ thống hoạt động không theo đặc tả ban đầu Một Failure sẽ

Trang 24

chuyển hệ thống từ trạng thái đúng (correct state) sang trạng thái hư hỏng (failed state)

Hình 2-2: Tóm tắt các thuật ngữ về lỗi (Nguồn: tài liệu tham khảo [7])

Trang 25

2.1.2 Kiến trúc hệ thống của Windows 2000:

Hình 2-3: Kiến trúc của Windows 2000 (Nguồn: tài liệu tham khảo [6])

* User-mode và Kernel-mode: Windows 2000 cung cấp hai trạng thái truy xuất

vào hệ thống nhằm mục đích ngăn cản các chương trình ứng dụng của người sử dụng truy xuất hoặc hiệu chỉnh các dữ liệu quan trọng của hệ điều hành, hai trạng thái đó là: user-mode và kernel-mode Các chương trình ứng dụng của người sử dụng hoạt động ở user-mode; các chương trình của hệ điều hành như các dịch vụ hệ thống, trình điều khiển thiết bị chạy ở kernel-mode Trong trạng thái kernel-mode, các chương trình có quyền truy xuất vào bộ nhớ của hệ thống, vào tất cả các lệnh của CPU mà không phải đi qua bất kỳ cơ chế kiểm tra bảo mật nào Do đó, khi xây dựng các chương trình chạy ở kernel-mode, chúng ta phải chú ý đến giai đoạn thiết kế và kiểm thử để hạn chế đến mức tối đa nhằm

Trang 26

không cho phép chương trình vi phạm các cơ chế bảo mật của hệ thống Người sử dụng phải cẩn trọng khi sử dụng các chương trình điều khiển thiết bị, vì các chương trình này hoạt động ở kernel-mode nên có thể là các lỗ hổng để tấn công vào hệ thống Khi chương trình ứng dụng gọi một dịch vụ hệ thống thì bộ xử lý đang hoạt động ở user-mode sẽ chuyển sang kernel-mode, việc chuyển đổi này

do một lệnh đặc biệt của bộ xử lý thực hiện; sau khi thực hiện xong lời gọi dịch vụ hệ thống, bộ xử lý chuyển về user-mode rồi mới trả quyền thực thi về cho chương trình ứng dụng để bảo vệ tài nguyên của hệ thống không bị các chương trình ứng dụng truy xuất nguy hiểm

2.1.2.1 Các thành phần hoạt động ở user-mode:

- System support processes: bao gồm các loại tiến trình hỗ trợ hệ thống sau

đây:

+ Idle process: chứa một thread cho một CPU, dùng để đếm thời gian

nhàn rỗi của CPU

+ System process: chứa hầu hết các thread hệ thống mà các thread này

hoạt động ở kernel-mode

+ Session Manager (%SystemRoot%\System32\Smss.exe): là tiến trình

hoạt động ở user-mode được tạo ra đầu tiên trong hệ thống, Session Manager thực hiện một số bước quan trọng trong quá trình khởi động hệ thống Windows 2000 như: tạo các biến môi trường của hệ thống, thực hiện các hoạt động xoá, mở các trang của tập tin, khởi tạo các tiến trình Csrss.exe và Winlogon.exe để các tiến trình này tiếp tục tạo các tiến trình khác của hệ thống Hệ thống Windows 2000 hoạt động dựa trên 2 tiến trình Csrss.exe và Winlogon.exe, nếu một trong hai tiến trình này

Trang 27

Manager sẽ yêu cầu hai tiến trình Csrss.exe và Winlogon.exe khởi tạo lại và tiến hành gỡ rối các sự kiện trong hoạt động của hệ thống Thông tin cấu hình điều khiển việc khởi tạo Session Manager được lưu trữ trong registry ở vị trí HKLM\SYSTEM\CurrentControlSet\Control\ Session Manager

+ Logon Process (%SystemRoot%\System32\Winlogon.exe): là tiến

trình tương tác với người dùng khi người dùng thực hiện quá trình đăng nhập (logon) hoặc thoát khỏi (logoff) hệ thống Khi tổ hợp phím SAS4

được nhấn, Winlogon sẽ nhận được thông báo có một quá trình logon, username và password của người dùng nhập vào sẽ được gửi đến tiến trình Lsass.exe kiểm tra (quá trình chứng thực này được hiện thực thành một thư viện động tên là GINA5), nếu hợp lệ thì Winlogon sẽ tạo một tiến trình để thực thi tiến trình tương ứng với giá trị được lưu trong

registry HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\

Winlogon (giá trị mặc định là Userinit.exe) Tiến trình Userinit.exe thực

hiện khởi tạo môi trường cho người dùng như gắn các chính sách nhóm người dùng, chạy các đoạn mã dạng script đăng nhập, phục hồi ánh xạ các ký hiệu ổ đĩa, sau đó Userinit.exe sẽ tạo một tiến trình để chạy shell mức hệ thống, shell này tương ứng với giá trị shell được cất trong registry giống như trên (mặc định là Explorer.exe), khi shell này thực thi thì Userinit.exe sẽ kết thúc Tiến trình Winlogon được kích hoạt thực thi khi quá trình logon, logoff xảy ra hoặc khi tổ hợp phím SAS được nhấn

+ Local Security Authentication Server (%SystemRoot%\System32\

Lsass.exe): Winlogon.exe gửi username và password của người dùng để

4 Tham khảo phụ lục D: Bảng thuật ngữ sử dụng

5 Tham khảo phụ lục D: Bảng thuật ngữ sử dụng

Trang 28

yêu cầu chứng thực đến Lsass.exe, Lsass gọi thư viện GINA để thực

hiện chứng thực, nếu thành công Lsass sẽ tạo một access token chứa các

thông số bảo mật của người dùng và gửi về cho Winlogon, Winlogon sẽ

sử dụng access token này tạo tiến trình để các tiến trình này thừa kế

được các thông số bảo mật của người dùng

+ Service Control Manager – SCM (%SystemRoot%\

System32Services.exe): Các dịch vụ lưu trữ trong registry HKLM\SYSTEM\CurrentControlSet\Services, mỗi dịch vụ có một tiến

trình thực thi nhiệm vụ của nó (nhiều dịch vụ có thể sử dụng cùng một

tiến trình), có những dịch vụ hoạt động ở user-mode và có những dịch vụ

hoạt động ở kernel-mode, ở đây ta xét các dịch vụ ở user-mode SCM là

một tiến trình hệ thống, thực hiện nhiệm vụ khởi tạo, tạm dừng và tương

tác với tiến trình của dịch vụ Các chương trình của dịch vụ chỉ có nhiệm

vụ gọi các hàm đặc biệt của Win32 tương tác với SCM để thực hiện các

thao tác mà SCM hỗ trợ cho dịch vụ

Hình 2-4: Quan hệ "cha-con" giữa các System Process 6 (Nguồn: tài liệu

tham khảo [6])

- Service processes: là các tiến trình của các dịch vụ Win32 (như dịch vụ Task

Scheduler, Spooler) và ứng dụng dạng server trên Windows 2000 chạy dưới

Trang 29

dạng dịch vụ (như Microsoft SQL Server, Microsoft Exchange Server), các tiến trình này hoạt động ở user-mode

- User applications: là các tiến trình của các chương trình ứng dụng, các

chương trình ứng dụng của người dùng thuộc một trong năm loại sau: Win32, Windows 3.1, MS-DOS, POSIX, OS/2 1.2

- Environment subsystems: là các subsystem cung cấp môi trường hệ điều

hành phục vụ cho giao tiếp giữa dịch vụ của hệ thống với các chương trình ứng dụng của người dùng thông qua một tập các hàm Windows 2000 có 3 environment subsystems: Win32, POSIX và OS/2; Win32 là subsystem luôn luôn hoạt động trong hệ thống Windows 2000, còn POSIX và OS/2 được khởi động khi có yêu cầu Các thông số về các environment subsystem được lưu trong registry ở vị trí HKLM\SYSTEM\CurrentControlSet\Control\ Session Manager\Subsystems Các Subsystem là độc lập với nhau, mỗi subsystem cho phép truy xuất vào một nhóm các dịch vụ hệ thống khác nhau, cho nên

chương trình ứng dụng chỉ tương tác với duy nhất một subsystem Vì các

Subsystem là độc lập nhau và mỗi Subsystem đều cần dùng đến các hàm cơ bản nên để giảm bớt sự trùng lắp mã, giảm kích thước hệ thống, các hàm cơ bản (như các hàm điều khiển cửa sổ, hiển thị I/O) chỉ hiện thực trong Win32 Subsystem Như vậy, khi POSIX Subsystem và OS/2 Subsystem cần sử dụng các hàm cơ bản này thì sẽ gọi đến Win32 Subsystem

Các chương trình ứng dụng của người dùng không được phép gọi các dịch vụ hệ thống trực tiếp mà phải thông qua một hoặc một số subsystem dynamic-link libraries (Subsystem DLLs), các subsystem DLLs này hiện thực các hàm API (Win32 subsystem DLLs hiện thực Win32 API, POSIX subsystem DLLS hiện

Trang 30

thực POSIX 1003.1 API), cung cấp cho chương trình ứng dụng các điểm gọi hàm để sử dụng các dịch vụ hệ thống

Hoạt động của Subsystem DLL: Khi chương trình ứng dụng gọi một hàm từ

Subsystem DLL, các trường hợp sau có thể xảy ra:

- Nếu Subsystem DLL hiện thực toàn bộ hàm này, không gửi thông điệp đến environment subsystem và không gọi dịch vụ hệ thống thì hàm sẽ thực thi

ở user-mode và trả kết quả về cho chương trình ứng dụng

- Nếu hiện thực của hàm cần gọi đến execute của Windows 2000 thì

Subsystem DLL sẽ thực hiện việc gọi này, execute sẽ thực hiện yêu cầu ở kernel-mode và trả kết quả về cho Subsystem DLL, Subsystem DLL tiếp tục hiện thực hàm và trả kết quả của hàm về cho chương trình ứng dụng

- Nếu hiện thực của hàm cần đến environment subsystem thì Subsystem DLL sẽ gửi yêu cầu dạng truyền thông điệp tới environment subsystem, Subsystem DLL đợi nhận kết quả từ environment subsystem, tiếp tục hiện thực hàm và trả kết quả của hàm về cho chương trình ứng dụng

* Các Subsystems:

- Win32 Subsystem: là Subsystem chính của Windows 2000, luôn thường

trực để phục vụ cho hệ thống Các thành phần chính của Win32 Subsystem:

+ Tiến trình environment subsystem (Csrss.exe): hỗ trợ các cửa sổ dạng

text; tạo xoá các tiến trình, các luồng; máy DOS ảo 16-bit; các hàm hỗ

trợ ngôn ngữ tự nhiên, các hàm GetTempFile, DefineDosDevice,

ExitWindowsEx

+ Trình điều khiển thiết bị hoạt động ở kernel-mode (Win32k.sys): gồm

bộ quản lý cửa sổ dùng để điều khiển hiển thị trên các cửa sổ, quản lý

Trang 31

phím, chuột,…), chuyển thông điệp từ người dùng đến chương trình ứng dụng; thư viện thiết bị đồ hoạ (Graphics Device Interface – GDI) cung cấp các hàm xử lý các đối tượng đồ hoạ, làm cho mã của chương trình ứng dụng độc lập với thiết bị phần cứng và độc lập với trình điều khiển thiết bị

+ Subsystem DLLs (Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll) + Các trình điều khiển thiết bị đồ hoạ: là các trình điều khiển hiển thị đồ

hoạ phụ thuộc phần cứng, trình điều khiển máy in, trình điều khiển các port video

- POSIX Subsystem (Psxss.exe): là Subsystem cung cấp các điểm giao tiếp

với hệ thống dựa trên UNIX, Subsystem này phục vụ cho mục đích tăng tính khả chuyển của chương trình ứng dụng giữa các hệ thống, Subsystem này hỗ trợ cho các ứng dụng chạy trên UNIX (gọi là các ứng dụng POSIX) Có nhiều chuẩn POSIX, Windows 2000 chỉ hiện thực chuẩn IEEE POSIX 1003.1-1990

Vì các Subsystem độc lập với nhau nên các ứng dụng POSIX chỉ sử dụng được các dịch vụ giới hạn trong chuẩn POSIX.1

- OS/2 Subsystem: tương tự như POSIX Subsystem, OS/2 Subsystem là

Subsystem cung cấp các điểm giao tiếp với hệ thống dựa trên OS/2, Windows

2000 hiện thực chuẩn OS/2 1.2 16 bit Vì các ứng dụng OS/2 chỉ sử dụng được 16MB bộ nhớ nên OS/2 Subsystem phải sử dụng không gian địa chỉ ảo 32 bit của Windows 2000 để tăng bộ nhớ lên 512 MB cho các ứng dụng OS/2 1.2 Các tiến trình của các ứng dụng OS/2 sử dụng bảng local descriptor table (LDT) để tham khảo vào vùng địa chỉ ảo

Trang 32

Hình 2-5: Sơ đồ bố trí bộ nhớ ảo của OS/2 subsystem (Nguồn: tài liệu tham

khảo [6])

Hình 2-6: Kiến trúc mức đơn giản của Windows 2000 (Nguồn: tài liệu tham

khảo [6])

- Ntdll.dll: là thư viện chính hỗ trợ hệ thống, các chương trình ứng dụng

thông qua thư viện này để sử dụng các subsystem DLLs Ntdll.dll có hai loại hàm sau đây:

Trang 33

+ Cung cấp điểm giao tiếp cho phép gọi từ user-mode thông qua Win32 API

+ Các hàm hỗ trợ cho các Subsystem, Subsystem DLL

Phần mã của các hàm trong Ntdll.dll được hiện thực trong Ntoskrnl.exe ở kernel-mode

2.1.2.2 Các thành phần hoạt động ở kernel-mode:

Bảng 2.1: Các tập tin hệ thống của nhân Windows 2000

Tên tập tin Nội dung

Ntoskrnl.exe Executive và Kernel

Ntkrnlpa.exe Executive và Kernel có sự hỗ trợ của Physical Address

Extension (PAE) để cho phép định địa chỉ cho bộ nhớ vật lý lên đến 64GB

Win32k.sys Kernel-mode của Win32 subsystem

Ntdll.dll Các hàm hỗ trợ bên trong và các stubs dịch vụ hệ thống để thực

thi các hàm

Kernel32.dll,

Advapi32.dll,

User32.dll,

Gdi32.dll

Nhân các DLLs của Win32 subsystem

- Executive: là lớp nằm trên Ntoskrnl.exe (lớp Kernel) Executive có các

loại hàm sau:

+ Hàm cho phép bên ngoài sử dụng từ user-mode, các hàm này được sử dụng thông qua Ntdll, các dịch vụ có thể truy xuất vào các hàm thông qua Win32 API hoặc các API của environment subsystem

+ Hàm cho phép bên ngoài sử dụng từ kernel-mode, được liệt kê trong Windows 2000 DDK hoặc Windows 2000 Installable File System (IFS) Kit

Trang 34

+ Hàm cho phép bên ngoài sử dụng từ kernel-mode, không được liệt kê trong Windows 2000 DDK hoặc Windows 2000 Installable File System (IFS) Kit

+ Hàm được định nghĩa thành các biểu tượng toàn cục, không cho phép bên ngoài sử dụng, là các hàm hỗ trợ bên trong Ntoskrnl

+ Hàm hỗ trợ bên trong Ntoskrnl đến mức module, không được định nghĩa thành các biểu tượng toàn cục

Executive chứa các thành phần chính sau:

+ Bộ quản lý cấu hình (configuration manager): chịu trách nhiệm hiện

thực và quản lý registry của hệ thống

+ Bộ quản lý tiến trình và luồng (process and thread manager): chịu

trách nhiệm khởi tạo và kết thúc các tiến trình, các luồng; hỗ trợ ngữ nghĩa và hàm cho các tiến trình và các luồng trong Kernel, trong Executive

+ Bộ điều khiển tham khảo bảo mật (security reference monitor): chịu

trách nhiệm đảm bảo các chính sách bảo mật trên máy cục bộ, bảo vệ tài nguyên của hệ điều hành, thực hiện kiểm toán và bảo vệ các đối tượng trong thời gian chạy

+ Bộ quản lý thiết bị ngoại vi (I/O manager): chịu trách nhiệm hiện thực

giao tiếp với tất cả các thiết bị ngoại vi độc lập với thiết bị

+ Bộ quản lý cắm chạy (Plug and Play manager): chịu trách nhiệm xác

định trình điều khiển nào cần thiết cho thiết bị và nạp trình điều khiển đó lên, truy vấn các tài nguyên cần cho các thiết bị, đăng ký yêu cầu cần sử dụng tài nguyên cho các thiết bị (cổng I/O, ngắt IRQ, kênh DMA, vị

Trang 35

trí bộ nhớ), gửi thông báo dạng sự kiện khi có thay đổi thiết bị trên hệ thống

+ Bộ quản lý nguồn điện (power manager): chịu trách nhiệm về các sự

kiện nguồn điện, thông báo cho các trình điều khiển thiết bị các vấn đề về nguồn điện; khi hệ thống rãnh rỗi, power manager sẽ chuyển CPU sang trạng thái nghỉ để giảm tiêu thụ điện năng; kết hợp với trình điều khiển thiết bị để thay đổi công suất tiêu thụ điện năng của thiết bị

+ Bộ công cụ quản lý Windows (Windows Management Instrumentation

- WMI): chịu trách nhiệm lấy các thông tin về cấu hình, hiệu suất từ các trình điều khiển thiết bị WMI có thể sử dụng ở máy cục bộ hoặc từ xa qua mạng

+ Bộ quản lý bộ nhớ cache (cache manager): chịu trách nhiệm cải tiến

hiệu suất của các thiết bị ngoại vi dùng file bằng cách lưu trữ tạm dữ liệu trên bộ nhớ chính để tăng tốc độ truy xuất, cache manager nhờ sự hỗ trợ của bộ quản lý bộ nhớ để ánh xạ các file

+ Bộ quản lý bộ nhớ ảo (virtual memory manager): chịu trách nhiệm

hiện thực bộ nhớ ảo, quản lý bộ nhớ: cung cấp không gian địa chỉ riêng cho mỗi tiến trình, không gian địa chỉ này có thể lớn hơn bộ nhớ vật lý, hỗ trợ cho bộ quản lý bộ nhớ cache

Executive còn chứa bốn nhóm hàm hỗ trợ cho các thành phần của nó, bao gồm: nhóm hàm quản lý đối tượng (tạo, quản lý, xoá các đối tượng executive, process, thread…), nhóm hàm giao tiếp cục bộ (Local Procedure Call), nhóm hàm thư viện hỗ trợ trong thời gian chạy (xử lý chuỗi, tính toán số học, chuyển đổi kiểu, xử lý bảo mật), nhóm hàm hỗ trợ (định vị bộ nhớ hệ thống, đảm bảo truy xuất nhất quán bộ nhớ và các đối tượng tài nguyên của hệ thống)

Trang 36

- Kernel (Ntoskrnl.exe): là tập các hàm được hiện thực trong Ntoskrnl.exe

bằng ngôn ngữ C hoặc hợp ngữ, sử dụng đến tập lệnh của bộ xử lý và thanh ghi, nhiệm vụ của các hàm:

+ cung cấp các cơ chế cơ bản (định thời cho các luồng, đồng bộ hoá các dịch vụ) cho các thành phần của executive

+ hỗ trợ phần cứng mức thấp (ngắt, biệt lệ, đồng bộ hóa các bộ xử lý), ở mức này phân biệt đối với kiến trúc bộ xử lý

Các đối tượng kernel (Kernel Objects): Kernel thực hiện nhiệm vụ của mình

thông qua các đối tượng kernel, các đối tượng executive bao đóng một hoặc một số đối tượng kernel Executive gọi các hàm kernel cung cấp để tạo các đối tượng kernel phục vụ cho chức năng của Executive Các đối tượng kernel được chia thành các nhóm: control objects thực hiện thiết lập ngữ nghĩa để điều khiển các chức năng của hệ điều hành, dispatcher objects thực hiện định thời cho các luồng, đồng bộ hoá các dịch vụ

- Trình điều khiển thiết bị (Device Drivers): hỗ trợ giao tiếp giữa bộ quản lý

thiết bị ngoại vi với phần cứng thông qua các điểm giao tiếp trong các module

ở kernel-mode Trình điều khiển thiết bị gọi các hàm trong HAL để giao tiếp với phần cứng chứ không giao tiếp trực tiếp Trình điều khiển thiết bị hoạt động ở kernel-mode trong các ngữ cảnh sau:

+ một luồng của người sử dụng khởi tạo một hàm I/O

+ một luồng của hệ thống ở kernel-mode

+ xảy ra một ngắt

Trang 37

Các loại trình điều khiển thiết bị:

• Hardware device drivers: ghi thông tin xuất hoặc truy vấn thông

tin nhập từ các thiết bị vật lý hoặc từ mạng

• File system drivers: là các trình điều khiển của Windows 2000,

nhận các yêu cầu các thiết bị ngoại vi liên quan đến file và chuyển đến thiết bị tương ứng

• File system filter drivers: thực hiện các thao tác về đĩa (mã hóa, )

• Network redirectors và servers: là các trình điều khiển file hệ

thống thực hiện nhiệm vụ chuyển nhận các yêu cầu các thiết bị ngoại vi liên quan đến file trên mạng

• Protocol drivers: hiện thực các giao thức mạng như TCP/IP, NetBEUI, IPX/SPX

• Kernel streaming filter drivers: là các trình điều khiển hoạt động

theo cách kết hợp lại với nhau thành một dây chuyền để thực hiện

việc xử lý tín hiệu trên các luồng dữ liệu (ví dụ: ghi và hiển thị dữ

liệu âm thanh, hình ảnh)

Việc cài đặt trình điều khiển thiết bị vào hệ thống là cách thức duy nhất để người dùng có thể can thiệp vào kernel-mode bằng cách đưa đoạn mã của người dùng vào kernel-mode để truy xuất vào các hàm bên trong của hệ thống hoặc vào các cấu trúc dữ liệu mà người dùng không thể thực hiện được từ user-mode

Windows 2000 hỗ trợ Windows Driver Model (WDM): cung cấp thêm tính

năng cắm chạy (Plug and Play), quản lý nguồn cho các thiết bị, mô hình này mở rộng hơn so với mô hình trình điều khiển của Windows NT trước đó

WDW có ba loại trình điều khiển:

Trang 38

• Bus driver: là trình điều khiển các bus, bridge Mỗi bus của hệ

thống có một bus driver

• Function driver: là trình điều khiển thiết bị chính, cung cấp các

điểm giao tiếp để điều khiển hoạt động của thiết bị

• Filter driver: là trình điều khiển thực hiện bổ sung thêm chức

năng cho thiết bị (upper-level filter driver), thực hiện chỉnh sửa các yêu cầu đến hoặc các phản hồi từ các thiết bị ngoại vi (lower-level filter)

Trong WDW, các loại trình điều khiển phải cùng phối hợp với nhau để điều khiển hoạt động của một thiết bị

- Hardware Abstraction Layer (HAL): là thành phần quan trọng thực hiện

tính chất khả chuyển của hệ thống Windows 2000 Các thành phần trong Windows 2000 hoặc các trình điều khiển thiết bị do người dùng viết truy xuất vào phần cứng thông qua các điểm giao tiếp mức thấp mà HAL cung cấp nhằm mục đích tránh truy xuất trực tiếp vào phần cứng, đảm bảo tính khả chuyển của hệ thống HAL được hiện thực trong Hal.dll ở kernel-mode

- Windowing and graphics system: chịu trách nhiệm hiện thực các hàm giao

tiếp với người sử dụng dạng đồ họa

2.1.3 Các thành phần bảo mật trên Windows 2000:

Bảo mật trên hệ điều hành nhiều người sử dụng bao gồm:

- Bảo mật trên bản thân hệ điều hành: bảo vệ các tập tin, bộ nhớ, các đối tượng tài nguyên hệ thống, thiết lập các cấu hình không bị người khác xem hoặc chỉnh sửa bất hợp pháp; điều khiển truy xuất vào các đối tượng; chứng thực người sử dụng: hệ điều hành có các cơ chế bảo vệ tài khoản và mật khẩu

Trang 39

của người sử dụng, cơ chế ngăn chặn các hành động gây nguy hại cho hệ thống cũng như không cho phép người sử dụng thực thi các chương trình tác động nguy hiểm lên chương trình của người sử dụng khác hay lên chính hệ điều hành

- Bảo mật các dịch vụ chạy trên hệ điều hành

- Bảo mật các chương trình ứng dụng chạy trên hệ điều hành

Windows 2000 có mức bảo mật là C2 theo tiêu chuẩn TCSEC (Trusted Computer System Evaluation Criteria của U.S Department of Defense’s (DoD) National Security Agency (NSA) vì đáp ứng các yêu cầu sau:

- Khả năng đăng nhập bảo mật (A secure logon facility): người sử dụng có

một định danh duy nhất trên hệ thống và phải đăng nhập vào hệ thống trước khi truy xuất tài nguyên hoặc thực hiện bất kỳ tương tác nào với hệ thống

- Điều khiển truy xuất được sử dụng khi cần thiết (Discretionary access

control): chủ tài nguyên là người xác định và có quyền thay đổi những ai được

phép truy xuất vào tài nguyên với quyền hạn gì

- Kiểm toán bảo mật (Security auditing): cho phép phát hiện và ghi nhận lại

các sự kiện về bảo mật trên hệ thống, các hoạt động tạo, truy xuất, xóa tài nguyên của hệ thống; cho phép ghi nhận lại các quá trình đăng nhập vào hệ thống nhằm phục vụ cho việc tìm ra hành động đăng nhập bất hợp pháp vào hệ thống

- Bảo vệ việc tái sử dụng đối tượng (Object reuse protection): người sử dụng

không thể thấy và không thể truy xuất vào dữ liệu của người sử dụng khác khi dữ liệu này đã bị xóa hoặc đã trả về hệ thống

- Chức năng đường dẫn tin cậy (Trusted path functionality): ngăn chặn các

chương trình mật thám lấy cắp các thông tin hệ thống (như Trojan horse)

Trang 40

Chức năng này thể hiện dưới dạng dùng tổ hợp phím Ctrl+Alt+Del khi đăng nhập để ngăn chặn các chương trình dạng Trojan horse

- Quản lý khả năng tin cậy (Trusted facility management): cho phép một tài

khoản nào đó có quyền quản trị hệ thống

Các yêu cầu bảo mật trên (gọi chung là cơ chế bảo mật) của hệ thống Windows

2000 được thực hiện bởi hệ thống con bảo mật và các thành phần có liên quan thông qua các điểm tương tác giao tiếp của Win32 API

Windows 2000 điều khiển bảo vệ việc truy xuất thông qua đối tượng, có hai dạng điều khiển:

- Điều khiển truy xuất được sử dụng khi cần thiết (Discretionary access

control): là cơ chế bảo vệ chủ yếu Với cơ chế này: chủ đối tượng có quyền

cho phép hoặc từ chối những người sử dụng khác sử dụng đối tượng, như vậy mỗi đối tượng sẽ có một danh sách lưu trữ người sử dụng cùng với quyền mà người sử dụng đó có thể thực hiện trên đối tượng, danh sách này gọi là Access control list (ACL) Khi một người sử dụng đăng nhập, hệ thống sẽ khởi tạo một ngữ cảnh bảo mật cho người sử dụng đó, ngữ cảnh bảo mật sẽ chứa tập các thông số xác định tình trạng bảo mật của người sử dụng như các quyền, tên tài khoản, nhóm của người sử dụng Như vậy, khi người sử dụng truy xuất đối tượng, cơ chế bảo mật của hệ thống sẽ so sánh ngữ cảnh bảo mật của người sử dụng với ACL của đối tượng để xác định người sử dụng có thực hiện được truy xuất vào đối tượng hay không

- Điều khiển truy xuất đặc quyền (Privileged access control): cơ chế bảo vệ

này được sử dụng khi cơ chế bảo vệ chủ yếu không đáp ứng đủ yêu cầu của người sử dụng Cơ chế này cho phép một người nào đó có thể thay thế người

Ngày đăng: 10/02/2021, 09:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w