Khái niệm Rootkit xuất phát từ thế giới của Unix. Chúng được phát triển để thay thế các công cụ Unix chuẩn bằng các phiên bản cấp quyền siêu người
dùng hoặc quyền root, trong khi cho phép những hành động của chúng trở nên giấu mình đối với những người dùng khác. Rootkit có khả năng riêng để tự ẩn mình, rất khó để người sử dụng và các tiến trình có thể phát hiện ra sự tồn tại của chúng. Khả năng đặc biệt này càng trở nên nguy hiểm dưới bàn tay của các tin tặc bởi vì đó là một cách lý tưởng để làm bình phong cho những hành động mờ ám của chúng. Một rootkit thường được chỉ định như một chương trình được thiết kế để không chỉ tự ẩn mình mà còn ẩn với các chương trình khác và tất các các tài nguyên liên đới (thí dụ các tiến trình, tệp tin, cổng).
Một rootkit cố gắng leo thang đặc quyền, với mục đích là có thể chạy ở mức 0 (chế độ nhân của hệ điều hành). Nếu thành công, có thể dễ dàng ngắt các ứng dụng chạy ở mức 3 (chế độ người dùng) bởi bất kỳ người dùng bình thường nào, bao gồm cả root. Công nghệ ảo hóa thêm một mức đặc quyền cao hơn (mức -1) và nếu một rootkit có thể xâm nhập vào mức đó, nó giành quyền điều khiển toàn bộ môi trường vật lý mà hệ thống đó đang chạy. Rootkit ẩn trong lớp này được xem là VMBR (Rootkit máy ảo) và khi đó việc phát hiện và gỡ chúng khó khăn hơn so với khi chúng mới ở mức 0. Hai thí dụ của kiểu rootkit này là BluePill và SubVirrt. Một rootkit nữa mới xuất hiện có tên gọi là Vitriol, được tạo bởi Dino Dai Zovi sử dụng Intel VT.
Dò t m VMBR và các cách để bảo vệ chống lại những tấn công kiểu này
Khi BluePill được trình diễn lần đầu tiên, Joanna quả quyết rằng 100% không thể phát hiện. Điều đó được chứng minh là sai. Sau một thời gian cùng năm đó, nhiều nhà điều tra tuyên bố rằng bằng cách sử dụng phép đo thời gian ngoài, họ có thể phát hiện được BluePill. Họ chứng tỏ điều đó bằng việc thực hiện một số chỉ lệnh trên một máy thực, phải mất một khoảng thời gian nào đó, nhưng cùng thao tác đó nếu thực hiện trong môi trường ảo, sẽ mất thời gian lâu hơn. Dựa trên thực nghiệm này họ có thể cho biết một máy là ảo hay là không. Mặc dù điều đó đúng, mà không có bất kỳ cơ sở so sánh nào, thời gian yêu cầu để cùng máy tính đó chạy cùng số tương tác của cùng chỉ lệnh trước và sau hệ thống được ảo hóa, thì sẽ không thể so sánh chính xác, và bởi
vậy phát hiện việc đang chạy trên môi trường ảo hóa là điều hầu như không thể.
Năm 2007, Keith Adams và những người khác (71) gợi ý rằng bằng các sử dụng bộ nhớ đệm TLB (translation lookaside buffers) có thể phát hiện được BluePill. Trong bài báo đó các tác giả công bố rằng, bởi vì các ánh xạ địa chỉ ảo của máy kí sinh và trình điều phối cạnh tranh cùng khối TLB chung, hệ điều hành kí sinh có thể phát hiện được nó đang chạy trên môi trường ảo hóa khi kích thước nó nhỏ hơn.
Tuy vậy, không phải tất cả các VMBR đều khó phát hiện. Thí dụ để mà tiếp tục khởi động lại, SubVirt thay đổi bản ghi MBR của ổ đĩa và bởi vậy có thể phát hiện được nó thậm chí là phát hiện “ngoại tuyến”. Tuy nhiên thực tế là việc phát hiện một VMBR là công việc khó, mặc dù không phải là không thể. Cũng trong bài viết, các tác giả gợi ý mọi người không nên đặt trọng tâm vào việc phát hiện mà nên chống lại, bởi vì điều đó dễ dàng hơn.
Cách đơn giản nhất mà Microsoft gợi ý là vô hiệu hóa những thành phần mở rộng của ảo hóa phần cứng theo mặc định đối với những hệ thống ở phía client. Thực tế giải pháp này chống lại việc cài đặt VMBR, nhưng cũng sẽ vô hiệu hóa những sử dụng chính đáng của ảo hóa. Một cách giải quyết nhỏ khác được cung cấp bởi AMD-V, mà cho phép SVM tái kích hoạt bằng việc sử dụng một khóa 64-bit được giới thiệu bởi người sử dụng cho trình điều phối hợp lệ. Nếu môt trình điều phối độc thử cố gắng cài đặt, nó sẽ bị lỗi bởi vì nó không có khóa hợp lệ.
Một khả năng khác là sử dụng mô-đun nền tảng tin cậy (TPM-Trusted Platform Module) được cung cấp bởi công nghệ thực thi tin cậy (Trusted Execution Technology) của Intel hoặc SVM của AMD. Nó cho phép CPU khởi động lại vào trạng thái tin cậy bằng cách sử dụng trình nạp bảo mật đã thẩm tra TPM.
Hai cách nữa có thể làm để tránh VMBR. Cách đơn giản là thực hiện khởi động an toàn từ CD. Cách thứ hai là cài đặt một trình điều phối ảo hóa tin tưởng đầu tiên. Ý tưởng này có nhược điểm là yêu cầu hỗ trợ IOMMU/VT-d, nếu không thì VMBR có thể ghi lên trang bộ nhớ của trình điều phối ảo hóa và lại chiếm quyền điều khiển của hệ thống (72).
5.2.5 PHƢƠNG PHÁP PHÒNG CHỐNG, PHÁT HIỆN
VMware, hãng dẫn đầu trong lĩnh vực ảo hóa có vai trò quan trọng trong vấn đề bảo mật máy ảo. Do đó, họ thực hiện những kỹ thuật tiên tiến để mà cung cấp những phân tích giao thông trong suốt và sự tương tác nguy hiểm có thể xảy ra. Gần đây, họ phát hành VMsafe APIs, mà có thể cảnh báo về một cuộc tấn công sắp xảy ra, bằng cách giống như một hệ thống phát hiện xâm nhập (IDS - Intrusion Detection System), hoặc có thể ngắt các phiên độc hại giống như hệ thống chống xâm nhập (IPS – Intrusion Prevention System). Tuy nhiên, bảo mật máy ảo không chỉ giới hạn thế này. Trong bài bài viết về Thuần phục ảo hóa (Taming Virtualization), Carbone và những người khác (73) đề nghị GuardHype. Với trọng tâm là chống lại VMBR, GuardHype đóng vai trò như một trình điều phối ảo hóa cho trình điều phối ảo hóa, bởi vì điều khiển truy cập của trình điều phối ảo hóa tới những mở rộng ảo hóa của phần cứng. Sử dụng cùng kỹ thuật như Blue Pill, nó mô phỏng các mở rộng ảo hóa của CPU, cho phép trình điều phối ảo hóa của hãng thứ ba có thể chạy trên nó mà không chỉnh sửa gì. Trong email Carbone gửi cho một người nghiên cứu về vấn đề này, ông cho biết hiện tại chưa có cài đặt nào của GuardHype, nhưng Phoenix (một hãng sản xuất BIOS) có một dự án được gọi là HyperSpace với cách thực hiện tương tự như đề xuất của họ. HyperSpace có một “trình điều phối ảo hóa nhỏ hỗ trợ ảo hóa lồng nhau và thêm một vùng bảo mật, mà ở đó các ứng dụng bảo mật có thể được triển khai”. Theo quan điểm của Carbone, trong tương lai gần có thể tưởng tượng GuardHype trở thành một thành phần của BIOS. Có một số nghiên cứu trong lĩnh vực này để cho phép các tổ hợp điều phối ảo hóa có thể phát hiện bất cứ sự chỉnh sửa độc hại nào bên trong máy ảo.
5.2.6 VẤN ĐỀ KHÔI PHỤC BẢN CHỤP NHANH
Một ổ đĩa được “chụp nhanh” là một cơ chế được sử dụng bởi các trình điều phối nổi tiếng (thí dụ VMware và VirtualBox) cho phép quản trị viên chụp ảnh tức thì một máy kí sinh tại một thời điểm nào đó. Những gì nó làm là để bảo quản hệ thống tệp tin ổ đĩa và bộ nhớ hệ thống, cho phép quản trị viên có thể khôi phục tới bản chụp trong tình huống cần thiết.
Chúng có thể là vị cứu tính nhưng cũng có thể mang theo những vấn đề về bảo mật. Thí dụ, khi khôi phục một bản chụp nhanh có thể:
- Chèn lại một máy tính với lỗ hổng chưa được vá
- Tái kích hoạt mật khẩu hoặc tài khoản đã bị vô hiệu hóa trước đó
- Sử dụng các chính sách bảo mật cũ (thí dụ: các luật tường lửa, các chữ ký của phần mềm diệt vi-rút).
Tuy nhiên, nó có thể còn có những vẫn đề bảo mật khác. Galfinkel và những người khác cảnh báo những vấn đề khi sử dụng bản chụp nhanh trên hệ thống với hệ thống mật khẩu dùng một lần như S/KEY (76). Hậu quả của việc khôi phục bản chụp nhanh có thể trở thành trầm trọng khi kẻ tấn công nghe lén được mật khẩu trước đó và giờ có thể mang ra sử dụng.
CHƢƠNG 6. THỰC NGHIỆM
Để đánh giá tác dụng của ảo hóa trên máy chủ và mức độ khác biệt giữa các giải pháp ảo hóa, chúng ta cùng tiến hành một số thực nghiệm. Các bài thực nghiệm sẽ được phân làm 3 nhóm khác nhau dựa theo đặc tính muốn kiểm tra.
Trong đó, mục đích của bài kiểm tra hiệu suất là để đo sự khác biệt giữa một hệ thống bình thường và các máy ảo, từ đó tìm ra các phụ phí mà ảo hóa gây ra. Bài kiểm tra quá trình hoạt động thì tiến hành các thao tác đơn giản mà quản trị viên hệ thống vẫn hay làm trong cả môi trường truyền thống và môi trường đã được ảo hóa để đánh giá sự thay đổi mà ảo hóa mang lại. Cuối cùng là bài kiểm tra về bảo mật và tính cô lập với mục đích thẩm tra liệu phần mềm ảo hóa có thể cung cấp một môi trường an ninh cho các máy ảo và tài nguyên phần cứng của máy chủ lưu trữ có được chia sẻ một cách an toàn hay không.
6.1 KIỂM TRA HIỆU SUẤT
Phần kiểm tra hiệu suất được thực hiện bằng cách sử dụng chính xác cùng một cấu hình phần cứng cho các cài đặt ảo hóa khác nhau. Tài nguyên được cung cấp đủ cho phần mềm ảo hóa để chạy một máy ảo duy nhất. Các cài đặt được lựa chọn như sau:
H nh 6.1: Thử nghiệm 4 cài đặt khác nhau
(a) Windows Server 2008 RAM 2G (b) Windows Server 2008 VMware ESXi 4.0 RAM 2G (c) Windows Server 2008 Hyper-V Server 2008 RAM 2G (d) Windows Server 2008 XenServer 5.5 RAM 2G
- Một hệ thống bình thường (Hình 6.1a) chạy phiên bản Windows Server 2008. Lượng bộ nhớ cung cấp cho hệ thống là 2GB RAM.
- Một máy ảo (Hình 6.1b) chạy trên trình điều phối ảo hóa VMware
ESXi 4.0. Máy ảo cài đặt hệ điều hành Windows Server 2008. Lượng
bộ nhớ cung cấp cho máy ảo là 2GB RAM.
- Một máy ảo (Hình 6.1c) chạy trên trình điều phối ảo hóa Hyper-V
Server 2008. Máy ảo này cài đặt hệ điều hành Windows Server 2008.
Lượng bộ nhớ cung cấp cho máy ảo là 2GB RAM.
- Một máy ảo (Hình 6.1d) chạy trên trình điều phối ảo hóa XenServer 5.5. Máy ảo này cũng cài đặt hệ điều hành Windows Server 2008. Lượng bộ nhớ cung cấp cho máy ảo là 2GB RAM.
Việc quản lý các máy ảo được thực hiện bằng các công cụ quản trị từ xa do hãng cung cấp phần mềm ảo hóa tương ứng hỗ trợ. Để đảm bảo lưu thông mạng sinh ra bởi công cụ quản trị từ xa nói trên cũng như là các lưu thông nói chung khác không ảnh hưởng đến phần kiểm tra mạng chuyên sâu, ta sẽ cài đặt thêm một cạc mạng riêng biệt cho hệ thống. Cấu hình của cạc mạng (100 Mbit/s và ở chế độ Full Duplex) được giữ nguyên đối với tất cả các bài kiểm tra. Do đó, máy ảo sẽ có một kết nối tương tự để so sánh với cấu hình nguyên bản.
Trong suốt bài kiểm tra hệ điều hành chỉ được cấu hình với các dịch vụ tối thiểu cần thiết. Mỗi bài kiểm tra được thực hiện 5 lần và lấy giá trị trung bình. Những giá trị này được sử dụng để làm căn cứ phân tích. Việc kiểm tra nhiều lần đặc biệt quan trọng đối với bài kiểm tra hệ thống lưu trữ, thí dụ tìm vị trí được thực hiện ngẫu nhiên. Giữa mỗi lần chạy, hệ thống được khởi động lại để đảm bảo kết quả không bị ảnh hưởng bởi ổ đĩa hay bộ nhớ đệm. Ngoài ra nếu một kết quả cho giá trị khác biệt so với các kết quả trước đó hoặc hệ điều hành thực hiện một số hành động nền có thể gây ảnh hưởng tới kết quả, bài kiểm tra tương tự sẽ được lặp lại để đảm bảo kết quả không bị nhiễu. Thêm vào đó để tăng tính chính xác và khách quan, chúng ta sẽ sử dụng các chương trình kiểm tra khác nhau để thẩm định lại kết quả.
Các chương trình được sử dụng để kiểm tra bao gồm: - SiSoftware Sandra Enterprise v2010.1.16.26 - PerformanceTest 7 64-Bit
6.1.1 KIỂM TRA ĐỐI VỚI BỘ VI XỬ LÝ
Hiệu suất của bộ vi xử lý được đo bằng bài kiểm tra MMX và toán học của phần mềm PerformanceTest và bởi bài kiểm tra số học CPU của phần mềm SiSoftware Sandra. Bài kiểm tra toán học đo khả năng của bộ vi xử lý trong việc thực hiện các thao tác cộng, trừ, nhân và chia trên số nguyên và số thực dấu phẩy động. Các số nguyên là các số như 23, 459532, -26. Các số thực dấu phẩy động là các số có thêm phần thập phân như 1,003; 98723,14. Đây là hai kiểu số khá đặc biệt trong máy tính.
Trong bài kiểm tra đối với số nguyên, một mảng lớn các số nguyên (32 bit và 64 bit) ngẫu nhiên được sử dụng để tính toán.. Thử nghiệm này cũng được thực hiện tương tự đối với bài kiểm tra số thực dấu phẩy động.
Giá trị GFLOPS biểu diễn giá trị lớn nhất của số thao tác đối với số thực dấu phẩy động trong mỗi giây. Trong bài kiểm tra GFLOPS tất cả các phụ phí gây ra bởi việc tính toán (thí dụ như lặp và rẽ nhánh) được bỏ qua và do đó kết quả gần với giá trị lý thuyết hơn là giá trị thực hành. Bài kiểm tra MMX tương tự so với bài kiểm tra toán học ngoại trừ việc nó sử dụng số nguyên 64- bit và các số dấu chấm động 64-128 bit.
- Số nguyên (Integer Math): Thực hiện các thao tác số học (cộng, trừ,
nhân và chia) với số nguyên 32-bit và 64-bit
- Số thực dấu phẩy động (Floating Point): Thực hiện các thao tác số
học (cộng, trừ, nhân và chia) với số thực dấu phẩy động 32-bit và 64- bit
- Multimedia Instructions: Thực hiện các thao tác cộng, trừ và nhân
- Tìm các số nguyên tố (Find Prime Numbers): Do tần số xuất hiện số nguyên tố giảm dần khi càng lên cao ta sẽ phải khởi động lại quá trình kiểm tra sau 150.000 giá trị để giữ lại thử nghiệm độ rộng tuyến tính với tốc độ CPU.
- Nén (Compression): Các thử nghiệm sử dụng giải thuật mã hóa thích
nghi dựa trên mã nguồn của Ian H. Witten, Radfford M. Neal và John G. Cleary trong một bài báo có tựa đề “Mã hóa số học đối với nén dữ liệu” (Arithmetic Coding for Data Compression). Hệ thống sử dụng một mô hình mà duy trì khả năng của mỗi ký hiệu được mã hóa tiếp theo. Nó báo cáo một tỷ lệ nến 363% đối với văn bản tiếng Anh, hơi tốt hơn so với phương pháp Huffman. Thử nghiệm này cho kết quả là độ nén Kb/giây.
- Sắp xếp chuỗi ngẫu nhiên (Random String Sorting): Thực hiện sắp
xếp một mảng gồm 100.000 chuỗi ngẫu nhiên, mỗi chuỗi có độ dài 25 ký tự. Thao tác này được thực hiện nhiều lần trong quá trình thử nghiệm để cho kết quả tốt nhất.
Thử nghiệm Máy tính
vật lý
Máy ảo
trên ESXi Phí tổn
Integer Math 239,9 235,3 -1,92%
Floating Point Math 906,1 869,4 -4,05%
Find Prime Numbers 668,5 674,2 0,85%
Multimedia Instructions 4,3 4,3 0,00%
Compression 2814,3 2798,4 -0,56%
Encryption 7,9 7,9 0,00%
Physics 115,4 102,2 -11,44%
Strings Sorting 1508,4 1475,9 -2,15%
Thử nghiệm Máy tính vật lý Máy ảo trên ESXi Phí tổn Aggregate Airthmetic Performance (GOPS) 19,7 19,2 -2,54%
Dhrystone ALU (GIPS) 20,7 20,2 -2,42%
Whestone iSSE3 (GFLOPS) 18,7 18,2 -2,67%
Aggregate Airthmetic Performance (MOPS/MHz) 7,8 7,6 -2,56% Dhrystone ALU (MIPS/HMz) 8,2 8,0 -2,44% Whestone iSSE3 (MFLOPS/MHz) 7,4 7,2 -2,70% Aggregate Airthmetic Performance (GOPS) 19,7 19,2 -2,54%
Bảng 2: Đánh giá hiệu suất bộ vi xử lý bằng phần mềm Sisoftware Sandra
6.1.2 KIỂM TRA ĐỐI VỚI BỘ NHỚ
Hiệu suất của bộ nhớ được đánh giá qua bài kiểm tra “Memory Access” của phần mềm Performance Test và bài kiểm tra “Memory Bandwidth and Cache & Memory” của phần mềm SiSoftware Sandra. Bài kiểm tra tốc độ truy cập